ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Ubuntu linux ssd 硬盘分区对齐配置和 xfs 文件系统 docker 限额

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/$diskp

3. 创建挂载点

sudomkdir-p/var/lib/docker

4. 获取分区的 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,pquota01

6. 挂载生效

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.5T
  • START=2048表示分区起始扇区号是 2048
  • 一般磁盘扇区大小是 512B,所以 2048 * 512B =1MiB→ 对齐正确。

2. 使用parted的 align-check

sudoparted/dev/nvme0n1 align-check optimal1
  • 1代表检查第一个分区
  • 如果输出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的输出贴给我,我帮你判断?

返回列表