擴容實驗參考上一篇博客:
https://blog.csdn.net/wenxiaocsdn/article/details/141932877?spm=1001.2014.3001.5502
LVM基礎知識附錄紅帽官方文檔
配置和管理邏輯卷 | Red Hat Enterprise Linux | 8 | Red Hat Documentation
LVM邏輯結構圖
LVM 管理命令速查表(中英文對照)
LVM 管理命令速查表(中英文對照)
操作分類 | 命令 | 英文說明 | 中文說明 |
---|---|---|---|
創建 PV | pvcreate /dev/sdX1 | Initialize a physical volume | 初始化物理卷 |
查看 PV | pvdisplay / pvs | Show physical volume details / summary | 查看物理卷詳情 / 摘要 |
刪除 PV | pvremove /dev/sdX1 | Remove a physical volume | 刪除物理卷 |
創建 VG | vgcreate vg_name /dev/sdX1 | Create a volume group | 創建卷組 |
添加 PV 到 VG | vgextend vg_name /dev/sdY1 | Add physical volume to volume group | 向卷組添加物理卷 |
從 VG 刪除 PV | vgreduce vg_name /dev/sdY1 | Remove physical volume from VG | 從卷組移除物理卷 |
查看 VG | vgdisplay / vgs | Show volume group info | 查看卷組信息 |
刪除 VG | vgremove vg_name | Delete a volume group | 刪除卷組 |
創建 LV | lvcreate -L 10G -n lv_name vg_name | Create logical volume | 創建邏輯卷 |
查看 LV | lvdisplay / lvs | Show logical volume info | 查看邏輯卷信息 |
擴容 LV | lvextend -L +5G /dev/vg_name/lv_name | Extend logical volume | 擴展邏輯卷大小 |
縮容 LV | lvreduce -L 5G /dev/vg_name/lv_name | Reduce logical volume | 縮小邏輯卷 |
刪除 LV | lvremove /dev/vg_name/lv_name | Delete logical volume | 刪除邏輯卷 |
檢查文件系統(ext4) | e2fsck -f /dev/vg/lv | Check ext4 filesystem | 檢查 ext4 文件系統一致性 |
擴展 ext4 | resize2fs /dev/vg/lv | Resize ext4 filesystem | 擴展 ext4 文件系統 |
擴展 xfs | xfs_growfs /mountpoint | Grow xfs filesystem | 擴展 xfs 文件系統 |
格式化 ext4 | mkfs.ext4 /dev/vg/lv | Format LV as ext4 | 格式化為 ext4 |
格式化 xfs | mkfs.xfs /dev/vg/lv | Format LV as xfs | 格式化為 xfs |
創建快照 | lvcreate -L 1G -s -n lv_snap /dev/vg/lv | Create snapshot | 創建邏輯卷快照 |
刪除快照 | lvremove /dev/vg/lv_snap | Remove snapshot | 刪除快照 |
查看掛載情況 | lsblk / df -hT | Show block devices / mount info | 查看磁盤與掛載信息 |
刷新分區表 | partprobe / udevadm settle | Reload partition table | 刷新分區表 |
重命名 LV | lvrename vg old_lv new_lv | Rename LV | 重命名邏輯卷 |
重命名 VG | vgrename old_vg new_vg | Rename VG | 重命名卷組 |
適用于虛擬機linux磁盤調整大小步驟,這里介紹幾種案例
實驗環境:
vmware workstation 17
centos7.9?版本
場景分類
類型 | 文件系統 | 是否支持在線擴容 | 是否需重啟 | 備注 |
---|---|---|---|---|
非LVM 分區磁盤 | ext4 | ? 是 | ? 否 | 常見于直接分區使用場景 |
非LVM 分區磁盤 | xfs | ? 是 | ? 否 | xfs 不支持縮容 |
LVM 分區磁盤 | ext4 | ? 是 | ? 否 | 支持彈性擴容 |
LVM 分區磁盤 | xfs | ? 是 | ? 否 | 建議用于大數據場景 |
場景命令示例
類型 | 文件系統 | 命令示例 |
---|---|---|
非LVM + ext4 | ext4 | fdisk → resize2fs /dev/sdX1 |
非LVM + xfs | xfs | fdisk → xfs_growfs /mountpoint |
LVM + ext4 | ext4 | lvextend → resize2fs |
LVM + xfs | xfs | lvextend → xfs_growfs /mountpoint |
🧾關鍵區別:MBR vs GPT
分區類型 | 最大支持容量 | 最大主分區數 | 推薦使用場景 |
---|---|---|---|
MBR(msdos) | 2TB | 4(主分區) | 小磁盤(≤2TB) |
GPT(gpt) | 理論 18EB | 128(主分區) | 大磁盤(>2TB) |
小于2T環境
實驗準備:
初始磁盤大小為80G,未劃分邏輯卷,默認安裝分區類型為xfs,遠程登錄命令示例如下
[root@test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
sda 8:0 0 80G 0 disk
├─sda2 8:2 0 3.9G 0 part [SWAP]
├─sda3 8:3 0 75.9G 0 part /
└─sda1 8:1 0 300M 0 part /boot
sr1 11:1 1 1024M 0 rom
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.5M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
[root@test ~]# pvs
[root@test ~]# vgs
[root@test ~]# lvs
[root@test ~]#
????????分別新增四塊盤分別為100G,分區按照非LVM + ext4,非LVM + xfs,LVM + ext4,LVM + xfs,分別掛在data1,data2,data3,data4,掛載分區后,再次修改虛擬磁盤為200G ,如下:
[root@test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdd 8:48 0 200G 0 disk
└─data3-lv0 253:1 0 100G 0 lvm /data3
sdb 8:16 0 200G 0 disk
└─sdb1 8:17 0 100G 0 part /data1
sr0 11:0 1 1024M 0 rom
sde 8:64 0 200G 0 disk
└─data4-lv0 253:0 0 100G 0 lvm /data4
sdc 8:32 0 200G 0 disk
└─sdc1 8:33 0 100G 0 part /data2
sda 8:0 0 80G 0 disk
├─sda2 8:2 0 3.9G 0 part [SWAP]
├─sda3 8:3 0 75.9G 0 part /
└─sda1 8:1 0 300M 0 part /boot
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.5M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
/dev/sdb1 ext4 99G 61M 94G 1% /data1
/dev/sdc1 xfs 100G 33M 100G 1% /data2
/dev/mapper/data3-lv0 ext4 99G 61M 94G 1% /data3
/dev/mapper/data4-lv0 xfs 100G 33M 100G 1% /data4
[root@test ~]#
非LVM + ext4操作步驟 (小于2T磁盤環境)
# 刪除原分區(不丟數據,別格式化)
# 重建新的分區起始扇區必須與原來相同
# 類型為 Linux (83)
[root@test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdd 8:48 0 200G 0 disk
└─data3-lv0 253:1 0 100G 0 lvm /data3
sdb 8:16 0 200G 0 disk
└─sdb1 8:17 0 100G 0 part /data1
sr0 11:0 1 1024M 0 rom
sde 8:64 0 200G 0 disk
└─data4-lv0 253:0 0 100G 0 lvm /data4
sdc 8:32 0 200G 0 disk
└─sdc1 8:33 0 100G 0 part /data2
sda 8:0 0 80G 0 disk
├─sda2 8:2 0 3.9G 0 part [SWAP]
├─sda3 8:3 0 75.9G 0 part /
└─sda1 8:1 0 300M 0 part /boot
[root@test ~]#
[root@test ~]# umount /data1
[root@test ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Command (m for help): pDisk /dev/sdb: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xf87f8475Device Boot Start End Blocks Id System
/dev/sdb1 2048 419430399 209714176 83 LinuxCommand (m for help): d
Selected partition 1
Partition 1 is deletedCommand (m for help): n
Partition type:p primary (0 primary, 0 extended, 4 free)e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-419430399, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-419430399, default 419430399):
Using default value 419430399
Partition 1 of type Linux and of size 200 GiB is setCommand (m for help): pDisk /dev/sdb: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xf87f8475Device Boot Start End Blocks Id System
/dev/sdb1 2048 419430399 209714176 83 LinuxCommand (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.
[root@test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdd 8:48 0 200G 0 disk
└─data3-lv0 253:1 0 100G 0 lvm /data3
sdb 8:16 0 200G 0 disk
└─sdb1 8:17 0 200G 0 part
sr0 11:0 1 1024M 0 rom
sde 8:64 0 200G 0 disk
└─data4-lv0 253:0 0 100G 0 lvm /data4
sdc 8:32 0 200G 0 disk
└─sdc1 8:33 0 100G 0 part /data2
sda 8:0 0 80G 0 disk
├─sda2 8:2 0 3.9G 0 part [SWAP]
├─sda3 8:3 0 75.9G 0 part /
└─sda1 8:1 0 300M 0 part /boot[root@test ~]# resize2fs /dev/sdb1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/sdb1 is mounted on /data1; on-line resizing required
old_desc_blocks = 13, new_desc_blocks = 25
The filesystem on /dev/sdb1 is now 52428544 blocks long.[root@test ~]# umount /dev/sdb1
[root@test ~]# resize2fs /dev/sdb1
resize2fs 1.42.9 (28-Dec-2013)
Please run 'e2fsck -f /dev/sdb1' first.[root@test ~]# e2fsck -f /dev/sdb1
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/sdb1: 12/13107200 files (0.0% non-contiguous), 870745/52428544 blocks
[root@test ~]# mount /dev/sdb1 /data1
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.4M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
/dev/sdc1 xfs 100G 33M 100G 1% /data2
/dev/mapper/data3-lv0 ext4 99G 61M 94G 1% /data3
/dev/mapper/data4-lv0 xfs 100G 33M 100G 1% /data4
/dev/sdb1 ext4 197G 60M 188G 1% /data1
[root@test ~]#
擴容完畢
非LVM + xfs操作步驟 (小于2T磁盤環境))
步驟同上
# 刪除原分區(不丟數據,別格式化)
# 重建新的分區起始扇區必須與原來相同
# 類型為 Linux (83)
xfs分區執行xfs_growfs ,xfs_growfs需要設備是掛載才可以執行擴容
[root@test ~]# umount /dev/sdc1
[root@test ~]# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Command (m for help): pDisk /dev/sdc: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xa9790030Device Boot Start End Blocks Id System
/dev/sdc1 2048 209715199 104856576 83 LinuxCommand (m for help): d
Selected partition 1
Partition 1 is deletedCommand (m for help): n
Partition type:p primary (0 primary, 0 extended, 4 free)e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-419430399, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-419430399, default 419430399):
Using default value 419430399
Partition 1 of type Linux and of size 200 GiB is setCommand (m for help): pDisk /dev/sdc: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xa9790030Device Boot Start End Blocks Id System
/dev/sdc1 2048 419430399 209714176 83 LinuxCommand (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.
[root@test ~]#
[root@test ~]# xfs_growfs /dev/sdc1
xfs_growfs: /dev/sdc1 is not a mounted XFS filesystem
[root@test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdd 8:48 0 200G 0 disk
└─data3-lv0 253:1 0 100G 0 lvm /data3
sdb 8:16 0 200G 0 disk
└─sdb1 8:17 0 200G 0 part /data1
sr0 11:0 1 1024M 0 rom
sde 8:64 0 200G 0 disk
└─data4-lv0 253:0 0 100G 0 lvm /data4
sdc 8:32 0 200G 0 disk
└─sdc1 8:33 0 200G 0 part
sda 8:0 0 80G 0 disk
├─sda2 8:2 0 3.9G 0 part [SWAP]
├─sda3 8:3 0 75.9G 0 part /
└─sda1 8:1 0 300M 0 part /boot
[root@test ~]# mount /dev/sdc1 /data2
[root@test ~]# xfs_growfs /dev/sdc1
meta-data=/dev/sdc1 isize=512 agcount=4, agsize=6553536 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=26214144, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=12799, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 26214144 to 52428544
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.4M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
/dev/mapper/data3-lv0 ext4 99G 61M 94G 1% /data3
/dev/mapper/data4-lv0 xfs 100G 33M 100G 1% /data4
/dev/sdb1 ext4 197G 60M 188G 1% /data1
/dev/sdc1 xfs 200G 33M 200G 1% /data2
[root@test ~]#
擴容完畢
LVM + ext4操作步驟(小于2T磁盤環境))
[root@test ~]# pvsPV VG Fmt Attr PSize PFree/dev/sdd data3 lvm2 a-- <100.00g 0/dev/sde data4 lvm2 a-- <100.00g 0
[root@test ~]# vgsVG #PV #LV #SN Attr VSize VFreedata3 1 1 0 wz--n- <100.00g 0data4 1 1 0 wz--n- <100.00g 0
[root@test ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv0 data3 -wi-ao---- <100.00glv0 data4 -wi-ao---- <100.00g
[root@test ~]# pvresize /dev/sddPhysical volume "/dev/sdd" changed1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@test ~]# pvsPV VG Fmt Attr PSize PFree/dev/sdd data3 lvm2 a-- <200.00g 100.00g/dev/sde data4 lvm2 a-- <100.00g 0
[root@test ~]# vgsVG #PV #LV #SN Attr VSize VFreedata3 1 1 0 wz--n- <200.00g 100.00gdata4 1 1 0 wz--n- <100.00g 0
[root@test ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv0 data3 -wi-ao---- <100.00glv0 data4 -wi-ao---- <100.00g
[root@test ~]# lvextend -l +100%free /dev/mapper/data3-lv0Size of logical volume data3/lv0 changed from <100.00 GiB (25599 extents) to <200.00 GiB (51199 extents).Logical volume data3/lv0 successfully resized.
[root@test ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv0 data3 -wi-ao---- <200.00glv0 data4 -wi-ao---- <100.00g
[root@test ~]# resize2fs /dev/mapper/data3-lv0
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/data3-lv0 is mounted on /data3; on-line resizing required
old_desc_blocks = 13, new_desc_blocks = 25
The filesystem on /dev/mapper/data3-lv0 is now 52427776 blocks long.[root@test ~]# umount /dev/mapper/data3-lv0
[root@test ~]# resize2fs /dev/mapper/data3-lv0
resize2fs 1.42.9 (28-Dec-2013)
Please run 'e2fsck -f /dev/mapper/data3-lv0' first.[root@test ~]# e2fsck -f /dev/mapper/data3-lv0
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/mapper/data3-lv0: 12/13107200 files (0.0% non-contiguous), 870745/52427776 blocks
[root@test ~]# resize2fs /dev/mapper/data3-lv0
resize2fs 1.42.9 (28-Dec-2013)
The filesystem is already 52427776 blocks long. Nothing to do![root@test ~]# mount /dev/mapper/data3-lv0 /data3
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.4M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
/dev/mapper/data4-lv0 xfs 100G 33M 100G 1% /data4
/dev/sdb1 ext4 197G 60M 188G 1% /data1
/dev/sdc1 xfs 200G 33M 200G 1% /data2
/dev/mapper/data3-lv0 ext4 197G 60M 188G 1% /data3
[root@test ~]#
擴容完畢
LVM + xfs操作步驟 (小于2T磁盤環境)
[root@test ~]# pvsPV VG Fmt Attr PSize PFree/dev/sdd data3 lvm2 a-- <200.00g 0/dev/sde data4 lvm2 a-- <100.00g 0
[root@test ~]# vgsVG #PV #LV #SN Attr VSize VFreedata3 1 1 0 wz--n- <200.00g 0data4 1 1 0 wz--n- <100.00g 0
[root@test ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv0 data3 -wi-ao---- <200.00glv0 data4 -wi-ao---- <100.00g
[root@test ~]# pvresize /dev/sdePhysical volume "/dev/sde" changed1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@test ~]# pvsPV VG Fmt Attr PSize PFree/dev/sdd data3 lvm2 a-- <200.00g 0/dev/sde data4 lvm2 a-- <200.00g 100.00g
[root@test ~]# vgsVG #PV #LV #SN Attr VSize VFreedata3 1 1 0 wz--n- <200.00g 0data4 1 1 0 wz--n- <200.00g 100.00g
[root@test ~]# lvextend -l +100%free /dev/mapper/data4-lv0Size of logical volume data4/lv0 changed from <100.00 GiB (25599 extents) to <200.00 GiB (51199 extents).Logical volume data4/lv0 successfully resized.
[root@test ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv0 data3 -wi-ao---- <200.00glv0 data4 -wi-ao---- <200.00g
[root@test ~]# xfs_growfs /dev/mapper/data4-lv0
meta-data=/dev/mapper/data4-lv0 isize=512 agcount=4, agsize=6553344 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=26213376, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=12799, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 26213376 to 52427776
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.4M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
/dev/mapper/data4-lv0 xfs 200G 33M 200G 1% /data4
/dev/sdb1 ext4 197G 60M 188G 1% /data1
/dev/sdc1 xfs 200G 33M 200G 1% /data2
/dev/mapper/data3-lv0 ext4 197G 60M 188G 1% /data3
[root@test ~]#
大于2T環境
注意:
?對于 大于 2TB 的磁盤,如果你使用的是 非 LVM + ext4/xfs 分區,在擴容時需要特別注意:MBR 分區表的限制 —— 最大只支持到 2TB
?磁盤原本為 MBR,需要重新分區為 GPT(數據會清除)
? 大于 2TB 的磁盤必須使用 GPT 分區表
?LVM 下的擴容,LVM 的核心機制不依賴分區表,但在你用分區做 PV 或操作大于 2TB 磁盤時,分區表就變得相關了
關鍵區別:MBR vs GPT
分區類型 | 最大支持容量 | 最大主分區數 | 推薦使用場景 |
---|---|---|---|
MBR(msdos) | 2TB | 4(主分區) | 小磁盤(≤2TB) |
GPT(gpt) | 理論 18EB | 128(主分區) | 大磁盤(>2TB) ? |
實驗準備
將實驗環境磁盤修改大小為4T
[root@test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdd 8:48 0 4T 0 disk
└─data3-lv0 253:1 0 200G 0 lvm
sdb 8:16 0 4T 0 disk
└─sdb1 8:17 0 200G 0 part
sr0 11:0 1 1024M 0 rom
sde 8:64 0 4T 0 disk
└─data4-lv0 253:0 0 200G 0 lvm
sdc 8:32 0 4T 0 disk
└─sdc1 8:33 0 200G 0 part
sda 8:0 0 80G 0 disk
├─sda2 8:2 0 3.9G 0 part [SWAP]
├─sda3 8:3 0 75.9G 0 part /
└─sda1 8:1 0 300M 0 part /boot
[root@test ~]#
非LVM + ext4操作步驟(4T磁盤環境)
擴容采用的分區表是mbr,最大支持2T,多余的空間則無法使用,如需要全部空間投入使用,則需要備份原有數據,清除原有分區,重建gpt分區表。重新執行擴容,可考慮新增磁盤擴容方案。
fdisk 查看分區表命令如下
[root@test ~]# fdisk -l /dev/sdbDisk /dev/sdb: 4398.0 GB, 4398046511104 bytes, 8589934592 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xf87f8475Device Boot Start End Blocks Id System
/dev/sdb1 2048 4294967294 2147482623+ 83 Linux
[root@test ~]#
parted查看分區表如下
[root@test ~]# parted -l
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 4398GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:Number Start End Size Type File system Flags1 1049kB 2199GB 2199GB primary ext4
非LVM + xfs操作步驟(4T磁盤環境)
同上,大于2T的空間需要重建分區表才可以使用,可考慮新增磁盤擴容方案。
LVM + ext4操作步驟(4T磁盤環境)
由于我們使用整塊磁盤做pv,此時,分區表完全無關,擴容步驟同上
命令輸出示例:
[root@test ~]# pvsPV VG Fmt Attr PSize PFree/dev/sdd data3 lvm2 a-- <200.00g 0/dev/sde data4 lvm2 a-- <200.00g 0
[root@test ~]# vgsVG #PV #LV #SN Attr VSize VFreedata3 1 1 0 wz--n- <200.00g 0data4 1 1 0 wz--n- <200.00g 0
[root@test ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv0 data3 -wi-a----- <200.00glv0 data4 -wi-a----- <200.00g
[root@test ~]# pvresize /dev/sddPhysical volume "/dev/sdd" changed1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@test ~]# pvsPV VG Fmt Attr PSize PFree/dev/sdd data3 lvm2 a-- <4.00t 3.80t/dev/sde data4 lvm2 a-- <200.00g 0
[root@test ~]# vgsVG #PV #LV #SN Attr VSize VFreedata3 1 1 0 wz--n- <4.00t 3.80tdata4 1 1 0 wz--n- <200.00g 0
[root@test ~]# lvextend -l +100%free /data/data3-lv0"/data/data3-lv0": Invalid path for Logical Volume.Run `lvextend --help' for more information.
[root@test ~]# lvextend -l +100%free /data/mapper/data3-lv0"/data/mapper/data3-lv0": Invalid path for Logical Volume.Run `lvextend --help' for more information.
[root@test ~]# lvextend -l +100%free /dev/mapper/data3-lv0Size of logical volume data3/lv0 changed from <200.00 GiB (51199 extents) to <4.00 TiB (1048575 extents).Logical volume data3/lv0 successfully resized.
[root@test ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv0 data3 -wi-a----- <4.00tlv0 data4 -wi-a----- <200.00g
[root@test ~]# umount /dev/mapper/data3-lv0
umount: /dev/mapper/data3-lv0: not mounted
[root@test ~]# resize
resize2fs resizecons resizepart
[root@test ~]# resize2fs /dev/mapper/data3-lv0
resize2fs 1.42.9 (28-Dec-2013)
Please run 'e2fsck -f /dev/mapper/data3-lv0' first.[root@test ~]# e2fsck -f /dev/mapper/data3-lv0
e2fsck 1.42.9 (28-Dec-2013)
/dev/mapper/data3-lv0: recovering journal
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/mapper/data3-lv0: 12/13107200 files (0.0% non-contiguous), 870745/52427776 blocks
[root@test ~]# resize2fs /dev/mapper/data3-lv0
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/data3-lv0 to 1073740800 (4k) blocks.
The filesystem on /dev/mapper/data3-lv0 is now 1073740800 blocks long.[root@test ~]# mount /dev/mapper/data3-lv0 /data3
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.4M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
/dev/sdb1 ext4 197G 60M 188G 1% /data1
/dev/mapper/data3-lv0 ext4 4.0T 46M 3.8T 1% /data3
/dev/sdc1 xfs 200G 33M 200G 1% /data2
/dev/mapper/data4-lv0 xfs 200G 33M 200G 1% /data4
[root@test ~]#
LVM + xfs操作步驟(4T磁盤環境)
由于我們使用整塊磁盤做pv,此時,分區表完全無關,擴容步驟同上
命令輸出示例:
[root@test ~]# pvsPV VG Fmt Attr PSize PFree/dev/sdd data3 lvm2 a-- <4.00t 0/dev/sde data4 lvm2 a-- <200.00g 0
[root@test ~]# vgsVG #PV #LV #SN Attr VSize VFreedata3 1 1 0 wz--n- <4.00t 0data4 1 1 0 wz--n- <200.00g 0
[root@test ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv0 data3 -wi-ao---- <4.00tlv0 data4 -wi-ao---- <200.00g
[root@test ~]# pvresize /dev/sdePhysical volume "/dev/sde" changed1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@test ~]# lvextend -l +100%free /dev/mapper/data4-lv0Size of logical volume data4/lv0 changed from <200.00 GiB (51199 extents) to <4.00 TiB (1048575 extents).Logical volume data4/lv0 successfully resized.
[root@test ~]# pvsPV VG Fmt Attr PSize PFree/dev/sdd data3 lvm2 a-- <4.00t 0/dev/sde data4 lvm2 a-- <4.00t 0
[root@test ~]# vgsVG #PV #LV #SN Attr VSize VFreedata3 1 1 0 wz--n- <4.00t 0data4 1 1 0 wz--n- <4.00t 0
[root@test ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv0 data3 -wi-ao---- <4.00tlv0 data4 -wi-ao---- <4.00t
[root@test ~]# xfs_growfs /dev/mapper/data4-lv0
meta-data=/dev/mapper/data4-lv0 isize=512 agcount=9, agsize=6553344 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=52427776, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=12799, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 52427776 to 1073740800
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.4M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
/dev/sdb1 ext4 197G 60M 188G 1% /data1
/dev/mapper/data3-lv0 ext4 4.0T 46M 3.8T 1% /data3
/dev/sdc1 xfs 200G 33M 200G 1% /data2
/dev/mapper/data4-lv0 xfs 4.0T 40M 4.0T 1% /data4
[root@test ~]#
? 總結:
🧾分區表與 LVM 的關系詳解
操作類型 | 是否與分區表有關 | 說明 |
---|---|---|
擴展已有 PV(磁盤擴容) | ? 有一定關系 | 需要調整分區大小才能讓 PV 感知新空間 |
添加新磁盤為 PV | ? 有關 | 必須使用 GPT 才能識別 >2TB 空間 |
原始磁盤整盤用作 PV(不分區) | ? 無關 | 可以不使用分區表,直接 /dev/sdX |
LV 擴容 | ? 無關 | 與底層 PV 和分區表無關 |
文件系統擴容 | ? 無關 | 只與文件系統本身有關,如 resize2fs 或 xfs_growfs |
🧾 非 LVM vs LVM 環境使用與擴容總結
對比項 | 非 LVM 分區 | LVM(邏輯卷管理) |
---|---|---|
是否推薦 | ?? 一般場景可用 | ? 強烈推薦用于數據增長環境 |
初始部署簡單 | ? 簡單 | ?? 略復雜(需了解 PV/VG/LV) |
后期擴容靈活性 | ? 差(幾乎不可動態擴容) | ? 支持在線擴容 / 多盤擴容 |
支持多磁盤聚合 | ? 不支持 | ? 支持多個磁盤聚合為一卷組 |
數據快照 | ? 不支持 | ? 支持快照備份 |
整盤直接使用 | ? 直接分區掛載 | ? 推薦整盤做 LVM |
擴容操作步驟復雜度 | ? 簡單(但功能少) | ?? 步驟多,但靈活強大 |
支持文件系統 | ext4/xfs/btrfs 等 | ext4/xfs 等主流文件系統 |
缺點 | 無法在線擴容 | 操作稍復雜,不熟悉需學習 |
🧾推薦使用 LVM 的典型場景
場景 | 是否推薦 LVM |
---|---|
數據量不斷增長的服務器(如 /data ) | ? 強烈推薦 |
需要做快照備份的業務(如數據庫) | ? 推薦 |
使用虛擬機、云主機(可動態加磁盤) | ? 推薦 |
需要多個磁盤合并使用 | ? 推薦 |
宿主系統的根分區 | ?? 可選(需小心操作) |
嵌入式或單用途小系統 | ? 不推薦 |
🧾LVM vs 非 LVM 性能對比
對比項 | 非 LVM(裸分區) | LVM |
---|---|---|
IO 性能(隨機/順序) | ? 最佳原始性能 | ?? 理論略低,實際可忽略(<1-3%) |
文件系統支持 | ? 所有支持 | ? 所有支持(xfs/ext4/btrfs) |
緩存機制 | ? OS cache | ? 一樣的 OS cache |
CPU 占用 | 最低 | 略高,但通常 <1% |
多路徑存儲支持 | 手動配置 | ? 更好整合(尤其 SAN) |
系統資源占用 | ? 少 | ?? 略高(<1% CPU) |