출처 : https://support.hpe.com/hpsc/doc/public/display?docId=emr_na-c01847647
기술 작업 지침
리눅스에서 LVM 구성하는 방법
LVM 은 Logical Volume Manager 의 약자로서, 저장장치들을 좀더 효율적이고 유연하게 관리할 수 있는 커널의 부분과 프로그램을 말합니다. 처음에는 IBM에서 개발되었는데, 그 후에 OSF(현재는 OpenGroup http://www.opengroup.org)에서 차용을 하여 OSF/1 operating system 에서 쓰였습니다. 지금은 HP-UX, Digital Unix operating system, AIX 등의 상용 유닉스에서 쓰고 있습니다. 리눅스 버전은 현재 HP-UX의 것을 모델로 하여 Sistina Software사 (http://www.sistina.com)에서 open source로 개발하고 있습니다. LVM 을 이해하려면 먼저 Software RAID (Redundant Array of Inexpensive Drives)를 언급해야 하는데, 이 둘은 비슷하면서도 큰 차이가 있습니다. 비슷한 점은 여러 물리적인 디스크들을 하나의 논리적인 디스크처럼 다룰 수 있게 함으로서 조합방법에 따라 고용량, 고속, 데이터의 무결성을 실현하는 점입니다. 하지만 분명하게 다른 점이 있는데. lvm은 raid보다 관리 및 확장이 비교적 쉬운 반면, raid에는 lvm에는 없는 disk mirroring (RAID level 1), Parity Stripe (RAID level 4,5) 등의 방식이 있어서 속도 또는 데이터의 무결성을 보장 받을 수 있습니다. 그러나 이런 차이점에도 불구하고 lvm가 주목을 받는 이유는 다음과 같습니다.
- 쉬운 관리
- 서로 다른 많은 디바이스 조합 지원
- 직관적인 저장 장치로의 접근
- 뛰어난 확장성
- 믿을만한 안전성과 효율
- 스냅샷 기능 지원
VG(Volume Group)은 LVM의 가장 기본적인 요소입니다. 쉽게 말하자면 가상 디스크라고 할 수 있는데, 하나 이상의 실제 물리적으로 존재하는 블록 디바이스가 모여서 VG를 이루게 됩니다.
그 물리적인 블록 디바이스를 PV(Physical Volume)라고 하는데, 거의 대부분의 장치를 PV로 쓸 수 있습니다. 하드디스크 및 그 파티션, 소프트웨어/하드웨어 RAID 장치, 심지어 Loopback 블록 디바이스(파일 시스템상의 파일을 블록 디바이스처럼 쓸 수 있게 해준다) 도 포함합니다.
PV와 대비되는 것이 LV(Logical Volume)입니다. 이것은 가상 파티션이라고도 할 수 있는데, VG를 적당히 나누어 할당한 것이 LV입니다. 사용자는 LV를 일반 디스크나 파티션처럼 쓰면 됩니다. 정리하자면, 하나 이상의 PV가 모여 VG를 이루고, VG를 가상적으로 나누어 할당하면 LV이 됩니다.
- PV(Physical Volume) 초기화 작업
# fdisk /dev/hda
Command (m for help): t
Partition number (1-6): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): w
# fdisk /dev/hdb
Command (m for help): t
Partition number (1-6): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): w
- PV(Phydical Volume) 생성
# pvcreate /dev/hda2
pvcreate -- physical volume “/dev/hda2”
successfully created
# pvcreate /dev/hdb2
pvcreate -- physical volume “/dev/hdb2”
successfully created
- VG(Volume Group) 생성
# vgcreate -s 16m new_vg /dev/hda /dev/hdb
위의 명령은 두 개의 스크를 합쳐서 new_vg라는 VG를 만든다는 것이다.
옵션 ‘-s 16m’은 PE(Physical Extent)의 크기를 16MB로 정하는 것인데, 만약 옵션 ‘-s’가 생략되면 기본적으로 PE의 크기는 4MB가 된다. VG가 만들어지면 /dev/VolumeGroupName라는 형식으로 디렉토리가 생기게 된다.
위의 예에서는 /dev/new_vg 가 될 것이다.
- VG(Volume Group)명 변경 또는 삭제방법
- 변경방법
# vgrename new_vg vg00
- 삭제방법
VG에 LV가 남아있지 않고 비활성화되어 있으면 vgremove로 지울 수 있습니다. 비활성화 시키는 방법은, # vgchange -a n vg00 이고, 다음의 명령으로 지워집니다.
# vgremove vg00
- 변경방법
- VG(Volume Group) 확장방법
VG의 확장과 축소는 PV의 추가, 제거로 이루어집니다.
VG에 PV를 추가하는 명령은 vgextend인데, vg00이라는 VG에 PV인 /dev/hda2를 추가하려면 다음과 같이 실행해야 합니다.
# vgextend vg00 /dev/hda2
- VG(Volume Group) 축소방법
PV를 VG에서 제거하는 명령은 vgreduce입니다. 그러나 PV에 PE가 할당되어 있으면 제거되지 않습니다. 그 할당된 PE를 다른 PV로 옮겨야 제거될 것입다. 빈 PV인 /dev/hda2를 vg00에서 제거하려면,
# vgreduce vg00 /dev/hda2
- LV(Logical Volume) 생성
VG에 LV를 만들면 /dev/VolumeGroupName/LogicalVolumeName의 형식으로 블록 디바이스가 만들어집니다. 이것은 일반 블록 디바이스와 다를 바 없는 용도로 쓸 수 있습니다. LV 를 만드는 명령은 lvcreate인데 일반적인 예는 다음과 같습니다.
# lvcreate -L 4g -n data vg00
위의 명령은 4GB 크기로 vg00이라는 VG에 data라는 새로운 LV를 만드는 것입니다. 옵션 ‘-L’은 LV의 크기를 지정하는 것인데, 숫자 뒤의 접미사에 따라 숫자의 단위가 달라집니다. k는 KB, m은 MB, g는 GB, t는 TB를 뜻합니다. 만약, 접미사가 안 붙어있으면 숫자의 단위는 MB가 됩니다. ‘-L’ 대신 ‘-l’를 쓸 수도 있는데, ‘-l’ 뒤에는 LE의 갯수를 쓰면 됩니다.
- LV(Logical Volume)명 변경 및 삭제방법
- 변경방법
# lvrename /dev/vg00/data /dev/vg00/db
- 삭제방법
# lvremove /dev/vg00/db
- 변경방법
- LV(Logical Volume) 확장방법
# lvextend -L +2g /dev/vg00/db
위의 명령은 /dev/vg00/db의 크기를 2GB 만큼 늘립니다. 기존의 크기가 4GB 였다면, 옵션 ‘-L 6g’를 줬어도 같은 결과를 보일 것입니다. 역시 여기에서도 옵션 ‘-l’를 쓰면 LE 단위로 늘릴 수 있습니다.
다음은 일반적인 ext2 의 확장 절차입니다.
- # umount /var/lib/mysql
- # lvextend -L +10g /dev/databases/mysql
- # resize2fs /dev/databases/mysql
- # mount /dev/databases/mysql /var/lib/mysql
NOTE: reiserfs : reiserfs는 resize_reiserfs 라는 명령으로 크기를 바꿀 수 있습니다.마운트된 상태에서도 크기를 늘릴 수 있는데, 그 예는 다음과 같습니다.
# lvextend -L +5g /dev/devel/cvs
# resize_reiserfs -f /dev/devel/cvs
언마운트해서 늘리려면 다음 같이 합니다.
# umount /var/cvs
# lvextend -L +5g /dev/devel/cvs
# resize_reiserfs -f /dev/devel/cvs
# mount /dev/devel/cvs /var/cvs
- LV(Logical Volume) 축소방법
- ext2 : e2fsadm 을 쓰는 것이 간단합니다.
# umount /home
# lvreduce -L -2g /dev/vg00/home 또는
# lvresize -L -2g /dev/vg00/home
# mount /dev/vg00/home /home
- reiserfs : 크기를 늘릴 때와는 달리 마운트 된 상태에서는 줄일 수 없습니다
# umount /usr
# resize_reiserfs -s -1g /dev/vg00/usr
# lvreduce -L -1g /dev/vg00/usr
# mount /dev/vg00/usr /usr
- ext2 : e2fsadm 을 쓰는 것이 간단합니다.
- LVM 설정의 Backup 방법
먼저 설정 백업 파일의 내용을 보려면 다음과 같이 합니다.
# vgcfgrestore -f /etc/lvm/backup/vg00 -ll vg00
이 파일을 이용해 설정을 복구하려면 다음과 같이 합니다.
# vgchange -a n vg00
# vgcfgrestore -f /etc/lvm/backup/vg00 vg00
# vgchange -a y vg00
- 두개의 ide disk를 하나의 striped mapping LV로 묶는 방법
80GB 짜리(실제는 약 76.1GB) IDE 하드디스크 두 개를 striped mapping LV 로 묶는 과정입니다. 먼저 블록 디바이스 이름이 /dev/hde, /dev/hdf 인 디스크들을 PV로 만듭니다.
# pvcreate /dev/hde /dev/hdf
이렇게 만든 PV들을 합쳐서 VG를 만듭니다.
# vgcreate vg00 /dev/hde /dev/hdf
이제 VG에 LV를 만듭니다.
# lvcreate -i 2 -I 4 -L 152g -n striped_lv vg00
위의 명령으로 152GB 짜리 striped mapping LV가 만들어진 것입니다. 옵션을 설명하면 ‘-i 2’는 두 개의 PV를 striped 하는데 쓰고, ‘-I 4’는 PE를 4KB로 쪼개서 PV들에게 저장한다는 것입니다. ‘-I’ 옵션에는 2n (n은 0과 7사이의 숫자), 즉 1, 2, 4, 8, 16, 32, 64, 128 의 숫자를 쓸 수 있습니다
파일 시스템을 만들고, 마운트를 해서,
# mkreiserfs /dev/vg00/striped_lv 또는
# mke2fs –j /dev/vg00/striped_lv
# mount /dev/vg00/striped_lv /mnt
- 새로운 디스크로 PV 교체방법
환경은 /dev/hdd, /dev/sda, /dev/sdb가 vg01에 속해있는데, 그중에서 /dev/hdd를 빼고 /dev/sdc를 더하는 과정입니다.
먼저 /dev/sdc 를 PV 로 만들고,
# pvcreate /dev/sdc
/dev/sdc를 vg01에 추가한 후에,
# vgextend vg01 /dev/sdc
/dev/hdd의 PE 들을 /dev/sdc로 옮깁니다.
# pvmove /dev/hdd /dev/sdc
성공적으로 옮겨졌으면 vg01에서 /dev/hdd를 제거합니다.
# vgreduce vg01 /dev/hdd
- snapshot LV를 만들어서 안전한 백업방법
데이터의 변동이 많은 /var등의 디렉토리는 백업 도중에 데이터가 엉키는 수가 있습니다. 그것을 방지하기 위해서, snapshot LV를 만들어 데이터를 고정시킨 후 백업을 하면 됩니다. 일단 snapshot LV 를 만듭니다.(한 줄로)
# lvcreate -s -L 5g -n mysqlbackup /dev/vg01/mysql
위의 명령은 /dev/vg01/mysql에 대한 snapshot LV인 /dev/vg01/mysqlbackup를 만듭니다. 옵션 ‘-s’는 만들어질 LV가 snapshot 형식임을 정해주고 있습니다. 옵션 ‘-L’ 는 LV 의 최대 크기를 정해줍니다. 대개 원본 LV와 크기를 같게 하는 것이 좋습니다. 사실 snapshot LV는 원본이 갱신되는 부분만 고정시키려고 데이터를 가져와 LE에 할당하기 때문에 많은 LE가 필요하지 않습니다.
이제 만든 LV 를 마운트 시킨 후
# mount /dev/vg01/mysqlbackup /mnt
백업을 하면 된다.
# tar cf /dev/rmt0 /mnt
백업을 마쳤으면 언마운트시킨 후에 snapshot LV 을 지웁니다.
# umount /mnt
# lvremove /dev/vg01/mysqlbackup
LVM관련 디스크가 변경되었을 경우
# vgscan –v –mknodes 를 실행하면
vgscan scans all SCSI, (E)IDE disks, multiple devices and a bunch of other disk devices in the system looking for LVM physical volumes and volume groups. Define a filter in lvm.conf(8) to restrict the scan to avoid a CD ROM, for example.
In LVM2, vgscans take place automatically; but you might still need to run one explicitly after changing hardware.
See lvm for common options
--mknodes
Also checks the LVM special files in /dev that are needed for active logical volumes and creates any missing ones and removes unused ones.
'IBM PowerLinux' 카테고리의 다른 글
Scale-out LC System Event Log Collection Tool (0) | 2018.06.19 |
---|---|
RHEL7: How to get started with CPU governor (0) | 2018.03.20 |
LVM home삭제후 root 증설 (0) | 2018.02.14 |
Linux samba 설정 (0) | 2017.08.04 |
Linux Network SPEED test iperf (0) | 2017.07.09 |