跳转至

15- 磁盘与文件系统管理(fdisk、parted、ext4/xfs/btrfs) 💾

前提条件 ✅

  • 已完成第二阶段前置安全加固(SSH、fail2ban、AppArmor、nftables/ufw、端口扫描)
  • 以 ops 用户登录(具有 sudo 权限)
  • 系统运行在 Debian 12 Bookworm(虚拟机至少 2 块虚拟磁盘:系统盘 + 数据盘)
  • VMware Workstation Pro 环境:建议添加第二块虚拟硬盘(SCSI 控制器,≥ 40GB)用于练习

详细步骤 🛠️

  1. 查看当前磁盘与分区状态

    lsblk -f                  # 推荐:树形显示磁盘、分区、文件系统、挂载点
    sudo fdisk -l             # 经典工具,列出所有磁盘与分区表
    sudo parted -l            # 显示分区表类型(gpt/msdos)、扇区大小
    df -hT                    # 已挂载文件系统使用情况
    

  2. 添加新虚拟磁盘(VMware 操作)

  3. 虚拟机关机状态 → VM → Settings → Hardware → Add → Hard Disk
  4. 创建新磁盘:≥ 40GB,SCSI 控制器
  5. 启动虚拟机后查看新磁盘:

    sudo lsblk
    # 示例:新磁盘出现为 /dev/sdb(无分区)
    

  6. 使用 fdisk 创建分区(MBR 风格,适合 <2TB 磁盘)

    sudo fdisk /dev/sdb
    

交互式操作流程: - n → 新分区 - p → 主分区 - 1 → 分区号 1 - 默认起始/结束扇区(全盘分区) - t → 更改类型(83 Linux 或 8e LVM) - w → 写入分区表

验证:

sudo fdisk -l /dev/sdb
sudo partprobe /dev/sdb   # 通知内核重新读取分区表

  1. 使用 parted 创建 GPT 分区(推荐 >2TB 或现代系统)
    sudo parted /dev/sdb
    

parted 交互命令:

(parted) mklabel gpt
(parted) mkpart primary ext4 1MiB 100%
(parted) set 1 lba on
(parted) quit

或者一步命令行:

sudo parted -s /dev/sdb mklabel gpt
sudo parted -s /dev/sdb mkpart primary ext4 1MiB 100%

  1. 创建并格式化文件系统
    常见文件系统对比与命令:
文件系统 优点 缺点 格式化命令
ext4 稳定、兼容性最好 性能一般 sudo mkfs.ext4 -L data /dev/sdb1
xfs 高性能、大文件、并发好 无法缩小 sudo mkfs.xfs -L data /dev/sdb1
btrfs 子卷、快照、内置 RAID、压缩 稳定性稍逊(早期) sudo mkfs.btrfs -L data /dev/sdb1

示例(推荐 xfs 用于数据盘):

sudo mkfs.xfs -f -L data /dev/sdb1

  1. 挂载与持久化
    创建挂载点:
    sudo mkdir /data
    

临时挂载:

sudo mount /dev/sdb1 /data
df -h /data

永久挂载(编辑 /etc/fstab):

sudo blkid /dev/sdb1          # 获取 UUID
sudo nano /etc/fstab

添加行(使用 UUID 更安全):

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx   /data   xfs   defaults,noatime   0 2

测试 fstab 配置:

sudo mount -a                 # 检查语法与挂载

  1. 快速扩展分区(虚拟机场景)
  2. VMware 扩展磁盘大小 → 重启虚拟机
  3. 使用 growpart + resize2fs(ext4)或 xfs_growfs(xfs)
    sudo apt install -y cloud-guest-utils
    sudo growpart /dev/sdb 1
    sudo xfs_growfs /data
    

实践任务 🎯

  1. 在 VMware 中添加一块新虚拟磁盘(/dev/sdb),用 lsblk 确认出现
  2. 用 parted 创建 GPT 分区 + xfs 文件系统,挂载到 /data
  3. 编辑 /etc/fstab 添加永久挂载,执行 mount -a 测试无报错
  4. 用 df -hT 和 lsblk -f 验证新分区已正确挂载和识别

自测问题 ❓

  1. fdisk 和 parted 的主要区别是什么?什么时候优先用 parted?
  2. 为什么现代系统推荐使用 UUID 而不是 /dev/sdb1 来写 fstab?
  3. xfs 文件系统无法“缩小”的根本原因是什么?
  4. 如果虚拟磁盘扩容后分区未变大,第一步操作是什么?

总结 📌

掌握磁盘分区、文件系统创建、挂载与扩展是存储管理的基础技能。
生产环境中优先 GPT + xfs/btrfs + UUID fstab + LVM(下一章),确保数据盘可弹性扩展、无宕机迁移。
本章操作完成后,/data 可用于后续 NFS、备份、数据库数据目录。