Расхождение между df и du
У меня есть вопрос, касающийся различий между "df -h" и "du -bs". Я видел несколько вопросов по этому поводу, но проблема заключалась в том, что df -h сообщал о более занятом пространстве, чем du -bs. У меня противоположная проблема:
[root @ CDPPRIM01 oracle-dbf] # du -bs 336178610176. [root @ CDPPRIM01 файлы данных] # df -h | grep dbf / dev / sda2 360G 272G 85G 77% / opt / oracle-dbf [root @ CDPPRIM01 datafiles] # ls -la всего 284550000 drwxrwxr-x 2 oracle oinstall 4096 9 апреля 14:13 . drwxr-xr-x 4 root root 4096 апр. 3 10:33.. -rw-r ----- 1 оракул dba 9748480 11 апреля 17:01 control01.ctl -rw-r ----- 1 оракул dba 9748480 11 апреля 17:01 control02.ctl -rw-r ----- 1 оракул dba 968892416 11 апреля 16:20 pn310_admin_DATA22.dbf -rw-r----- 1 оракул dba 104865792 11 апреля 16:20 pn310_admin_DATA.dbf -rw-r----- 1 оракул dba 32212262912 11 апр. 16:20 pn310_DATA11.dbf -rw-r----- 1 oracle dba 32212262912 11 апреля, 17:00 pn310_DATA12.dbf -rw-r----- 1 oracle dba 32212262912 11 апреля 17:00 pn310_DATA13.dbf -rw-r----- 1 оракул dba 32212262912 11 апреля 16:20 pn310_DATA14.dbf -rw-r----- 1 оракул dba 5242888192 11 апреля 17:01 pn310_DATA15.dbf -rw-r----- 1 оракул dba 1073750016 11 апреля 17:00 pn310_DATA.dbf -rw-r----- 1 оракул dba 5798633472 11 апреля 16:20 pn310_dwe_DATA20.dbf -rw-r----- 1 оракул dba 1073750016 11 апреля 16:20 pn310_dwe_DATA.dbf -rw-r----- 1 оракул dba 104865792 3 апреля 10:42 pn310_dwe_TEMP.dbf -rw-r----- 1 оракул dba 5263859712 3 апреля, 11:28 pn310_dwe_temp_TEMP9.dbf -rw-r----- 1 оракул dba 32212262912 11 апреля 16:20 pn310_ep_DATA16.dbf -rw-r----- 1 oracle dba 32212262912 11 апреля 16:20 pn310_ep_DATA17.dbf -rw-r----- 1 оракул dba 32212262912 11 апреля 16:20 pn310_ep_DATA18.dbf -rw-r----- 1 оракул dba 9437192192 11 апреля 16:20 pn310_ep_DATA19.dbf -rw-r----- 1 оракул dba 1073750016 11 апреля 16:50 pn310_ep_DATA.dbf -rw-r----- 1 оракул dba 104865792 3 апреля 10:42 pn310_ep_TEMP.dbf -rw-r----- 1 оракул dba 16001277952 3 апреля 11:27 pn310_ep_temp_TEMP8.dbf -rw-r----- 1 оракул dba 104865792 11 апреля 06:00 pn310_TEMP.dbf -rw-r----- 1 оракул dba 16001277952 11 апреля 17:01 pn310_temp_TEMP7.dbf -rw-r----- 1 оракул dba 11811168256 11 апреля 16:51 pn310_xmp_DATA21.dbf -rw-r----- 1 оракул dba 1073750016 11 апреля 17:00 pn310_xmp_DATA.dbf -rw-r----- 1 оракул dba 104865792 3 апреля 10:42 pn310_xmp_TEMP.dbf -rw-r----- 1 оракул dba 2042634240 3 апреля, 11:29 pn310_xmp_temp_TEMP10.dbf -rw-r----- 1 оракул dba 566239232 11 апр. 17:00 sysaux01.dbf -rw-r----- 1 оракул dba 4802486272 11 апреля 16:57 sysaux_DATA24.dbf -rw-r----- 1 оракул dba 754982912 11 апр. 16:58 system01.dbf -rw-r----- 1 оракул dba 4613742592 11 апреля 17:00 system_DATA23.dbf -rw-r----- 1 оракул dba 1073750016 10 апр. 23:07 temp01.dbf -rw-r----- 1 оракул dba 1073750016 апр. 3 10:38 temp02.dbf -rw-r----- 1 оракул dba 3221233664 3 апреля, 11:31 temp_TEMP11.dbf -rw-r----- 1 оракул dba 1073750016 11 апреля 17:01 undotbs01.dbf -rw-r----- 1 оракул dba 1073750016 11 апреля 17:00 undotbs02.dbf -rw-r----- 1 оракул dba 13958651904 11 апреля 17:01 undotbs1_DATA26.dbf -rw-r----- 1 оракул dba 5251072 11 апр. 16:20 users01.dbf -rw-r----- 1 оракул dba 1068507136 11 апреля 16:20 users_DATA25.dbf
При добавлении всех файлов мы получаем 336178593792, что в ГБ равно: 336178593792/1024/1024/1024 = 313 ГБ, что больше, чем 272 ГБ, о которых сообщает df -h.
Я уже сделал umount и fsck, чтобы проверить раздел, и он чистый. Кто-нибудь знает, что может быть причиной этого поведения?
2 ответа
Я не совсем уверен, что здесь происходит, но я могу дать вам несколько советов.
du -b
подразумевает--apparent-size
вариант. Отdu
справочная страница:--apparent-size print apparent sizes, rather than disk usage; although the apparent size is usually smaller, it may be larger due to holes in (`sparse') files, internal fragmentation, indirect blocks, and the like -b, --bytes equivalent to `--apparent-size --block-size=1'
Я не уверен, как oracle работает с файлами базы данных, но меня не удивит, если некоторые из них действительно будут редкими. Я думаю, что это наиболее вероятная причина, см. Здесь для обсуждения того, как это может повлиять
du
,На этой странице есть хорошее объяснение некоторых различий между способами расчета использования диска двумя программами.
Немного более актуальной информации от
df
справочная страница:-h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G) Display values are in units of the first available SIZE from --block-size, and the DF_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE environment variables. Otherwise, units default to 1024 bytes (or 512 if POSIXLY_CORRECT is set). SIZE may be (or may be an integer optionally followed by) one of following: KB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.
Одна возможность была бы редкими файлами. Если большие части данного файла не содержат данных, никакие физические блоки не должны быть выделены для этих частей файла, при условии, что ОС и файловая система поддерживают это.
Чтобы проверить наличие разреженных файлов, используйте invoke ls с переключателями -s
(показать место на жестком диске) и -k
(показать размеры в кибибайтных блоках).
Пример вывода:
$ df -H /dev/sda1
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 118G 38G 75G 34% /
$
$ dd if=/dev/zero of=1GB-normal bs=1GB count=1 # normal file (1 GB)
$
$ df -H /dev/sda1
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 119G 38G 75G 34% /
$
$ dd if=/dev/zero of=1GB-sparse bs=1GB count=0 seek=1GB # sparse file (1 GB)
$
$ df -H /dev/sda1
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 119G 38G 75G 34% /
$
$ ls -lks
total 976568
976568 -rw-rw-r-- 1 dennis dennis 976563 Apr 11 13:05 1GB-normal
0 -rw-rw-r-- 1 dennis dennis 976563 Apr 11 13:06 1GB-sparse
Поскольку разреженный файл не занимает (почти) физическое пространство на диске, вывод df не изменяется после его создания.