Linux邏輯卷快照及ssm的使用

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章