空闲的空间去哪儿了?

空闲的空间去哪儿了?

我已经在我的服务器上安装了 CentOS 5.7 64 位,该服务器在硬件 RAID 10 上有 4x300 GB SAS 驱动器。在安装时,我选择了默认分区。

以下是命令输出:

[root@server ~]# fdisk -l

Disk /dev/sda: 598.8 GB, 598879502336 bytes
255 heads, 63 sectors/track, 72809 cylinders
Units = cylinders de 16065 * 512 = 8225280 bytes

Boot Device         Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14       72809   584733870   8e  Linux LVM


[root@server ~]# df -h
File System          Size   Used  Free Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      493G  1,4G  466G   1% /
/dev/sda1              99M   13M   81M  14% /boot
tmpfs                  24G     0   24G   0% /dev/shm

那 100 GB 去哪儿了?我该如何添加它?

提前致谢

答案1

您的问题有点有趣 - 实际上存在 3 个问题:

  1. 一个单位换算问题
  2. 文件系统的保留块(df 可见)
  3. 文件系统的保留块(df 不可见)

笔记:我将使用从我的一个系统中提取的数字,而不是您的数字,因为需要更多信息 - 但适用相同的数学原理。

1. GB(千兆字节)与 GiB(吉比字节)

  • GB 以 10 的幂为基础:1GB = 10 3 3 = 1000 3 = 1000000000 字节
  • GiB 基于 2 的幂:1GiB = 2 ·10· 3 = 1024· 3 = 1073741824 字节

硬盘几乎都是以 GB 为单位出售的。

fdisk -l /dev/xvda1

Disk /dev/xvda1: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

因此,此分区有 4294967296 字节 - 您可以看到数字 (MB) 只是它的 1/1000 2。要转换为 GiB,我们将除以 1024 3

4294967296 B / (1024 3 B/GiB) = 4GiB(或 4096MB,肯定与上面的数字不同)。

2. 文件系统保留一些df可以看到的块

首先,让我们找到我们的块大小:

dumpe2fs -h /dev/xvda1 | grep "Block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size:               4096

由于该系统上的块大小为 4096B,因此我在下面使用该值。(注意,df使用 4K = 4096 和 4KB = 4000):

df -B 4K
Filesystem           4K-blocks      Used Available Use% Mounted on
/dev/xvda1             1032112    325035    696599  32% /

您可能期望已用+可用=总计(即 4K 块),但是:

325035+696599 = 1021634 =/= 1032112

这个缺失的值是‘保留块数’:

dumpe2fs -h /dev/xvda1 | grep "Reserved block count"
dumpe2fs 1.41.12 (17-May-2010)
Reserved block count:     10478

检查数学:

1021634 + 10478 = 1032112

df3.看不见的缺失方块

嗯,到目前为止一切顺利,但是数字仍然不对。

我应该拥有的 4K 块总数是 4294967296 / 4096 = 1048576 您可以使用 dumpe2fs -h /dev/xvda1 | grep "Block count" 的输​​出来验证这一点

dumpe2fs -h /dev/xvda1 | grep "Block count"
dumpe2fs 1.41.12 (17-May-2010)
Block count:              1048576

因此,根据 fdisk 和 dumpe2fs,共有 1048576 个 4K 块。根据 df:1032112 个 4K 块。这意味着:缺少 1048576 - 1032112 = 16464 个块。

这里你需要对文件系统有一点了解。我使用的是 ext4 - 它被分成了几个组。

首先,这是 dumpe2fs 的部分输出:

dumpe2fs -h /dev/xvda1
dumpe2fs 1.41.12 (17-May-2010)
Filesystem OS type:       Linux
Inode count:              262144
Block count:              1048576
Reserved block count:     10478
Free blocks:              735865
Free inodes:              216621
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      511
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
RAID stride:              32582
Flex block group size:    16
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       15632
Journal backup:           inode blocks
Journal features:         journal_incompat_revoke
Journal size:             128M
Journal length:           32768
Journal sequence:         0x0006db26
Journal start:            7391

每组有 32768 个区块。总共有 1048576 个区块,因此:1048576 / 32768 = 32 组

如果你运行 dumpe2fs(不带 -h),你将获得所有组及其相关信息的长列表。例如,对于我的第一个组:

Group 0: (Blocks 0-32767) [ITABLE_ZEROED]
  Checksum 0xdc79, unused inodes 0
  Primary superblock at 0, Group descriptors at 1-1
  Reserved GDT blocks at 2-512
  Block bitmap at 513 (+513), Inode bitmap at 529 (+529)
  Inode table at 545-1056 (+545)
  13296 free blocks, 0 free inodes, 1487 directories
  Free blocks: 10382, 11506-11537, 11672-11679, 11714-11727, 12169, 12173-12179, 12181-12185, 12938-12962, 12964-12969, 13105, 13217-13246, 13384-13390, 13392-13393, 13644-13647, 13707, 13712-13855, 16346-18395, 20442-22491, 22699-22701, 22748, 23053-31837, 32290-32408
  Free inodes:

你会注意到以下几件事:

  1. 有一个超级块(并非所有组都有)- 1 个块
  2. 有组描述符(只有具有超级块的组才有)- 1 个块
  3. 有一个块位图(所有组都有一个)-1 个块
  4. 有一个 inode 位图(所有组都有一个)- 1 个块
  5. 有一个 inode 表 - 512 个块(每组有 512 个 Inode 块)

我们可以使用以下命令找到超级块的列表:

dumpe2fs /dev/xvda1 | grep -i superblock
dumpe2fs 1.41.12 (17-May-2010)
  Primary superblock at 0, Group descriptors at 1-1
  Backup superblock at 32768, Group descriptors at 32769-32769
  Backup superblock at 98304, Group descriptors at 98305-98305
  Backup superblock at 163840, Group descriptors at 163841-163841
  Backup superblock at 229376, Group descriptors at 229377-229377
  Backup superblock at 294912, Group descriptors at 294913-294913
  Backup superblock at 819200, Group descriptors at 819201-819201
  Backup superblock at 884736, Group descriptors at 884737-884737

因此,就我而言,有 1 个主超级块和 7 个备份。

计算后,我们得到:

  • 24 个无超级块的组:
    • 每个有 1 个块(块位图)+ 1 个块(inode 位图)+ 512 个块(inode 表)= 514 个块
  • 带有超级块的 8 个组:
    • 每个都有 1 个块(超级块)+ 1 个块(组描述符)+ 1 个块(块位图)+ 1 个块(inode 位图)+ 512 个块(inode 表)= 516 个块

通过计算,我们发现:

24 groups * 514 block/group + 8 groups * 516 blocks/group = 16464 blocks

这正好等于我们缺失的数字!

值得一提的是,还有一些额外的保留块(例如,保留的 GDT 块)可供将来使用,但 df 已将其计入计算中。此外,文件系统日志被 df 识别为已用空间(因此,即使没有任何文件,也会使用 128MiB)

相关内容