邏輯卷 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
PE,VG,LV的關係
LV創建過程
常用命令:
顯示:pvdisplay vgdisplay lvdisplay
掃描:pvscan vgscan lvscan
創建:pvcreate vgcreate lvcreate
移除:pvremvoe vgremove lvremove
擴展:vgextend lvextend
縮減:vgreduce lgreduce
創建一個LV的過程:
創建兩個分區:/dev/sda14 /dev/sda15
創建物理卷:
[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
創建卷組:
[root@server27 ~]# vgcreate myvg /dev/sda14
Volume group "myvg" successfully created
[root@server27 ~]# vgdisplay
創建邏輯卷
[root@server27 ~]# lvcreate -L 100M -n lv1 myvg
Logical volume "lv1" created
-L 創建邏輯卷的大小
-n 邏輯卷的名字
myvg 在哪個卷組中創建
[root@server27 ~]# lvdisplay myvg
下面就可以格式化,正常掛載使用了。
[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 ./
[root@server27 lvm]# ls
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
沒有增大,怎麼回事?
邏輯卷的增大要分兩個步驟。默認情況下,剛創建完一個分區並格式化後,邏輯邊界和物理邊界一樣大,當使用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.
文件正常,不受影響。
先擴展VG,再擴展LV的操作:
[root@server27 lvm]# vgextend myvg /dev/sda15
Volume group "myvg" successfully extended
[root@server27 lvm]# vgdisplay
縮減邏輯卷:在不影響文件使用的前提下,對邏輯卷空間的縮減。
先縮減邏輯邊界 再縮減物理邊界
fsck file system check 文件系統一致性檢查
先卸載:
[root@server27 lvm]# umount /lvm
umount: /lvm: device is busy
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
縮減邏輯邊界
[root@server27 ~]# resize2fs /dev/myvg/lv1 100M
resize2fs 1.39 (29-May-2006)
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
Logical volume lv1 successfully resized
數據未受影響
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"
[root@server27 ~]# pvdisplay
數據正常,未受影響
將/dev/sda14移除,再顯示一下PV已經看不到了。
[root@server27 lvm]# pvremove /dev/sda14
Labels on physical volume "/dev/sda14" successfully wiped
[root@server27 lvm]# pvdisplay
Snapshot 快照
快照就是將當時的系統信息記錄下來,就好像照相記錄一般! 未來若有任何資料更動了,則原始資料會被搬移到快照區,沒有被更動的區域則由快照區與檔案系統共享。
左圖爲最初建置系統快照區的狀況,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
創建之後就可以掛載了
[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
fstab lost+found
PS:當改變的數據超過10M時,快照就會發生崩潰的情況。
對快照備份:
[root@server27 snap]# dump -0u -f /tmp/lv1.backuo /snap
恢復
[root@server27 lvm]# restore -rf /tmp/lv1.backuo
[root@server27 lvm]# ls
fstab lost+found restoresymtable
PS:redo 重做日誌,undo 撤銷重做
事務:把多個語句放在一起當做整體來執行。
undo.log保證數據永遠處於一致。
本文出自 “諸葛草廬” 博客,請務必保留此出處http://lyp0909.blog.51cto.com/508999/503582