Linux文件系统详解:CentOS下磁盘分区、格式化与挂载

[复制链接] |主动推送
查看10 | 回复0 | 2026-5-8 10:24:42 | 显示全部楼层 |阅读模式
Linux 中的文件系统管理是运维的基础功,下面我以 CentOS 7/8 为例,从磁盘分区、格式化到挂载,为你梳理一套完整的理论与操作流程。




1. 文件系统基础概念

Linux 采用单一树状目录结构,所有存储设备(硬盘、U盘、光盘)都必须挂载到某个目录下才能被访问。  
常用文件系统:

  • ext4:CentOS 6 默认,稳定,支持最大 1EB 文件系统。
  • xfs:CentOS 7/8 默认,高性能,擅长处理大文件,支持在线扩容。
  • swap:交换分区,用于虚拟内存。





2. 磁盘分区

2.1 分区表类型

  • MBR(Master Boot Record)

  支持最大 2TB 磁盘,最多 4 个主分区,或 3 个主分区 + 1 个扩展分区(扩展分区内可建逻辑分区)。

  • GPT(GUID Partition Table)

  支持 2TB 以上磁盘,主分区数量几乎无限制,需要 UEFI 引导。

2.2 常用分区工具

  • fdisk:管理 MBR 分区  
  • gdisk:管理 GPT 分区  
  • parted:同时支持 MBR/GPT,适合脚本


2.3 实战:为新磁盘分区

假设新增了一块磁盘
  1. /dev/sdb
复制代码
(通过
  1. lsblk
复制代码
  1. fdisk -l
复制代码
确认)。

使用 fdisk 创建 MBR 分区
  1. fdisk /dev/sdb
复制代码
交互命令:

    1. n
    复制代码
    → 新建分区
    1. p
    复制代码
    → 主分区(或
    1. e
    复制代码
    扩展分区)
    1. 1
    复制代码
    → 分区号
  • 回车 → 默认起始扇区
    1. +10G
    复制代码
    → 设置分区大小
    1. w
    复制代码
    → 保存并退出


使用 parted 创建 GPT 分区(推荐大磁盘)
  1. parted /dev/sdb mklabel gpt          # 创建 GPT 标签
  2. parted /dev/sdb mkpart primary 1MiB 100GiB   # 创建一个 100G 主分区
复制代码

分区生效:退出工具后,内核会自动重读分区表;若未生效可执行
  1. partprobe /dev/sdb
复制代码





3. 格式化(创建文件系统)

分区只是划分了区域,还需要写入文件系统才能存储数据。
  1. # 格式化为 ext4
  2. mkfs.ext4 /dev/sdb1
  3. # 或
  4. mkfs -t ext4 /dev/sdb1
  5. # 格式化为 xfs(CentOS 7/8 默认)
  6. mkfs.xfs /dev/sdb1 -f    # -f 强制覆盖已有文件系统
  7. # 创建 swap 分区
  8. mkswap /dev/sdb2
  9. swapon /dev/sdb2         # 立即启用
复制代码

格式化时会分配 inode 表、超级块等元数据,并可能丢弃旧数据,操作前务必确认分区设备名!




4. 挂载(Mount)

挂载就是将文件系统关联到某个目录(挂载点),之后该目录下的操作就会落到对应分区上。

4.1 临时挂载
  1. mkdir /data
  2. mount /dev/sdb1 /data
复制代码
查看挂载情况:
  1. df -hT /data            # 查看挂载点及文件系统类型
  2. mount | grep sdb1
复制代码

4.2 设置开机自动挂载(/etc/fstab)

编辑
  1. /etc/fstab
复制代码
,添加一行:
  1. # 设备        挂载点   文件系统  挂载选项     dump  fsck顺序
  2. UUID=xxxx-xxxx /data    xfs     defaults    0     0
复制代码
推荐使用 UUID 而非设备名(如
  1. /dev/sdb1
复制代码
),因为 UUID 唯一,设备名可能变动。  
查看 UUID:
  1. blkid /dev/sdb1
复制代码

参数说明:

  • 挂载选项
    1. defaults
    复制代码
    包括 rw、suid、dev、exec、auto、nouser、async 等,常见可添加
    1. noatime
    复制代码
    (不更新访问时间)提升性能。
  • dump:是否备份(一般 0)。
  • pass:开机 fsck 检查顺序,根分区通常为 1,其他为 2,0 表示不检查。


编辑完
  1. /etc/fstab
复制代码
后,执行
  1. mount -a
复制代码
测试是否挂载成功(无需重启)。

4.3 卸载
  1. umount /data
  2. # 如果提示 busy,可查看谁在占用
  3. lsof /data
  4. fuser -mv /data
复制代码




5. 完整操作示例(新增 10G 分区,格式化 xfs,挂载到 /data)
  1. # 1. 查看新磁盘
  2. lsblk
  3. # 假设 /dev/sdb 为 20G 新盘
  4. # 2. 分区(使用 fdisk 创建 1 个 10G 分区)
  5. fdisk /dev/sdb
  6. # n → p → 1 → 回车 → +10G → w
  7. # 3. 刷新分区表
  8. partprobe /dev/sdb
  9. # 4. 格式化
  10. mkfs.xfs /dev/sdb1
  11. # 5. 创建挂载目录并挂载
  12. mkdir /data
  13. mount /dev/sdb1 /data
  14. # 6. 确认
  15. df -hT /data
  16. # 7. 开机自动挂载
  17. blkid /dev/sdb1   # 复制 UUID
  18. echo "UUID=你的UUID /data xfs defaults 0 0" >> /etc/fstab
  19. mount -a   # 测试 fstab 配置是否正确
复制代码




6. LVM 补充(进阶)

在 CentOS 生产环境中,常采用 LVM(逻辑卷管理器)实现弹性扩容。

  • PV(Physical Volume):物理分区或磁盘,如
    1. /dev/sdb1
    复制代码
  • VG(Volume Group):多个 PV 组成的存储池
  • LV(Logical Volume):从 VG 分配的逻辑卷,可动态调整大小


典型步骤:
  1. pvcreate /dev/sdb1          # 创建物理卷
  2. vgcreate vg_data /dev/sdb1  # 创建卷组
  3. lvcreate -L 5G -n lv_data vg_data  # 创建 5G 逻辑卷
  4. mkfs.xfs /dev/vg_data/lv_data
  5. mount /dev/vg_data/lv_data /data
复制代码

扩容时只需扩展 LV 与文件系统:
  1. lvextend -L +2G /dev/vg_data/lv_data
  2. # xfs 在线扩容
  3. xfs_growfs /data
复制代码




7. 常见问题排查

  • 分区表未同步
    1. partprobe
    复制代码
    后仍无法识别分区,重启系统或使用
    1. partx -a /dev/sdb
    复制代码

  • 挂载点空间不足:确认分区大小,或使用 LVM 扩容,避免直接删除挂载点下的旧数据(挂载会覆盖原目录内容)。
  • 文件系统损坏:可尝试
    1. fsck /dev/sdb1
    复制代码
    (需先卸载分区)。


掌握这些,就能在 CentOS 上熟练管理磁盘了。如果有特定场景(如 RAID、加密分区),可以进一步深入探讨。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则