1. Disk의 사용계획
시스템에 논리 볼륨을 설정하거나 수정하기 전에는 논리 볼륨을 어떻게 사용할 것인가에 대한 계획이 필요하고, 계획하는 데에는 몇
가지 고려해야 할 사항이 있다.
• [고려사항 1] 논리 볼륨의 사용 목적
논리 볼륨은 file system area, swap area 또는 raw data 저장 장치등으로 사용이 가능한데, 추가하려는 disk의 사용 목적이
무엇인지 결정해야 한다.
- LV를 File System Area로 사용하는 경우
• hfs 및 jfs에서 사용가능한 파일 시스템의 최대 용량은 종전 4GB에서 10.10 버전 부터 4 ~ 128GB로 증가하였다.
• 루트볼륨은 프로세서의 종류에 따라 2 ~ 4GB로 제한된다.
• 파일 시스템 용량 산정 시에는 다음과 같은 세 가지 구성요소가 고려되어야 한다.
파일 시스템 용량 산정 시에는 첫 째, 파일 시스템에서 User가 사용할 Data 공간을 앞으로 Data의 증가추이를 판단하여
지정하고, 둘 째로 파일 시스템의 minfree의 공간으로 10%의 공간을 더한다. minfree 영역은 앞으로 성능을 유지보수 하기
위해 예약된다. 세 째로는 파일 시스템을 유지보수하는데 사용되는 모든 데이터 구조가 저장된 파일 시스템 오버헤드 공간
5%를 User Data공간 + minfree 공간에 더한다.
예를 들어 User Data의 용량이 60MB가 요구될 경우에는 60MB에 minfree 공간 6MB를 더하고 거기에 파일시스템 오버헤드
로 사용될 3MB를 더해 실제로 66MB + 6MB + 3MB = 69MB의 공간이 필요하게 된다.
이것을 LVM의 LV로 생성한다고 하면, LVM은 디스크에 용량을 할당할 때, Physical Extent 단위로 할당하며, PE의 default
값은 4MB이다. 만약 69MB의 LV를 생성해야 한다면, 시스템은 할당되야 하는 용량이 4의 배수(PE가 4MB 이기 때문에)가
되어야 하기 때문에 69를 포함하는 72MB로 생성하게 된다.
File System의 크기는 생성된 이후, 확장은 가능하지만 축소는 불가능하다. 따라서 파일시스템의 크기를 축소해야 할 경우에
는 현재보다 더 작은 파일시스템 생성 후 데이터를 복사하여 현재 용량이 큰 파일시스템과 교체하는 방법을 사용한다.
- LV를 swap Area로 사용하는 경우
LV를 swap용으로 사용할 경우에는 LV 생성 후 파일 시스템을 생성하지 않고 그대로 사용한다. 또한 루트 볼륨에 존재하는 기본
Swap 외에 보조 swap을 사용할 수 있으며, 보조 스왑공간을 여러 디스크로 분산하였을 때, 가장 최적의 성능을 발휘할 수 있다.
- LV를 raw device로 사용하는 경우
LV를 raw device로 사용할 경우에도 마찬가지로 LV 생성 후 파일 시스템을 생성하지 않고 그대로 사용한다. 보통 raw device로
사용되는 것이 데이터베이스 이므로 주로 대용량의 데이터를 다루게 된다. 기본적으로 LVM은 하나의 물리볼륨에 데이터를 기록
하고 이 물리볼륨이 꽉 차면 다음 볼륨에 데이터를 기록하기 때문에 데이터베이스와 같이 대용량의 자료를 다룰 경우에는 비효율
적인 I/O가 일어날 수 있다. 따라서 raw device설정 시에는 특정 LV를 관리자가 원하는 물리볼륨에 삽입하여 사용하거나
stripping을 사용할지에 여부에 대해서 결정해야 한다.
• [고려사항 2] 논리 볼륨의 크기
LVM은 확장 및 축소가 가능하고 디스크의 물리적인 위치에 상관없이 LV를 생성하여 사용할 수 있지만 vg00(root volume)만은
예외로 연속적인 디스크 공간에 할당되어야 한다. 또한 root volume이 아니라 하더라도 Logical Volume는 자유롭게 확대/축소가
가능하고, File system도 확대가 가능하지만 File system은 확대에 비해 축소는 자유롭지 못한관계로 초기 설정 시 용량을 고려하여
설정해야 한다.
• [고려사항 3] I/O 성능
시스템의 특성 상 I/O성능을 고려해야 할 경우 디스크 인터페이스 종류 및 모델을 고려해야 한다. 디스크나 인터페이스의 종류가
상이하더라도 사용은 가능하지만 같은 디스크에 같은 인터페이스를 사용하는 경우가 Performance 면에서 더 뛰어나다.
• [고려사항 4] 고가용성 데이터
시스템의 특성상 최대한 안정적인 서비스를 지원해야 하는 경우 미러링을 디스크에 적용할 것인지, 몇 개의 사본을 만들 것인지
결정해야 한다.
2. Disk의 초기화
PC 사용 도중 Bad Sector가 의심스러울 경우, 우리는 Low Level Format이라는 것을 사용한다. 참고적으로 Low format에 대해 말하
자면, 우리가 disk를 사용하다 보면 Bad sector가 발생할 수 있다. 이러한 bad sector는 물리적 또는 논리적인 에러로 나눌 수 있는
데, 물리적인 bad sector의 경우에는 말그대로 하드디스크 표면에 문제가 생긴 것으므로 A/S를 받아야 사용이 가능하다.
그러나 논리적인 bad sector의 경우에는 Low Level Format로 수정이 가능한데, 일반적인 format이 파티션이 이미 생성된 상태에서
디스크에 파일 시스템을 설치하는 것이라면, Low Level Format은 디스크를 공장에서 출시된 초기의 상태로 되돌리는 것이다.
다시 말해, disk에 있는 트랙,실린더,섹터를 모두 지우고 다시 기록하는 작업이다. 따라서 Low Level Format을 한 후에는 다시 파티
션을 분할하고 운영체제의 파일시스템에 따른 format 작업을 다시 해야 한다. 또한 Low Level Format을 자주할 경우 디스크에 무리
가 가서 고장의 우려가 있으며, Low Level Format 도중 에러가 발생할 경우 최악의 상황에서는 디스크를 사용할 수 없게 될 수
있으므로 Low Level Format은 언제나 최후의 선택이 되어야 한다.
HP-UX에서는 디스크를 이전에 한번 사용했거나 디스크의 무결성이 의심스러울 때 사용자가 직접 디스크를 초기화하기 위해서
mediainit이라는 명령을 사용한다. 이 명령은 PC의 Low Level Format와 마찬가지로 디스크를 포맷시켜 초기화하고 읽기 쓰기 테스
트를 수행하여 디스크의 무결성을
<그림 10.5> lvcreate 명령의 예제
그림 10.6은 그림 10.5에서 실행한 lvcreate 명령 후 생성된 lvol1~3번 까지의 정보를 vgdisplay 명령으로 디스플레이 한 것이다.
㉠ 그림에서 보는 바와 같이 lvol1은 -l 옵션으로 17000개의 extent의 용량으로 생성하였으므로 17000개의 extent가 할당되어 lvol1이
생성되었다. lvol1의 용량은 17000 * 4MB = 68000(68GB)이며, LV Size (Mbytes)란에 정보가 출력되어있다.
㉡ lvol2는 -L 옵션으로 4MB를 주어 생성하였으므로, LV Size란에 4MB의 용량이 표시되었으며, Current LE/Allocated PE 란에 출
력된 정보와 같이 1개의 extent가 할당된 것을 확인할 수 있다.
㉢ lvol3은 -L 옵션으로 7MB를 주었으나 extent의 크기로 인해 8MB의 크기로 생성되었다. 이 역시 출력된 정보를 보다시피 LV Size
에는 8MB, Current LE/Allocated PE에는 2개가 표시되므로써 2개의 4MB의 extent 2개가 할당되어 lvol이 생성되었음을 나타낸다.
<그림 10.6> lvcreate 명령 실행후 생성 된 lvol의 정보
7. LVM의 확대
시스템 운영 도중 관리해야 할 Data 량이 증가하여 현재 사용하고 있는 파일시스템 용량이 부족한 경우, LVM은 VG 및 LV를 extend
하여 특별한 어려움 없이 용량증설을 가능하게 해준다. 만약 현재 용량을 추가 증설하려는 Volume Group에 여유분의 디스크 용량이
남아있을 경우에는 lvextend 명령으로 LV만 늘려주고, Volume Group에 여유분의 용량이 없을 경우에는 VG에 PV를 추가한 후 LV를
늘려줄 수 있다.
LV를 확대하기 위해서는 확대하려는 lvol이 속해있는 VG에 사용하고 있지 않은 Free PE가 존재해야 한다. 따라서 아래 그림 10.7과
같이 vgdisplay -v VG_name 명령을 사용하여 현재 남아있는 extent가 있는지 확인한다.
㉠ vg00은 현재 총 17499의 PE가 모두 사용 중이므로 남아있는 여유공간이 없음을 알 수 있다.
<그림 10.7> 현재 VG에 있는 Free PE 개수 확인
만약 Free PE의 개수가 현재 추가하고자 하는 용량보다 적거나 없을 경우에는 현재 확대하려는 lvol이 속한 VG에 PV를 추가한 후 확
대작업을 해야한다. 그러나 lvol이 속한 VG에 여유공간이 있을 경우에는 VG에 PV를 추가할 필요없이 바로 lvextend만 하면된다.
VG를 확대하기 위해서 ioscan 명령으로 추가할 PV의 H/W Path와 device file 이름을 확인한 후, pvcrate 명령을 사용하여 disk를 PV
로 만든다. 그리고 확대하려는 VG에 "vgextend VG_name 추가하려는 PV의 device file_name" 형식으로 명력을 입력하여 VG에 PV
를 추가한다.
아래 그림 10.8을 보면 PV 생성 후, VG에 PV를 추가하고 strings 명령으로 Display된 lvm정보에 vg01이 두 개의 PV로 구성이 바뀐것
을 확인 할 수 있다.
㉠ pvcreate -f /dev/rdsk/c0t4d0 : c0t4d0 디스크에 LVM정보를 설치하여 PV로 만든다.
㉡ vgextend /dev/vg01 /dev/dsk/c0t4d0 : vg01에 vtextend명령을 사용하여 사전에 PV로 만들어둔 c0t4d0 디스크를 vg01
에 삽입한다.
㉢ strings /etc/lvmtab : lvmtab에 기록되어 있는 LVM정보를 디스플레이 하여 정상적으로 추가가 되었는지 확인한다.
참고로 /etc/lvmtab 파일은 birnary file이므로 vi로는 볼 수 없기때문에, binary file에 포함되어있는 ASCII
텍스트 내용만 검색하여 보여주는strings명령으로 LVM정보를 확인한다.
<그림 10.8> VG에 PV 추가
그림 10.9는 VG에 PV추가 후 vgdisplay명령으로 vg01 VG의 정보를 확인한 것으로, /dev/dsk/c0t4d0의 PV가 추가되었고, Free PE
개수가 17499개 임을 확인 할 수 있다.
<그림 10.9> VG에 추가 된 PV확인
이제 lvol을 추가하기 위한 준비가 모두 끝났으므로 현재 확대하려는 lvol에 필요한 만큼의 용량을 더 확대하여 사용할 수 있다.
lvol의 확대는 초기 생성과 마찬가지로 -l 옵션으로 extend 개수를 지정하거나 -L 옵션으로 MB단위로 용량을 지정할 수 있다. 그러나
이 때, 용량 지정 시 주의해야할 것은 lvextend 명령에 지정하는 용량만큼 현재 사용하고 있는 lvol의 용량이 증가하는 것이 아니라 현
재용량 + 추가된 용량 = lvextend 명령에 지정한 용량이 된다는 것이다. 예를 들어, 현재 사용하고 있는 lvol의 용량이 100MB라고 가정
할 때, 50MB의 용량을 추가하려면 lvextend명령에는 -L 150(MB)로 용량을 지정해야 한다.
그림 10.10은 LV의 확대에 대한 예제이다.
㉠ lvextend -l 10000 /dev/vg01/lvol2 : lvol2의 용량을 extent 10000개로 확대한다. (extent(4MB) * 10000 = 40GB)
㉡ lvextend -L 290 /dev/vg01/lvol3 : lvol3의 용량을 290MB로 지정했으나 extend 단위로 디스크를 할당하기 때문에, 4의 배수
인 292MB로 시스템이 자동조절하여 lvol을 확대한다.
㉢ vgdisplay -v vg01|more : vg01의 정보를 출력하여 LV가 확대되었는지 확인한다.
<그림 10.10> LV의 확대