VM的創建和快照的使用 (LVM詳解)
LVM是邏輯盤卷管理(Logical VolumManager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分LVM區管理的靈活性。前面談到,LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來爲文件系統屏蔽下層磁盤分區佈局,提供一個抽象的盤卷,在盤捲上建立文件系統。物理卷(physical volume)物理卷就是指硬盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
創建一個LVM一般經過以下幾個步驟;
1.創建LVM分區類型:方法和創建其他一般分區的方式是一樣的,區別僅僅是LVM的分區類型爲8e。創建完分區以後用t修改分區類型爲8e
2.創建一個邏輯卷需要經過以下幾個步驟;
創建物理卷(PV)-->創建卷組(VG)-->創建卷組(LV)
3.創建物理卷
創建物理卷的命令爲pvcreate,利用該命令將希望添加到卷組的所有分區或者磁盤創建爲物理卷
用法:
pvcreate /dev/sdb1(將單個分區創建爲物理卷)
pvdisplay /dev/sdb1 (查看創建的物理卷的詳細信息)pvs 也可以查看;
1 2 3 | [root@station55 ~]# pvcreate /dev/sd{b,c}1 Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdc1" successfully created |
(上面的意思就是把我分區的sdb1和sdc1創建爲物理卷)
1 2 3 4 5 | [root@station55 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a-- 59.99g 7.99g /dev/sdb1 myvg lvm2 a-- 10.00g 10.00g /dev/sdc1 myvg lvm2 a-- 10.00g 10.00g |
(查看剛創建的物理卷的簡要信息)
4 創建卷組
創建卷組的命令爲vgcreate
vgcreate VGNAME /dev/sdb1 vgcreate命令第一個參數是指定該卷組的邏輯名,後面參數是指定希望添加到該卷組的所有分區和磁盤,PE大小決定了邏輯卷的最大大小,4MB的PE決定了單個邏輯卷最大容量爲256GB,若希望使用大於256G的邏輯卷則創建卷組 時指定更大的PE。PE大小範圍爲8KB到512MB,並且必須總是2的倍數(使用-s指定)。
vgdisplay 查看卷組的信息;vgs也可以查看;
1 2 | [root@station55 ~]# vgcreate myvg /dev/sd{b,c}1 Volume group "myvg" successfully created |
(創建卷組myvg,把物理卷的sd{b,c}1加進來)
1 2 3 4 | [root@station55 ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 2 0 0 wz--n- 20.00g 20.00g vg0 1 4 0 wz--n- 59.99g 7.99g |
(查看剛創建的卷組的簡要信息)
5.創建邏輯卷
創建邏輯卷的命令;
lvcreate -L SIZE -n LV_NAME VG_NAME
lvdisplay 查看創建的詳細信息 vgs也可以查看;
1 2 | [root@station55 ~]# lvcreate -L 10G -n mylv myvg Logical volume "mylv" created |
(創建的大小爲10G 邏輯卷名字mylv,從myvg中添加)
1 2 3 4 5 6 7 | [root@station55 ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert mylv myvg -wi-a---- 10.00g root vg0 -wi-ao--- 20.00g swap vg0 -wi-ao--- 2.00g usr vg0 -wi-ao--- 10.00g var vg0 -wi-ao--- 20.00g |
(查看剛創建的邏輯卷的簡要信息)
創建好的LVM 的路徑保存在:
/dev/VG_NAME/LV_NAME
/dev/mapper/VG_NAME-LV_NAME
/dev/mapper/testvg-mylv
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [root@station55 ~]# lvdisplay /dev/myvg/mylv --- Logical volume --- LV Path /dev/myvg/mylv LV Name mylv VG Name myvg LV UUID Yu0Ja1-uL3H-APbU-KFjj-Bmql-VwA9-FhBItY LV Write Access read/write LV Creation host, time station55.magelinux.com, 2013-07-15 08:39:00 +0800 LV Status available # open 0 LV Size 10.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:4 |
(查看創建的邏輯卷存放路徑的詳細信息)
6.創建文件系統
mke2fs -t ext4 後面跟創建的LV的路徑。
[root@station55 ~]# mke2fs -t ext4 /dev/myvg/mylv
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
(格式化成功)
創建了文件系統以後,就可以加載並使用它:
mount 邏輯卷路徑 掛載點
[root@station55 ~]# mount /dev/myvg/mylv /mnt/
如果希望系統啓動時自動加載文件系統,則還需要在/etc/fstab中添加內容
7.擴展VG
首先準備好一個PV;
[root@station55 ~]# pvcreate /dev/sdc2
Physical volume "/dev/sdc2" successfully created
使用vgextend命令即可完成擴展;
vgextend VG_NAME /PATH/TO/PV
[root@station55 ~]# vgextend myvg /dev/sdc2
Volume group "myvg" successfully extended
8.縮減VG
確定要移除的PV;
將此PV上的數據轉移至其它PV;
[root@station55 ~]# pvmove /dev/sdb1
/dev/sdb1: Moved: 0.3%
/dev/sdb1: Moved: 64.6%
/dev/sdb1: Moved: 100.0%
(轉移sdb1的數據到別的磁盤上)
從卷組中將此PV移除;
[root@station55 ~]# vgreduce myvg /dev/sdb1
Removed "/dev/sdb1" from volume group "myvg"
9.擴展邏輯卷
確定擴展多大?
確定當前邏輯卷所在的卷組有足夠的空閒空間;
擴展:
1.1物理邊界
lvextend -L [+]SIZE /path/to/lv
[root@station55 ~]# lvextend -L +3G /dev/myvg/mylv
Extending logical volume mylv to 13.00 GiB
Logical volume mylv successfully resized
(給邏輯卷加3個G)
1.2邏輯邊界
resize2fs /path/to/lv
[root@station55 ~]# resize2fs /dev/myvg/mylv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/mylv is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myvg/mylv to 3407872 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 3407872 blocks long.
文件系統檢測:
e2fsck /path/to/device
[root@station55 ~]# e2fsck /dev/myvg/mylv
e2fsck 1.41.12 (17-May-2010)
/dev/myvg/mylv: clean, 11/851968 files, 92640/3407872 blocks
(意思就是堅持沒有問題 clean)
10.縮減邏輯卷
確定縮減爲多大?前提是:至少能容納原有的所有數據。
縮減:
1、卸載並強行檢測文件系統;
e2fsck -f 路徑
[root@station55 ~]# e2fsck -f /dev/myvg/mylv
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/myvg/mylv: 11/851968 files (0.0% non-contiguous), 92640/3407872 blocks
2、邏輯邊界
resize2fs /path/to/device SIZE
[root@station55 ~]# resize2fs /dev/myvg/mylv 10G
resize2fs 1.41.12 (17-May-2010)
The filesystem is already 2621440 blocks long. Nothing to do!
(提示已經縮減至10G)
3、物理邊界
lvreduce -L [-]SIZE /path/to/lv
[root@station55 ~]# lvreduce -L -3G /dev/myvg/mylv
WARNING: Reducing active logical volume to 10.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv? [y/n]: y
Reducing logical volume mylv to 10.00 GiB
Logical volume mylv successfully resized
(警告縮減有風險,輸入y提示縮減成功)
11.快照卷創建:
生命週期爲整個數據時長;在這段時長內,數據的增長量不能超出快照卷大小;
快照卷應該是隻讀的;
跟原卷在同一卷組內;
lvcreate
-s : 快照卷;
-p r: 限制快照卷爲只讀訪問
lvcreate -L SIZE -s -p r -n LV_NAME /path/to/lv
[root@station55 ~]# lvcreate -L 50M -s -p r -n kuaizhao /dev/myvg/mylv
Rounding up size to full physical extent 52.00 MiB
Logical volume "kuaizhao" created
(創建快照成功,用lvs可以看到快照卷的信息)
創建完後快照卷就可以掛在查看了
[root@station55 ~]# mount /dev/myvg/kuaizhao /media/
mount: block device /dev/mapper/myvg-kuaizhao is write-protected, mounting read-only
(提示掛在爲只讀模式)
12.移除邏輯卷:
lvremove /path/to/lv
[root@station55 ~]# lvremove /dev/myvg/mylv
Do you really want to remove active logical volume mylv? [y/n]: y
Logical volume "mylv" successfully removed
(移除邏輯捲成功,移除mylv前先把快照給移除命令和移除邏輯卷一樣)
13.移除卷組:
vgremove VG_NAME
[root@station55 ~]# vgremove myvg
Volume group "myvg" successfully removed
(移除搞定)
14.移除物理卷;
[root@station55 ~]# pvremove /dev/sdc1
Labels on physical volume "/dev/sdc1" successfully wiped
(移除搞定)
總結
根據上面的討論可以看到,LVM具有很好的可伸縮性,使用起來非常方便。可以方便地對卷組、邏輯卷的大小進行調整,更進一步調整文件系統的大小。