一、彈性控制磁盤大小的lvm:
假如有這樣一個場景,在初始安裝linux系統時給 /home分區設置了一定大小,但是過了一段時間后,你發現初始分配的大小遠不能滿足公司的擴大,員工增加,需要分配的賬號的磁盤空間也變大,這時你應該怎么辦?是掛載一塊更大的硬盤,將原來的小硬盤拆除掉嗎?其實在linux中有lvm可動態增大文件系統的,而且不需要服務器離線就能辦到。lvm(logical volume manager),通過名字就很好理解,邏輯卷就是在物理卷之上,再次進行邏輯上的劃分,把多個物理卷(可以是硬盤可以是分區)組合成一個卷組,通過劃分卷組來進行磁盤的統一劃分為邏輯卷,如果某一天邏輯卷不夠使用了,可以給卷組添加硬盤或分區,再將邏輯卷進行放大,最后對文件系統進行放大就行了,如果是縮小lvm的話就需要先取消掛載,然后再縮小
二、 LVM相關概念:
pv:物理卷:可以是物理硬盤或分區,通過改變卷標為8e,使用pv命令轉化為物理卷
vg:多個物理卷的一個集合,構成了邏輯上存在的卷組,叫邏輯卷
lv:在使用卷組時可以劃分出多個邏輯卷,通過格式化
pe:構成卷組的邏輯上的最小塊,類似于硬盤的塊大小,分配給lvm時也只能是pe的整數倍,默認一個卷組可以有65534個pe,pe默認大小為4MB, 則一個卷組默認最大有256G,當然可以改變pe的大小來改變vg的最大(pe的大小單位可以是小到b大到g,t,p,e都可以指定)
三者的關系大概是上圖的關系
三、邏輯卷的命令:
1. pv相關命令:
pvcreate:創建物理卷
pvdisplay:顯示系統的物理卷詳細信息
pvs:顯示系統物理卷的概要信息
pvremove:移除物理卷
pvmove搬移物理卷,先加源pv后加目標pv,縮小vg時使用
pvscan:掃描pv
2. vg相關命令:
vgcreate:創建卷組
vgdisplay:卷組的詳細信息
vgs: 卷組的概要信息
vgextend:使用pv擴展卷組
vgreduce:在vg內移除pv
vgremove:移除卷組
vgscan:掃描vg
3. lv相關信息:
lvcreate創建卷組
lvs邏輯卷的概要信息
lvdisplay 邏輯卷詳細信息
lvextend 在lv里增加容量
lvresize 調整lv的容量大小
lvremove 移除lv
四、邏輯卷的實例:
1. 創建邏輯卷:
需要依次創建物理卷、卷組、邏輯卷:
[root@cnode6_8 ~]# pvcreate /dev/sd{b1,b2,c} Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdb2" successfully created Physical volume "/dev/sdc" successfully created
#下面創建名字為jack_vg,pe大小為1M,pv添加了一個分區,一塊磁盤
[root@cnode6_8 ~]# vgcreate -s 1M jack_vg /dev/sdb1 /dev/sdc Volume group "jack_vg" successfully created [root@cnode6_8 ~]# vgs //顯示創建的vg VG #PV #LV #SN Attr VSize VFree jack_vg 2 0 0 wz--n- 20.10g 20.10g [root@cnode6_8 ~]# vgscan //顯示創建的vg Reading all physical volumes. This may take a while... Found volume group "jack_vg" using metadata type lvm2 [root@cnode6_8 ~]# vgdisplay //顯示詳細信息 --- Volume group --- VG Name jack_vg 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 20.10 GiB //vg大小為20.1G PE Size 1.00 MiB Total PE 20587 //pe總個數 Alloc PE / Size 0 / 0 Free PE / Size 20587 / 20.10 GiB VG UUID CvbWjN-q0ew-Uk97-FnFu-iWPM-rl7B-KJ1PNn
#創建lv 指定大小為300個pe,-L可以直接指定大小,-n指定lv名字
[root@cnode6_8 ~]# lvcreate -l 300 -n jack_lv jack_vg Logical volume "jack_lv" created. [root@cnode6_8 ~]# mkfs.ext3 /dev/jack_vg/jack_lv //格式化邏輯卷 mke2fs 1.41.12 (17-May-2010) Filesystem label= …… 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@cnode6_8 ~]# mkdir /mnt/jack_lv //創建掛載點,掛載 [root@cnode6_8 ~]# mount /dev/jack_vg/jack_lv /mnt/jack_lv [root@cnode6_8 ~]# df -h |grep lv //查看文件系統掛載情況 /dev/mapper/jack_vg-jack_lv 291M 11M 266M 4% /mnt/jack_lv
2. 邏輯卷擴展:
邏輯卷擴展需要先擴展物理卷再把物理卷加入卷組之后放大邏輯卷,最后放大文件系統。在前面已經有一個分區未被加入卷組中,可以直接使用,具體步驟如下:
[root@cnode6_8 ~]# vgextend jack_vg /dev/sdb2 Volume group "jack_vg" successfully extended [root@cnode6_8 ~]# vgs VG #PV #LV #SN Attr VSize VFree jack_vg 3 1 0 wz--n- 20.30g 20.01g
#擴展邏輯卷只需指定擴展多少,也可以使用-L直接指定大小,也可以使用-l直接指定一共有多少個pe即可
[root@cnode6_8 ~]# lvresize -l +100 /dev/jack_vg/jack_lv Size of logical volume jack_vg/jack_lv changed from 300.00 MiB (300 extents) to 400.00 MiB (400 extents). Logical volume jack_lv successfully resized.
#此時文件系統還是原來的大小,放大文件系統
[root@cnode6_8 ~]# resize2fs /dev/jack_vg/jack_lv resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/jack_vg/jack_lv is mounted on /mnt/jack_lv; on-line resizing required old desc_blocks = 2, new_desc_blocks = 2 Performing an on-line resize of /dev/jack_vg/jack_lv to 409600 (1k) blocks. The filesystem on /dev/jack_vg/jack_lv is now 409600 blocks long.
3. 縮小邏輯卷:
縮小邏輯卷應該先縮小文件系統,在縮小邏輯卷,將要移除的分區或硬盤上的數據搬移至沒有使用的分區,縮小卷組移除物理卷。
具體步驟如下:
#第一次縮小文件系統大小時系統會提示運行檢查文件系統的命令
[root@cnode6_8 ~]# resize2fs /dev/jack_vg/jack_lv 160M resize2fs 1.41.12 (17-May-2010) Please run 'e2fsck -f /dev/jack_vg/jack_lv' first. [root@cnode6_8 ~]# e2fsck -f /dev/jack_vg/jack_lv 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/jack_vg/jack_lv: 38/101200 files (0.0% non-contiguous), 126124/409600 blocks
#運行完文件系統檢查后就可以運行縮小文件系統的命令
[root@cnode6_8 ~]# resize2fs /dev/jack_vg/jack_lv 160M resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/jack_vg/jack_lv to 163840 (1k) blocks. The filesystem on /dev/jack_vg/jack_lv is now 163840 blocks long. [root@cnode6_8 ~]# lvresize -L 180M /dev/jack_vg/jack_lv WARNING: Reducing active logical volume to 180.00 MiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce jack_vg/jack_lv? [y/n]: y Size of logical volume jack_vg/jack_lv changed from 300.00 MiB (300 extents) to 180.00 MiB (180 extents). Logical volume jack_lv successfully resized.
#假如需要移除/dev/sdc 但是發現它已經被使用了一部分,需要移至其他不用移除的分區
[root@cnode6_8 ~]# pvdisplay --- Physical volume --- PV Name /dev/sdb1 VG Name jack_vg PV Size 109.79 MiB / not usable 1.79 MiB Allocatable yes PE Size 1.00 MiB Total PE 108 Free PE 108 Allocated PE 0 PV UUID RfUlAj-6mtH-CekP-4BQs-SSVU-MYem-rVj9kS --- Physical volume --- PV Name /dev/sdc VG Name jack_vg PV Size 20.00 GiB / not usable 0 Allocatable yes PE Size 1.00 MiB Total PE 20479 Free PE 20299 Allocated PE 180 PV UUID MY3ZK5-do0L-dQCs-2EOH-b1O1-Dhql-oT8Pr8 --- Physical volume --- PV Name /dev/sdb2 VG Name jack_vg PV Size 203.95 MiB / not usable 1.95 MiB Allocatable yes PE Size 1.00 MiB Total PE 202 Free PE 202 Allocated PE 0 PV UUID OISzAn-fAZW-OmPV-l8x0-0QPZ-i1xE-rBoEJc [root@cnode6_8 ~]# pvmove /dev/sdc /dev/sdb2 /dev/sdc: Moved: 7.2% /dev/sdc: Moved: 100.0% [root@cnode6_8 ~]# pvdisplay /dev/sdc --- Physical volume --- PV Name /dev/sdc VG Name jack_vg PV Size 20.00 GiB / not usable 0 Allocatable yes PE Size 1.00 MiB Total PE 20479 Free PE 20479 Allocated PE 0 PV UUID MY3ZK5-do0L-dQCs-2EOH-b1O1-Dhql-oT8Pr8
此時分配了/dev/sdc的已經全部收回,可以縮減卷組了移除pv了
[root@cnode6_8 ~]# vgreduce jack_vg /dev/sdc Removed "/dev/sdc" from volume group "jack_vg" [root@cnode6_8 ~]# pvremove /dev/sdc Labels on physical volume "/dev/sdc" successfully wiped
最后提示移除成功!
[root@cnode6_8 ~]# vgs VG #PV #LV #SN Attr VSize VFree jack_vg 2 1 0 wz--n- 310.00m 130.00m [root@cnode6_8 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert jack_lv jack_vg -wi-a----- 180.00m [root@cnode6_8 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 jack_vg lvm2 a--u 108.00m 108.00m /dev/sdb2 jack_vg lvm2 a--u 202.00m 22.00m
原創文章,作者:jack_cui,如若轉載,請注明出處:http://www.www58058.com/41780
文章思路很清晰,理論與實戰相結合,實驗部分一氣合成,如果能對圖進行一些詳細的解釋,對小白來說更易讀。