在Linux运维管理中,有时数据盘并未创建分区表,而是直接在存储设备上创建了文件系统。例如,一块硬盘被直接格式化为文件系统后挂载使用。当需要对此类“裸盘”进行容量扩展时,操作流程与常规分区扩容有所不同。
场景确认
首先,使用 lsblk 命令查看磁盘和分区情况。如下所示,/dev/sdb 磁盘并未显示任何分区(如sdb1),而是将整个磁盘设备直接挂载到了 /data 目录。这表示该数据盘没有创建分区,文件系统是直接创建在设备 /dev/sdb 上的。
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk /data
sr0 11:0 1 9.5G 0 rom
本文将以 CentOS 7.4 操作系统为例。假设数据盘 /dev/sdb 原容量为5GB,文件系统为 ext4 或 xfs。我们已在云平台控制台将其容量扩大至10GB。以下将分别演示如何在线扩展这两种常见的文件系统,使新增的5GB空间能够被系统使用。
针对ext2/ext3/ext4文件系统
若您的文件系统是 ext 系列(如 ext4),扩容操作相对简单。
-
扩展文件系统:
使用 resize2fs 命令直接对设备进行操作。该命令会自动识别设备上已挂载的 ext 文件系统并在线扩展。
resize2fs /dev/sdb
执行后,终端会返回扩容过程信息,类似如下内容,表明文件系统块数已增加:
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/sdb is mounted on /data; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/sdb is now 2621440 blocks long.
-
验证扩容结果:
使用 df -Th 命令查看文件系统容量。可以看到 /dev/sdb 对应的 /data 挂载点,其容量已变为约10GB(9.8G),扩容成功。
[root@localhost data]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
...
/dev/sdb ext4 9.8G 23M 9.3G 1% /data
针对XFS文件系统
XFS 是另一种高性能文件系统,在 CentOS/RHEL 7+ 版本中常作为默认文件系统,其扩容命令与 ext 不同。
-
扩展文件系统:
使用 xfs_growfs 命令,并指定挂载点(而非设备名)。这是Linux文件系统管理中的一个关键区别。
xfs_growfs /data
或明确指定设备(在某些版本中也支持):
xfs_growfs /dev/sdb
命令执行后,将输出元数据和数据块变更详情,最后一行 data blocks changed from ... to ... 清晰地显示了容量的增长。
-
验证扩容结果:
同样使用 df -Th 命令进行验证,确认 /data 挂载点的容量已按预期增加。这类磁盘扩容操作是服务器运维/DevOps工作中的常见任务。
总结与注意事项
- 操作前提:确保磁盘底层容量已通过云平台、虚拟化层或物理方式成功扩展。可使用
lsblk 查看磁盘物理大小是否已变更。
- 安全操作:虽然上述命令支持在线扩容(文件系统在挂载状态下扩展),但为保险起见,对于重要生产环境,建议先在测试环境验证或做好数据备份。
- 通用性:此方法适用于绝大部分现代Linux发行版,不仅是CentOS。关键在于正确识别文件系统类型并选用对应的扩容命令。深入理解这些底层操作有助于更好地进行Linux系统管理。
|