안녕하세요. 썬구루입니다. 이 게시물에서는 EXT 2/3/4 파일시스템 백업/복구 명령인 dump와 restore 명령에 대해 알아보도록 하겠습니다.
tar 명령은 디렉터리 또는 파일을 백업/복구하기 위해 사용되는 명령입니다. 특정 파일시스템을 단일 파일이나 테이프 드라이브 같은 장치에 백업 복구를 하기 위해서는 파일시스템 백업에 관련된 명령을 사용해야 하는 것이죠. CentOS 리눅스 버전 6까지 EXT 파일시스템을 주로 사용하는데 이 파일시스템을 백업/복구하기 위해서는 dump와 restore 명령을 사용하는 것이죠.
예전에 솔라리스 사용할 때는 UFS 파일시스템 백업/복구를 위해 ufsdump/ufsrestore 명령을 사용했었는데 명령 형식이 똑같더라고요. 개념도 똑같고... 그러니 금방 사용할 수 있었죠.. ^^ dump/restore 명령의 특징은 아래와 같습니다.
▶ EXT 2/3/4 파일시스템 백업을 하기 위해 사용
▶ 전체/증감 백업 가능
▶ 부분 복구 가능
▶ 멀티 볼륨 백업 가능 (여러 개의 테이프 미디어를 사용하여 파일시스템 백업 가능)
전체(Full) 백업과 증감(Incremental) 백업의 차이는 다음과 같습니다.
백업 종류
|
내 용
|
전체 백업
|
파일시스템의 전체 파일을 백업하는 것을 말한다. (Full Backup) |
차등 백업
|
가장 최근 백업 이후 시점으로 변경된 파일만 백업하는 것을 말한다. (Differential Backup) |
누적 백업
|
가장 최근 전체 백업한 이후 시점으로 변경된 파일만 백업하는 것을 말한다. (Cumulative) |
여기서는 mhVTL이 설치된 CentOS 6.4 리눅스 가상머신을 가지고 테스트를 하도록 하겠습니다.
■ dump 명령
dump 명령은 EXT 2/3/4 파일시스템을 백업하기 위해 사용되는 명령이다. 파일시스템 기반의 단일 파일로 또는 테이프 드라이브 같은 장치를 사용하여 백업을 할 수 있다.
1). 명령 형식
dump [옵션] -f DEVICENAME FILESYSTEM
2). 옵션
옵 션
|
내 용
|
-0~9
|
백업 레벨(Level)을 나타낸다. 0은 전체 백업을 1~9는 숫자 조합을 통해 차등 또는 누적 백업을 나타낸다. 여기에서는 일정한 규칙이 적용되는데 그것은 아래와 같다. '같은 수는 같은 수를 포함하고 작은 수는 큰 수를 포함한다.' |
-u
|
/etc/dumpdates 파일에 파일시스템 백업 정보를 기록한다. |
-s
|
실제 백업은 하지 않고 백업 시 필요한 용량을 알아보기 위해 사용한다. |
-f DEVICENAME
|
tar 명령의 -f 옵션과 동일한다. |
증감 백업의 기준은 전체 백업이다. 아래 그림을 보고 백업 레벨을 나타내는 번호가 어떻게 적용되는지 확인한다.
3). 예제
CentOS 6.4 리눅스 가상머신에 20GB 새 가상 디스크를 추가하여 인식시킨다.
[root@centos64 ~]# lspci | grep -i scsi
00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01) [root@centos64 ~]# [root@centos64 ~]# find /sys/devices -name scan /sys/devices/pci0000:00/0000:00:07.1/host1/scsi_host/host1/scan /sys/devices/pci0000:00/0000:00:07.1/host2/scsi_host/host2/scan /sys/devices/pci0000:00/0000:00:10.0/host0/scsi_host/host0/scan /sys/devices/pseudo_0/adapter0/host3/scsi_host/host3/scan [root@centos64 ~]# [root@centos64 ~]# echo "- - -" > /sys/devices/pci0000:00/0000:00:10.0/host0/scsi_host/host0/scan [root@centos64 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 500M 0 part /boot └─sda2 8:2 0 19.5G 0 part ├─vg_centos64-lv_root (dm-0) 253:0 0 15.6G 0 lvm / └─vg_centos64-lv_swap (dm-1) 253:1 0 3.9G 0 lvm [SWAP] sr0 11:0 1 4.1G 0 rom /media/CentOS_6.4_Final sdb 8:16 0 20G 0 disk [root@centos64 ~]# |
아래와 같이 LVM을 사용하여 5GB 용량의 볼륨을 생성. 그 위해 EXT4 파일시스템을 생성한 후 /data01 디렉터리에 마운트 시킨다.
[root@centos64 ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created [root@centos64 ~]# [root@centos64 ~]# vgcreate vg_db /dev/sdb Volume group "vg_db" successfully created [root@centos64 ~]# [root@centos64 ~]# lvcreate -L 5g -n data01 vg_db Logical volume "data01" created [root@centos64 ~]# [root@centos64 ~]# mkfs -t ext4 /dev/vg_db/data01 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 327680 inodes, 1310720 blocks 65536 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1342177280 40 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 30 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@centos64 ~]# [root@centos64 ~]# blkid /dev/vg_db/data01 /dev/vg_db/data01: UUID="cb71cfd6-5802-48f4-8469-0cab9716b2c4" TYPE="ext4" [root@centos64 ~]# [root@centos64 ~]# mkdir /data01 [root@centos64 ~]# [root@centos64 ~]# mount /dev/vg_db/data01 /data01 [root@centos64 ~]# [root@centos64 ~]# df -h /data01 Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_db-data01 5.0G 138M 4.6G 3% /data01 [root@centos64 ~]# [root@centos64 ~]# vi /etc/fstab /dev/vg_db/data01 /data01 ext4 defaults 1 2 <== 내용 추가 [root@centos64 ~]# |
아래와 같은 명령을 사용하여 /dev/st0 테이프 드라이브에 삽입되어 있는 테이프 미디어 내용을 삭제하여 초기화한다. 이 명령은 공 테이프처럼 사용하기 위해 실행하는 것이다.
[root@centos64 ~]# mt -f /dev/st0 erase
|
dump와 restore 명령을 실행하기 위해 CentOS 6.4 DVD 1번 ISO 파일을 넣은 후 아래와 같이 관련 패키지를 설치한다.
[root@centos64 data01]# cd /media/CentOS_6.4_Final/Packages/
[root@centos64 Packages]# [root@centos64 Packages]# rpm -ivh rmt-0.4-0.6.b42.el6.x86_64.rpm warning: rmt-0.4-0.6.b42.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Preparing... ########################################### [100%] 1:rmt ########################################### [100%] [root@centos64 Packages]# [root@centos64 Packages]# rpm -ivh dump-0.4-0.6.b42.el6.x86_64.rpm warning: dump-0.4-0.6.b42.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Preparing... ########################################### [100%] 1:dump ########################################### [100%] [root@centos64 Packages]# [root@centos64 Packages]# which dump /sbin/dump [root@centos64 Packages]# which restore /sbin/restore [root@centos64 Packages]# |
아래와 같은 명령을 사용하여 /data01 파일시스템에 파일을 생성 후 파일시스템 전체 백업 및 증감 백업을 실행한다.
[root@centos64 Packages]# cd /data01
[root@centos64 data01]# [root@centos64 data01]# touch file1 file2 file3 [root@centos64 data01]# [root@centos64 data01]# ls -l total 16 -rw-r--r--. 1 root root 0 Jul 11 23:23 file1 -rw-r--r--. 1 root root 0 Jul 11 23:23 file2 -rw-r--r--. 1 root root 0 Jul 11 23:23 file3 drwx------. 2 root root 16384 Jul 11 23:09 lost+found [root@centos64 data01]# [root@centos64 data01]# dump -0uf /dev/nst0 /data01 DUMP: Date of this level 0 dump: Mon Jul 11 23:23:57 2016 DUMP: Dumping /dev/mapper/vg_db-data01 (/data01) to /dev/nst0 DUMP: Label: none DUMP: Writing 10 Kilobyte records DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 110 blocks. DUMP: Volume 1 started with block 1 at: Mon Jul 11 23:23:57 2016 DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] DUMP: Closing /dev/nst0 DUMP: Volume 1 completed at: Mon Jul 11 23:23:57 2016 DUMP: Volume 1 100 blocks (0.10MB) DUMP: 100 blocks (0.10MB) on 1 volume(s) DUMP: finished in less than a second DUMP: Date of this level 0 dump: Mon Jul 11 23:23:57 2016 DUMP: Date this dump completed: Mon Jul 11 23:23:57 2016 DUMP: Average transfer rate: 0 kB/s DUMP: DUMP IS DONE [root@centos64 data01]# [root@centos64 data01]# touch file3 file4 [root@centos64 data01]# [root@centos64 data01]# dump -1uf /dev/nst0 /data01 DUMP: Date of this level 1 dump: Mon Jul 11 23:24:42 2016 DUMP: Date of last level 0 dump: Mon Jul 11 23:23:57 2016 DUMP: Dumping /dev/mapper/vg_db-data01 (/data01) to /dev/nst0 DUMP: Label: none DUMP: Writing 10 Kilobyte records DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 100 blocks. DUMP: Volume 1 started with block 1 at: Mon Jul 11 23:24:42 2016 DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] DUMP: Closing /dev/nst0 DUMP: Volume 1 completed at: Mon Jul 11 23:24:42 2016 DUMP: Volume 1 100 blocks (0.10MB) DUMP: 100 blocks (0.10MB) on 1 volume(s) DUMP: finished in less than a second DUMP: Date of this level 1 dump: Mon Jul 11 23:24:42 2016 DUMP: Date this dump completed: Mon Jul 11 23:24:42 2016 DUMP: Average transfer rate: 0 kB/s DUMP: DUMP IS DONE [root@centos64 data01]# [root@centos64 data01]# touch file5 [root@centos64 data01]# [root@centos64 data01]# ls -l total 16 -rw-r--r--. 1 root root 0 Jul 11 23:23 file1 -rw-r--r--. 1 root root 0 Jul 11 23:23 file2 -rw-r--r--. 1 root root 0 Jul 11 23:24 file3 -rw-r--r--. 1 root root 0 Jul 11 23:24 file4 -rw-r--r--. 1 root root 0 Jul 11 23:24 file5 drwx------. 2 root root 16384 Jul 11 23:09 lost+found [root@centos64 data01]# [root@centos64 data01]# dump -2uf /dev/nst0 /data01 DUMP: Date of this level 2 dump: Mon Jul 11 23:25:09 2016 DUMP: Date of last level 1 dump: Mon Jul 11 23:24:42 2016 DUMP: Dumping /dev/mapper/vg_db-data01 (/data01) to /dev/nst0 DUMP: Label: none DUMP: Writing 10 Kilobyte records DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 99 blocks. DUMP: Volume 1 started with block 1 at: Mon Jul 11 23:25:09 2016 DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] DUMP: Closing /dev/nst0 DUMP: Volume 1 completed at: Mon Jul 11 23:25:09 2016 DUMP: Volume 1 100 blocks (0.10MB) DUMP: 100 blocks (0.10MB) on 1 volume(s) DUMP: finished in less than a second DUMP: Date of this level 2 dump: Mon Jul 11 23:25:09 2016 DUMP: Date this dump completed: Mon Jul 11 23:25:09 2016 DUMP: Average transfer rate: 0 kB/s DUMP: DUMP IS DONE [root@centos64 data01]# |
명령을 실행한 내용은 아래와 같다.
1. /data01로 이동
2. touch 명령으로 file1, file2, fil3 파일 생성 후 dump 명령을 사용하여 /dev/st0 테이프 디바이스로 전체 백업 실행
-> file1, file2, file3, lost_found 백업
3. touch 명령으로 file3 수정시간 변경, file4 파일 생성 후 증감 백업 (Level 1) 실행
-> file3, file4 백업
4. touch 명령으로 file5 파일 생성 후 증감 백업 (Level 1) 실행
-> file5 백업
아래는 /etc/dumpfiles 파일에 저장된 파일시스템 백업 정보 내용이다. 줄의 내용은 '파일시스템 백업 레벨 백업 시간'이다.
[root@centos64 data01]# more /etc/dumpdates
/dev/mapper/vg_db-data01 0 Mon Jul 11 23:23:57 2016 +0900 /dev/mapper/vg_db-data01 1 Mon Jul 11 23:24:42 2016 +0900 /dev/mapper/vg_db-data01 2 Mon Jul 11 23:25:09 2016 +0900 [root@centos64 data01]# |
■ restore 명령
dump 명령으로 백업한 것을 복구하기 위해 사용되는 명령이다.
1). 명령 형식
restore [옵션] -f DEVICENAME
2). 옵션
옵 션
|
내 용
|
-t
|
복구는 하지 않고 백업된 파일 리스트 정보를 확인하기 위해 사용한다. |
-r
|
전체 복구를 하기 위해 사용한다. |
-i
|
상호 대화형 모드에서 파일 복구를 하기 위해 사용한다. (Interactive mode) |
-x
|
부분 복구를 하기 위해 사용한다. |
-v
|
Verbose mode |
-f DEVICENAME
|
tar 명령의 -f 옵션과 동일한다. |
3). 예제
아래 명령을 실행하여 /dev/st0 테이프 디바이스에 있는 테이프 미디어를 처음으로 되감는다.
[root@centos64 data01]# mt -f /dev/st0 rewind
|
테이프 미디어에는 3개의 백업 이미지 즉 서브 볼륨(Sub Volume)이 존재한다. 왜냐하면 3번을 백업했기 때문이다. 아래는 첫 번째 백업 이미지를 확인하고 /data01/test1 디렉터리에 복구를 하였다.
[root@centos64 data01]# mkdir test1 test2 test3
[root@centos64 data01]# [root@centos64 data01]# cd test1 [root@centos64 test1]# [root@centos64 test1]# restore -tvf /dev/st0 Verify tape and initialize maps Input is from a local tape Tape block size is 10 Dump date: Mon Jul 11 23:23:57 2016 Dumped from: the epoch Level 0 dump of /data01 on centos64:/dev/mapper/vg_db-data01 Label: none Extract directories from tape Initialize symbol table. dir 2 . dir 11 ./lost+found leaf 12 ./file1 leaf 13 ./file2 leaf 14 ./file3 [root@centos64 test1]# ls file1 file2 file3 lost+found restoresymtable [root@centos64 test1]# [root@centos64 test1]# restore -rvf /dev/nst0 Verify tape and initialize maps Input is from a local tape Tape block size is 10 Dump date: Mon Jul 11 23:23:57 2016 Dumped from: the epoch Level 0 dump of /data01 on centos64:/dev/mapper/vg_db-data01 Label: none Begin level 0 restore Initialize symbol table. Extract directories from tape Calculate extraction list. restore: ./lost+found: File exists Extract new leaves. Check pointing the restore extract file ./file1 extract file ./file2 extract file ./file3 Add links Set directory mode, owner, and times. Check the symbol table. Check pointing the restore [root@centos64 test1]# [root@centos64 test1]# ls file1 file2 file3 lost+found restoresymtable [root@centos64 test1]# |
아래는 테이프를 앞으로 되돌리고 구간 이동을 한 다음 restore 명령을 실행하여 file3, file4를 복구하는 것을 보여준다.
[root@centos64 test1]# mt -f /dev/st0 rewind
[root@centos64 test1]# [root@centos64 test1]# mt -f /dev/nst0 fsf 1 [root@centos64 test1]# [root@centos64 test1]# restore -rvf /dev/nst0 Verify tape and initialize maps Input is from a local tape Tape block size is 10 Dump date: Mon Jul 11 23:24:42 2016 Dumped from: Mon Jul 11 23:23:57 2016 Level 1 dump of /data01 on centos64:/dev/mapper/vg_db-data01 Label: none Begin incremental restore Initialize symbol table. Extract directories from tape Mark entries to be removed. Calculate node updates. Find unreferenced names. Remove old nodes (directories). Extract new leaves. Check pointing the restore Remove leaf ./file3 extract file ./file3 extract file ./file4 Add links Set directory mode, owner, and times. Check the symbol table. Check pointing the restore [root@centos64 test1]# [root@centos64 test1]# ls file1 file2 file3 file4 lost+found restoresymtable [root@centos64 test1]# |
아래는 테이프를 앞으로 되돌리고 구간 이동을 한 다음 restore 명령에 -x 옵션을 사용하여 file5를 복구하는 것을 보여준다.
[root@centos64 test1]# mt -f /dev/st0 rewind
[root@centos64 test1]# mt -f /dev/nst0 fsf 2 [root@centos64 test1]# [root@centos64 test1]# restore -xvf /dev/st0 ./file5 Verify tape and initialize maps Input is from a local tape Tape block size is 10 Dump date: Mon Jul 11 23:25:09 2016 Dumped from: Mon Jul 11 23:24:42 2016 Level 2 dump of /data01 on centos64:/dev/mapper/vg_db-data01 Label: none Extract directories from tape Initialize symbol table. Extract requested files You have not read any volumes yet. Unless you know which volume your file(s) are on you should start with the last volume and work towards the first. Specify next volume # (none if no more volumes): 1 extract file ./file5 Add links Set directory mode, owner, and times. set owner/mode for '.'? [yn] y [root@centos64 test1]# [root@centos64 test1]# ls file1 file2 file3 file4 file5 lost+found restoresymtable [root@centos64 test1]# |
여기까지 dump와 restore 명령을 사용하여 EXT 파일시스템 백업 및 파일 복구에 대해 알아보았습니다. 다음 게시물에서는 SWAP 메모리에 대해 알아보도록 하겠습니다.
No comments:
Post a Comment