[root@localhost ~]# lsmod 查看內核裝載的模塊,這裏可以查看raid模塊信息
Module Size Used by
raid0 12417 2
DM:通常用於製作LVM2,也可以做raid1和raid2。但是raid5不行
LVM2
快照:快照裏保存快照以後產生修改的文件,而沒有修改的還是保存在原來的位置。主要作用數據 備份
多路徑
把物理設備做成PV以後加入卷組(VG),在卷組上創建邏輯卷
每一個邏輯卷(Logical Volume)相當於一個獨立分區來使用,邏輯卷可以根據自己需求更改大小
只要把一個物理設備加入VG。在PV(卷)裏就會劃分成多個塊叫做PE。創建邏輯卷則是分給邏輯卷多少個PE。由VG進行分配,在邏輯卷的層面上把這個稱作爲LE
爲卷創建快照,其實是爲邏輯卷創建快照。快照必須和邏輯卷在同一個卷組,而快照作爲訪問邏輯卷的另外一個路口
PV管理命令;
pvcreate 創建pv
pvremove 刪除pv
pvscan 掃描pv
pvdisplay查看pv
pvs 查看pv簡寫版
pvmove 移動pv
VG管理命令:
vgcreate 創建vg
-s # 指定PE大小,默認4M
vgremove 刪除vg
vgextend 擴展vg(增加新的pv)
vgreduce 縮減vg(挪掉pv)
vgdisplay查看vg
vgs 查看vg簡寫版
vgscan 掃描vg
LV管理命令:
lvcreate 創建
-n 指定名字
-L 指定大小 同時也支持 M G T E等
lvremove 移除
lvextend 擴展
lvreduce 縮減
lvs 查看
lvdisplay
raid卷爲fd 對應的邏輯卷爲8e
實驗創建一個10G的VG
創建1個7G+1個3G的PV 總合等於10就行
[root@localhost ~]# partprobe /dev/sdb
[root@localhost ~]# cat /proc/partitions
創建PV
[root@localhost ~]# pvcreate /dev/sdb{5,6}
[root@localhost ~]# pvs 可以查看當前系統的PV,大小誤差在20%就是可接受的
PV VG Fmt Attr PSize PFree
/dev/sdb5 lvm2 a-- 3.01g 3.01g
/dev/sdb6 lvm2 a-- 7.01g 7.01g
[root@localhost ~]# pvdisplay 查看pvs詳細信息
[root@localhost ~]# pvscan 掃描當前一共有多少個pv
創建VG 取名爲myvg
[root@localhost ~]# vgcreate myvg /dev/sdb{5,6}
Volume group "myvg" successfully created
一共包含2564個pe 空閒0個
刪除一個VG(當LV上有數據,或者創建了LV後不要輕易刪除VG。)創建爲8MPE的VG
[root@localhost ~]# vgremove /dev/myvg
Volume group "myvg" successfully removed
[root@localhost ~]# vgcreate -s 8M myvg /dev/sdb{5,6}
如果發現pv多了可以移除一個pv:
[root@localhost ~]# pvmove /dev/sdb5 先把要刪除的pv設備上的數據挪動到其他pv上
[root@localhost ~]# vgreduce myvg /dev/sdb5 移除,同時也可以使用pvremove直接從pv裏移除設備
Removed "/dev/sdb5" from volume group "myvg"
[root@localhost ~]# vgextend myvg /dev/sdb5 把一個pv添加到vg裏
Volume group "myvg" successfully extended
[root@localhost ~]# lvcreate -L 50M -n testlv myvg 創建一個lv指定名字爲testlv,大小爲 50M,在myvg這個卷組上創建
Rounding up size to full physical extent 56.00 MiB
Logical volume "testlv" created
此時可以格式化 掛載 使用這個lv了
[root@localhost ~]# mke2fs -j /dev/myvg/testlv
[root@localhost ~]# mount /dev/myvg/testlv /mnt
移除邏輯卷 先取消掛載
[root@localhost ~]# umount /dev/myvg/testlv
[root@localhost ~]# lvremove /dev/myvg/testlv
Do you really want to remove active logical volume testlv? [y/n]: y
Logical volume "testlv" successfully removed
-------------------------------------------------------
LVM擴展邏輯卷,擴展和縮減的前提不影像邏輯卷中的數據
擴展的時候先擴展物理卷,再擴展邏輯卷
縮減的時候先縮減邏輯卷,再縮減物理卷
lvxtend 擴展物理邊界
-L [+] # /PATH/TO/LV 指定擴展大小 比如把一個10G邏輯卷擴展爲13G則使用-L +3G
10G, +3G
resize2fs 擴展邏輯邊界
resize2fs /PATH/TO/LV 13G 表示把某個LV擴展爲13G
resize2fs -p /PATH/TO/LV 表示擴展成和物理邊界一樣大
縮減:1.不能在線縮減得先卸載。
2.確保縮減後的空間大小依然能存儲原有的所有數據
3.在縮減之前應該先強行檢查文件,以確保文件系統處於一致性狀態
resize2fs /PATH/TO/LV 3G 邏輯邊界縮減到3G
lvreduce
-L [-] # /PATH/TO/LV 3G 物理邊界縮減到3G
縮減以後重新掛載即可
實驗先創建一個10G的LV
[root@localhost ~]# lvcreate -L 10G -n mylv myvg
Logical volume "mylv" created
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
mylv myvg -wi-a----- 10.00g
[root@localhost ~]# mke2fs -j /dev/myvg/mylv
[root@localhost ~]# vim /etc/fstab 開機自動掛載 ,支持acl
/dev/myvg/mylv /mnt ext3 defaults,acl 0 0
[root@localhost ~]# mount -a
[root@localhost ~]# cp /etc/inittab /mnt 複製一個文件進去,用於測試
[root@localhost ~]# df -lh 使用df -lh 可以看到當前邏輯卷爲10G
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 18G 1.9G 15G 12% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 194M 29M 155M 16% /boot
/dev/sda3 985M 18M 918M 2% /home
/dev/mapper/myvg-mylv 9.9G 151M 9.2G 2% /mnt
------------------------------------------------------------------
開始擴展:
首先擴展PV, 然後擴展VG ,然後擴展LV的物理邊界,然後擴展LV的邏輯邊界
1.先增加一塊新的硬盤分一個大於或等於3G的分區
Device Boot Start End Blocks Id System
/dev/sdc1 1 2610 20964793+ 8e Linux LVM
[root@localhost ~]# partprobe /dev/sdc
2.將新建分區加入pv
[root@localhost ~]# pvcreate /dev/sdc1
3.將pv擴展到myvg裏
[root@localhost ~]# vgextend myvg /dev/sdc1
Volume group "myvg" successfully extended
4.擴展lv的物理邊界
[root@localhost ~]# lvextend -L 13G /dev/myvg/mylv
Extending logical volume mylv to 13.00 GiB
Logical volume mylv successfully resized
此時查看到的物理邊界已經變成13G.但邏輯邊界還是10G
[root@localhost ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 18G 1.9G 15G 12% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 194M 29M 155M 16% /boot
/dev/sda3 985M 18M 918M 2% /home
/dev/mapper/myvg-mylv 9.9G 151M 9.2G 2% /mnt
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
mylv myvg -wi-ao---- 13.00g
5.擴展邏輯邊界
[root@localhost ~]# resize2fs -p /dev/myvg/mylv
[root@localhost ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 18G 1.9G 15G 12% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 194M 29M 155M 16% /boot
/dev/sda3 985M 18M 918M 2% /home
/dev/mapper/myvg-mylv 13G 154M 12G 2% /mnt
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
mylv myvg -wi-ao---- 13.00g
此時的文件系統查看也是13G了。
此時cat /mnt/inittab文件依然可以完好。
----------------------------------------------------------------
縮減邏輯卷,注意方法和擴展剛好相反。先縮減邏輯邊界,再縮減物理邊界
實驗要求把13G的邏輯捲縮減到3G
先確保縮減以後的空間足夠存儲現有文件
[root@localhost ~]# df -lh
卸載
[root@localhost ~]# umount /dev/myvg/mylv
強行進行文件系統檢測
[root@localhost ~]# e2fsck -f /dev/myvg/mylv
縮減邏輯邊界至3G
[root@localhost ~]# resize2fs /dev/myvg/mylv 3G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/mylv to 786432 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 786432 blocks long.
縮減物理邊界
[root@localhost ~]# lvreduce -L 3G /dev/myvg/mylv
WARNING: Reducing active logical volume to 3.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv? [y/n]: y
Reducing logical volume mylv to 3.00 GiB
Logical volume mylv successfully resized
掛載
[root@localhost ~]# mount /dev/myvg/mylv /mnt
[root@localhost ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 18G 1.9G 15G 12% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 194M 29M 155M 16% /boot
/dev/sda3 985M 18M 918M 2% /home
/dev/mapper/myvg-mylv 3.0G 144M 2.7G 5% /mnt
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
mylv myvg -wi-ao---- 3.00g
此時[root@localhost ~]# cat /mnt/inittab 文件也是完好的。
-------------------------------------------
LVM的快照卷:
生命週期爲整個數據時長;在這段時長內,數據的增長量不能超出快照卷大小;
創建爲只讀的方式
跟原卷在同一卷組內
lvcreate
-s 創建快照卷
-p r|w 指定讀寫權限
格式 lvcreate -L # -n SLV_NAME -p r /PATH/TO/LV
創建一個大小爲50M的快照(-s),名字爲mylv-snap(-n) ,權限爲只讀 (-p) 爲/dev/myvg/mylv創建
[root@localhost ~]# lvcreate -L 50M -n mylv-snap -s -p r /dev/myvg/mylv
Rounding up size to full physical extent 56.00 MiB
Logical volume "mylv-snap" created
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
mylv myvg owi-aos--- 3.00g
mylv-snap myvg sri-a-s--- 56.00m mylv 0.02
掛載快照卷以後即可使用
[root@localhost ~]# mount /dev/myvg/mylv-snap /tmp/a
[root@localhost ~]# rm -rf /mnt/inittab
[root@localhost ~]# cat /tmp/a/inittab 當刪除或者修改了lv裏的數據時,還是能在快照裏面查看到以前的文件。
[root@localhost a]#tar jcf /tmp/inittab.bz2 inittab 如果只是爲了備份某一刻的文件的時候,把快照文件備份以後可以把快照刪掉
[root@localhost ~]# umount /tmp/a
[root@localhost ~]# lvremove /dev/myvg/mylv-snap 移除
Do you really want to remove active logical volume mylv-snap? [y/n]: y
Logical volume "mylv-snap" successfully removed
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
mylv myvg -wi-ao---- 3.00g
[root@localhost mnt]# tar xf /tmp/inittab.tar.bz2 -C ./ 把備份還原到當前目錄
-------------------------