Ubuntu linux ssd 硬盘分区对齐配置和 xfs 文件系统 docker 限额
1、分区对齐配置
好的 👍 我给你整理一个完整流程(假设你要用整个盘/dev/nvme0n1,并挂载到/var/lib/docker):
⚠️注意:以下操作会清空磁盘上所有数据,请确认/dev/nvme0n1没有需要保留的数据!
1. 创建分区并 1MiB 对齐
disk=nvme0n1sudoparted/dev/$disk--scriptmklabel gptsudoparted/dev/$disk--scriptmkpart primary xfs 1MiB100%这样会创建一个 GPT 分区表,并新建一个对齐到 1MiB 的分区/dev/nvme0n1p1。
你可以用lsblk查看结果。
2. 格式化为 XFS
diskp=nvme0n1p1sudomkfs.xfs-f/dev/$diskp需要启用 bigtime=1 自行如下命令,参考 xfs 格式化启用 bigtime=1 或者已经格式化后修改
sudomkfs.xfs-mbigtime=1-f/dev/$diskp3. 创建挂载点
sudomkdir-p/var/lib/docker4. 获取分区的 UUID
diskp=nvme0n1p1sudoblkid /dev/$diskp输出类似:
/dev/nvme0n1p1: UUID="abcd-1234-efgh-5678" TYPE="xfs"5. 配置/etc/fstab自动挂载
编辑/etc/fstab:
sudonano/etc/fstab在最后加一行:
UUID=abcd-1234-efgh-5678 /var/lib/docker xfs defaults00如果想对 docker 盘做容量限制,加如下参数
UUID=abcd-1234-efgh-5678 /var/lib/docker xfs defaults,uquota,pquota016. 挂载生效
sudomount-a确认挂载:
df-hT|grepdocker这样/dev/nvme0n1就会对齐分区、格式化成 XFS,并挂载到/var/lib/docker,重启后也会自动挂载。
要不要我帮你写成一段Ansible playbook task,这样你在多台服务器上也能自动完成?
2、如何查看是否分区对齐
分区对齐主要是看分区起始位置是否是 1MiB 的整数倍(常见标准对齐方式)。你可以用下面几种方法确认:
1.lsblk -o NAME,START,SIZE
lsblk-oNAME,START,SIZE /dev/nvme0n1示例输出:
NAME START SIZE nvme0n1 3.5T └─nvme0n1p1 2048 3.5TSTART=2048表示分区起始扇区号是 2048- 一般磁盘扇区大小是 512B,所以 2048 * 512B =1MiB→ 对齐正确。
2. 使用parted的 align-check
sudoparted/dev/nvme0n1 align-check optimal11代表检查第一个分区- 如果输出
1 aligned,说明分区对齐良好 - 如果输出
not aligned,就需要重新分区
3. 查看详细分区表
sudofdisk-l/dev/nvme0n1输出里会显示分区起始扇区,例如:
Device Start End Sectors Size Type /dev/nvme0n1p1 2048 732566646 732564599 3.5T Linux filesystem这里 Start=2048 → 正好是 1MiB 对齐。
📌总结:
- 看起始扇区号是否是 2048(或 4096、8192 这种 2^n 倍数),就说明对齐到 1MiB。
- 最稳妥的命令是:
parted/dev/nvme0n1 align-check optimal1要不要我帮你写一个一键检测脚本,能自动检查所有分区是否对齐?
3、如果 lsblk 查看分区是否对齐报错解决
lsblk -o NAME,START,SIZE /dev/nvme0n1
lsblk: unknown column: START,SIZE
啊,明白了 😅 你的系统里lsblk版本比较旧,不支持START,SIZE这些列。没关系,可以换其他办法:
方法 1:lsblk -t
试试:
lsblk-t/dev/nvme0n1在某些版本会显示分区的扇区信息(但不同发行版差异大)。
方法 2:fdisk
最通用的办法:
sudofdisk-l/dev/nvme0n1示例输出:
Device Boot Start End Sectors Size Id Type /dev/nvme0n1p1 2048 732566646 732564599 3.5T 83 Linux这里Start=2048,扇区大小默认是 512 字节,所以起点 = 2048 × 512 = 1MiB,说明分区对齐。
方法 3:parted
sudoparted/dev/nvme0n1 unit s print输出类似:
Number Start End Size Type 1 2048s 732566645s 732564598s primary起始扇区号是2048s,同样代表 1MiB 对齐。
方法 4: 自动检查对齐
sudoparted/dev/nvme0n1 align-check optimal1如果返回:
1 aligned说明分区对齐良好。
👉 建议你先跑一遍:
sudofdisk-l/dev/nvme0n1我可以帮你解读输出,看看/dev/nvme0n1p1是否真的 1MiB 对齐。
要不要你把fdisk -l /dev/nvme0n1的输出贴给我,我帮你判断?