LVM( Logical Volume Manage,邏輯 邏輯卷管理)LVM將一個或多個硬盤的分區在邏輯上集合,相當于一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的分區加入其中,這樣可以實現磁盤空間的動態管理,相對于普通的磁盤分區有很大的靈活性。
LVM的重要特性:
1、LVM使用的存儲空間單位是PE,默認的PE是4M,一個VG最多有65534個PE,默認下一個VG最大256G。
2、VG的空間擴展、刪除,都是通過添加空閑的PE、刪除空閑的PE來完成
3、LVM有兩個不同的寫入數據模式:
A、線性模式:VG中有多個PV是,且同時都屬于一個LV時,那么線性模式就是當每一個PV的容量用完之后,再使用其他的PV。默認就是此模式
B、交錯模式:VG中有多個PV是,且同時都屬于一個LV時,那么交錯模式會同時把每個PV中寫入相等容量的數據。類似于RAID0
4、支持快照
如圖所示LVM模型:
四個硬盤或分區組一成個邏輯卷,在邏輯卷上可以再邏輯分區,當邏輯分區的空間無法再滿足要求時,可以靈活的擴展使用空間
LVM的幾個概念:
LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來為文件系統屏蔽下層磁盤分區布局,提供一個抽象的盤卷,在盤卷上建立文件系統,有以下幾個概念:
1、物理存儲介質(The physical media):這里指系統的存儲設備:硬盤,如:/dev/hda1、/dev/sda等等,是存儲系統最低層的存儲單元。
2、物理卷PV(physical volume):物理卷就是指硬盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
3、卷組(Volume Group):LVM卷組類似于非LVM系統中的物理硬盤,其由物理卷組成??梢栽诰斫M上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。
4、邏輯卷(logical volume):LVM的邏輯卷類似于非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。
5、PE(physical extent):每一個物理卷被劃分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認為4MB。
6、LE(logical extent):邏輯卷也被劃分為被稱為LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,并且一一對應。
配置LVM的流程:fdisk創建分區及修改ID為8e–>把分區轉換為PV—>創建VG—>創建LV—>格式華LV—>mount文件系統
擴展LV的空間流程:為VG添加PV–》lvextend擴展空間–》resize2fs 增大文件系統的空間
縮小LV的空間流程:
PV的基本命令 pvs 顯示pv分區的簡要信息,包括硬盤分區名稱、PV名稱、空間問題及空閑量 pvcreate 把硬盤分區轉換成PV pvcreate [選項] [硬盤分區] 選項: -f:強制創建物理卷,不需要用戶確認; -u:指定設備的UUID; -y:所有的問題都回答“yes”; -Z:是否利用前4個扇區。 pvdisplay 顯示PV的詳細信息 pvscan 掃描系統中的pv pvremove 刪除pv pvmove [選項] [pv_name....] 選項: -f 強制刪除,不提示 -y 對提示的內容,自動輸入yes pvchange 改變pv的物理屬性 pvchange [選項] [pv_name] 選項: -u 為指定的PV_NAME隨便生成UUID pvck 檢查PV的元數據 pvresize 調整PV的容量大小 pvresize [選項] [pv_name] --setphysicalvolumesize <容量大小> 指定修改PV的空間大小 pvresize /dev/sda4 自動把/dev/sda4的空間大小調整為磁盤分區的最大值 pvresize --setphysicalvolumszise 50G /dev/sda4 把/dev/sda4的空間大小調整為50G pvmove 把源PV的上數據移動到目標pv上 pvmove [選項] [源PV] [目標PV1.......] pvmove /dev/sda4 /dev/sda5 把/dev/sda4的數據移動到/dev/sda5 |
|
VG的基本命令 vgs 顯示vg分區的簡要信息,包括硬盤分區名稱、PV名稱、空間問題及空閑量 vgdisplay 顯示vg的詳細信息 vgcreate 創建VG vgcreate [選項] [vg_name] [pv_name.....] -l:卷組上允許創建的最大邏輯卷數,即PV數量; -p:卷組中允許添加的最大物理卷數; -s:卷組上的物理卷的PE大小,即PV數量。 vgextend 添加PV到VG中 vgextend [選項] [vg_name] [pv_name] -d 使用調試模式 -t 測試使用 -f 強制擴展 -v 顯示詳細信息 vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] #移除VG中的一個PV ,前提是移動數據 vgremove VG_NAME #刪除vg組,要先把mount取消掉 vgscan [PhysicalDevicePath] 掃描系統中的VG |
LV基本命令 lvs 查看 lvdisplay 查看詳細信息 lvcreate 創建lv lvcreate [選項] [vc_name] -L 指定VC的大小,單位 K M G T P E -l 通過指定VC的PE數量,來確定VC的空間大小 -n 指定vc的名稱 lvremove 刪除lv,先要卸載mount lvremove [選項] [lv_name] 擴展邏輯卷: #注意:在 lvexten擴展完成后,直接操作mount,會發現擴展的空量沒有直接應用到文件系統中,需要執行一次 resize2fs # lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME resize2fs /dev/VG_NAME/LV_NAME 縮減邏輯卷: umount /dev/VG_NAME/LV_NAME #縮減必須先umount e2fsck -f /dev/VG_NAME/LV_NAME #文件系統強制檢測及修復 resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] #指定文件系統縮減到大多的空間 lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME #指定LV的縮減到多大的空間 mount #掛載 |
LVM的快照功能 snapshot
快照就是將當時系統的信息記錄下來,就好像照相一樣。將來若有任何數據的改動,則原始數據就會被移動到快照區。
做快照時,一定要確保數據沒有在被訪問
快照LV和被快照的LV要在同一個VG中。
lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name
說明:-L是快照區的容量大小 -s 是指定創建快照分區
創建PV
[root@localhost ~]# fdisk -l | grep "/dev/sd[cde]" Disk /dev/sdc: 5368 MB, 5368709120 bytes, 10485760 sectors /dev/sdc1 2048 10485759 5241856 8e Linux LVM Disk /dev/sdd: 5368 MB, 5368709120 bytes, 10485760 sectors /dev/sdd1 2048 10485759 5241856 8e Linux LVM Disk /dev/sde: 2147 MB, 2147483648 bytes, 4194304 sectors /dev/sde1 2048 4194303 2096128 8e Linux LVM [root@localhost ~]# pvcreate /dev/sd{d1,c1,e1} #創建pv [root@localhost ~]# pvscan PV /dev/sda2 VG centos lvm2 [9.51 GiB / 40.00 MiB free] PV /dev/sdd1 lvm2 [5.00 GiB] PV /dev/sdc1 lvm2 [5.00 GiB] PV /dev/sde1 lvm2 [2.00 GiB]
創建VG及LV
[root@localhost ~]# vgcreate vgtest /dev/sd{c1,d1} #創建VG vgtest Volume group "vgtest" successfully created [root@localhost ~]# pvscan PV /dev/sda2 VG centos lvm2 [9.51 GiB / 40.00 MiB free] PV /dev/sdc1 VG vgtest lvm2 [5.00 GiB / 5.00 GiB free] PV /dev/sdd1 VG vgtest lvm2 [5.00 GiB / 5.00 GiB free] PV /dev/sde1 lvm2 [2.00 GiB] [root@localhost ~]# vgdisplay vgtest --- Volume group --- VG Name vgtest System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 9.99 GiB PE Size 4.00 MiB #PE的默認值 Total PE 2558 #10G的空間有2558個PE Alloc PE / Size 0 / 0 #還沒有使用 Free PE / Size 2558 / 9.99 GiB VG UUID l26W00-L4Q6-g4yV-NcKc-wzBa-90ak-UoXdiI [root@localhost ~]# lvcreate -l 1000 -n lvtest vgtest #創建1000個PE的(即4000MB)lvtest 邏輯分區 WARNING: ext3 signature detected on /dev/vgtest/lvtest at offset 1080. Wipe it? [y/n]: y Wiping ext3 signature on /dev/vgtest/lvtest. Logical volume "lvtest" created. [root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/vgtest/lvtest LV Name lvtest VG Name vgtest #VG的名稱 LV UUID QRJ9jg-vxf6-cOHs-5zuJ-dBze-UryA-3sGork LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-05-19 22:46:43 +0800 LV Status available # open 0 LV Size 3.91 GiB Current LE 1000 #1000個PE Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 [root@localhost ~]# mkfs.ext3 /dev/vgtest/lvtest #格式化 [root@localhost ~]# mount /dev/vgtest/lvtest /lvtest #掛載 [root@localhost ~]# ls /lvtest/ lost+found #完成LV的創建及掛載 [root@localhost ~]#
擴展LV的空間
[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 8.47g swap centos -wi-ao---- 1.00g lvtest vgtest -wi-ao---- 3.91g [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- 9.51g 40.00m vgtest 3 1 0 wz--n- 11.99g 8.08g [root@localhost ~]# lvextend -L +1G /dev/vgtest/lvtest #為lvtest的空間擴大1G Size of logical volume vgtest/lvtest changed from 3.91 GiB (1000 extents) to 4.91 GiB (1256 extents). Logical volume lvtest successfully resized. [root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/vgtest/lvtest LV Name lvtest VG Name vgtest LV UUID QRJ9jg-vxf6-cOHs-5zuJ-dBze-UryA-3sGork LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-05-19 22:46:43 +0800 LV Status available open 1 LV Size 4.91 GiB #擴展后的空間 Current LE 1256 #擴展后的LE,LE的值與PE相同 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 [root@localhost ~]# df -h | grep "lvtest" /dev/mapper/vgtest-lvtest 3.8G 14M 3.6G 1% /lvtest #但能使用的空間還沒有擴展 [root@localhost ~]# resize2fs /dev/vgtest/lvtest #resize2fs命令被用來增大或者收縮未加載的“ext2/ext3”文件系統的大小 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/vgtest/lvtest is mounted on /lvtest; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/vgtest/lvtest is now 1286144 blocks long. [root@localhost ~]# df -h | grep "lvtest" /dev/mapper/vgtest-lvtest 4.8G 14M 4.6G 1% /lvtest #已能使用擴展后的空間
縮小LV的空間
[root@localhost /]# lvdisplay /dev/vgtest/lvtest --- Logical volume --- LV Path /dev/vgtest/lvtest LV Name lvtest VG Name vgtest LV UUID ze2YVv-0eXR-RBD2-byEK-eqtt-zuaD-m4LqJM LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-05-19 23:35:14 +0800 LV Status available # open 1 LV Size 5.00 GiB #縮小前的空間 Current LE 1280 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 [root@localhost /]# umount /lvtest/ #必須先卸載,否則會出問題。但擴大空間時不用先卸載 [root@localhost /]# resize2fs /dev/vgtest/lvtest 2G #把文件系統大小壓縮成2G resize2fs 1.42.9 (28-Dec-2013) Please run 'e2fsck -f /dev/vgtest/lvtest' first. #提示先進行文件檢測,如果沒有事先umount,檢測會出問題,提示超級塊有壞塊 [root@localhost /]# e2fsck -f /dev/vgtest/lvtest #檢測 e2fsck 1.42.9 (28-Dec-2013) 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/vgtest/lvtest: 11/327680 files (0.0% non-contiguous), 55935/1310720 blocks [root@localhost /]# resize2fs /dev/vgtest/lvtest 2G #把文件系統大小壓縮成2G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vgtest/lvtest to 524288 (4k) blocks. The filesystem on /dev/vgtest/lvtest is now 524288 blocks long. [root@localhost /]# lvreduce -L 2G /dev/vgtest/lvtest #把LV的空間縮小成2G WARNING: Reducing active logical volume to 2.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lvtest? [y/n]: Y Size of logical volume vgtest/lvtest changed from 5.00 GiB (1280 extents) to 2.00 GiB (512 extents). Logical volume lvtest successfully resized. [root@localhost /]# mount /dev/vgtest/lvtest /lvtest/ [root@localhost /]# df -h | grep "lvtest" /dev/mapper/vgtest-lvtest 1.9G 7.7M 1.8G 1% /lvtest
原創文章,作者:Net20-deamon,如若轉載,請注明出處:http://www.www58058.com/16400