검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문 : Recover deleted LVM partitions in CentOS/RHEL/Fedora

  이 글은 실수로 LVM 파티션을 삭제했을 때 vgcfgrestore 명령어로 해당 파티션을 복구하는 내용을 다루고 있습니다. 리눅스는 lvm 설정의 백업 복사본을 /etc/lvm/archive 디렉토리에 보관합니다. 이 글에서는 10GB lvm 파티션을 지운 상태에서 그것을 복구하는 과정을 소개합니다.

1. 볼륨 그룹(예: my-vg)의 백업본 설정을 찾는다.
# vgcfgrestore --list   < 볼륨그룹명 >
# vgcfgrestore --list my-vg

출처: 참조 원문 사이트

  위의 출력 결과에서 동그라미 안에 있는 것이 복구 대상인 것으로 가정합니다.


2. vgcfgrestore와 아카이브 파일을 사용하여 LVM 파티션을 복구한다.
# vgcfgrestore -f /etc/lvm/archive/<파일명> <볼륨그룹명>
예:
# vgcfgrestore -f /etc/lvm/archive/my-vg_00002-692643462.vg  my-vg
"Restored volume group my-vg"
  이제 lvm 파티션을 마운트하여 데이터가 무사한지 확인할 수 있습니다.
2013/08/18 15:55 2013/08/18 15:55
Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문 : Create and Restore manual Logical Volume Snapshots

1. 소개
  LV(Logical Volume) 스냅샷을 생성하면 로지컬 볼륨의 현재 상태를 고정시켜 쉽게 백업하거나 스냅샷을 찍었을 때의 상태로 되돌릴 수 있습니다. 쉽게 말하자면 백업 대상인 파일들이 계속 변한다면 백업이 불가능하므로 특정 시간을 기준으로 파일들의 내용을 얼려버리는 겁니다. 이에 대한 개념과 원리는 밑에서 따로 설명합니다. 참고로 이 스냅샷은 VMware에서 같은 이름의 유사한 기능으로 존재합니다.


2. 이 글에서 다룰 내용
  이 글에서는 LVM(Logical Volume Manager)을 다룰 줄 모른다는 가정하에 1기가 용량을 가진 가짜 하드 드라이브 /dev/sdb를 가지고 아래의 내용을 진행합니다.
  1. /dev/sdb 드라이브에 2개의 파티션을 만든다. 이 파티션들은 "8e Linux LVM" 타입으로 설정할 것이며 PV(Physical Volume)을 생성하는데 사용한다.
  2. 두 파티션을 생성하면 pvcreate 명령어로 PV를 생성한다.
  3. 새로운 VG(Volume Group)를 생성하고 ext4 파일시스템으로 300MB짜리 LV(Logical Volume)를 1개 생성한다.
  4. 새로운 LV를 마운트하고 실험용 데이터를 넣는다.
  5. 스냅샷을 찍고 실험용 데이터를 삭제한다.
  6. LV 스냅샷을 사용해 롤백한다.


3. LV(Logical Volume) 생성
3.1. LVM(Logical Volume Manager)의 기본 개념
  LVM을 사용하면 다수의 PV(Physical Volume)로 구성된 하나의 VG(Volume Group)를 생성할 수 있습니다. 하드 드라이브 전체가 PV일 수도 있고 하나의 파티션이 PV일 수도 있습니다. 일단 VG를 생성하면 그것을 이루고 있는 PV의 구조는 신경쓰지 않으면서 다수의 LV(Logical Volume)를 생성할 수 있습니다. VG에 PV를 추가하면 VG의 크기를 확장할 수 있으며 이를 통해 그 안에 새로운 LV를 생성하거나 기존의 LV를 확장할 수 있습니다.

3.2. 파티션 생성
  먼저 2개의 파티션을 PV용으로 생성합니다. 사실 파티션을 2개 만드는 이유는 2개의 PV로 하나의 VG를 만드는 것을 보여주기 위한 것일 뿐 별다른 의미는 없으므로 디스크 전체를 하나의 파티션으로 만들어 작업해도 상관 없습니다. 아래가 작업 대상인 물리 디스크의 정보입니다.
# fdisk -l /dev/sdb

Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x335af99c

   Device Boot      Start         End      Blocks   Id  System
  fdisk로 2개의 파티션을 생성합니다. 물론 fdisk로 안 해도 상관 없습니다.
# fdisk /dev/sdb
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +400M

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (821248-2097151, default 821248):
Using default value 821248
Last sector, +sectors or +size{K,M,G} (821248-2097151, default 2097151): +200M

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
  아래는 위 작업으로 생성한 파티션을 출력한 모습입니다.
# fdisk -l /dev/sdb

Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x335af99c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      821247      409600   8e  Linux LVM
/dev/sdb2          821248     1230847      204800   8e  Linux LVM

3.3. PV(Physical Volume) 생성
  이제 pvcreate 명령어로 두 파티션을 PV로 만듭니다.
# pvcreate /dev/sdb[1-2]
  Writing physical volume data to disk "/dev/sdb1"
  Physical volume "/dev/sdb1" successfully created
  Writing physical volume data to disk "/dev/sdb2"
  Physical volume "/dev/sdb2" successfully created

3.4. VG(Volume Group) 생성
  vgcreate 명령어로 /dev/sdb1과 /dev/sdb2라는 PV로 구성됐으며 "volume_group"이라는 이름을 가진 하나의 VG를 생성합니다.
# vgcreate volume_group /dev/sdb1 /dev/sdb2
  Volume group "volume_group" successfully created
  vgdisplay 명령어를 사용하면 VG의 정보를 볼 수 있습니다.
# vgdisplay
  --- Volume group ---
  VG Name               volume_group
  System ID            
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               592.00 MiB
  PE Size               4.00 MiB
  Total PE              148
  Alloc PE / Size       0 / 0  
  Free  PE / Size       148 / 592.00 MiB
  VG UUID               37jef7-3q3E-FyZS-lMPG-5Jzi-djdO-BgPIPa

3.5. LV(Logical Volume) 생성
  이제 LV를 생성할 수 있습니다. LV의 크기는 당연히 VG의 크기를 넘을 수 없습니다. 여기서는 크기가 200MB이고 "volume1"이란 이름으로 생성하겠습니다.
# lvcreate -L 200 -n volume1 volume_group
  Logical volume "volume1" created
  lvdisplay 명령어를 사용하면 LV의 정보를 볼 수 있습니다.
# lvdisplay
  --- Logical volume ---
  LV Path                /dev/volume_group/volume1
  LV Name                volume1
  VG Name                volume_group
  LV UUID                YcPtZH-mZ1J-OQQu-B4nj-MWo0-yC18-m77Vuz
  LV Write Access        read/write
  LV Creation host, time debian, 2013-05-08 12:53:17 +1000
  LV Status              available
  # open                 0
  LV Size                200.00 MiB
  Current LE             50
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0
  위의 LV Path 값을 이용하여 LV에 ext4 파일시스템을 생성합니다.
# mkfs.ext4 /dev/volume_group/volume1

4. LV(Logical Volume) 스냅샷
  드디어 이 글에서 설명하고자 하는 주제에 도달했습니다. 이제 위에서 만든 LV에 데이터를 넣고 스냅샷을 생성한 후 그 데이터를 지우고 스냅샷을 이용해 복구하겠습니다.

4.1. 스냅샷의 개념
  스냅샷을 이해하려면 먼저 LV가 무엇으로 구성되어 있는가와 데이터를 어떻게 저장하는가를 이해해야 합니다. 이 개념은 심볼릭 링크와 비슷합니다. 파일에 대한 심볼릭 링크를 만들면 실제 파일을 복사하지 않고 그 파일이 있는 위치만 보관하듯이 LV도 그런 정보만 보관하며 아래의 두 가지 기초 정보로 구성되어 있습니다.
  • 메타데이터 포인터들
  • 데이터 블록
  스냅샷을 생성하면 LVM은 모든 메타데이터 포인터를 별도의 LV에 복사합니다. 메타데이터는 용량을 별로 차지하지 않으므로 생성 자체만 생각한다면 2GB 크기의 LV를 5MB 크기의 스냅샷 볼륨이 커버하는 것도 가능합니다. 스냅샷 볼륨의 크기는 원본 LV의 데이터에 변화가 발생할 때만 커집니다. 그 이유는 원본 LV에 있는 파일을 삭제하거나 수정할 때마다 그 파일(데이터)을 스냅샷 볼륨에 복사하기 때문입니다. 작업 중에 변경사항이 많이 발생하지 않는다면 원본 LV의 5~10% 정도의 크기로 스냅샷 볼륨을 생성하면 됩니다. 변경사항이 많이 발생한다면 10% 보다 훨씬 많이 필요할 수 있습니다.

4.2. 실험용 데이터 복사 후 스냅샷 생성
  먼저 "volume1"을 위한 마운트 포인트 디렉토리를 생성하고 마운트를 합니다.
# mkdir /mnt/volume1
# mount /dev/volume_group/volume1 /mnt/volume1
  마운트 포인트에 들어가서 실험용 데이터를 복사합니다.
# cd /mnt/volume1
# cp -r /sbin/ .
# du -s sbin/
8264    sbin/
  이제 LV의 스냅샷을 생성합니다. 이 스냅샷은 별도의 LV에 저장되기 때문에 사실상 별도의 LV를 생성하게 됩니다. 아래 명령어는 20MB 크기의 "volume1_snapshot"이란 스냅샷용 LV를 생성합니다.
# lvcreate -s -L 20M -n volume1_snapshot /dev/volume_group/volume1
  Logical volume "volume1_snapshot" created
  lvs 명령어로 생성된 스냅샷용 LV를 확인합니다.
# lvs
  LV               VG           Attr     LSize   Pool Origin  Data%  Move Log Copy%  Convert
  volume1          volume_group owi-aos- 200.00m
  volume1_snapshot volume_group swi-a-s-  20.00m      volume1   0.06
  스냅샷이 생성됐으므로 "volume1"의 데이터를 변경하기 위해 복사했던 파일들을 삭제합니다.
# cd /mnt/volume1
# rm -fr
# rm -fr sbin/
  실행 후 lvs 명령어로 "volume1_snapshot"의 Data%를 보면 값이 올라간 것을 확인할 수 있습니다. 원한다면 스냅샷 볼륨을 마운트하여 "volume1"의 원본 데이터가 여전히 존재하는 것을 확인할 수 있습니다.

4.3. LV 스냅샷을 이용한 복구
  복구를 진행하기 전에 /mnt/volume1/sbin이 없는 것을 확인합니다.
# du -s /mnt/volume1/sbin
du: cannot access `/mnt/volume1/sbin': No such file or directory
  LV 스냅샷을 이용한 복구는 두 단계로 이루어집니다.
  • 다음 번 LV 활성화 때 스냅샷 복구가 진행되도록 예약
  • LV 비활성화 후 활성화
  스냅샷 복구를 예약하기 위해 아래 명령어를 실행합니다.
# lvconvert --merge /dev/volume_group/volume1_snapshot
  Can't merge over open origin volume
  Merging of snapshot volume1_snapshot will start next activation.
  사용 중인 볼륨에 스냅샷을 병합하는 것은 불가하므로 다음 활성화 때 병합(즉, 복구)하겠다는 메시지가 나옵니다. 그러므로 복구를 진행하려면 "volume1"을 재활성화해야 합니다. 먼저 "volume1"을 언마운트 후 볼륨을 비활성화 및 활성화합니다.
# umount /mnt/volume1
# lvchange -a n /dev/volume_group/volume1
# lvchange -a y /dev/volume_group/volume1
  마지막으로 LV "volume1"을 다시 마운트하여 데이터가 복구된 것을 확인합니다.
# mount /dev/volume_group/volume1 /mnt/volume1
# du -s /mnt/volume1/sbin
8264    /mnt/volume1/sbin
2013/07/14 23:04 2013/07/14 23:04
Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문 : Resizing Linux partitions, Part 1: Basics, Resizing Linux partitions, Part 2: Advanced resizing

  이번에는 파티션의 크기를 늘리고 줄이거나 위치를 옮기는 리사이징에 대해서 알아보겠습니다.


more..



more..



more..



more..




2010/11/15 11:56 2010/11/15 11:56