LVM(Logical Volume Manager,邏輯卷管理)是CentOS6中常用的磁盤管理的工具。常用于CentOS6上,提供了分區的動態擴展、縮減等功能。目前的常用版本為LVM2。
結構:
一、物理卷
LVM的物理卷以分區為單位。通常情況下,會以一個硬盤一個分區的情況下進行容量擴展。
在分區之后,要使用fisk命令來改變分區的類型,LVM的磁盤類型的ID號為8e。
這里使用sdb1到sdb3這三個分區來做lvm2的試驗。
分區完成后,通過partx來使新分區生效。
然后通過pvcreate來使分區轉換成物理卷??梢允褂胮vs以及pvdisplay來查看物理卷的狀況。
二、卷組
創建物理卷PV之后,可以使用vgcreate命令指定需要的分區來創建卷組VG。
需要注意的是,VG并不是只能創建一個的。
卷組(VG)相關的命令:
vgcreate [-s [KkNmGgTtPpEe]] VG_name /dev/PVdevice vgextend [-s [KkNmGgTtPpEe]] VG_name /dev/PVdevice vgreduce VG_name PhysicalDevicePath #注意:-s用來指定PE的大小,也就是屬于LV的最小單位。如果不指定的話,默認值是4M, #往后擴展的大小,例如+2G,系統都是按PE的大小,湊夠2G。 #由于lvm1的時候PE數量是有限制的,為65534個。所以4M*65534近似于256G。 #LVM2的時候這個限制就被擴大了,所以個人認為能用lvm2的時候就用lvm2吧。
創建之后同樣可以使用vgdisplay來查看邏輯卷的狀況。
這里我們使用默認值,添加一個最簡單的卷組vg_bc,并使用vgdisplay來查看他的狀態。
我們可以大概的計算一個,2558*4M就是近似于10G。也就是卷組中sdb1和sdb2兩個物理卷的的大小。
同時,當VG的容量用滿的時候,可以通過vgextend來添加物理卷pv的方式進行擴容
三、邏輯卷
當創建好VG之后,我們可以將VG當做是一個可以調整大小的硬盤來使用。
而在VG上面,我們可以創建邏輯卷以進行使用。
lv管理工具:
lvs lvdisplay lvcreate -L [+] [KkNmGgTtPpEe] -n name VGname #-L指的是線性地填充pv,也就是填充滿了一個pv之后,再填充一個。
創建好lv之后,接著的步驟就是進行格式化和掛載了吧。
我們嘗試往里面復制一個文件,并使用df來查看掛載好的文件夾的使用情況
-h選項為將容量顯示為可以為人類容易識別的形式。要不然就是按1k來顯示了。
擴展邏輯卷的步驟
lvextend -L size /dev/vgname/lvname resize2fs /dev/vg_name/Lv_name #需要注意的是,雖然擴展可以在線擴展。 #但是,但是!lv縮減的時候,要先卸載分區。 #因為可能的分區在線的時候,你需要縮減的部分,本來沒被使用但又剛好被使用等奇怪情況。[object Object]
擴展了lv的大小之后,別忘記resize一下ext系統。其實也就是告訴ext系統,你的分區改變了。
我們可以看見,在擴展LV的時候resize2fs命令是動態在線的,并沒有影響已經使用的文件。
lv縮減的步驟
umount LVName e2fsck -f LVName resize2fs LVName Size lvreduce -L Size LVname Mount
注意:由于文件系統使用久了會有碎片。所以結構可能不是緊湊的,也就是說占用了文件系統5G。
當把文件夾剛好減少到5G,就很有可能造成文件損壞。所以這個功能在不需要的時候還是不要使用比較好。
四、快照
lvm2還提供快照功能儲存修改過的文件,可以幫助找回誤刪或者修改的文件。
lvcreate -L [KkNmGgTtPpEe] -p r -s -n NAME /dev/VG/LV #而創建快照的命令跟lv創建類似,但是要注意的有兩點。 #-s代表snapshot,也就是快照,而最后一個跟的不是vg的名字,而是要創建快照的LV!! #也就是說快照就基于lv的,并不是所有lv的舊文件都會往里面塞。
創建快照
使用lvs,可以看出my_lvm3_snapshot是my_lvm3的快照。
lvm上的快照 snapshot 通過快照分區訪問源數據, 沒改變的訪問原inode,改變了的文件則訪問儲存在快照上的文件。 要訪問某時間點的就訪問儲存在快照上的文件。
我們把/etc/httpd文件夾復制到lvm1里面。
并為lvm1創建一個快照my_snapshot2_lvm2_2,并將快照掛載到/media/snapshot2上。
此時我們echo 0覆蓋到lvm1的httpd.conf下面,再查看快照上的httpd.conf。
我們會發現,快照上的文件并沒有改變。
使用lvdisplay來查看快照的狀態
lv-size是被快照的lv的容量,而COW-table-size則是快照的實際容量.
COW(Copy On Wirte,寫時復制)
與快照相關閱讀的擴展閱讀:快照的常見類型
關于快照的數據恢復:
截取自鳥哥的私房菜: 為什么要備份呢?為什么不可以直接格式化lv然后將快照直接復制給lv上呢? 要知道 vbirdss 其實是 vbirdlv 的快照,因此如果你格式化整個lv 時,原本的文件系統所有數據都會被搬移到快照。 那如果 vbirdss 的容量不夠大 (通常也真的不夠大),那么部分數據將無法復制到 vbirdss 內,數據當然無法全部還原??! 所以才要在上面表格中制作出一個備份文件的!了解乎?
示例:
tar -jcv -f /backups/lvm.tar.bz2 *
與RAID的異同:
相同點:
以分區為單位,將多個分區通過軟件的方式整合成一個統一單位。
通常的環境下,一般以一個硬盤一個分區的方式進行容量擴展。
例如,LVM將分區轉化為物理卷,再將物理卷(PV)加入卷組(VG)這個整體中進行管理。而后,再創建邏輯卷(LV)。
而RAID同樣地以分區為單位,通過軟件或者硬件的方式整合成一個MD設備。然后將MD設備當成一個普通的硬盤一樣使用。
不同點:
常用的RAID方式中,1,5,6提供冗余功能。磁盤損壞的情況下,損壞的文件部分可以通過計算得出。
LVM不提供冗余功能,文件壞了就是壞了。但是無論RAID或者LVM,都要注意好備份。
原創文章,作者:菠菜,如若轉載,請注明出處:http://www.www58058.com/11213