我是的十八簿 发表于 2026-5-8 10:24:42

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

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 实战:为新磁盘分区

假设新增了一块磁盘 /dev/sdb(通过 lsblk 或 fdisk -l 确认)。

使用 fdisk 创建 MBR 分区
fdisk /dev/sdb
交互命令:

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


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

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



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

分区只是划分了区域,还需要写入文件系统才能存储数据。

# 格式化为 ext4
mkfs.ext4 /dev/sdb1
# 或
mkfs -t ext4 /dev/sdb1

# 格式化为 xfs(CentOS 7/8 默认)
mkfs.xfs /dev/sdb1 -f    # -f 强制覆盖已有文件系统

# 创建 swap 分区
mkswap /dev/sdb2
swapon /dev/sdb2         # 立即启用

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



4. 挂载(Mount)

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

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

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

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

参数说明:

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


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

4.3 卸载
umount /data
# 如果提示 busy,可查看谁在占用
lsof /data
fuser -mv /data



5. 完整操作示例(新增 10G 分区,格式化 xfs,挂载到 /data)

# 1. 查看新磁盘
lsblk
# 假设 /dev/sdb 为 20G 新盘

# 2. 分区(使用 fdisk 创建 1 个 10G 分区)
fdisk /dev/sdb
# n → p → 1 → 回车 → +10G → w

# 3. 刷新分区表
partprobe /dev/sdb

# 4. 格式化
mkfs.xfs /dev/sdb1

# 5. 创建挂载目录并挂载
mkdir /data
mount /dev/sdb1 /data

# 6. 确认
df -hT /data

# 7. 开机自动挂载
blkid /dev/sdb1   # 复制 UUID
echo "UUID=你的UUID /data xfs defaults 0 0" >> /etc/fstab
mount -a   # 测试 fstab 配置是否正确



6. LVM 补充(进阶)

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

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


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

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



7. 常见问题排查

[*]分区表未同步:partprobe 后仍无法识别分区,重启系统或使用 partx -a /dev/sdb。
[*]挂载点空间不足:确认分区大小,或使用 LVM 扩容,避免直接删除挂载点下的旧数据(挂载会覆盖原目录内容)。
[*]文件系统损坏:可尝试 fsck /dev/sdb1(需先卸载分区)。


掌握这些,就能在 CentOS 上熟练管理磁盘了。如果有特定场景(如 RAID、加密分区),可以进一步深入探讨。
页: [1]
查看完整版本: Linux文件系统详解:CentOS下磁盘分区、格式化与挂载