Linux虚拟机扩容新挂载的磁盘到根目录
确认当前根目录容量
[root@jesus ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 151M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/mapper/klas-root 483G 12G 471G 3% /
tmpfs 16G 32M 16G 1% /tmp
/dev/vda2 1014M 153M 862M 16% /boot
/dev/vda1 599M 6.5M 593M 2% /boot/efi
tmpfs 3.1G 0 3.1G 0% /run/user/0
为新挂载的盘创建分区
1、新盘≤2TB可使用fdisk命令创建分区
[root@jesus ~]# fdisk -l /dev/vdb
Disk /dev/vdb:1 TiB,1099511627776 字节,2147483648 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
使用fdisk命令创建分区
[root@jesus ~]# fdisk /dev/vdb
欢迎使用 fdisk (util-linux 2.35.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0xf1ff1376 的新 DOS 磁盘标签。
命令(输入 m 获取帮助):m
帮助:
DOS (MBR)
a 开关 可启动 标志
b 编辑嵌套的 BSD 磁盘标签
c 开关 dos 兼容性标志
常规
d 删除分区
F 列出未分区的空闲区
l 列出已知分区类型
n 添加新分区
p 打印分区表
t 更改分区类型
v 检查分区表
i 打印某个分区的相关信息
杂项
m 打印此菜单
u 更改 显示/记录 单位
x 更多功能(仅限专业人员)
脚本
I 从 sfdisk 脚本文件加载磁盘布局
O 将磁盘布局转储为 sfdisk 脚本文件
保存并退出
w 将分区表写入磁盘并退出
q 退出而不保存更改
新建空磁盘标签
g 新建一份 GPT 分区表
G 新建一份空 GPT (IRIX) 分区表
o 新建一份的空 DOS 分区表
s 新建一份空 Sun 分区表
命令(输入 m 获取帮助):n
分区类型
p 主分区 (0 primary, 0 extended, 4 free)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认 1): 1
第一个扇区 (2048-2147483647, 默认 2048):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-2147483647, 默认 2147483647):
创建了一个新分区 1,类型为“Linux”,大小为 1024 GiB。
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
[root@jesus ~]# fdisk -l /dev/vdb
Disk /dev/vdb:1 TiB,1099511627776 字节,2147483648 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xf1ff1376
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/vdb1 2048 2147483647 2147481600 1024G 83 Linux
2、fdisk 新盘>2TB使用parted命令创建分区
[root@jesus ~]# fdisk -l /dev/vdb
Disk /dev/vdb:3 TiB,3298534883328 字节,6442450944 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
使用parted命令创建分区
[root@jesus ~]# parted /dev/vdb
GNU Parted 3.3
使用 /dev/vdb
欢迎使用 GNU Parted!输入 'help' 来查看命令列表。
(parted) help
align-check TYPE N check partition N for TYPE(min|opt) alignment
help [COMMAND] 打印通用求助信息,或 COMMAND 的帮助
mklabel,mktable LABEL-TYPE 创建新的磁盘卷标 (分区表)
mkpart 分区类型 [文件系统类型] 起始点 结束点 创建一个分区
name 编号 名称 将指定“编号”的分区命名为“名称”
print [devices|free|list,all|数字] 显示分区表、可用设备、剩余空间、所有分区或特殊分区
quit 退出程序
rescue 起始点 终止点 挽救临近“起始点”、“终止点”的遗失的分区
resizepart NUMBER END 改变 NUMBER 的大小
rm NUMBER 删除编号为 NUMBER 的分区
select 设备 选择要编辑的设备
disk_set 旗标 状态 变更已选设备上的旗标
disk_toggle [旗标] 切换已选设备上的旗标状态
set 编号 旗标 状态 改变指定“编号”分区的旗标
toggle [编号 [旗标]] 切换“编号”分区上的“旗标”状态
unit 单位 设置缺省的“单位”
version 显示目前 GNU Parted 的版本与版权信息
(parted) p
错误: /dev/vdb: 无法辨识的磁盘卷标
型号:Virtio 块设备 (virtblk)
磁盘 /dev/vdb:3299GB
扇区大小 (逻辑/物理):512B/512B
分区表:unknown
磁盘标志:
(parted) mklabel gpt
(parted) mkpart
分区名称? []? vdb1
文件系统类型? [ext2]? ext4
起始点? 0
结束点? 3299GB
警告: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s
忽略/Ignore/放弃/Cancel? Ignore
(parted) p
型号:Virtio 块设备 (virtblk)
磁盘 /dev/vdb:3299GB
扇区大小 (逻辑/物理):512B/512B
分区表:gpt
磁盘标志:
编号 起始点 结束点 大小 文件系统 名称 标志
1 17.4kB 3299GB 3299GB ext4 vdb1
(parted) quit
信息: 你可能需要 /etc/fstab。
[root@jesus ~]# fdisk -l /dev/vdb
Disk /dev/vdb:3 TiB,3298534883328 字节,6442450944 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:AA6037F0-3F9E-440D-95AE-D927D38B06A5
设备 起点 末尾 扇区 大小 类型
/dev/vdb1 34 6442450910 6442450877 3T Linux 文件系统
强制内核重读分区表
[root@jesus ~]# partprobe
将分区格式化为ext4格式
[root@jesus ~]# mkfs.ext4 /dev/vdb1
mke2fs 1.45.6 (20-Mar-2020)
丢弃设备块: 完成
创建含有 805306352 个块(每块 4k)和 201326592 个inode的文件系统
文件系统UUID:f7fbdcf1-2e46-4d7e-93ef-2129f2eb2591
超级块的备份存储于下列块:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544
正在分配组表: 完成
正在写入inode表: 完成
创建日志(262144 个块)完成
写入超级块和文件系统账户统计信息: 已完成
查看卷组名
可以看到卷组名为klas
[root@jesus ~]# vgdisplay
--- Volume group ---
VG Name klas
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 498.41 GiB
PE Size 4.00 MiB
Total PE 127593
Alloc PE / Size 127592 / <498.41 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID hru1pG-Ndo3-5A5I-2lLn-XJaJ-kXet-lBy6Te
物理卷(PV)创建
[root@jesus ~]# pvcreate /dev/vdb1
WARNING: ext4 signature detected on /dev/vdb1 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/vdb1.
Physical volume "/dev/vdb1" successfully created.
卷组(VG)扩展
[root@jesus ~]# vgextend klas /dev/vdb1
Volume group "klas" successfully extended
查看根分区
[root@jesus ~]# lvdisplay
--- Logical volume ---
LV Path /dev/klas/swap
LV Name swap
VG Name klas
LV UUID gIk5bI-gv8L-zzyv-3NS1-7hOY-NLb2-3Tg2ms
LV Write Access read/write
LV Creation host, time localhost, 2025-03-01 13:14:09 +0800
LV Status available
# open 0
LV Size 15.92 GiB
Current LE 4076
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 252:1
--- Logical volume ---
LV Path /dev/klas/root
LV Name root
VG Name klas
LV UUID CsXa7j-GO45-Y9AU-jMj6-Kjif-fod5-zWbCxN
LV Write Access read/write
LV Creation host, time localhost, 2025-03-01 13:14:10 +0800
LV Status available
# open 1
LV Size 482.48 GiB
Current LE 123516
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 252:0
逻辑卷(LV)扩展
[root@jesus ~]# lvextend /dev/klas/root /dev/vdb1
Size of logical volume klas/root changed from 482.48 GiB (123516 extents) to 3.47 TiB (909947 extents).
Logical volume klas/root successfully resized.
查看文件系统格式
如果是xfs,使用xfs_growf命令,如果是ext2/ext3/ext4,使用resize2fs命令,可以看到此处是xfs格式
[root@jesus ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Mar 1 05:14:31 2025
#
# 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
UUID=5a5507a0-0266-427e-af25-6e6c3e94a9ee /boot xfs defaults 0 0
UUID=7B28-C2ED /boot/efi vfat umask=0077,shortname=winnt 0 2
文件系统扩容
[root@jesus ~]# xfs_growfs /dev/klas/root
meta-data=/dev/mapper/klas-root isize=512 agcount=4, agsize=31620096 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=126480384, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=61758, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 126480384 to 931785728
最终验证
[root@jesus ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 192K 16G 1% /dev/shm
tmpfs 16G 151M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/mapper/klas-root 3.5T 34G 3.5T 1% /
tmpfs 16G 32M 16G 1% /tmp
/dev/vda2 1014M 153M 862M 16% /boot
/dev/vda1 599M 6.5M 593M 2% /boot/efi
tmpfs 3.1G 0 3.1G 0% /run/user/0