云盘扩容了 df 还是旧的:一次 Linux 磁盘分区与文件系统扩容的复盘

根分区快满了在云控制台把系统盘从 50G 扩到 100G 显示扩容成功,SSH 上去 df -h 看根分区还是 50G,等过也重启过多出来的 50G 就是用不上。排查梳理:一块盘的可用空间是三层套起来的物理磁盘包着分区分区包着文件系统里层永远不超过外层,云控制台扩容只扩了最外层物理磁盘 vda 变 100G,中间的分区 vda1 大小记在磁盘分区表里云盘扩容根本不改分区表所以分区还是 50G,文件系统建在分区里自然也顶多 50G;扩容要从外到里逐层做扩磁盘扩分区扩文件系统少一层空间就卡在那层传不进去;排查第一步永远是 lsblk 对比磁盘和分区大小差在哪层立刻现形 df 看的是最里层文件系统;第一层确认内核认到磁盘新容量没认到就 echo 1 rescan 或重启;第二层扩分区用 growpart 磁盘 分区号中间是空格能对在用的根分区在线扩改分区表前务必先打快照;第三层扩文件系统先 df -T 查类型 ext4 用 resize2fs 参数给分区 xfs 用 xfs_growfs 参数给挂载点两者都支持在线扩容 xfs 只能扩不能缩;用了 LVM 的系统分区和文件系统间还夹着 PV VG LV 三层扩容链条要 growpart 再 pvresize 让 PV 认到再 lvextend 扩 LV 推荐 lvextend -r 一步连文件系统一起扩。正确做法是 lsblk 先看清空间卡在哪层再从外到里逐层扩,以及一套磁盘扩容排查纪律。

2023 年,一次"云盘明明扩容了、df 看到的却还是旧的"的事故,把我对"一块磁盘有多大"这件事的理解,彻底重排了一遍。那天根分区告警快满了,我登上云厂商的控制台,把这台服务器的系统盘,从 50G 扩到了 100G。控制台上,那块盘的容量,清清楚楚地变成了 100GB,旁边还有个绿色的"扩容成功"。我心想:搞定了,空间翻倍。我 SSH 上去,df -h 一看——根分区 /,还是 50G。我以为是没刷新,等了十分钟,再看,还是 50G。我重启了一次,再看,【依然】是 50G。我整个人卡住了:云厂商的控制台,白纸黑字告诉我这盘是 100G;我花了钱,扩容也显示成功;可这台机器里的 df,就是咬定它只有 50G,多出来的那 50G,像是被一堵看不见的墙挡在了外面。我盯着这两个对不上的数字,第一次冒出一个我从没想过的问题:我在控制台上"扩容"的那个东西,和 df 在量的那个东西——它们,是同一个东西吗?"一块盘变大了",这句话,到底是【在哪一层】变大了?这件事逼着我把磁盘、分区、文件系统这三层结构、还有 LVM,彻底理清了。本文复盘这次实战。

问题背景

环境:CentOS 7,云服务器,系统盘 ext4
事故现象:
- 云控制台把系统盘从 50G 扩到 100G,显示成功
- ★ 可机器里 df -h 看根分区,还是 50G
- 重启过、等过,多出来的 50G 就是用不上

现场排查:
# 1. df 看根分区 —— 还是 50G
$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G   47G  3.0G  94% /          # ★ 还是 50G

# 2. ★ lsblk 看块设备 —— 这里露馅了
$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    252:0    0  100G  0 disk                  # ★★ 磁盘:100G!
└─vda1 252:1    0   50G  0 part /                # ★★ 分区:还是 50G!
# ★ 看明白了吗:
#   - vda(整块磁盘)—— 已经是 100G,扩容【生效了】。
#   - vda1(分区)—— 还是 50G,它【没跟着变大】。

# 3. ★ 看分区表,确认分区的范围
$ fdisk -l /dev/vda
Disk /dev/vda: 107.4 GB ...                      # ★ 磁盘 100G
Device     Boot Start       End   Sectors Size
/dev/vda1  *     2048 104857599 104855552  50G   # ★ 分区只到 50G 处
# ★ 磁盘后面那 50G,是一片【没有被任何分区划走】
#   的空白区域。vda1 这个分区,只占了前 50G。

# 4. ★ 文件系统(ext4)的大小
$ df -h /        # 文件系统建在 vda1 上,vda1 才 50G
/dev/vda1        50G ...                         # ★ 自然也是 50G

根因(后来想清楚的):
1. ★ 一块盘能用的空间,是【三层】套起来的:
   物理磁盘 -> 磁盘上的分区 -> 分区里的文件系统。
2. ★ 我在云控制台做的"扩容",只扩了【最外层】:
   物理磁盘。vda 从 50G 变成了 100G。
3. ★ 但中间那层 —— 分区 vda1 —— 它的范围,记在
   磁盘的【分区表】里,写死了"从 X 到 Y"。云盘
   扩容,【根本不会去改分区表】。所以 vda1 还是 50G。
4. ★ 最里层的文件系统,是建在 vda1 这个分区【里】
   的。分区就 50G,文件系统自然顶多 50G。
5. ★ 于是:磁盘大了,可那多出来的 50G,卡在"磁盘
   变大了、但没有分区去认领它"这个状态 —— 分区
   没扩,文件系统更无从扩。
6. 真相:"扩容"不是一个动作,是三层、三个动作。
   我只做了第一层,就以为全做完了。
不是空间没来,是它来到了磁盘这一层,却没有人
把它,一层层地往里传递到文件系统。

修复 1:磁盘、分区、文件系统——空间是三层套起来的

# === ★ 先把"一块盘"的三层结构讲透 ===

# === ★ 第一层:物理磁盘(块设备)===
# 最外面,是一整块【磁盘】本身。在云服务器上,它
#   通常叫 vda、vdb,或 sda、sdb。
# ★ 它就是一块"生肉" —— 有总容量,但还没被划分、
#   没法直接存文件。云控制台上的"扩容",扩的就是
#   【这一层】的容量。
$ lsblk
NAME   SIZE TYPE MOUNTPOINT
vda    100G disk                  # ★ 这就是第一层:整块磁盘

# === ★ 第二层:分区(partition)===
# 你把整块磁盘,切成一块或几块,每一块叫一个【分区】。
#   vda 上切出来的分区,就叫 vda1、vda2……
# ★ "每个分区从磁盘的哪里到哪里",记录在磁盘开头
#   的一张【分区表】里。分区的大小,由分区表说了算。
$ lsblk
vda    100G disk
└─vda1  50G part /                # ★ 第二层:磁盘上切出的分区

# === ★ 第三层:文件系统(filesystem)===
# 光有分区还不能用 —— 分区还是"生的"。你得在分区
#   里【格式化】出一个【文件系统】(ext4、xfs 等),
#   它负责管理"文件怎么存、目录怎么组织"。
# ★ 文件系统建在分区【里】,所以它的大小,被分区
#   的大小【框死】。
$ df -h /
/dev/vda1   50G   ...   /         # ★ 第三层:分区里的文件系统

# === ★ 三层的"套娃"关系 ===
# ★ 物理磁盘  ⊃  分区  ⊃  文件系统
#   (100G)      (50G)     (50G)
# ★ 里层永远 ≤ 外层。文件系统再大,大不过它所在的
#   分区;分区再大,大不过整块磁盘。

# === ★ 于是,"扩容"的真相浮出水面 ===
# ★ 真正让"能存文件的空间"变大,要【从外到里】,
#   一层一层扩:
#  ① 扩物理磁盘   —— 云控制台做(我做了的)。
#  ② 扩分区       —— growpart,改分区表(我漏了)。
#  ③ 扩文件系统   —— resize2fs / xfs_growfs(我漏了)。
# ★ 少做任何一层,空间就卡在那一层,传不到下一层。
#   我只做了 ①,② ③ 没做 —— 空间就卡在磁盘这层。

# === ★ df 和 lsblk,分别在看哪一层 ===
# ★ lsblk:从"块设备"角度,能看到【磁盘】和【分区】
#   两层的大小 —— 它能让你一眼看出"磁盘扩了、分区
#   没扩"。
# ★ df:看的是【文件系统】那一层 —— 最里层。
# ★ 所以排查扩容问题,★ 第一件事就是 lsblk:对比
#   磁盘和分区的大小,差在哪一层立刻现形。

# === 认知 ===
# ★ 一块盘的可用空间是三层套起来的:物理磁盘 ⊃
#   分区 ⊃ 文件系统,里层永远不超过外层。云控制台
#   扩容只扩了最外层的物理磁盘,分区和文件系统
#   不会自动跟着变大。扩容要从外到里逐层扩,少一
#   层空间就卡在那层。lsblk 看磁盘/分区,df 看
#   文件系统。

修复 2:第一层——确认磁盘扩容已被内核认到

# === ★ 第一层:云盘扩了,内核"看见"了吗 ===

# === ★ 先确认:内核眼里,这块磁盘多大 ===
# 云控制台显示 100G,不代表你机器里的内核就知道了。
#   要让内核确认:
$ lsblk -d -o NAME,SIZE /dev/vda
NAME SIZE
vda  100G                         # ★ 内核已经认到 100G,好

# === ★ 如果内核还显示旧的 50G 怎么办 ===
# 多数云平台,在线扩容后内核会自动感知。但偶尔不会,
#   这时需要手动让内核【重新扫描】这块磁盘:
$ echo 1 > /sys/class/block/vda/device/rescan
# ★ 这条命令让内核重新去问这块设备"你现在多大"。
#   扫完再 lsblk,通常就显示新容量了。
# ★ 实在不行,重启一次,内核启动时一定会读到新大小。

# === ★ 这一层的判断标准 ===
# ★ lsblk 里那块磁盘(vda)的 SIZE,等于你在云
#   控制台扩到的大小 —— 第一层就算通过了。
# ★ 本文的情况:vda 已经是 100G,说明云盘扩容、
#   内核感知,这两步都【已经成功】。问题不在第一层。

# === ★ 注意区分:是"扩容"还是"加了一块新盘" ===
# ★ 两种云操作,处理方式完全不同:
#  - 扩容现有盘:vda 还是 vda,只是变大了 -> 走本文
#    的"扩分区 + 扩文件系统"流程。
#  - 新挂一块盘:多出来一个 vdb -> 那是【全新磁盘】,
#    要走"分区 + 格式化 + 挂载 + 写 fstab"流程,
#    和扩容是两码事。
$ lsblk
vda  100G disk    ...             # ★ 老盘变大 = 扩容
vdb   50G disk                    # ★ 冒出个新名字 = 新盘
# ★ 先用 lsblk 看清你面对的是哪一种,别走错流程。

# === 认知 ===
# ★ 扩容第一层:确认内核已认到磁盘新容量 —— lsblk
#   看那块磁盘的 SIZE 是否等于云控制台扩到的值。
#   没认到就 echo 1 > /sys/class/block/盘/device/rescan
#   重新扫描,或重启。还要分清"扩容老盘"和"新挂
#   一块盘",两者后续流程完全不同。

修复 3:第二层——用 growpart 把分区扩到占满磁盘

# === ★ 第二层:磁盘大了,把分区也撑大 ===

# === ★ 问题所在:分区表里,分区的"终点"没动 ===
# 分区有多大,由磁盘开头那张【分区表】决定 —— 表里
#   记着"vda1:从第 2048 扇区,到第 104857599 扇区"。
# ★ 云盘扩容,只是磁盘变大,★ 这张分区表【一个字
#   都没改】。vda1 的终点,还停在原来 50G 的位置。
# ★ 所以这一层的任务,就是:★ 改分区表,把 vda1
#   这个分区的"终点",往后挪到磁盘的最末尾。

# === ★ 最省心的工具:growpart ===
# 手动用 fdisk 删了分区再按相同起点重建,也能扩 ——
#   但起点算错一点就毁数据,极易翻车。
# ★ 强烈推荐用专门的工具 growpart,它自动、安全地
#   把一个分区扩到占满后面的空闲空间:
$ yum install cloud-utils-growpart    # 装 growpart
# ★ 用法:growpart  磁盘   分区号
#   ★ 注意:磁盘和分区号之间是【空格】,不是连写!
$ growpart /dev/vda 1
CHANGED: partition=1 start=2048 old: size=104855552 \
  end=104857600 new: size=209713119 end=209715167
# ★ 它把 vda1 这个分区的 size,从 50G 扩到了 100G。

# === ★ 验证第二层 ===
$ lsblk
vda    252:0    0  100G  0 disk
└─vda1 252:1    0  100G  0 part /     # ★★ 分区现在也 100G 了!
# ★ 但注意 —— 这时 df -h 看根分区,★ 还是 50G!
#   因为我们才扩到第二层(分区),最里层的文件系统
#   还没扩。别慌,下一步就是它。

# === ★ growpart 的一个好处:可以在线扩 ===
# ★ growpart 通常【不需要卸载分区、不需要重启】,
#   对正在使用的根分区也能直接扩 —— 这对线上服务器
#   很关键。

# === ★ 务必先备份/快照 ===
# ★ 改分区表是【高危操作】—— 万一出错,整个分区
#   的数据可能都没了。
# ★ 铁律:动 growpart / fdisk 之前,先给云盘打一个
#   【快照】。有快照兜底,出事还能回滚。

# === 认知 ===
# ★ 扩容第二层:分区大小由磁盘上的分区表决定,云盘
#   扩容不会改分区表,所以分区不会自动变大。用
#   growpart 磁盘 分区号(注意中间是空格)把分区
#   扩到占满磁盘,它能对在用的根分区在线操作。改
#   分区表前务必先打快照。

修复 4:第三层——resize2fs / xfs_growfs 扩文件系统

# === ★ 第三层:分区大了,把文件系统也撑满分区 ===

# === ★ 最后一层:文件系统还卡在 50G ===
# 现在 vda1 这个分区已经是 100G,但建在它里面的
#   文件系统,还以为自己只有 50G —— 它【不知道】
#   外面的分区变大了。
# ★ 这一层的任务:让文件系统"重新认识"它所在的
#   分区,把自己撑到和分区一样大。

# === ★ 第一步:先搞清楚,是什么文件系统 ===
# ★ ext4 和 xfs,扩容用的是【完全不同】的命令。
#   先查清楚:
$ df -T /
Filesystem     Type  ...                # ★ Type 那列
/dev/vda1      ext4  ...                 # 本文是 ext4
# 或:
$ lsblk -f /dev/vda1

# === ★ 情况 A:ext4 / ext3 —— 用 resize2fs ===
$ resize2fs /dev/vda1
resize2fs 1.42.9 ...
The filesystem on /dev/vda1 is now 26214139 blocks long.
# ★ resize2fs 后面跟【分区】,不带大小参数时,它会
#   自动把文件系统撑到占满整个分区。
# ★ ext4 支持【在线扩容】—— 分区挂载着、系统在跑,
#   也能直接 resize2fs,不用卸载。

# === ★ 情况 B:xfs —— 用 xfs_growfs ===
$ xfs_growfs /             # ★ 注意!xfs 后面跟【挂载点】
# ★ 两个关键区别:
#  - ext4 用 resize2fs,参数给【分区】(/dev/vda1);
#  - xfs  用 xfs_growfs,参数给【挂载点】(/)。
# ★ xfs 也支持在线扩容。★ 还有:xfs 只能【扩大】,
#   【不能缩小】—— 这一点和 ext4 不同。

# === ★ 验证第三层:这次真的扩好了 ===
$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       100G   47G   53G  48% /     # ★★ 终于 100G 了!
# ★ 三层 —— 磁盘、分区、文件系统 —— 现在【全部】
#   是 100G。空间从最外层,一路传到了最里层。

# === ★ 把整个流程串起来(ext4,云盘已扩)===
$ lsblk                            # ① 看清:磁盘大、分区小
$ growpart /dev/vda 1              # ② 扩分区(第二层)
$ resize2fs /dev/vda1              # ③ 扩文件系统(第三层)
$ df -h /                          # ④ 验证:Size 变大了
# ★ 三条命令,从外到里,一层都不少。

# === ★ 一个常被忽略的坑:扩容方向 ===
# ★ 本文讲的都是"扩大"。如果要【缩小】文件系统,
#   难度和风险陡增:ext4 缩小必须【先卸载】,xfs
#   【根本不支持】缩小。所以分区规划时,宁可一开始
#   小一点、不够再扩,也别开太大想着以后缩 —— 扩
#   容容易,缩容是另一个量级的麻烦。

# === 认知 ===
# ★ 扩容第三层:文件系统不知道分区变大了,要手动扩。
#   先用 df -T 查类型:ext4 用 resize2fs /dev/分区,
#   xfs 用 xfs_growfs /挂载点 —— 工具和参数都不同。
#   两者都支持在线扩容。整个流程:lsblk 看清 ->
#   growpart 扩分区 -> resize2fs/xfs_growfs 扩文件
#   系统 -> df 验证。

修复 5:LVM——空间在这里多了一层"中间商"

# === ★ 如果系统用了 LVM,层数还要再多 ===

# === ★ 先判断:你的系统是不是 LVM ===
$ lsblk
vda           100G disk
└─vda1         50G part
  └─centos-root 48G lvm  /        # ★ 出现 lvm 这种 TYPE
# ★ 看到 TYPE 是 lvm、名字像 centos-root / vg-lv
#   这种 —— 你的系统就是 LVM。扩容流程不一样。

# === ★ LVM 把空间分成了几层"中间商" ===
# 普通分区:磁盘 -> 分区 -> 文件系统(三层)。
# ★ LVM 在分区和文件系统之间,塞进了三个概念:
#  - PV(物理卷):一个分区(或整块盘),被"交给"
#    LVM 管理,就成了一个 PV。
#  - VG(卷组):多个 PV 凑成一个大"空间池",叫 VG。
#  - LV(逻辑卷):从 VG 这个池子里,划出一块来用,
#    叫 LV。★ 文件系统,是建在 LV 上的。
# ★ 链条变成:磁盘 -> 分区 -> PV -> VG -> LV -> 文件系统。

# === ★ LVM 系统的扩容流程(逐层) ===
# ① 扩磁盘(云控制台)—— 同前。
# ② 扩分区:
$ growpart /dev/vda 1
# ③ ★ 让 PV 认到分区变大了:
$ pvresize /dev/vda1
# ④ ★ 此时 VG 这个池子就变大了。把 LV 扩大:
$ lvextend -l +100%FREE /dev/centos/root
# ★ -l +100%FREE = 把 VG 里【所有空闲空间】都给
#   这个 LV。
# ⑤ ★ 最后,扩 LV 上的文件系统:
$ resize2fs /dev/centos/root      # ext4
$ xfs_growfs /                    # 或 xfs
$ df -h /                          # ★ 验证

# === ★ lvextend 有个省事的合并写法 ===
# ★ lvextend 加 -r 参数,能在扩 LV 的【同时】,
#   自动把文件系统也一起扩了 —— 第 ④⑤ 步合成一步:
$ lvextend -r -l +100%FREE /dev/centos/root
# ★ -r = resize filesystem,自动识别 ext4/xfs 并
#   调对应工具。LVM 系统扩容,推荐用这个写法。

# === ★ LVM 的好处,也正在这"多一层" ===
# 多了 PV/VG/LV 这层"中间商",看着繁琐,但换来了
#   灵活:可以把【多块盘】凑进一个 VG、可以给 LV
#   在线扩容、可以做快照。★ 普通分区做不到"把两块
#   盘合成一个文件系统",LVM 可以。

# === 认知 ===
# ★ 用了 LVM 的系统,分区和文件系统之间还夹着
#   PV/VG/LV 三层。扩容链条变成:扩磁盘 -> growpart
#   扩分区 -> pvresize 让 PV 认到 -> lvextend 扩 LV
#   -> 扩文件系统。推荐 lvextend -r 一步把 LV 和
#   文件系统一起扩。先用 lsblk 看 TYPE 是不是 lvm,
#   确认走哪套流程。

修复 6:磁盘扩容排查纪律

# === 这次事故暴露的认知盲区,定几条纪律 ===

# === 1. ★ 可用空间是三层套起来的:物理磁盘 ⊃ 分区 ⊃ 文件系统 ===

# === 2. ★ 云控制台扩容只扩最外层磁盘,分区和文件系统不会自动跟着变大 ===

# === 3. ★ 扩容要从外到里逐层做,少一层空间就卡在那层传不进去 ===

# === 4. ★ 排查第一步永远是 lsblk,对比磁盘和分区大小,差在哪层立刻现形 ===
$ lsblk

# === 5. 扩分区用 growpart 磁盘 分区号(中间是空格),能对在用的根分区在线扩 ===

# === 6. ★ 扩文件系统:ext4 用 resize2fs /dev/分区,xfs 用 xfs_growfs /挂载点 ===

# === 7. ★ 先 df -T 查清是 ext4 还是 xfs,两者扩容命令和参数完全不同 ===

# === 8. ★ 用了 LVM 还要 pvresize + lvextend,推荐 lvextend -r 一步连文件系统一起扩 ===

# === 9. 改分区表是高危操作,growpart/fdisk 之前务必先给云盘打快照 ===

# === 10. 排查"扩容了但 df 不变"的步骤链 ===
$ lsblk                              # ① 磁盘多大 分区多大
$ df -hT /                           # ② 文件系统多大 什么类型
# 磁盘 > 分区  -> growpart 扩分区
$ growpart /dev/vda 1                # ③ 扩分区
$ resize2fs /dev/vda1                # ④ 扩文件系统(xfs 用 xfs_growfs)
$ df -h /                            # ⑤ 验证 Size 变大
# 按这个顺序,"扩容了 df 却不变"基本能定位、能根治。

命令速查

需求                        命令
=============================================================
看磁盘/分区/挂载结构        lsblk
只看某磁盘大小              lsblk -d -o NAME,SIZE /dev/vda
看文件系统大小和类型        df -hT /
看分区表                    fdisk -l /dev/vda
让内核重扫描磁盘            echo 1 > /sys/class/block/vda/device/rescan
扩分区                      growpart /dev/vda 1
扩 ext4 文件系统            resize2fs /dev/vda1
扩 xfs 文件系统             xfs_growfs /
LVM 让 PV 认到分区变大      pvresize /dev/vda1
LVM 扩逻辑卷+文件系统       lvextend -r -l +100%FREE /dev/vg/lv
看 LVM 的卷组空间           vgs

口诀:空间分磁盘/分区/文件系统三层,云扩容只扩最外层,要从外到里逐层扩
      lsblk 先看差在哪层,growpart 扩分区,ext4 用 resize2fs xfs 用 xfs_growfs

避坑清单

  1. 一块盘的可用空间是三层套起来的,物理磁盘包着分区,分区包着文件系统,里层永远不超过外层
  2. 云控制台的扩容只扩了最外层的物理磁盘,中间的分区和最里的文件系统都不会自动跟着变大
  3. 扩容要从外到里一层一层做,扩磁盘扩分区扩文件系统少做任何一层空间就卡在那层传不进去
  4. 排查扩容不生效第一步永远是 lsblk,对比磁盘和分区的大小就能立刻看出空间卡在哪一层
  5. 扩分区用 growpart 磁盘 分区号,磁盘和分区号之间是空格,它能对正在使用的根分区在线扩
  6. 扩文件系统 ext4 用 resize2fs 参数给分区,xfs 用 xfs_growfs 参数给挂载点,先 df -T 查清类型
  7. 改分区表是高危操作,动 growpart 或 fdisk 之前务必先给云盘打一个快照留好回滚退路
  8. 用了 LVM 的系统分区和文件系统间还夹着 PV VG LV 三层,要 pvresize 再 lvextend 才能扩
  9. LVM 扩容推荐 lvextend 加 -r 参数,它会在扩逻辑卷的同时自动把上面的文件系统一起扩好
  10. xfs 文件系统只能扩大不能缩小,分区规划宁可一开始小一点不够再扩也别开太大想着以后缩

总结

这次"花钱扩了容、空间却进不来"的事故,纠正了我一个关于"变大"的、想当然的错觉。在我过去的脑子里,"把一块盘扩大",是一个【整体的、一步到位】的动作。就像往一个杯子里多倒水——水位"唰"地一下就涨上去了,杯底到杯口,是一个连贯的整体,水自然就漫满了。我在云控制台点下"扩容",看着那个数字从 50 跳成 100,心里认定的就是这么一幅画面:这块盘,作为一个整体,变大了一倍,里头的空间,理所当然地、连贯地,就多了一倍。可现实给我看的,是另一幅画面:多出来的那 50G,真真切切地"来"了——它趴在磁盘那一层,清清楚楚;可它就是【进不来】,被一层一层看不见的边界,挡在了文件系统的外面。现场逼着我承认:我以为的那个"一块盘",根本不是一个连贯的整体,它是【三个独立的容器,一层套一层】。物理磁盘是最外面那个箱子,分区是箱子里的一个盒子,文件系统是盒子里的一个袋子——我真正往里装东西、df 真正在量的,是最里面那个【袋子】。我在控制台做的,只是把【最外面那个箱子】换成了更大的。箱子是大了,可里面那个盒子、那个袋子,尺寸一寸没变。多出来的空间,就堆在"大箱子和小盒子之间"那圈缝隙里——它确实在这块盘上,却从没进过那个袋子。复盘到根上我才明白,我混淆了"空间到达了"和"空间可用了"。空间到达磁盘这一层,是云厂商一个动作就给我的;可空间要真正变得【可用】,得有人把它,从磁盘,推进分区,再从分区,推进文件系统——一层一层,亲手往里递。每一层之间,都有一道需要单独打开的关。我以为扩容是"一个动作",其实它是"三个动作";我以为我做完了,其实我只做了第一个,然后就转身走了,留下另外两道关,从没去碰。这次最大的收获,是我对"一个东西看起来变大了/变多了/到位了"这件事,生出了一种"它真的传到底了吗"的追问。预算批下来了,不代表那笔钱就到了真正要花它的那个项目手里;权限开通了,不代表它一路畅通地落到了那个具体要用它的人头上;一个资源在最上层供给充足,不代表它真的穿过了中间每一层,抵达了最末端那个嗷嗷待哺的地方。"在源头变多了"和"在末端用得上",中间隔着一层又一层需要逐个打通的关卡——上游再宽,只要中间堵了一节,末端就照样干涸。所以下一次,当我看到某个数字在最外层变大了、而我心里想的是"里面那个真正干活的地方够用了",我会强迫自己,顺着那条从外到里的链子,一节一节地往下查:这一层收到了吗?它传给下一层了吗?直到我亲眼看着,那多出来的东西,真真切切地抵达了最里面、最末端、那个真正需要它的袋子里。因为让空间"来到门口"是不够的;你得亲手,把每一道门都打开,一直送到底。

—— 别看了 · 2026
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理 邮箱1846861578@qq.com。
Linux教程

rpm 说装好了程序却跑不起来:一次 Linux yum 依赖与 --nodeps 强装的复盘

2026-5-21 0:23:46

Linux教程

文件中文全是乱码:一次 Linux 字符编码与字节转换的排查复盘

2026-5-21 0:33:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索