- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Link
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[Linux] 리눅스-LVM 본문
문제리눅스 사용자가 부딪치게되는 가장 큰 문제중 하나는 리눅스를 설치시 각 파티션에 얼마만큼 공간을 할당할지 결정하는 일이다. 이 문제는 당신이 많은 서버를 관리하는 시스템 관리자이거나 디스크 공간이 부족해짐을 안 중급/고급 리눅스 사용자이거나 관계없이 해당된다. 이런 문제가 낯설지 않을 것이다. 그러면 보통 문제를 해결하려는 노력이 시작된다. 사용자는 파티션간에 심볼링크를 걸거나 parted같은 파티션 크기조정 도구를 사용하는 등 깔끔하지않은 방법들을 사용하여 (아마 몇날 밤을 보낸후) 이 문제를 해결한다. 그러나 이는 임시방편이고 다시 같은 문제에 부딪치게 된다.
얼마나 이 문제가 해결되길 바랬는가!! 당신은 필요할 때마다 디스크공간을 자유롭게 추가하고 줄일 수 있는 시스템을 바랄 것이다. 당신이 항상 인터넷에 연결된 많은 서버 시스템을 관리한다면 이런 것이 더 절실히 바랄 것이다. 시스템이 몇분만 꺼져있어도 손실이 발생한다. 심지어 고객이 다른 사이트로 옮겨갈 위험도 있다. 또, 이럴때마다 파티션표(partition table) 항목을 수정하고 시스템을 재시작하는 것도 바람직하지 않다. 이런 상황에 LVM이 구세주로 등장한다.
LVM 소개리눅스 LVM은 삶을 매우 쉽게 만든다. LVM은 파티션과 하드디스크에 비해 저장 공간을 높은 차원에서 보게 한다. 어떻게 사용하는지는 아래서 다룬다. LVM은 2.4.x 대에 정식 커널 소스에 포함되었다. LVM를 사용하기전에 개념과 용어를 살펴보자.
어떻게 LVM이 동작하나이제 LVM의 용어를 알아보았으니, 실제로 어떻게 동작하는지 알아보자. 물리볼륨은 물리적 범위 (PE, Physical Extent) 라는 기본 단위로 나눠진다. 물리적 범위의 크기는 자유롭지만, 같은 볼륨그룹에 속한 물리볼륨끼리는 같다. 한 물리볼륨안에서 PE는 유일한 번호를 가진다. PE는 LVM이 물리적 저장공간을 가리키는 최소 단위이다.
각각의 논리볼륨은 논리적 범위 (LE, Logical Extent) 라는 가리킬 수 있는 기본 단위들로 나눠진다. 같은 볼륨그룹에서 논리적 범위의 크기는 물리적 범위의 크기와 같다. 또, 한 볼륨그룹안에 있는 모든 논리볼륨의 LE 크기도 당연히 같다.
각 PE는 물리볼륨에서 유일한 번호를 가지지만, 논리볼륨에서는 가질 수 없다. 이는 논리볼륨이 여러 물리볼륨으로 구성되므로 PE ID가 겹칠 수 있기 때문이다. 그래서 LE와 LE와 연결된 PE를 구별할 LE ID가 필요하다. 이미 말했듯이 LE와 PE는 1:1대응한다. 저장공간을 접근하여 실제 자료를 물리적 저장공간에 쓸때 LE ID를 사용한다.
아마도 논리볼륨과 볼륨그룹에 대한 모든 메타정보가 저장되는 장소가 궁금할 것이다. LVM을 사용하지 않는 시스템의 비유를 들자면 파티션에 대한 정보는 파티션표에 저장된다. LVM에서 볼륨그룹 지시자영역 (VGDA, Volume Group Descriptor Area) 은 파티션표와 같은 기능을 한다. VGDA는 각 물리볼륨의 처음부분에 저장된다.
VGDA에는 다음과 같은 정보가 있다 :-
시스템이 부팅할때 LV와 VG들이 활성화되고 VGDA가 메모리로 읽혀진다. VGDA는 LV가 실제로 어디에 저장되있는지 알려준다. 시스템이 저장장치에 접근할때 실제 입출력을 할 물리적 위치를 알아내기위해 (VGDA의 도움으로) 대응 과정을 거친다.
이제 작업을 해보자어떻게 LVM을 사용하는지 살펴보자 :-
1 단계 - 커널 설정하기LVM을 설치하기전에 필요한 사항이 있다:- 커널이 LVM 모듈을 포함하여 컴파일되있어야 한다. 다음과 같이 커널을 컴파일한다:- # cd /usr/src/linux # make menuconfig 하위메뉴에서:- Multi-device Support (RAID and LVM) --> 다음 두 옵션을 킨다:- [*] Multiple devices driver support (RAID and LVM) 과 <*> Logical volume manager (LVM) Support. 2 단계 - 디스크에 남은 공간 확인하기다음 명령어를 사용한다:- # df -h Filesystem Size Used Avail Use% Mounted on /dev/hda1 3.1G 2.7G 398M 87% / /dev/hda2 4.0G 3.2G 806M 80% /home /dev/hda5 2.1G 1.0G 1.1G 48% /var 3 단계 - 하드디드크에 LVM 파티션 만들기fdisk나 다른 파티션 도구를 사용하여 LVM 파티션을 만든다. linux LVM의 파티션 번호는 8e이다. # fdisk /dev/hda 입력 p (파티션표를 출력) 입력 n (새로운 파티션을 만듬)Linux LVM 파티션을 만든후 파티션표를 출력해보았다. 다음과 같이 보일 것이다:- Device Boot Start End Blocks Id System /dev/hda1 * 1 506 4064413+ 83 Linux /dev/hda2 507 523 136552+ 5 Extended /dev/hda5 507 523 136521 82 Linux swap /dev/hda6 524 778 2048256 8e Linux LVM /dev/hda7 779 1033 2048256 8e Linux LVM 4 단계 - 물리볼륨 만들기# pvcreate /dev/hda6 pvcreate -- -physical volume "/dev/hda6" successfully created # pvcreate /dev/hda7 pvcreate- -- physical volume "/dev/hda7" successfully created위 명령어는 또 파티션 처음부분에 볼륨그룹 기술자를 만든다. 5 단계 - 볼륨그룹 만들기새로운 볼륨그룹을 만들고 다음과 같이 두 물리그룹을 추가한다. # vgcreate test_lvm /dev/hda6 /dev/hda7 vgcreate- -- INFO: using default physical extent size 4 MB vgcreate- -- INFO: maximum logical volume size is 255.99 Gigabyte vgcreate- -- doing automatic backup of volume group "test_lvm" vgcreate- -- volume group "test_lvm" successfully created and activated그러면 물리볼륨 /dev/hda6과 /dev/hda7을 포함하는 test_lvm이란 볼륨그룹이 만들어진다. 물리적 범위 크기 4MB가 목적에 맞지 않다면 이 명령어에 물리적 범위 크기를 지정할 수도 있다. 이제 볼륨그룹을 활성화한다. # vgchange -ay test_lvm "vgdisplay" 명령어는 시스템에 만든 볼륨그룹에 관한 정보를 보여준다. # vgdisplay --- Volume group --- VG Name test_lvm VG Access read/write VG Status available/resizable VG # 0 MAX LV 256 Cur LV 1 Open LV 0 MAX LV Size 255.99 GB Max PV 256 Cur PV 2 Act PV 2 VG Size 3.91 GB PE Size 4 MB Total PE 1000 Alloc PE / Size 256 / 1 GB Free PE / Size 744 / 2.91 GB VG UUID T34zIt-HDPs-uo6r-cBDT-UjEq-EEPB-GF435E 6 단계 - 논리볼륨 만들기lvcreate 명령어는 볼륨그룹에 논리볼륨을 만든다.# lvcreate -L2G -nlogvol1 test_lvm 7 단계 - 파일시스템 만들기이제 논리볼륨에 파일시스템을 만들어야 한다. 여기서는 논리볼륨에 reiserfs 저널링 파일시스템을 사용하기로 한다. # mkreiserfs /dev/test_lvm/logvol1mount 명령어로 새로 만든 파일시스템을 마운트한다. # mount -t reiserfs /dev/test_lvm/logvol1 /mnt/lv1 Step 8 - /etc/fstab와 /etc/lilo.conf에 항목 추가하기다음 항목을 /etc/fstab에 추가하여 부팅시 파일시스템이 마운트되게 한다. /dev/test_lvm/logvol1 /mnt/lv1 reiserfs defaults 1 1아직 새로 컴파일한 커널로 기존의 커널을 교체하지않았다면 지금 복사한다. 이제 LVM 사용여부를 결정할 수 있다. image = /boot/lvm_kernel_image label = linux-lvm root = /dev/hda1 initrd = /boot/init_image ramdisk = 8192위 내용을 추가한후 다음 명령어로 lilo를 재설치한다. # /sbin/lilo Step 9 - 논리볼륨 크기 변경하기lvextent 명령어로 논리볼륨의 크기를 쉽게 늘릴 수 있다.# lvextend -L+1G /dev/test_lvm/logvol1 lvextend -- extending logical volume "/dev/test_lvm/logvol1" to 3GB lvextend -- doing automatic backup of volume group "test_lvm" lvextend -- logical volume "/dev/test_lvm/logvol1" successfully extended비슷하게 아래와 같이 논리볼륨의 크기를 줄일 수 있다. # lvreduce -L-1G /dev/test_lvm/lv1 lvreduce -- -Warning: reducing active logical volume to 2GB lvreduce- -- This may destroy your data (filesystem etc.) lvreduce -- -do you really want to reduce "/dev/test_lvm/lv1"? [y/n]: y lvreduce- -- doing automatic backup of volume group "test_lvm" lvreduce- -- logical volume "/dev/test_lvm/lv1" successfully reduced 결론이제 LVM이 매우 확장가능하며 사용하기 쉬움을 알았다. 볼륨그룹이 만들어지면, 논리볼륨의 크기를 매우 쉽게 필요한만큼 바꿀 수 있다. |
'★─Programing > ☆─Linux' 카테고리의 다른 글
[Linux] /etc 분석.. (0) | 2007.08.06 |
---|---|
[Linux] mount 사용법 (0) | 2007.08.06 |
[Linux] Linux 파일 시스템 구조 (0) | 2007.08.01 |
[Linux] cron과 at 사용해보기 (0) | 2007.08.01 |
[Linux] /etc/fstab 각 필드 정보 (0) | 2007.08.01 |
Comments