導讀centos
傳統LVM擴容方法須要增長PV磁盤,擴容屢次後,服務器的磁盤數量會愈來愈多,容易增長往後維護存儲和磁盤佈局的難度。當服務器是虛擬機,或者使用SAN/NAS存儲的物理機時,因爲分配給服務器磁盤空間能夠直接擴容,只需增長本來正在使用中的PV磁盤空間便可完成擴容,這樣分配給服務器的磁盤數量較少,磁盤佈局結構較簡單。服務器
LVM擴容方法介紹網絡
傳統的LVM擴容方法,是經過添加新的磁盤或者磁盤分區來創建新的PV,再將PV加入到VG中,從而擴大VG空間,再對相關的LV進行擴容,最後增長文件系統空間完成整個擴容工做。這種方法比較適合使用本地存儲的物理機,由於磁盤空間都是固定的,只能經過增長硬盤來增長磁盤空間,這種方法能夠在線完成,無需停機重啓。但擴容屢次後,VG中會存在多個PV,磁盤邏輯結構變得複雜,容易增長往後維護存儲和磁盤分區佈局的難度。app
當服務器是虛擬機,或者使用SAN/NAS存儲的物理機時,因爲分配給服務器的磁盤空間能夠直接擴容,只需增長本來正在使用中的磁盤空間便可,無需再添加額外磁盤做爲PV,這樣分配給服務器的磁盤數量較少,磁盤佈局結構較簡單。運維
本文將介紹如何經過使用GParted分區軟件擴大PV空間的方式來擴容整個VG,從而最終擴大文件系統的使用空間。ide
擴容PV步驟 工具
咱們以運行在ESXi虛擬機上的Centos/RHEL 7版本Linux爲例,該虛擬機安裝了兩塊硬盤,大小分別爲10GB和5GB,做爲PV,創建了一個VG。佈局
查看系統的磁盤分區結構佈局:ui
進入parted分區管理界面,鍵入print all查看機器的分區狀況,能夠看到該機器有兩塊硬盤/dev/sda和/dev/sdb,其中sda有兩個分區,分區sda1爲boot啓動分區,分區sda2爲LVM PV分區,lvm的VG(centos)由兩個LV(root和swap)組成。另外,parted沒法識別/dev/sdb,顯示錯誤「unrecognised disk label」。spa
分別鍵入pvs、lvs和vgs命令查看LVM的具體狀況:
能夠看到,sda2和sdb均爲LVM VG中的PV,sda2位sda磁盤中的第二個分區,而對於使用sdb整塊硬盤創建的PV,parted是沒法識別的,由於該磁盤爲沒有創建文件系統的裸設備。LVM中有一個VG(centos),VG的大小爲14.5G,該VG由兩個LV,root和swap組成。
2. 增大虛擬機的兩塊硬盤大小。
使用Vsphere Client鏈接Vcenter,右鍵點擊該虛擬機選擇「編輯設置」,在「硬件」選項卡中,分別將硬盤1和硬盤2的大小各增長5GB:
能夠鍵入如下命令系統可以立刻識別新增空間:
echo '1' > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan
echo '1' > /sys/class/scsi_disk/0\:0\:1\:0/device/rescan
又或者直接重啓系統,讓內核識別新增空間。
運行parted,鍵入print all free,發現磁盤大小已經增長,並且在磁盤/dev/sda尾部有5GB未分配空間。
3. 使用GParted分區軟件進行分區
訪問http://www.gparted.org 下載最新版GParted Live CD,好比筆者下載的GParted鏡像文件是gparted-live-0.21.0-1-i586.iso。
將該ISO文件上傳到ESX主機的數據存儲中,而後掛載到虛擬機的光驅中,接着調整啓動順序用該CD引導啓動該虛擬機。
Live CD啓動後能開到該機器硬盤的分區結構和未分配空間:
鼠標右鍵點擊/dev/sda2分區,用鼠標點擊右邊的三角符號,拉動鼠標將分區擴容5GB,點擊「調整大小/移動」,最後點擊工具欄上的「Apply」應用更改。
點擊工具欄最右邊的按鈕選擇/dev/sdb硬盤,會看到sdb硬盤全部的空間都是未分配,由於sdb磁盤是直接在上面創建PV的裸設備磁盤,這種磁盤沒有分區表和分區,GParted沒法識別並進行分區。
卸載光盤,重啓虛擬機進入本地系統,查看PV空間:
[root@user ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 14.51g 5.00g
/dev/sdb centos lvm2 a-- 5.00g 0
使用GParted,sda2擴容成功。
鍵入pvresize命令擴容sdb:
[root@user ~]# pvresize -v /dev/sdb
Using physical volume(s) on command line
Archiving volume group "centos"metadata (seqno 6).
Resizing volume "/dev/sdb" to10485760 sectors.
Resizing physical volume /dev/sdb from 0 to2559 extents.
Updating physical volume"/dev/sdb"
Creating volume group backup"/etc/lvm/backup/centos" (seqno 7).
Physical volume "/dev/sdb" changed
1 physical volume(s) resized / 0 physicalvolume(s) not resized
鍵入pvs、vgs確認擴容後的空間:
[root@user ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 14.51g 5.00g
/dev/sdb centos lvm2 a-- 10.00g 5.00g
[root@user ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 2 0 wz--n- 24.50g 10.00g
能夠看到兩個PV和VG中都有可分配的剩餘空間了,PV擴容完畢。
LV及文件系統擴容
1. 擴容LV
將LV swap擴容到3GB,另外的LV root則分配剩餘的所有空間。
查看原來LV空間狀況:
[root@user ~]# lvs
LV VG Attr LSize Pool Origin Data% Move LogCpy%Sync Convert
root centos -wi-ao---- 13.50g
swap centos -wi-ao---- 1.00g
如今的root LV大小爲13.5G,swap LV大小爲1G。
將LV swap的空間增長2GB:
[root@user ~]# lvextend -L +2g /dev/centos/swap
Extending logical volume swap to 3.00 GiB
Logical volume swap successfully resized
查看VG剩餘PE數量:
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 8
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 24.50 GiB
PE Size 4.00 MiB
Total PE 6273
Alloc PE / Size 4225 / 16.50 GiB
Free PE / Size 2048 / 8.00 GiB
VG UUID U8Io1J-a7CY-X81w-lpiA-wj5A-3XOa-vKlWFL
剩餘2048個PE。
擴容root LV:
[root@user ~]# lvextend -l +2048 /dev/centos/root
Extending logical volume root to 21.50 GiB
Logical volume root successfully resized
查看LV大小確認:
[root@user ~]# lvextend -l +2048 /dev/centos/root
Extending logical volume root to 21.50 GiB
Logical volume root successfully resized
兩個LV已經擴容成功。
2. 擴容根文件系統
LV擴容後需文件系統尚未擴容,鍵入df –h查看空間:
[root@user ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 14G 4.2G 8.5G 33% /
devtmpfs 489M 0 489M 0% /dev
tmpfs 498M 80K 498M 1% /dev/shm
tmpfs 498M 7.0M 491M 2% /run
tmpfs 498M 0 498M 0% /sys/fs/cgroup
/dev/sda1 477M 95M 354M 22% /boot
根分區如今大小是14GB。
使用resize2fs命令對跟分區文件系統進行在線擴容:
[root@user ~]# resize2fs -p /dev/centos/root
resize2fs 1.42.9(28-Dec-2013)
Filesystem at/dev/centos/root is mounted on /; on-line resizing required
old_desc_blocks = 2,new_desc_blocks = 3
The filesystem on/dev/centos/root is now 5637120 blocks long.
再次查看分區大小:
[root@user ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 22G 4.2G 16G 21% /
devtmpfs 489M 0 489M 0% /dev
tmpfs 498M 80K 498M 1% /dev/shm
tmpfs 498M 7.0M 491M 2% /run
tmpfs 498M 0 498M 0% /sys/fs/cgroup
/dev/sda1 477M 95M 354M 22% /boot
分區大小已經擴容爲22GB。
3. 擴容swap分區
Swap分區不能直接擴容,需先將其刪除再重建。
分別使用free –m和swapon –s命令查看swap分區大小。能夠看到這時候swap分區大小仍是1GB。
[root@user ~]# free -m
total used free shared buffers cached
Mem: 994 635 358 7 55 204
-/+ buffers/cache: 375 618
Swap: 1023 0 1023
[root@user ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-0 partition 1048572 0 -1
中止swap分區:
[root@user ~]# swapoff -v /dev/centos/swap
swapoff /dev/centos/swap
從新創建swap分區:
[root@user ~]# mkswap /dev/centos/swap
mkswap:/dev/centos/swap: warning: wiping old swap signature.
Setting up swapspaceversion 1, size = 3145724 KiB
no label,UUID=6dca44dc-9bf2-40b2-b0c8-d73cbe409002
啓用Swap分區:
[root@user ~]# swapon -v /dev/centos/swap
swapon /dev/centos/swap
swapon:/dev/mapper/centos-swap: found swap signature: version 1, page-size 4, samebyte order
swapon:/dev/mapper/centos-swap: pagesize=4096, swapsize=3221225472, devsize=3221225472
再次查看swap分區大小,swap分區已變成了3GB:
[root@user ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-0 partition 3145724 0 -1
[root@user ~]# free -m
total used free shared buffers cached
Mem: 994 636 357 7 55 204
-/+ buffers/cache: 376 617
Swap: 3071 0 3071
注意事項:
創建LVM時,若使用整塊硬盤做爲PV,應先在磁盤上創建分區表和分區,再設置分區的lvm標誌位(Parted中使用set lvm on,fdisk中按t,而後設置8e ),否則的話就會出現本例子中sdb磁盤沒法被GParted或者其餘分區軟件識別的狀況,很容易被誤操做。另外,對任何分區操做前應先對分區數據進行備份。
經驗總結:
經過直接增大PV空間來對LVM磁盤分區進行擴容,能夠減小PV磁盤數量,使磁盤佈局簡單化,方便存儲以及磁盤往後的維護工做。但須要使用GParted光盤引導服務器重啓進行分區,若服務器不能停機則不太適合該方法。這種方法比較適合使用虛擬機或者共享存儲的機器,磁盤能夠直接擴容,加上虛擬機環境機器啓動速度較快,且GParted分區簡單快速,分區所需的停機時間比較短。
原文爲博主所著,並刊登於《網絡運維與管理》雜誌2015.07期。