开发者

Linux使用fdisk调整分区大小实现磁盘在线扩容的实战指南

开发者 https://www.devze.com 2026-01-07 09:56 出处:网络 作者: AllFiles
价值2999元 Java视频教程限时免费下载
专为Java开发者设计,涵盖核心技术、架构设计、性能优化等
立即下载
目录一、背景概述二、前期准备:数据备份三、详细扩容步骤3.1 卸载目标分区3.2 使用 fdisk 重新分区3.3 重启系统3.4 检查和扩展文件系统3.5 验证扩容结果四、注意事项和故障排查4.1 关键注意事项4.2 常见问题排查五、
目录
  • 一、背景概述
  • 二、前期准备:数据备份
  • 三、详细扩容步骤
    • 3.1 卸载目标分区
    • 3.2 使用 fdisk 重新分区
    • 3.3 重启系统
    • 3.4 检查和扩展文件系统
    • 3.5 验证扩容结果
  • 四、注意事项和故障排查
    • 4.1 关键注意事项
    • 4.2 常见问题排查
  • 五、总结

    当磁盘空间告急时,不必惊慌,掌http://www.devze.com握正确的扩容方法可以让你轻松应对

    一、背景概述

    在云平台运维和服务器管理过程中,经常会遇到磁盘空间不足的情况:

    • 共享文件服务器的硬盘空间随着业务增长逐渐耗尽
    • 系统安装初期分区规划不合理,部分分区空间过剩而关键分区不足
    • 应用程序日志、数据文件不断积累,导致存储资源紧张

    本文将详细介绍如何使用 linux 内置的 fdisk工具,在不丢失数据的前提下,对磁盘分区进行动态扩容。下面是我们将要调整的分区初始状态:

    root@i-abnawjwo:/# df
    Filesystem     1K-blocks    Used Available Use% Mounted on
    /dev/sda1       20509308 1337636  18106816   7% /
    /dev/sdc1       10190136   23032   9626432   1% /data
    

    可以看到,我们的目标是扩展 /data目录对应的 /dev/sdc1分区。

    二、前期准备:数据备份

    重要提示:虽然本文介绍的扩容方法在正常情况下不会导致数据丢失,但在任何磁盘操作前,备份都是必不可少的保障措施。

    推荐的备份方案:

    1. 云平台快照功能:大多数云服务商都提供磁盘快照功能,可在控制台对磁盘创建全量备份
    2. 本地备份工具:可使用 rsynctar等工具将关键数据备份到其他存储位置
    3. LVM 快照:如果使用 LVM 管理磁盘,可创建 LVM 快照作为回滚点

    三、详细扩容步骤

    3.1 卸载目标分区

    首先需要卸载要扩容的分区:

    root@i-abnawjwo:/# umount /data
    

    如果遇到“设备忙”的错误,表示有进程正在访问该分区:

    # 查看占用分区的进程
    fuser -m -v /data
    # 或
    lsof /data
    
    # 结束占用进程(谨慎操作)
    fuser -m -v -i -k /data
    

    3.2 使用 fdisk 重新分区

    关键要点:重新分区时,必须确保起始扇区与原始分区完全一致,这是保证数据不丢失的核心要素。

    进入 fdisk 交互模式:

    root@i-abnawjwo:/# fdisk /dev/sdc
    
    步骤分解:
    1. 删除旧分区(数据不会立即丢失,只是删除分区rFUuApnV表记录)
    Command (m for help): d
    Selected partition 1
    
    1. 创建新分区,特别注意起始扇区必须与原来相同
    Command (m for help): n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p
    Partition number (1-4, default 1): 1
    First sector (2048-104857599, default 2048): 2048  # 必须与原来一致!
    Last sector, +sectoandroidrs or +size{K,M,G} (2048-104857599, default 104857599): 
    # 直接回车使用默认最大值,即占用全部可用空间
    
    1. 验证分区表,确认起始扇区正确
    Command (m for help): p
    
    Disk /dev/sdc: 53.7 GB, 53687091200 bytes
    ...
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdc1            2048   104857599    52427776   83  Linux
    
    1. 保存并退出
    Command (m 编程客栈for help): wq
    The partition table has been altered!
    Calling ioctl() to re-read partition table.
    Syncing disks.
    

    3.3 重启系统

    为了确保内核重新识别新的分区表,建议重启系统:

    reboot
    

    3.4 检查和扩展文件系统

    系统重启后,执行以下操作:

    1. 强制检查文件系统
    root@i-abnawjwo:~# e2fsck -f /dev/sdb1
    e2fsck 1.42.9 (4-Feb-2014)
    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/655360 files (0.0% non-contiguous), 79664/2621440 blocks
    

    注:这里设备名从 /dev/sdc1变为 /dev/sdb1,可能是系统设备识别变化,实际操作时以 fdisk -l输出为准。

    1. 调整文件系统大小
    root@i-abnawjwo:~# resize2fs -p /dev/sdb1
    resize2fs 1.42.9 (4-Feb-2014)
    Resizing the filesystem on /dev/sdb1 to 13106944 (4k) blocks.
    The filesystem on /dev/sdb1 is now 13106944 blocks long.
    

    -p参数显示操作进度,对大容量磁盘很有用。

    3.5 验证扩容结果

    1. 重新挂载分区
    root@i-abnawjwo:~# mount /dev/sdb1 /data/
    
    1. 检查数据完整性
    root@i-abnawjwo:/data# cat hello
    acasdcacsa
    
    1. 查看最终磁盘使用情况
    root@i-abnawjwo:/data# df
    Filesystem     1K-blocks    Used Available Use% Mounted on
    /dev/sda1       20509308 1337768  18106684   7% /
    /dev/sdb1       51474044   33100  48803172   1% /data
    

    成功!/dev/sdb1分区已从原来的约 10.2 GB 扩容到约 51.5 GB,且数据完好无损。

    四、注意事项和故障排查

    4.1 关键注意事项

    1. 起始扇区一致性:重新分区时,First sector必须与原来的值完全相同
    2. 文件系统支持resize2fs主要适用于 ext2、ext3、ext4 文件系统
    3. 分区类型:确保新分区的类型(Linux 分区为 83)与原来一致
    4. 操作顺序:一定要先调整分区表,再调整文件系统

    4.2 常见问题排查

    无法卸载分区

    # 查看哪个进程占用
    lsof +f -- /data
    # 或
    fuser -mv /data
    

    resize2fs 失败

    • 确认文件系统类型:blkid /dev/sdb1
    • 确保已执行 e2fsck -f检查
    • 对于 xfs 文件系统,需使用 xfs_growfs命令

    重启后设备名变化

    建议使用 UUID 或卷标挂载,在 /etc/fstab中配置:

    # 获取UUID
    blkid /dev/sdb1
    # /etc/fstab 中使用
    UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults 0 2
    

    五、总结

    通过本文的步骤,我们成功完成了 Linux 磁盘分区的在线扩容操作。整个过程可归纳为:

    1. 备份数据​ → 安全第一
    2. 卸载分区​ → 解除占用
    3. fdisk 调整​ → 保持起始扇区不变
    4. 重启系统​ → 重新加载分区表
    5. 检查并扩展文件系统​ → 实际扩大容量
    6. 验证结js​ → 确认数据完整性和新容量

    这种方法适用于大多数基于 ext 文件系统的分区扩容需求。对于生产环境,建议先在测试环境演练,并确保在维护窗口进行操作,避免影响业务正常运行。

    以上就是Linux使用fdisk调整分区大小实现磁盘在线扩容的实战指南的详细内容,更多关于Linux fdisk磁盘在线扩容的资料请关注编程客栈(www.devze.com)其它相关文章!

    0
    价值2999元 Java视频教程限时免费下载
    专为Java开发者设计,涵盖核心技术、架构设计、性能优化等
    立即下载

    精彩评论

    暂无评论...
    验证码 换一张
    取 消