大容量存储规划:分区、文件系统与扩容

从分区表选型到文件系统、对齐、挂载与在线扩容,教你把大容量磁盘规划得既稳又能长。

当你的服务器或物理机挂上几块大盘,随手 mkfs 往往会在半年后付出代价:分区表撑不住、文件系统不适配、想扩容却发现布局锁死。提前做一点规划,能省下之后停机迁移的麻烦。

分区表:超过 2TB 必须用 GPT

传统 MBR 分区表最大只能寻址 2TB,超过的空间会被直接浪费,而且最多 4 个主分区。现代磁盘一律用 GPT:支持超大容量、分区数量几乎不受限,还自带备份分区表更耐损坏。

sudo parted /dev/sdb           # 交互式
(parted) mklabel gpt           # 建立 GPT 分区表
(parted) mkpart data 1MiB 100% # 从 1MiB 起始(保证对齐)

> 风险提醒:mklabel 会清空整块盘的分区信息,mkfs 会清空分区里的数据。操作前务必用 lsblk、blkid 确认盘符,别把系统盘或有数据的盘当成空盘。

对齐与 inode

从 1MiB 起始就能保证与 SSD/RAID 的物理边界对齐,避免写放大导致性能骤降。格式化时,如果盘上是海量小文件(邮件、图片缩略图),用 -i 调小每个 inode 的字节数以增加 inode 数量;若是少量大文件(视频、备份),默认值即可,别浪费。

文件系统:ext4 还是 xfs

  • ext4:成熟稳妥,支持缩小(shrink),中小容量、通用场景的默认选择。
  • xfs:对大文件、大容量、高并发表现更好,可在线扩容但不能缩小。数据盘上 TB 级容量、数据库、媒体库更推荐它。
sudo mkfs.ext4 /dev/sdb1       # 或
sudo mkfs.xfs  /dev/sdb1

布局规划:系统盘与数据盘分离

把系统盘和数据盘分开是核心原则。系统盘只装操作系统,数据盘独立承载业务数据。这样重装系统不动数据、备份粒度更清晰、单盘故障影响面更小。同时预留增长空间——用 LVM 时别一次把卷组占满,留一部分给未来扩容。

扩容:云盘扩容或 LVM

两条主流思路,共同点是先扩底层、再扩文件系统:

  • 云盘扩容:控制台把盘扩到更大容量后,先 growpart /dev/sdb 1 扩分区,再扩文件系统。
  • LVM:lvextend -L +500G /dev/vg/data 扩逻辑卷,再扩文件系统。
sudo resize2fs /dev/sdb1       # ext4 在线扩容
sudo xfs_growfs /data          # xfs 按挂载点扩容

挂载并写入 fstab

临时挂载重启即失效,要持久化必须写 /etc/fstab,并用 UUID 而非盘符(盘符可能变化):

sudo mkdir -p /data
sudo blkid /dev/sdb1                       # 取 UUID
echo 'UUID=xxxx /data xfs defaults 0 2' | sudo tee -a /etc/fstab
sudo mount -a                              # 校验配置,不报错才算成功

> mount -a 不报错再重启是铁律——fstab 写错会导致系统进不去救援模式。

小结

超过 2TB 用 GPT、从 1MiB 对齐;大容量大文件倾向 xfs、需要缩小选 ext4;系统盘数据盘分离并预留增长;扩容记住"先底层后文件系统";挂载用 UUID 写 fstab 并 mount -a 验证。规划做在前面,扩容就只是几条命令的事。