df 命令結果顯示的 Size 不等於 Avail + Used

[root@dmdb2 log]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p1 9.7G 538M 8.7G 6% /
/dev/cciss/c0d0p6 503G 35G 442G 8% /opt
/dev/cciss/c0d0p5 9.7G 158M 9.1G 2% /home
/dev/cciss/c0d0p3 9.7G 2.5G 6.8G 28% /usr
/dev/cciss/c0d0p2 9.7G 1.1G 8.2G 12% /var
tmpfs 127G 36G 91G 28% /dev/shm
/dev/sddlmaa1 493G 531M 467G 1% /etl_loader
[root@dmdb2 log]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/cciss/c0d0p1 10153988 550000 9079872 6% /
/dev/cciss/c0d0p6 526902720 36508388 463197496 8% /opt
/dev/cciss/c0d0p5 10153988 161052 9468820 2% /home
/dev/cciss/c0d0p3 10154020 2604320 7025580 28% /usr
/dev/cciss/c0d0p2 10154020 1066128 8563772 12% /var
tmpfs 132135932 36923100 95212832 28% /dev/shm
/dev/sddlmaa1 516054864 543296 489297508 1% /etl_loader
爲什麼df -h的結果顯示中, Avail + Used 不等於Size列的值(tmpfs除外),你注意過嗎?!

以 /dev/sddlmaa爲例,首先用fdisk查看磁盤的大小:
[root@dmdb2 log]# fdisk -l /dev/sddlmaa
Disk /dev/sddlmaa: 536.8 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sddlmaa1 1 65270 524281243+ 83 Linux
[root@dmdb2 log]# expr 536870912000 / 1048576 / 1024
500
以上可以看出 /dev/sddlmaa 大小爲500GB, 但是df -h顯示的結果爲493G,誰動了我的7GB空間?!
猜想一下,文件系統元數據(inode), 保留空間,還是其他?
以下我們用tune2fs命令來查看 /dev/sddlmaa的superblock信息,看看7GB空間去哪兒了?
[root@dmdb2 log]# tune2fs -l /dev/sddlmaa1
tune2fs 1.39 (29-May-2006)
Filesystem volume name:
Last mounted on:
Filesystem UUID: b60c1597-b8df-4573-939f-9b9b7cbb27e8
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal resize_inode dir_index filetype needs_recovery sparse_super large_file
Default mount options: (none)
Filesystem state: clean
Errors behavior.: Continue
Filesystem OS type: Linux
Inode count: 65536000
Block count: 131070310
Reserved block count: 6553515
Free blocks: 128903916
Free inodes: 65535216
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 992
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 16384
Inode blocks per group: 512
Filesystem created: Tue Sep 27 13:44:47 2011
Last mount time: Fri May 11 05:43:36 2012
Last write time: Fri May 11 05:43:36 2012
Mount count: 7
Maximum mount count: 35
Last checked: Tue Sep 27 13:44:47 2011
Check interval: 15552000 (6 months)
Next check after: Sun Mar 25 13:44:47 2012
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Journal inode: 8
Default directory hash: tea
Directory Hash Seed: 04e7940a-f2d4-4ea0-b0a4-78134302d050
Journal backup: inode blocks
根據tune2fs的結果,inode空間大小如下:
[root@dmdb2 log]# expr 65536000 * 128 / 1048576 / 1024
7
正好是7GB,這驗證我們前面的猜測!
至此我們的7GB空間找回了,回到正題還以/dev/sddlmaa爲例, Size - Avail - Used= 516054864 - 543296 - 489297508 (KB)
[root@dmdb2 log]# echo “516054864 - 543296 - 489297508”|bc
26214060
這麼多26214060KB的空間哪兒去了呢? 系統隱藏了,保留了? 如果是,這些空間做什麼呢,可以被釋放嗎?

保留空間(Reserved block)做什麼的? 這個空間可以調整嗎(參考命令: tune2fs -m 0 )?
保留空間功能:
1. 減少Linux文件系統碎片;
2. 在磁盤分區沒有剩餘空間的時候.,root用戶也可以登陸維護,或者系統記錄日誌.
File system Reserved Block Count is supposed to reduce Linux file system defragmentation,
to allow root user login for maintenance or to allow Linux system logging facility to function properly
in case file system running low of free disk space.
通常情況下,保留空間大小爲 (disk size - inode size ) * 5%
根據tune2fs的結果,保留空間大小如下:
[root@dmdb2 log]# expr 6553515 * 4
26214060 (KB)
這個值正好等於上面的 Size - Avail - Used

小結, df 命令結果顯示的 Size 不等於 Avail + Used, 實際上 Avail + Used = 0.95 * Size, 剩餘0.05爲保留空間.
這個Size爲磁盤可存儲數據的大小,實際的裸盤大小參考 fdisk -l中的bytes.

發佈了163 篇原創文章 · 獲贊 67 · 訪問量 80萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章