邏輯卷 LVM: logical volume management
邏輯意義上将多塊塊裝置組織起來當做一個裝置來使用。
Abstract layer 抽象層:隐藏了底層的硬體細節,而輸出給使用者更高意義上的邏輯裝置。
動态地擴大或者縮小磁盤空間。
版本:lvm lvm2普遍使用
PV Pysical Volume 實體卷,就是我們的實體磁盤或者分區 ,類似于/dev/sda2, /dev/sda3等等,由PE Physical Extends(實體磁盤塊,類似于chunk)組成。多個PV可以組合起來形成一個VG(卷組 Volume Group)。
PE (Physical Extend) 建立VG的時候指定的block塊大小,預設是4MB。一個VG最大可以容許65534個PE。
VG (Volume Group 卷組) 将一個或者多個PV組合起來形成一個大的磁盤。最大容量與PE有關,預設最大的LVM可達到256G。
在卷組的層次上,把多個底層不同的分區或者硬碟輸出給使用者空間,使得使用者看起來就像一個裝置一樣,卷組可以增大或者縮減。
卷組類似于擴充分區,不能直接使用。需要在卷組的基礎上繼續建構一個層次,稱之為LV
(Logical Volume 邏輯卷)
LV (Logical Volume 邏輯卷) 由VG分割出來,可以被系統使用。f
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_12989616179ze4.png"></a>
PE,VG,LV的關系
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_12989616199KqR.png"></a>
LV建立過程
常用指令:
顯示:pvdisplay vgdisplay lvdisplay
掃描:pvscan vgscan lvscan
建立:pvcreate vgcreate lvcreate
移除:pvremvoe vgremove lvremove
擴充:vgextend lvextend
縮減:vgreduce lgreduce
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961621ziUO.png"></a>
建立一個LV的過程:
建立兩個分區:/dev/sda14 /dev/sda15
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961624oGHR.png"></a>
建立實體卷:
[root@server27 ~]# pvcreate /dev/sda14
Physical volume "/dev/sda14" successfully created
[root@server27 ~]# pvcreate /dev/sda15
Physical volume "/dev/sda15" successfully created
[root@server27 ~]# pvdisplay
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_12989616252pJl.png"></a>
建立卷組:
[root@server27 ~]# vgcreate myvg /dev/sda14
Volume group "myvg" successfully created
[root@server27 ~]# vgdisplay
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961626BOPo.png"></a>
建立邏輯卷
[root@server27 ~]# lvcreate -L 100M -n lv1 myvg
Logical volume "lv1" created
-L 建立邏輯卷的大小
-n 邏輯卷的名字
myvg 在哪個卷組中建立
[root@server27 ~]# lvdisplay myvg
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961627I0Tm.png"></a>
下面就可以格式化,正常挂載使用了。
[root@server27 ~]# mkfs -t ext3 /dev/myvg/lv1
[root@server27 ~]# mount /dev/myvg/lv1 /lvm
[root@server27 ~]# cd /lvm
[root@server27 lvm]# ls
lost+found
[root@server27 lvm]# cp /etc/fstab ./
fstab lost+found
擴充邏輯卷:
PS: lvcreate -L 200M /dev/myvg/lv1 擴充到200M
lvcreate -L +200M /dev/myvg/lv1 在原有的基礎上再擴充200M
-l 指定PE的個數
[root@server27 lvm]# lvextend -l +25 /dev/myvg/lv1
Extending logical volume lv1 to 200.00 MB
Logical volume lv1 successfully resized
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961628xFpF.png"></a>
沒有增大,怎麼回事?
邏輯卷的增大要分兩個步驟。預設情況下,剛建立完一個分區并格式化後,邏輯邊界和實體邊界一樣大,當使用lvextend隻是将實體邊界給擴大了,邏輯邊界依然沒有變。此時需要将邏輯邊界也擴大一下,使用resizefs指令。
[root@server27 ~]# resize2fs -p /dev/myvg/lv1
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/myvg/lv1 is mounted on /lvm; on-line resizing required
Performing an on-line resize of /dev/myvg/lv1 to 204800 (1k) blocks.
The filesystem on /dev/myvg/lv1 is now 204800 blocks long.
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961629GQo0.png"></a>
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961629oPYM.png"></a>
檔案正常,不受影響。
先擴充VG,再擴充LV的操作:
[root@server27 lvm]# vgextend myvg /dev/sda15
Volume group "myvg" successfully extended
[root@server27 lvm]# vgdisplay
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961630Wbs3.png"></a>
縮減邏輯卷:在不影響檔案使用的前提下,對邏輯卷空間的縮減。
先縮減邏輯邊界 再縮減實體邊界
fsck file system check 檔案系統一緻性檢查
先解除安裝:
[root@server27 lvm]# umount /lvm
umount: /lvm: device is busy
[root@server27 ~]# fuser -km /dev/myvg/lv1
/dev/myvg/lv1: 10854c
[root@server27 ~]# umount /lvm
檔案系統一緻性檢查
[root@server27 ~]# e2fsck -f /dev/myvg/lv1
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961631X2M1.png"></a>
縮減邏輯邊界
[root@server27 ~]# resize2fs /dev/myvg/lv1 100M
Resizing the filesystem on /dev/myvg/lv1 to 102400 (1k) blocks.
The filesystem on /dev/myvg/lv1 is now 102400 blocks long.
[root@server27 ~]# lvreduce -L 100M /dev/myvg/lv1
WARNING: Reducing active logical volume to 100.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv1? [y/n]: y
Reducing logical volume lv1 to 100.00 MB
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961634U8Kk.png"></a>
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_12989616351enb.png"></a>
資料未受影響
Q:如果删除的PV上有資料呢?
pvmove 移動資料到其他實體卷中
PS:pvrmove 移除實體卷
[root@server27 ~]# pvmove /dev/sda14
/dev/sda14: Moved: 60.0%
/dev/sda14: Moved: 100.0%
[root@server27 ~]# vgreduce myvg /dev/sda14
Removed "/dev/sda14" from volume group "myvg"
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961635FnrD.png"></a>
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961636EvWA.png"></a>
資料正常,未受影響
将/dev/sda14移除,再顯示一下PV已經看不到了。
[root@server27 lvm]# pvremove /dev/sda14
Labels on physical volume "/dev/sda14" successfully wiped
[root@server27 lvm]# pvdisplay
Snapshot 快照
快照就是将當時的系統資訊記錄下來,就好像照相記錄一般! 未來若有任何資料更動了,則原始資料會被搬移到快照區,沒有被更動的區域則由快照區與檔案系統共享。
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961638MWmU.png"></a>
左圖為最初建置系統快照區的狀況,LVM 會預留一個區域 (左圖的左側三個 PE 區塊) 作為資料存放處。 此時快照區内并沒有任何資料,而快照區與系統區共享所有的 PE 資料, 是以你會看到快照區的内容與檔案系統是一模一樣的。 等到系統運作一陣子後,假設 A 區域的資料被更動了 (上面右圖所示),則更動前系統會将該區域的資料移動到快照區, 是以在右圖的快照區被占用了一塊 PE 成為 A,而其他 B 到 I 的區塊則還是與檔案系統共享!
快照區與被快照的 LV 必須要在同一個 VG 上頭。
備份工具:dump - ext2/3 filesystem backup
-level# 指定備份級别 0---9 0完全備份 1---9 增量備份:隻備份上一次比此次級别低的到這一刻為止的内容
-f 把備份的結果儲存到的位置
-u 在每次成功備份之後,将備份資訊更新到/etc/dumpdates 檔案中。
恢複工具:
restore
-r 重建檔案系統
-f file 從檔案中恢複,可以是一個特殊裝置例如 /dev/st0(錄音帶裝置)或者/dev/sda1或者是一個普通檔案
建立一個快照卷:
[root@server27 lvm]# lvcreate -L 10M -s -n snap_lv1 /dev/myvg/lv1
Rounding up size to full physical extent 12.00 MB
Logical volume "snap_lv1" created
[root@server27 lvm]# lvdisplay
<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961640LlXt.png"></a>
建立之後就可以挂載了
[root@server27 lvm]# mkdir /snap
[root@server27 lvm]# mount -o ro /dev/myvg/snap_lv1 /snap
[root@server27 lvm]# cd /snap/
[root@server27 snap]# ls
PS:當改變的資料超過10M時,快照就會發生崩潰的情況。
對快照備份:
[root@server27 snap]# dump -0u -f /tmp/lv1.backuo /snap
恢複
[root@server27 lvm]# restore -rf /tmp/lv1.backuo
fstab lost+found restoresymtable
PS:redo 重做日志,undo 撤銷重做
事務:把多個語句放在一起當做整體來執行。
undo.log保證資料永遠處于一緻。
本文轉自 490999122 51CTO部落格,原文連結:http://blog.51cto.com/lyp0909/503582,如需轉載請自行聯系原作者