Linux邏輯卷快照及ssm的使用
理論部分:
邏輯卷管理(LVM)提供了爲任何邏輯卷作一個快照的功能,目的是在一致的狀態下來得到一個分區的備份.因爲在備份過程中,應用程序可能訪問一個分區的文件或者數據庫.一些文件可能在一個狀態被備份,而後面的文件可能在一個更新後被備份,導致備份的不完整
從具體細節上說,快照是指向保存在存儲設備中的數據的引用標記或指針
操作部分:
首先創建一個邏輯卷/dev/vg00/lv00,空間爲504M
lvdisplay /dev/vg00/lv00
--- Logical volume --- LV Path /dev/vg00/lv00 LV Name lv00 VG Name vg00 LV UUID 1ZUmzM-krIb-ag0Y-58oQ-IEfp-CRu4-JrzlB1 LV Write Access read/write LV Creation host, time CentOS-1, 2017-01-09 19:25:41 +0800 LV Status available # open 1 LV Size 504.00 MiB Current LE 126 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2
爲了體現實驗效果,我們往這個邏輯卷複製一些數據到/data裏面去
cp /boot/* /data/
接下來我們開始爲/dev/vg00/lv00做邏輯卷快照
lvcreate --size 500M --snapshot --name lvsp00 /dev/vg00/lv00 Logical volume "lvsp00" created.
使用lvscan查看一下
lvscan ACTIVE '/dev/centos/swap' [8.00 GiB] inherit ACTIVE '/dev/centos/root' [41.51 GiB] inherit ACTIVE Original '/dev/vg00/lv00' [504.00 MiB] inherit ACTIVE Snapshot '/dev/vg00/lvsp00' [500.00 MiB] inherit
現在可以看到/dev/vg00/lv00是原始邏輯卷,而最後的/dev/vg00/lvsp00是快照
執行lvdisplay或者lvs命令可以查看邏輯信息
lvdisplay /dev/vg00/lvsp00 --- Logical volume --- LV Path /dev/vg00/lvsp00 LV Name lvsp00 VG Name vg00 LV UUID pkwNXm-7z1A-lntk-QtMd-t3XZ-E5De-l33oPy LV Write Access read/write LV Creation host, time CentOS-1, 2017-01-09 19:34:38 +0800 LV snapshot status active destination for lv00 LV Status available # open 0 LV Size 504.00 MiB Current LE 126 COW-table size 500.00 MiB COW-table LE 125 Allocated to snapshot 0.00% Snapshot chunk size 4.00 KiB Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:5
lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 41.51g swap centos -wi-ao---- 8.00g lv00 vg00 owi-aos--- 504.00m lvsp00 vg00 swi-a-s--- 500.00m lv00 0.00
這裏可以看到邏輯快照已經創建成功了<--注意,快照是不需要格式化和掛載的-->
現在我們來模擬將邏輯卷中的數據刪除
rm -rf /data/*
現在,邏輯卷/data目錄下已經沒有文件了,我們用兩種方法來恢復刪除的數據
方法一:
將原來的邏輯卷卸除掛載:
umount /dev/vg00/lv00
然後在將邏輯卷快照掛載到/data目錄就可以正常訪問了
mount /dev/vg00/lvsp00 /data/
方法二:
通過lvconvert把快照的內容重新寫回原來的lvm
首先將邏輯卷卸除掛載
umount /dev/vg00/lv00
然後執行lvconvert將快照的數據合併到原邏輯卷
lvconvert --merge /dev/vg00/lvsp00
最後掛載原邏輯卷
mount /dev/vg00/lv00 /data/
使用ssm(系統存儲管理器)進行邏輯卷管理
安裝ssm:
可以用rpm安裝或者yum
yum -y install system-storage-manager
安裝完以後可以使用ssm list查看檢查關於硬盤中的LVM卷信息
ssm list --------------------------------------------------------------- Device Free Used Total Pool Mount point --------------------------------------------------------------- /dev/sda 50.00 GB PARTITIONED /dev/sda1 500.00 MB /boot /dev/sda2 0.00 KB 49.51 GB 49.51 GB centos /dev/sdb 99.50 GB 504.00 MB 100.00 GB vg00 /dev/sdc 100.00 GB 0.00 KB 100.00 GB vg00 /dev/sdd 100.00 GB /dev/sde 100.00 GB --------省略部分內容--------
下面通過ssm創建一個LVM卷(/dev/mypool/lv01)
首先創建一個可供掛載的掛載點
mount /test
然後執行下命令創建一個名爲mypool的存儲池,並創建存儲池中名爲lv01的500M大小的LVM卷,使用XFS文件系統格式化卷,並將它掛載到/mnt/test下
ssm create -s 500M -n lv01 --fstype xfs -p mypool /dev/sdd /test
使用lvscan查看創建結果
lvscan ACTIVE '/dev/centos/swap' [8.00 GiB] inherit ACTIVE '/dev/centos/root' [41.51 GiB] inherit ACTIVE '/dev/vg00/lv00' [504.00 MiB] inherit ACTIVE '/dev/mypool/lv01' [500.00 MiB] inherit
df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 42G 3.5G 39G 9% / devtmpfs devtmpfs 3.8G 0 3.8G 0% /dev tmpfs tmpfs 3.9G 144K 3.9G 1% /dev/shm tmpfs tmpfs 3.9G 9.0M 3.9G 1% /run tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/sda1 xfs 497M 159M 339M 32% /boot tmpfs tmpfs 781M 20K 781M 1% /run/user/0 /dev/mapper/vg00-lv00 xfs 501M 150M 352M 30% /data /dev/sr0 iso9660 4.1G 4.1G 0 100% /mnt /dev/mapper/mypool-lv01 xfs 497M 26M 472M 6% /test
往LVM池裏新添加一塊新硬盤
ssm add -p mypol /dev/sdd
擴展LVM卷,將/dev/mypool/lv01卷增加300M
ssm resize -s +300M /dev/mypool/lv01
注意:這只是將LVM卷在原來的基礎上增加了300M,但是文件系統大小(Fs size)還沒有改變,仍然是原始大小,因此我們要使用以下命令來擴大現有的XFS文件系統
xfs_growfs /dev/mypool/lv01
對LVM卷創建快照
爲了體現實驗效果,我們往/test裏面複製一些文件
cp -rf /boot/* /test/
然後我們用ssm來給/dev/mypool/lv01創建快照
ssm snapshot /dev/mypool/lv01
查看一些創建好的快照
ssm list snapshots ----------------------------------------------------------------------------- Snapshot Origin Pool Volume size Size Type ----------------------------------------------------------------------------- /dev/mypool/snap20170109T203221 lv01 mypool 160.00 MB 16.38 KB linear -----------------------------------------------------------------------------
以後每次原LVM中的數據更改,都可以手動執行ssm snapshot生成快照
模擬LVM中的數據丟失,利用快照恢復文件
rm -rf /test/*
方法一:
先將原邏輯卷卸載:
umount /dev/mypool/lv01
然後掛載邏輯卷快照即可
mount /dev/mypool/snap20170109T203221 /test/
方法二:
通過lvconvert把快照的內容重新寫回原有的lvm
同上一樣,首先卸載原邏輯卷
umount /dev/mypool/lv01
然後執行以下命令將快照的數據合併到原邏輯卷
lvconvert --merge/dev/mypool/snap20170109T203221
最後掛載原邏輯卷
mount/dev/mypool/lv01 /test