1. 생성하기

1.1. 새롭게 생성하기

1) pvcreate /dev/hda8
2) vgcreate lvm_0 /dev/hda8
3) vgdisplay -v
4) lvcreate -L 40g -n home lvm_0
5) vgdispaly -v
6) lvcreate -l 25000 -n data1 lvm_0
7) mkfs.ext3 /dev/lvm_0/home
8) mkfs.ext3 /dev/lvm_0/data1


1.2. /etc/fstab 추가

/dev/lvm_0/home         /home                ext3    defaults,noexec,nosuid,grpquota,usrquota        1 1
/dev/lvm_0/data1         /data1                ext3    defaults,noexec,nosuid,grpquota,usrquota        1 1

2. lv 사이즈 변경방법
2.1. LV 늘리고 파일시스템 resize
EXT4 파일시스템의 경우 온라인으로 가능하다.

# umount /home

# umount /data1

# lvremove /dev/lvm_0/data1

# lvextend -l '+LVsize' /dev/lvm_0/home    -> +LVsize는 remove된 data1의 LE size이다.

만약 + 를 빼게되면 LV의 늘리려는 값이 된다.

예를 들어 기존에 5G의 용량의 LV가 있는데 +10G를 하게되면 LV가 15G가 되는 것이고

+를 넣지않고 10G를 하게 되면 LV가 10G가 되는 것이다.

# resize2fs -fp /dev/lvm_0/home

-> lvextend -r 옵션을 주게 되면 ext2/ext3/ext4, ReiserFS, XFS 파일시스템의 경우 resizefs가 함께 된다.

# mount /home

# /etc/fstab 에서 /data1 마운트 부분을 뺀다.

# tune2fs -i0 -c0 -r51200 -O dir_index /dev/lvm_0/home


2.2. 물리적 디스크 합치고 LV 확장시키기 - /home 과 /data1 합치기

/data1 디렉토리에 백업할 파일이 있으면 백업을 한다.(만약을 대비해 /home 있는 데이터도 백업)

home, data1 디렉토리와 연관된 httpd, proftpd, atalkd, afpd, smbd, mysqld 등의 데몬을 내린다.
umount /home
umount /data1
lvremove /dev/lvm_1/data1
rm -rf /data1
/etc/fstab에서 /data1 에 관한 마운트 정보 삭제
vgremove lvm_1
vgextend lvm_0 /dev/sdb1
vgdisplay -v 를 통해 /dev/sdb1 볼륨의 free LE 값을 확인
lvextend -l +freeLE값 /dev/lvm_0/home
resize2fs -fp /dev/lvm_0/home
mount /home

tune2fs -i0 -c0 -r51200 -Odir_index /dev/lvm_0/home
smbd.conf 와 afpd.conf 파일을 수정한다.
httpd, proftpd, atalkd, afpd, smbd, mysqld 등의 데몬을 올린다.

 

2.3. LV 축소시키기

# umount /home

# e2fsck -f /dev/lvm_0/home
# resize2fs /dev/lvm_0/home 2g (2g 또는 524288로 표기 가능. 524288block = 2g, 262144block = 1g)

위 명령에서 주위할것은 실제 사용중인 데이터 용량이 2기가 이상일 경우 위와 같이 설정하면 데이터 유실 됨.

# lvreduce -L-1G /dev/lvm_0/home

# resize2fs -pf /dev/lvm_0/home

# mount /home

# vgdisplay 하면 감소된 용량만큼 free PE 값이 증가한 것을 볼 수 있음.

참고로 lvresize라는 명령어의 경우 extend와 reduce 모두를 할 수 있다. 그리고 -r 옵션을 주면 상황에 따라 파일시스템 확장 또는 축소까지 함께 된다.

또한 reduce를 할 경우 LV 안에 있는 데이터량보다 LV 값이 약 15% 이상 커야 적용 가능하다.

만약 resizefs로 LV를 줄이는데 데이터량보다 작을 경우 Resize fail 메시지와 함께 LV와 파일시스템 모두 줄어들지 않는다.

 

2.4. 디스크 교체

시나리오 - lvm_1 볼륨그룹에 /dev/sdb1 /dev/sdc1 (linear 방식으로 merge)이 속해 있다고 한다.

두 개의 파티션(disk)는 각각 1.5TB 이다.

/dev/sdb Disk의 불량섹터가 증가하고 있어서 같은 용량의 다른 Disk(/dev/sdd)로 변경을 하고자 한다.

먼저 사전에 신규 /dev/sdd 1.5TB Disk에 대해 파티션 구성을 하고 아래와 같이 진행한다.

1) lvm 볼륨그룹 Disk 확인

# pvscan | grep lvm_1
PV /dev/sdb1 VG lvm_1 lvm2 [1.36 TB / 0 free]
PV /dev/sdc1 VG lvm_1 lvm2 [1.36 TB / 0 free]

2) 신규 Disk pv 구성

# pvcreate /dev/sdd1

3) lvm_1 볼륨에 신규 Disk PV를 추가

# vgextend lvm_1 /dev/sdd1

4) 추가 여부 확인

# vgdisplay

5) 기존 Disk의 PV를 신규 Disk로 이전

# pvmove /dev/sdb1 /dev/sdd1

6) 기존 Disk를 볼륨그룹에서 제거

# vgreduce lvm_1 /dev/sdb1

7) 기존 Disk PV 제거

# pvremove /dev/sdb1

 

3. 에러 대처

3.1. lvscan, pvscan, vgscan등의 lvm관련 명령어를 치면 다음과 같이 나올때 대처법

Couldn't find device with uuid 'D9kWc3-0XB0-zkfH-rYyy-Qdwo-3Tq4-bEjq0q'.

#vgreduce vg이름 --removemissing

* 이런 메시시가 나오는 이유는 기존 LVM으로 2개 이상 묶인 디스크 그룹 중 한개 이상이 없어 졌을 경우 그렇다

예를 들어 기존에 /dev/sda8 /dev/sdb1 HDD로 lvm_0명의 vg로 묶었던 디스크 중 /dev/sda8이 없어지고 물리적으로 새로운 /dev/sda8 가 시스템에 붙었다. 그러면 아래처럼 하면 된다. 대신 데이터는 날라간다.

ex) vgreduce lvm_0 --removemissing 명령어로 일치되지 않는 것을 없애 버린다. 그리고 vgremove lvm_0하면 없어진다.

4. HDD 교체 상황에 따른 LVM 장애 처리방법
4.1.
기존의 sda HDD가 인식불량 고장으로 미쳐 /dev/sda8 파티션에 대해 lvm 정리를 못함, 그리고 새로운 HDD에 OS 인스톨 후 DDNSInstall 팩을 돌림.
DDNSInstall 팩에 의해 /dev/sda8 파티션이 LVM으로 생성, 포맷됨.

4.2.
따라서 아래처럼 lvm_0 VG에 속한 디바이스가 두개로 겹친다.
sda8(교체HDD) - /dev/lvm_0/home
sdb1(기존HDD) - /dev/lvm_0/home
그리고 pvscan을 하면 알수없는 장치가 하나 표기된다.
PV unknown devive   VG lvm_0   lvm2 [1.82 TB / 0    free]
PV /dev/sdb1   VG lvm_0   lvm2 [1.82 TB / 0    free]
PV /dev/sda8   VG lvm_0   lvm2 [1.82 TB / 0    free]

4.3.
lvremove /dev/lvm_0/home --> 에러 발생
vgreduce lvm_0 --removemissing --> 이렇게 해도 duplication 에러가 발생.

4.4.
아래처럼 진행.
pvremove /dev/sdb1
lvremove /dev/lvm_0/home -> y
vgremove lvm_0 -> y
pvcreate /dev/sdb1
vgcreate lvm_0 /dev/sda8 /dev/sdb1
lvcreate -l952736 -nhome lvm_0
그리고 pvscan으로 보면, 정상적으로 장치가 표기됨.
PV /dev/sdb1   VG lvm_0   lvm2 [1.82 TB / 0    free]
PV /dev/sda8   VG lvm_0   lvm2 [1.82 TB / 0    free]


5. FedoraCore2 시스템 LVM 확장작업 관련

[root@Daehan root]# vgdisplay
  --- Volume group ---
  VG Name               lvm_0
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                255
  Cur LV                1
  Open LV               1
  Max PV                255
  Cur PV                1
  Act PV                1
  VG Size               181.81 GB
  PE Size               4.00 MB
  Total PE              46543
  Alloc PE / Size       46543 / 181.81 GB
  Free  PE / Size       0 / 0
  VG UUID               yM1Sc3-4nOW-m3vt-LfTo-SYBN-ZF33-oEQeBi

  --- Volume group ---
  VG Name               lvm_1
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               2.27 TB
  PE Size               4.00 MB
  Total PE              596166
  Alloc PE / Size       596166 / 2.27 TB
  Free  PE / Size       0 / 0
  VG UUID               kfmcMI-mJEO-ArxM-qIZH-xdQb-FyXu-fbT3ku

[root@Daehan root]# resize2fs -fp /dev/lvm_1/data1
resize2fs 1.35 (28-Feb-2004)
Resizing the filesystem on /dev/lvm_1/data1 to 610473984 (4k) blocks.
Begin pass 1 (max = 11178)
Extending the inode table     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 2 (max = 1653)
Relocating blocks             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 7453)
Scanning inode table          XXX-------------------------------------     ---> 이부분에서 40분가량 소요 됨

LVM for ace-local 서버

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다