3.2.5 文件系统创建与格式化(mkfs)
3.2.5 文件系统创建与格式化(mkfs)#
文件系统创建(mkfs)用于将裸设备/分区初始化为可挂载结构。格式化前必须确认设备路径与用途,避免误清空业务数据。
1. 原理草图:格式化与挂载关系#
2. 环境准备与安装#
常见工具包:ext4 由 e2fsprogs 提供,xfs 由 xfsprogs 提供。
# RHEL/CentOS/AlmaLinux/Rocky
sudo yum install -y e2fsprogs xfsprogs
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install -y e2fsprogs xfsprogs
3. 常见文件系统与选择建议#
- ext4:通用稳定,系统盘/通用数据盘首选。
- xfs:大文件/高并发写入优,日志、数据库、对象存储常用。
- vfat:跨平台U盘/引导分区。
- swap:交换分区(使用
mkswap初始化)。
4. 关键命令与参数解释#
# 查看设备与分区,确认目标
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
# ext4 格式化
mkfs.ext4 /dev/sdb1
# -L 设置卷标,便于识别与挂载
mkfs.ext4 -L data /dev/sdb1
# -m 预留空间比例(默认5%),数据库盘可适当降低
mkfs.ext4 -m 1 /dev/sdb1
# -b 块大小,-i inode 间距(需理解负载,慎用)
mkfs.ext4 -b 4096 -i 16384 /dev/sdb1
# xfs 格式化
mkfs.xfs /dev/sdb1
# -L 设置卷标;-f 强制格式化(谨慎)
mkfs.xfs -L logs -f /dev/sdb1
# swap 初始化
mkswap -L swap01 /dev/sdb2
5. 完整流程示例(含验证与挂载)#
# 1) 确认目标设备未被挂载
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT /dev/sdb
mount | grep sdb || echo "sdb未挂载"
# 2) 格式化为 xfs 并设置卷标
sudo mkfs.xfs -L logs /dev/sdb1
# 3) 创建挂载点并挂载
sudo mkdir -p /data/logs
sudo mount /dev/sdb1 /data/logs
# 4) 验证文件系统类型与UUID
lsblk -f /dev/sdb1
blkid /dev/sdb1
# 5) 验证写入
sudo dd if=/dev/zero of=/data/logs/testfile bs=1M count=10 status=progress
df -h /data/logs
6. 典型排错与处理#
# 现象1:提示 "device is busy"(设备被占用)
# 处理:查找并卸载
lsof /dev/sdb1
fuser -vm /dev/sdb1
sudo umount /dev/sdb1
# 现象2:提示 "XFS file system ... is in use"
# 处理:确认未挂载,必要时先卸载再格式化
mount | grep sdb1
sudo umount /dev/sdb1
sudo mkfs.xfs -f /dev/sdb1
# 现象3:误格式化风险检查
# 处理:强制确认设备信息
lsblk -o NAME,SIZE,SERIAL,MODEL /dev/sdb
blkid /dev/sdb1
7. 练习题(含命令要求)#
1) 在 /dev/sdb1 上创建 ext4 文件系统,卷标为 data01,预留空间 1%。
2) 在 /dev/sdb2 上创建 xfs 文件系统,挂载到 /data/xfs,并用 UUID 挂载(编辑 /etc/fstab)。
3) 模拟格式化前检查:输出目标分区的 UUID、文件系统类型和挂载点。
4) 写一条命令验证 /data/xfs 的读写权限。
可参考命令:
# 练习2:UUID挂载示例(请替换UUID)
UUID=$(blkid -s UUID -o value /dev/sdb2)
echo "UUID=$UUID /data/xfs xfs defaults 0 0" | sudo tee -a /etc/fstab
sudo mount -a