1、分区对齐配置
好的 👍 我给你整理一个完整流程(假设你要用整个盘 /dev/nvme0n1
,并挂载到 /var/lib/docker
):
⚠️ 注意:以下操作会清空磁盘上所有数据,请确认 /dev/nvme0n1
没有需要保留的数据!
1. 创建分区并 1MiB 对齐
sudo parted /dev/nvme0n1 --script mklabel gpt
sudo parted /dev/nvme0n1 --script mkpart primary xfs 1MiB 100%
这样会创建一个 GPT 分区表,并新建一个对齐到 1MiB 的分区 /dev/nvme0n1p1
。
你可以用 lsblk
查看结果。
2. 格式化为 XFS
sudo mkfs.xfs -f /dev/nvme0n1p1
3. 创建挂载点
sudo mkdir -p /var/lib/docker
4. 获取分区的 UUID
sudo blkid /dev/nvme0n1p1
输出类似:
/dev/nvme0n1p1: UUID="abcd-1234-efgh-5678" TYPE="xfs"
5. 配置 /etc/fstab
自动挂载
编辑 /etc/fstab
:
sudo nano /etc/fstab
在最后加一行:
UUID=abcd-1234-efgh-5678 /var/lib/docker xfs defaults 0 0
如果想对 docker 盘做容量限制,加如下参数
UUID=abcd-1234-efgh-5678 /var/lib/docker xfs defaults,uquota,pquota 0 1
6. 挂载生效
sudo mount -a
确认挂载:
df -hT | grep docker
这样 /dev/nvme0n1
就会对齐分区、格式化成 XFS,并挂载到 /var/lib/docker
,重启后也会自动挂载。
要不要我帮你写成一段 Ansible playbook task,这样你在多台服务器上也能自动完成?
2、如何查看是否分区对齐
分区对齐主要是看 分区起始位置是否是 1MiB 的整数倍(常见标准对齐方式)。你可以用下面几种方法确认:
1. lsblk -o NAME,START,SIZE
lsblk -o NAME,START,SIZE /dev/nvme0n1
示例输出:
NAME START SIZE
nvme0n1 3.5T
└─nvme0n1p1 2048 3.5T
START=2048
表示分区起始扇区号是 2048- 一般磁盘扇区大小是 512B,所以 2048 * 512B = 1MiB → 对齐正确。
2. 使用 parted
的 align-check
sudo parted /dev/nvme0n1 align-check optimal 1
1
代表检查第一个分区- 如果输出
1 aligned
,说明分区对齐良好 - 如果输出
not aligned
,就需要重新分区
3. 查看详细分区表
sudo fdisk -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 optimal 1
要不要我帮你写一个 一键检测脚本,能自动检查所有分区是否对齐?
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
最通用的办法:
sudo fdisk -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
sudo parted /dev/nvme0n1 unit s print
输出类似:
Number Start End Size Type
1 2048s 732566645s 732564598s primary
起始扇区号是 2048s,同样代表 1MiB 对齐。
方法 4: 自动检查对齐
sudo parted /dev/nvme0n1 align-check optimal 1
如果返回:
1 aligned
说明分区对齐良好。
👉 建议你先跑一遍:
sudo fdisk -l /dev/nvme0n1
我可以帮你解读输出,看看 /dev/nvme0n1p1
是否真的 1MiB 对齐。
要不要你把 fdisk -l /dev/nvme0n1
的输出贴给我,我帮你判断?