CentOS7虚拟机BIOS和UEFI模式下的LVM和GPT硬盘类型根目录扩容过程
BIOS模式的LVM分区扩容
1. BIOS模式下默认使用LVM分区
LVM,Logical Volume Manger,是linux内核提供的一种逻辑卷管理功能,由内核驱动和应用层工具组成,它是在硬盘的分区基础上,创建了一个逻辑层,可以非常灵活且非常方便的管理存储设备。
LVM利用Linux内核的device-mapper功能来实现存储系统的虚拟化(系统分区独立于底层硬件)。 通过LVM,可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间,避免为正在使用的磁盘重新分区的麻烦、为调整分区而不得不移动其他分区的不便,它相比传统的分区系统可以更灵活地管理磁盘。
2. 使用以下命令检查系统中已经有的磁盘和分区信息
#显示当前系统分区情况
fdisk -l
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000cf9b3
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
分区都为LVM
3. 查询硬盘分区命令
#查看系统中所有的卷组设备信息
vgs
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
#查看系统中报告有关逻辑卷的信息
lvs
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
#输出物理卷信息报表
pvs
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
#显示目前磁盘空间和使用情况
df -h
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 2.1G 15G 13% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
4. 使用fdisk进行分区,关键配置
#使用fdisk给/dev/sda磁盘来分区
fdisk /dev/sda
[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):
fdisk分区的过程:
[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000cf9b3
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):
起始 扇区 (41943040-83886079,默认为 41943040):
将使用默认值 41943040
Last 扇区, +扇区 or +size{K,M,G} (41943040-83886079,默认为 83886079):
将使用默认值 83886079
分区 3 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000cf9b3
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
/dev/sda3 41943040 83886079 20971520 83 Linux
命令(输入 m 获取帮助):
fdisk输入t 给新建的分区修改类型
最后确认分区后输入w保存退出
#w保存退出
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
5. 查询磁盘分区后情况,将分区pv化划入/根目录
fdisk -l
执行以下命令,将新的分区表变更同步至操作系统
partprobe
通过lvmdiskscan命令列出可被用作pv的设备,查询结果显示新增的分区为pv
lvmdiskscan
[root@localhost ~]# lvmdiskscan
/dev/sda1 [ 1.00 GiB]
/dev/sda2 [ <19.00 GiB] LVM physical volume
/dev/sda3 [ 20.00 GiB]
0 disks
2 partitions
0 LVM physical volume whole disks
1 LVM physical volume
使用pvcreate命令将/dev/sda3分区pv
pvcreate /dev/sda3
[root@localhost ~]# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created.
把pv后的sda3分区添加进原先的vg中
vgextend centos /dev/sda3
把新增加的20G添加到根目录/中(再确目录情况)
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 2.1G 15G 13% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
pv化后输入命令即可将VFree自由空间加入同组的目录
#表示增加vg的全部可用空间
lvextend -l +100%FREE /dev/mapper/centos-root
#表示添加vg的20G可以用空间
lvextend -L +20G /dev/mapper/centos-root
这里选择把全部加入/dev/mapper/centos-root目录,最终得到17+20约37GB
[root@localhost ~]# lvextend -l +100%FREE /dev/mapper/centos-root
Size of logical volume centos/root changed from <17.00 GiB (4351 extents) to 36.99 GiB (9470 extents).
Logical volume centos/root successfully resized.
使用xfs_growfs命令刷新XFS文件系统
xfs_growfs /dev/mapper/centos-root
[root@localhost ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=1113856 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=4455424, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 4455424 to 9697280
6. 最后查询扩容后的分区大小
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 37G 2.1G 35G 6% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
UEFI模式的GPT格式使用parted分区扩容
1. 使用UEFI模式默认分区为GPT
GPT分区表,可以支持最大18EB的卷,最多支持128个主分区,所以如果使用大于2tb的卷,就必须使用GTP分区
2. 使用以下命令检查系统中已经有的磁盘和分区信息
#显示当前系统分区情况
fdisk -l
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00000000
设备 Boot Start End Blocks Id System
/dev/sda1 1 41943039 20971519+ ee GPT
磁盘 /dev/mapper/centos-root:18.0 GB, 18039701504 字节,35233792 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
查询分区格式为GPT
#查看系统中所有的卷组设备信息
vgs
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- 18.80g 0
#查看系统中报告有关逻辑卷的信息
lvs
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 16.80g
swap centos -wi-ao---- 2.00g
#输出物理卷信息报表
pvs
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 centos lvm2 a-- 18.80g 0
#查询磁盘使用情况
df -TH
[root@localhost ~]# df -TH
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 498M 0 498M 0% /dev
tmpfs tmpfs 510M 0 510M 0% /dev/shm
tmpfs tmpfs 510M 8.1M 502M 2% /run
tmpfs tmpfs 510M 0 510M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 19G 2.1G 16G 12% /
/dev/sda2 xfs 1.1G 168M 896M 16% /boot
/dev/sda1 vfat 210M 12M 198M 6% /boot/efi
tmpfs tmpfs 102M 0 102M 0% /run/user/0
#查看系统的磁盘使用情况
lsblk
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 18.8G 0 part
├─centos-root 253:0 0 16.8G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.4G 0 rom
3. 使用parted进行分区,关键配置(GTP格式只能使用parted分区)
#使用parted给/dev/sda进行分区
parted /dev/sda
[root@localhost ~]# parted /dev/sda
GNU Parted 3.1
使用 /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
parted分区过程
[root@localhost ~]# parted /dev/sda
GNU Parted 3.1
使用 /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 1049kB 211MB 210MB fat16 EFI System Partition 启动
2 211MB 1285MB 1074MB xfs
3 1285MB 21.5GB 20.2GB lvm
(parted) unit GB
(parted) mkpart
分区名称? []?
文件系统类型? [ext2]? xfs
起始点? 21
结束点? 43
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 0.00GB 0.21GB 0.21GB fat16 EFI System Partition 启动
2 0.21GB 1.28GB 1.07GB xfs
3 1.28GB 21.5GB 20.2GB lvm
4 21.5GB 42.9GB 21.5GB
(parted) q
信息: You may need to update /etc/fstab.
parted是事实保存的,所以输入q是保存退出
#查看磁盘分区后的情况
lsblk
fdisk -l
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 18.8G 0 part
│ ├─centos-root 253:0 0 16.8G 0 lvm /
│ └─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─sda4 8:4 0 20G 0 part
sr0 11:0 1 4.4G 0 rom
[root@localhost ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 19C9B047-6BC9-4CF3-9CB0-99D5B68B408C
# Start End Size Type Name
1 2048 411647 200M EFI System EFI System Partition
2 411648 2508799 1G Microsoft basic
3 2508800 41940991 18.8G Linux LVM
4 41940992 83884031 20G Microsoft basic
磁盘 /dev/mapper/centos-root:18.0 GB, 18039701504 字节,35233792 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
格式化sda4分区后,会发现分区4的文件系统已经显示为xfs格式
mkfs -t xfs /dev/sda4
[root@localhost ~]# mkfs -t xfs /dev/sda4
meta-data=/dev/sda4 isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242880, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]#
另外可以使用fdisk给分区修改相同格式,这一步不会影响扩容
4. 查询磁盘分区后情况,将分区pv化划入/根目录
执行以下命令,将新的分区表变更同步至操作系统,因为部分系统分区后不显示新增分区,为了保险使用partprobe命令刷新分区(被坑多次)
partprobe
通过lvmdiskscan命令列出可被用作pv的设备
lvmdiskscan
[root@localhost ~]# lvmdiskscan
/dev/sda1 [ 200.00 MiB]
/dev/sda2 [ 1.00 GiB]
/dev/sda3 [ 18.80 GiB] LVM physical volume
/dev/sda4 [ 20.00 GiB]
0 disks
3 partitions
0 LVM physical volume whole disks
1 LVM physical volume
使用pvcreate命令将/dev/sda4分区pv
pvcreate /dev/sda4
[root@localhost ~]# pvcreate /dev/sda4
WARNING: ext4 signature detected on /dev/sda4 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/sda4.
Physical volume "/dev/sda4" successfully created.
查询新增的分区pv情况
[root@localhost ~]# lvmdiskscan
/dev/sda1 [ 200.00 MiB]
/dev/sda2 [ 1.00 GiB]
/dev/sda3 [ 18.80 GiB] LVM physical volume
/dev/sda4 [ 20.00 GiB] LVM physical volume
0 disks
2 partitions
0 LVM physical volume whole disks
2 LVM physical volumes
把pv后的sda4分区添加centos的vg中
[root@localhost ~]# vgextend centos /dev/sda4
Volume group "centos" successfully extended
再次确认磁盘使用情况,并复制/dev/mapper/centos-root根目录
[root@localhost ~]# df -TH
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 498M 0 498M 0% /dev
tmpfs tmpfs 510M 0 510M 0% /dev/shm
tmpfs tmpfs 510M 8.1M 502M 2% /run
tmpfs tmpfs 510M 0 510M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 19G 2.1G 16G 12% /
/dev/sda2 xfs 1.1G 168M 896M 16% /boot
/dev/sda1 vfat 210M 12M 198M 6% /boot/efi
tmpfs tmpfs 102M 0 102M 0% /run/user/0
#表示增加vg的全部可用空间
lvextend -l +100%FREE /dev/mapper/centos-root
#表示添加vg的20G可以用空间
lvextend -L +20G /dev/mapper/centos-root
这里选择把全部空间加入/dev/mapper/centos-root目录,最终得到17+20约37GB
[root@localhost ~]# lvextend -l +100%FREE /dev/mapper/centos-root
Size of logical volume centos/root changed from 16.80 GiB (4301 extents) to <36.80 GiB (9420 extents).
Logical volume centos/root successfully resized.
使用xfs_growfs命令刷新XFS文件系统
xfs_growfs /dev/mapper/centos-root
[root@localhost ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=1101056 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=4404224, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 4404224 to 9646080
5. 最后查询扩容后的分区大小
[root@localhost ~]# df -TH
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 498M 0 498M 0% /dev
tmpfs tmpfs 510M 0 510M 0% /dev/shm
tmpfs tmpfs 510M 8.1M 502M 2% /run
tmpfs tmpfs 510M 0 510M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 40G 2.1G 38G 6% /
/dev/sda2 xfs 1.1G 168M 896M 16% /boot
/dev/sda1 vfat 210M 12M 198M 6% /boot/efi
tmpfs tmpfs 102M 0 102M 0% /run/user/0
后话:一个小白的操作过程,一点都不懂Linux命令,要研究3、4天时间才扩容成功,中间被GPT格式坑了不知道多次回
参考链接: