Linux磁盤管理:多盤組件LVM和擴容
對于Linux磁盤掛載,本地裸盤掛載的方式雖然簡單,但是對于磁盤擴容情況下來說,不夠靈活,邏輯卷的方式很好解決了此問題,能夠?qū)崿F(xiàn)磁盤的動態(tài)擴容。本節(jié)通過實戰(zhàn)帶你了解和認識LVM。
- 物理存儲介質(zhì)(The physical media):LVM存儲介質(zhì)可以是磁盤分區(qū),整個磁盤,RAID陣列或SAN磁盤,設(shè)備必須初始化為LVM物理卷,才能與LVM結(jié)合使用;
- 物理卷PV(physical volume) :物理卷就是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(zhì)(如分區(qū)、磁盤等)比較,卻包含有與LVM相關(guān)的管理參數(shù),創(chuàng)建物理卷它可以用硬盤分區(qū),也可以用硬盤本身;
- 卷組VG(Volume Group) :一個LVM卷組由一個或多個物理卷組成;
- 邏輯卷LV(logical volume) :LV建立在VG之上,可以在LV之上建立文件系統(tǒng);
- PE(physical extents) :PV物理卷中可以分配的最小存儲單元,PE的大小是可以指定的,默認為4MB;
- LE(logical extent) :LV邏輯卷中可以分配的最小存儲單元,在同一個卷組中,LE的大小和PE是相同的,并且一一對應(yīng)
命令幫助
1、多盤組建LVM實操
下面從開始說起,服務(wù)器上共有4塊1.1T的磁盤,我們將其掛載為/data目錄
物理卷 --> 卷組 --> 邏輯卷
磁盤分區(qū),不分區(qū)的情況下mkfs.xfs /dev/sdc直接格式化也是可以的,下列按照分區(qū)來演示
[root@localhost ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.34)。
更改將停留在內(nèi)存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
設(shè)備不包含可識別的分區(qū)表。
創(chuàng)建了一個磁盤標識符為 0xade00547 的新 DOS 磁盤標簽。
命令(輸入 m 獲取幫助):p
Disk /dev/sdb:446.64 GiB,479559942144 字節(jié),936640512 個扇區(qū)
磁盤型號:MR9361-8i
單元:扇區(qū) / 1 * 512 = 512 字節(jié)
扇區(qū)大小(邏輯/物理):512 字節(jié) / 4096 字節(jié)
I/O 大小(最小/最佳):262144 字節(jié) / 262144 字節(jié)
磁盤標簽類型:dos
磁盤標識符:0xade00547
命令(輸入 m 獲取幫助):n
分區(qū)類型
p 主分區(qū) (0個主分區(qū),0個擴展分區(qū),4空閑)
e 擴展分區(qū) (邏輯分區(qū)容器)
選擇 (默認 p):p
分區(qū)號 (1-4, 默認 1): 1
第一個扇區(qū) (2048-936640511, 默認 2048):
最后一個扇區(qū),+/-sectors 或 +size{K,M,G,T,P} (2048-936640511, 默認 936640511):
創(chuàng)建了一個新分區(qū) 1,類型為“Linux”,大小為 446.6 GiB。
命令(輸入 m 獲取幫助):p
Disk /dev/sdb:446.64 GiB,479559942144 字節(jié),936640512 個扇區(qū)
磁盤型號:MR9361-8i
單元:扇區(qū) / 1 * 512 = 512 字節(jié)
扇區(qū)大小(邏輯/物理):512 字節(jié) / 4096 字節(jié)
I/O 大小(最小/最佳):262144 字節(jié) / 262144 字節(jié)
磁盤標簽類型:dos
磁盤標識符:0xade00547
設(shè)備 啟動 起點 末尾 扇區(qū) 大小 Id 類型
/dev/sdb1 2048 936640511 936638464 446.6G 83 Linux
命令(輸入 m 獲取幫助):w
分區(qū)表已調(diào)整。
將調(diào)用 ioctl() 來重新讀分區(qū)表。
正在同步磁盤。
格式化,所有盤分區(qū)完畢
- 創(chuàng)建物理卷PV
創(chuàng)建pv,4塊盤依次操作
[root@localhost ~]# pvcreate /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
Physical volume "/dev/sdc1" successfully created.
Physical volume "/dev/sdd1" successfully created.
Physical volume "/dev/sde1" successfully created.
Physical volume "/dev/sdf1" successfully created.
- 創(chuàng)建卷組VG
創(chuàng)建vg 此處的vg_group是vg組的名字,可以自定義,同時將PV加入卷組
[root@localhost ~]# vgcreate vg_kvm /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
Volume group "vg_kvm" successfully created
查看磁盤卷組,可以看到總大小為4.36T
[root@localhost ~]# vgdisplay vg_kvm -v
--- Volume group ---
VG Name vg_kvm
System ID
Format lvm2
Metadata Areas 4
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 4
Act PV 4
VG Size 4.36 TiB
PE Size 4.00 MiB
Total PE 1144124
Alloc PE / Size 0 / 0
Free PE / Size 1144124 / 4.36 TiB
VG UUID OdaNAs-ko43-qtky-Ak3r-70Nq-33wX-4KwHXQ
--- Physical volumes ---
PV Name /dev/sdc1
PV UUID 0vsc28-sOBH-3Wo1-1Pe1-DC5S-MY2w-d55TFA
PV Status allocatable
Total PE / Free PE 286031 / 286031
PV Name /dev/sdd1
PV UUID Kv4seB-iHFa-yhun-8vNK-cO0o-te2O-NlaF1n
PV Status allocatable
Total PE / Free PE 286031 / 286031
PV Name /dev/sde1
PV UUID 6qot9d-vJ7X-kUSR-h2Xc-qPiV-Mxxe-VAOiHw
PV Status allocatable
Total PE / Free PE 286031 / 286031
PV Name /dev/sdf1
PV UUID JAinSf-m1d3-Uc7Z-zN0A-IUzB-ZQ01-z8E90f
PV Status allocatable
Total PE / Free PE 286031 / 286031
- 創(chuàng)建邏輯卷LV
-L后面是要分給lv的大小
[root@localhost ~]# lvcreate -L 4.36T vg_kvm
Rounding up size to full physical extent 4.36 TiB
Logical volume "lvol0" created.
創(chuàng)建完畢后可以通過lvdisplay查看卷組狀態(tài)
[root@localhost ~]# lvdisplay vg_kvm -v
--- Logical volume ---
LV Path /dev/vg_kvm/lvol0
LV Name lvol0
VG Name vg_kvm
LV UUID F0UQ1a-fJtI-9VCE-MpTP-1Qwy-kxG3-7EnFGt
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2021-10-22 10:32:34 +0800
LV Status available
# open 0
LV Size 4.36 TiB
Current LE 1142948
Segments 4
Allocation inherit
Read ahead sectors auto
- currently set to 4096
Block device 252:3
- 掛載使用
最后可以直接掛載使用了
[root@localhost ~]# df -h
文件系統(tǒng) 容量 已用 可用 已用% 掛載點
devtmpfs 255G 0 255G 0% /dev
tmpfs 255G 192K 255G 1% /dev/shm
tmpfs 255G 20M 255G 1% /run
tmpfs 255G 0 255G 0% /sys/fs/cgroup
/dev/mapper/klas-root 392G 27G 365G 7% /
tmpfs 255G 0 255G 0% /tmp
/dev/sda2 1014M 309M 706M 31% /boot
/dev/sda1 200M 5.8M 195M 3% /boot/efi
tmpfs 51G 0 51G 0% /run/user/0
格式化邏輯卷(LV)
[root@localhost ~]# mkfs.xfs /dev/vg_kvm/lvol0
meta-data=/dev/vg_kvm/lvol0 isize=512 agcount=32, agsize=36574336 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=0
data = bsize=4096 blocks=1170378752, imaxpct=5
= sunit=64 swidth=64 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=521728, versinotallow=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
設(shè)置開機自動掛載
vim /etc/fstab
# /etc/fstab
# Created by anaconda on Mon Mar 15 19:34:15 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/klas-root / xfs defaults 0 0
/dev/mapper/klas-backup /backup xfs noauto 0 0
UUID=b791f0d4-4d2e-4e7d-a423-163035f757cf /boot xfs defaults 0 0
UUID=631A-9AFB /boot/efi vfat umask=0077,shortname=winnt 0 2
/dev/vg_kvm/lvol0 /data xfs defaults 0 0
然后保存,執(zhí)行mount -a掛載到/data目錄
[root@localhost ~]# mount -a
[root@localhost ~]# df -h
文件系統(tǒng) 容量 已用 可用 已用% 掛載點
devtmpfs 255G 0 255G 0% /dev
tmpfs 255G 192K 255G 1% /dev/shm
tmpfs 255G 20M 255G 1% /run
tmpfs 255G 0 255G 0% /sys/fs/cgroup
/dev/mapper/klas-root 392G 27G 365G 7% /
tmpfs 255G 0 255G 0% /tmp
/dev/sda2 1014M 309M 706M 31% /boot
/dev/sda1 200M 5.8M 195M 3% /boot/efi
tmpfs 51G 0 51G 0% /run/user/0
/dev/mapper/vg_kvm-lvol0 4.4T 4.5G 4.4T 1% /data
2、LVM在線擴容
如果卷組中有空間可以直接擴到邏輯卷上,如果沒有就要加一塊磁盤
mkfs.xfs /dev/sdf1 -f #先增加一塊磁盤
vgextend vg_kvm /dev/sdf1 #將磁盤加入邏輯卷組
lvextend -L +1.09T /dev/vg_kvm/lvol0 #將新增的空間加到邏輯卷上
在線擴容說明
resize2fs#針對的是ext2、ext3、ext4文件系統(tǒng)
xfs_growfs#針對的是xfs文件系統(tǒng)
[root@localhost ~]# xfs_growfs /data #也可以直接跟/dev/vg_kvm/lvol0
meta-data=/dev/mapper/vg_kvm-lvol0 isize=512 agcount=32, agsize=27430784 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=0
data = bsize=4096 blocks=877784064, imaxpct=5
= sunit=64 swidth=64 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=428608, versinotallow=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 877784064 to 1171582976
總結(jié):在操作系統(tǒng)安裝的過程中,盡量將操作系統(tǒng)或者數(shù)據(jù)盤組成LVM的邏輯卷,這樣可以避免后續(xù)環(huán)境上線后,磁盤空間不足而產(chǎn)生一系列的問題。LVM管理磁盤的情況下,能夠很方便的進行磁盤的動態(tài)擴容。