這裡我續上一章日誌《linux LVM配置2》講解一下LVM的快照功能
LVM的系統快照
現在你知道 LVM 的好處咯,未來如果你有想要增加某個 LVM 的容量時,就可以透過這個放大、縮小的功能來處理. 那麼 LVM 除了這些功能以外,還有什麼能力呢?其實他還有一個重要的能力,那就是系統快照 (snapshot). 什麼是系統快照啊?快照就是將當時的系統信息記錄下來,就好像照相記錄一般! 未來若有任何資料更動了,則原始資料會被搬移到快照區,沒有被更動的區域則由快照區不文件系統共享. 用講的好像很難懂,我們用圖解說明一下好了:
左圖為最出建置系統快照區的狀況,LVM 會預留一個區域 (左圖的左側三個 PE 區塊) 作為數據存放處. 此時快照區內並沒有任何數據,而快照區與系統區共享所有的 PE 數據, 因此你會看到快照區的內容不文件系統是一模一樣的. 等到系統運作一陣子后,假謳 A 區域的數據被更動了 (上面右圖所示),則更動前系統會將該區域的數據移動到快照區, 所以在右圖的快照區被佔用了一塊
PE 成為 A,而其他 B 到 I 的區塊則還是與文件系統共享!照這樣的情況來看,LVM 的系統快照是非常棒的“備份工具”,他只有備份有被更動到的數據, 文件系統內沒有被變更的數據依舊保持在原本的區塊內,但是 LVM 快照功能會知道那些數據放置在哪裡, 因此“快照”當時的文件系統就得以“備份”下來,且快照所佔用的容量又非常小!
那麼快照區要如何建立與使用呢?,由於快照區與原本的 LV 共享很多PE
區塊,因此快照區與被快照的 LV 必項要在同一個 VG 上面.下面我就使用我之前刪除的/dev/sdb5 來新建一個快照
- [root@CentOS5 ~]#pvcreate /dev/sdb5
- [root@CentOS5 ~]#pvscan
- PV /dev/sdb6 VG aixevg lvm2 [1.39 GB / 0 free]
- PV /dev/sdb7 VG aixevg lvm2 [1.39 GB / 0 free]
- PV /dev/sdb8 VG aixevg lvm2 [1.39 GB / 0 free]
- PV /dev/sdb9 VG aixevg lvm2 [1.39 GB / 0 free]
- PV /dev/sdb5 lvm2 [1.40 GB]
- Total: 5 [6.96 GB] / in use: 4 [5.56 GB] / in no VG: 1 [1.40 GB]
添加PV到VG中
- [root@CentOS5 ~]#vgextend aixevg /dev/sdb5
- Volume group "aixevg" successfully extended
下面就是創建快照了
創建快照命令格式
- [root@CentOS5 ~]#lvcreate -l 89 -s -n aixebak /dev/aixevg/aixelv
- -l:後面接用多少PE加入快照中
- -s:這是最重要的參數,它表示snapshot,就是快照之意
- -n:後面接新建快照名稱,/dev/….則是要被快照的LV完整文件名
- [root@CentOS5 ~]#lvcreate -l 89 -s -n aixebak /dev/aixevg/aixelv
- Logical volume "aixebak" created
創建好快照之後查看一下LV
- [root@CentOS5 ~]#lvdisplay
- --- Logical volume ---
- LV Name /dev/aixevg/aixelv
- VG Name aixevg
- LV UUID Mx0CUA-JUxI-dV3Q-9NIV-fvRH-REJP-GcIZQd
- LV Write Access read/write
- LV snapshot status source of
- /dev/aixevg/aixebak [active]
- LV Status available
- # open 1
- LV Size 5.56 GB
- Current LE 356
- Segments 4
- Allocation inherit
- Read ahead sectors auto
- - currently set to 256
- Block device 253:0
- --- Logical volume ---
- LV Name /dev/aixevg/aixebak
- VG Name aixevg
- LV UUID 61WaYj-jUXH-ck5R-Rb82-P7eq-GGn0-1Qyr01
- LV Write Access read/write
- LV snapshot status active destination for /dev/aixevg/aixelv
- LV Status available
- # open 0
- LV Size 5.56 GB
- Current LE 356
- COW-table size 1.39 GB
- COW-table LE 89
- Allocated to snapshot 0.00%
- Snapshot chunk size 4.00 KB
- Segments 1
- Allocation inherit
- Read ahead sectors auto
- - currently set to 256
- Block device 253:1
拷貝一下數據到/mnt/lvm中
- [root@CentOS5 ~]#mount /dev/aixevg/aixelv /mnt/lvm
- [root@CentOS5 ~]#cp –a /etc /var /mnt/lvm
接下來我們可以掛載、查看aixebak,可以看到到aixebak有一樣的內容,這就是快照(aixebak)功能,自動備份
- [root@CentOS5 ~]#mkdir /mnt/aixebak
- [root@CentOS5 ~]#mount /dev/aixevg/aixebak /mnt/aixebak/
- [root@CentOS5 ~]#df -h
- Filesystem Size Used Avail Use% Mounted on
- /dev/sda2 4.9G 3.4G 1.3G 74% /
- /dev/sda5 3.6G 72M 3.4G 3% /date
- /dev/sda1 289M 16M 259M 6% /boot
- tmpfs 125M 0 125M 0% /dev/shm
- /dev/mapper/aixevg-aixelv
- 5.4G 587M 4.6G 12% /mnt/lvm
- /dev/mapper/aixevg-aixebak
- 5.4G 587M 4.6G 12% /mnt/aixebak
我們把
aixebak取消掛載
- [root@CentOS5 ~]#umount /mnt/aixebak/
- [root@CentOS5 ~]#df -h /mnt/lvm/
- Filesystem Size Used Avail Use% Mounted on
- /dev/mapper/aixevg-aixelv
- 5.4G 587M 4.6G 12% /mnt/lvm
惡搞下原來要被快照的分區
- [root@CentOS5 ~]#rm -rf /mnt/lvm/var/
- [root@CentOS5 ~]#cp -a /boot /lib /mnt/lvm/
- [root@CentOS5 ~]#lvdisplay /dev/aixevg/aixebak
- --- Logical volume ---
- LV Name /dev/aixevg/aixebak
- VG Name aixevg
- LV UUID 61WaYj-jUXH-ck5R-Rb82-P7eq-GGn0-1Qyr01
- LV Write Access read/write
- LV snapshot status active destination for /dev/aixevg/aixelv
- LV Status available
- # open 0
- LV Size 5.56 GB
- Current LE 356
- COW-table size 1.39 GB
- COW-table LE 89
- Allocated to snapshot 5.73%
- Snapshot chunk size 4.00 KB
- Segments 1
- Allocation inherit
- Read ahead sectors auto
- - currently set to 256
- Block device 253:1
上面看到,被快照的區域已經被改動了,然而我們快照依然可以將原來的數據還原出來,下面就快照區域備份原來的數據,然後刪除快照區域
- [root@mkk aixebak]# mkdir /backups
- [root@mkk aixebak]# mount /dev/aixevg/aixebak /mnt/aixebak/
- [root@mkk aixebak]# cd /mnt/aixebak/
- [root@mkk aixebak]# tar -jcvf /backups/lvm.tar.bz2 *
- [root@CentOS5 ~]#umount /mnt/aixebak/
- [root@CentOS5 ~]#lvremove /dev/aixevg/aixebak
- Do you really want to remove active logical volume "aixebak"? [y/n]: y
- Logical volume "aixebak" successfully removed
下面我們格式化之前被快照的區域,然後還原被惡搞之前的數據
- [root@CentOS5 ~]#umount /mnt/lvm/
- [root@CentOS5 ~]#mkfs -t ext3 /dev/aixevg/aixelv
- [root@CentOS5 ~]#tar -jxvf /backups/lvm.tar.bz2 -C /mnt/lvm/
- [root@CentOS5 ~]#cd /mnt/lvm/
- [root@mkk lvm]# ls
- etc lost found var
從上面我們看到,
LVM快照是可以完全還原之前的數據的,這也是我們用來備份系統的手段本文出自 「Aixe」 博客,請務必保留此出處http://aixecc.blog.51cto.com/3931677/822911
[火星人 ] linux LVM配置3已經有753次圍觀