可用空间去了哪里?

我在我的服务器上安装了CentOS 5.7 64位,它在硬件RAID 10上有4×300 GB SAS驱动器。在安装时,我select了默认分区。

这里是命令输出:

[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. 单位转换问题
  2. 文件系统的保留块(由df可见)
  3. 文件系统的保留块(df不可见)

注意:我将使用从我的一个系统中提取的号码,而不是您的号码,因为需要更多的信息 – 虽然同样的math适用。

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。 要转换成GiB,我们将除以1024 3

4294967296 B /(1024 3 B / GiB)= 4GiB(或4096MB,绝对不同于上面的数字)。

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

首先,让我们find我们的块大小:

 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% / 

你会期望Used + Available = Total(即4K块),但是:

 325035+696599 = 1021634 =/= 1032112 

这个缺失值是'保留块数':

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

检查math:

 1021634 + 10478 = 1032112 

3. df看不见的缺失块

那么,到目前为止,这么好,但是数字还是没有加起来。

我应该拥有4K块的总数是4294967296/4096 = 1048576您可以使用dumpe2fs -h / dev / xvda1 | grep“块计数”

 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块(每组inode块)

我们可以find我们的超级栏目列表:

 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块

做math,我们发现:

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

这完全等于我们缺less的数字!

值得一提的是,还有额外的保留区块(如保留的GDT区块)可供将来增长,但是这个df包含在它的计算中。 另外,文件系统日志被df识别为已用空间(所以即使没有任何文件,也会使用128MiB)