在Linux當中,我們可以使用LVM快照(snapshot)來快速備份數據。
其工作原理是我們創建一個快照區,在原來的LV發生變化的時候,把變化前的數據放到快照區。新的內容不會進行變更。
嘗試創建一個LVM snapshot
1.確保我們已經創建了一個lv,其中自己創建三兩個文件或目錄,如果沒有,請創建一個并將其掛載。名字就叫lv1吧。
2.可以先查看一下我們當前的Lv具體信息,用lvdisplay命令,會出現如下結果:
[root@zhulaoshi ~]# lvdisplay
— Logical volume —
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID ZSKBus-B2MP-Nlmh-66Bn-gVvM-FXN4-Do9Uf9
LV Write Access read/write
LV Creation host, time zhulaoshi, 2018-05-28 21:05:48 +0800
LV Status available
open 1
LV Size 500.00 MiB
Current LE 125
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
3.好了,現在我們在lv1的基礎上新建一個lvm快照,命名為lvsnap,大小設定成200M,使用如下命令:
Lvcreate –L 200M –s –n lvsnap /dev/vg1/lv1
格式解釋: lvcreate(命令字) –L 200M(快照空間大小200M)-s(快照snapshot縮寫,創建快照必須用這個選項)-n lvsnap(設定快照lv的名字lvsnap) /dev/vg1/lv1(因為我們是在lv1的基礎上創建快照的,自然這裡寫的路徑指向了lv1)。
執行後,我們如果成功創建,應該會返回如下字段:
[root@zhulaoshi ~]# lvcreate -L 200M -s -n lvsnap /dev/vg1/lv1
Logical volume “lvsnap” created
4.很好,那麼我們現在再通過lvdisplay來查看下當前的lv具體信息吧:
[root@zhulaoshi ~]# lvdisplay
— Logical volume —
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID ZSKBus-B2MP-Nlmh-66Bn-gVvM-FXN4-Do9Uf9
LV Write Access read/write
LV Creation host, time zhulaoshi, 2018-05-28 21:05:48 +0800
LV snapshot status source of
lvsnap [active]
LV Status available
open 1
LV Size 500.00 MiB
Current LE 125
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
— Logical volume —
LV Path /dev/vg1/lvsnap
LV Name lvsnap
VG Name vg1
LV UUID 1SGp39-w6Mn-u0m5-AdcU-gJxq-a8RQ-mqUFL0
LV Write Access read/write
LV Creation host, time zhulaoshi, 2018-05-28 22:11:01 +0800
LV snapshot status active destination for lv1
LV Status available
open 0
LV Size 500.00 MiB
Current LE 125
COW-table size 200.00 MiB
COW-table LE 50
Allocated to snapshot 0.01%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:3
從結果中我們不難發現,新建的快照lv和原始Lv的大小都是500M。但是lvsnap的COW-table為200M。什麼是COW呢?COWcopy on write(寫時複製)。在這裡呈現的大小實際上就是我們剛才分給了快照區用來承載快照的空間大小。
5.那麼,我們已經創建好了snapshot的lv,現在把它掛載起來并查看它的內容。我們會發現,其內容和原來的lv1里的內容一樣。
[root@zhulaoshi ~]# mkdir /media/snaplv 先創建一個用來掛載的目錄
[root@zhulaoshi ~]# mount /dev/vg1/lvsnap /media/snaplv/ 掛載
[root@zhulaoshi ~]# df –h 以更易讀的方式顯示當前磁盤分區的使用情況
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_zhulaoshi-lv_root 18G 3.5G 13G 22% /
tmpfs 932M 224K 932M 1% /dev/shm
/dev/sda1 485M 40M 421M 9% /boot
/dev/sr0 3.6G 3.6G 0 100% /media/RHEL_6.5 x86_64 Disc 1
/dev/mapper/vg1-lv1 485M 11M 449M 3% /media/lvmTest
/dev/mapper/vg1-lvsnap 485M 11M 449M 3% /media/snaplv
可以看到已經掛載上的LV1和lvsnap的磁盤使用信息是一樣一樣的。
我們還可以使用Ls來查看當前兩個磁盤下的具體文件內容是否一致呢,如下:
[root@zhulaoshi ~]# ls /media/lvmTest/
install.log lost+found test1 test2
[root@zhulaoshi ~]# ls /media/snaplv/
install.log lost+found test1 test2
果然是一致的哦!
6.那麼到這裡,我們創建lvm快照的步驟就已經結束了。剛剛創建的這個lvm的快照到底有何用處呢?
當我們修改lv1里的數據內容時,其快照區對應的數據不會產生變化,從而我們有效的對原有的數據進行了備份保存。但是要注意!我們lv1里的數據修改內容不得超過我們設定的200M的大小,否則會導致快照區的空間不夠用,從而使快照失效。
1.创建一个lv,大小400M。在创建之后,对其进行格式化,并将其挂载。再向其中创建一个文件,并在这个文件中写入一些数据。
2.对这个刚刚创键的lv进行逻辑卷快照的创建,创建成功后,看一看里面的文件是否与lv中的相同。
3.新添加一块硬盘,并对其分区,需要分为5个可用分区
4.使用刚刚新建的5个分区中的4个,创建一个卷组,其中PE的大小每个16M
5.将剩余的一个分区添加到这个卷组当中
6.在这个卷组中拿出1600M的空间创建逻辑卷lvNew
7.使这个逻辑卷真正可用
尝试:对这个逻辑卷lvNew进行磁盘配额的操作,对用户test设置文件个数软限制5,硬限制7。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101888.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...