1.1.3 分区方案与文件系统选择

分区方案与文件系统选择需围绕业务类型、可用性、性能与可维护性展开。生产环境建议系统分区与数据分区分离,关键服务(数据库、日志、缓存)独立挂载点便于监控与扩容。云主机/虚拟化场景可结合块存储快照与在线扩容能力设计挂载与LVM。

原理草图(分层与挂载关系示意):

文章图片

常见分区建议(示例):
- / 根分区:20–50GB,存放系统与基础软件
- /boot:1–2GB,UEFI 环境 /boot/efi 300–500MB
- swap:内存≤8GB时 1–2 倍内存;内存>32GB可 4–16GB
- /var:日志、数据库、容器数据,建议独立分区
- /data/srv:业务数据目录,独立分区便于扩展
- /tmp:高安全场景独立分区并启用 noexec,nosuid,nodev

文件系统选择要点:
- ext4:通用稳定,兼容性好,适合系统分区
- xfs:大文件与高并发写入性能好,适合数据库/日志/容器数据
- btrfs:支持快照与校验,运维复杂度高需评估
- LVM:在线扩容/快照,适合容量弹性需求
- RAID:提升可靠性与性能,关键数据建议 RAID10

安装与规划示例(LVM + XFS,分出 /var/data):

# 1) 查看磁盘与现有分区
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT

# 2) 使用分区工具创建 /boot 与 LVM 分区
# 交互式分区示例(/dev/sda)
fdisk /dev/sda <<'EOF'
g
n
1

+1G
n
2

+200G
t
2
8e
w
EOF

# 3) 创建物理卷、卷组、逻辑卷
pvcreate /dev/sda2
vgcreate vg_data /dev/sda2
lvcreate -n lv_root -L 40G vg_data
lvcreate -n lv_var  -L 50G vg_data
lvcreate -n lv_data -l 100%FREE vg_data

# 4) 格式化文件系统
mkfs.xfs /dev/vg_data/lv_root
mkfs.xfs /dev/vg_data/lv_var
mkfs.xfs /dev/vg_data/lv_data
mkfs.ext4 /dev/sda1

# 5) 挂载并配置开机自动挂载
mkdir -p /mnt/sysroot /mnt/sysroot/var /mnt/sysroot/data /mnt/sysroot/boot
mount /dev/vg_data/lv_root /mnt/sysroot
mount /dev/vg_data/lv_var /mnt/sysroot/var
mount /dev/vg_data/lv_data /mnt/sysroot/data
mount /dev/sda1 /mnt/sysroot/boot

# 6) 生成 /etc/fstab 示例(安装系统后写入)
cat <<'EOF' > /mnt/sysroot/etc/fstab
/dev/vg_data/lv_root  /     xfs  defaults        0 0
/dev/vg_data/lv_var   /var  xfs  defaults        0 0
/dev/vg_data/lv_data  /data xfs  defaults        0 0
/dev/sda1             /boot ext4 defaults        1 2
EOF

命令说明与关键参数:
- lvcreate -L 40G:创建固定大小逻辑卷
- lvcreate -l 100%FREE:使用卷组所有剩余空间
- mkfs.xfs:创建 XFS 文件系统
- fstabdefaults:包含 rw、relatime 等常用挂载参数

挂载参数示例(增强安全与性能):

# /etc/fstab 追加安全参数示例
/dev/vg_data/lv_var  /var  xfs  defaults,nodev  0 0
/dev/vg_data/lv_data /data xfs  defaults,noatime 0 0
tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev 0 0

# 使新参数生效
mount -a

排错与诊断:

# 1) fstab 配置错误导致无法启动,进入救援模式后注释错误行
vi /etc/fstab
# 使用此命令测试挂载
mount -a
# 预期:无输出即成功

# 2) 查看 LVM 状态
pvs; vgs; lvs -a -o +devices

# 3) 文件系统只读(常见于异常关机)
mount | grep ' /data '
# 修复 XFS
xfs_repair -n /dev/vg_data/lv_data   # 先试运行
xfs_repair /dev/vg_data/lv_data      # 确认后修复

扩容示例(在线扩容 /data):

# 1) 扩展逻辑卷(增加 100G)
lvextend -L +100G /dev/vg_data/lv_data

# 2) 扩展 XFS 文件系统(在线)
xfs_growfs /data

# 3) 验证容量
df -h /data

练习:
1. 规划一套 200GB 磁盘的分区:/、/var、/data、swap,并写出容量分配理由。
2. 使用 LVM 创建 lv_data 并格式化为 XFS,验证 df -h 输出。
3. 修改 /etc/fstab/tmp 设置 noexec,nosuid,nodev,重启后验证挂载参数。
4. 模拟扩容 /data 50GB,完成 lvextend + xfs_growfs