Почему использование диска больше, чем размер всех файлов на нем?
У меня 3 ТБ HDD. На экране свойств жесткого диска он говорит, что я использовал 471,4 ГБ, но когда я выбираю все файлы в nautilus, он говорит, что выбран 321,0 ГБ. Если у меня есть только 321,0 ГБ файлов на жестком диске, почему он использует 471,4 ГБ?
Разделение жесткого диска использует GUID и файловую систему, используемую в EXT4. Когда я выбираю жесткий диск с помощью приложения Disk Utility, я получаю предупреждение:
WARNING: The partition is misaligned by 3072 bytes.
This may result in very poor performance. Repartitioning is suggested.
Это как-то связано с отсутствующими 150.4GB?
2 ответа
Файлы на диске имеют два размера: "видимый размер" и "размер на диске". Несколько причин могут вызвать большое расхождение:
- Большое количество файлов приведет к большим накладным расходам из-за внутренней фрагментации. Например, Ext4 имеет размер блока по умолчанию 4 КБ; файлы меньшего размера будут всегда занимать 4 КБ, а размеры выше будут "округлены" до этого выравнивания блока.
- Каталоги также являются файлами, и к ним применяется то же правило. Более того, если вы создадите большое количество файлов в каталоге и удалите их позже, использование файла каталога не может быть восстановлено (воссоздание каталога помогает).
- Разреженные файлы - это специальные файлы, которые кажутся большими, но не "занимают" пространство. Это распространено в виртуализации для образов виртуальных дисков; они будут казаться большими, но "реальный" размер может быть намного меньше. Многие утилиты (и файловые менеджеры) неспособны показать фактическое использование диска.
- Использование жестких ссылок. Содержимое файла может существовать на диске, в то время как на него указывают несколько ссылок. Некоторые файловые менеджеры могут учитывать размер для каждой ссылки.
Я бы предложил использовать инструмент использования диска, который, как известно, способен перечислять оба размера, чтобы увидеть, если это проблема. Пытаться ncdu в терминале и используйте для переключения между фактическим и дисковым использованием.
Короткая демонстрация внутренней фрагментации из-за файловой системы размером 4 КБ с использованием du:
$ sudo tune2fs -l /dev/path-to-device | grep "Block size"
Block size: 4096
$ echo blaataaap > myfile # creates a 10-byte file
$ du --block-size=1 myfile # prints the usage on disk (filesystem)
4096 myfile
$ du --apparent-size --block-size=1 myfile # prints the apparent size, i.e.
10 myfile # content length when seeking
$ ls -al
-rw-rw-r-- 1 gert gert 10 Jan 1 23:24 myfile # ls uses apparent sizes
Это означает, что этот 10-байтовый файл на диске на 4086 байт больше, чем он показывается в листинге, и страдает от внутренней фрагментации.
Короткая демонстрация жестких ссылок и использования диска, показанная неверно при перечислении файлов (ls в этом случае):
$ dd if=/dev/zero of=1MBfile bs=1M count=1 # create a 1MB file
$ ln 1MBfile a_hard_link # create a hard link to it
$ ls -alht # ls will report 2MB
total 2.1M
drwxrwxr-x 2 gert gert 4.0K Jan 2 11:21 .
-rw-rw-r-- 2 gert gert 1.0M Jan 2 11:21 1MBfile
-rw-rw-r-- 2 gert gert 1.0M Jan 2 11:21 a_hard_link
$ du -B 1024 . # du reports 1028K total for directory
1028 .
$ du -B 1024 a_hard_link # and 1024K for each file individually
1024 a_hard_link
$ du -B 1024 1MBfile
1024 1MBfile
Это происходит потому, что общее использование диска никогда не равно сумме всех файлов там (что показывает Наутилиус после выбора всех файлов).
Причина этого заключается в том, что сами файловые системы имеют тенденцию занимать некоторое пространство на разделе. Скорее всего, если вы уничтожите все данные, хранящиеся на этом жестком диске, использование диска составит около 150 ГБ. Это пространство зарезервировано для файловой системы - это необходимо, поскольку файловая система должна где-то хранить данные о файлах. ext4 предварительно выделяет это служебное пространство перед созданием любых файлов, в отличие, например, от ext3, где это пространство увеличивается по мере добавления файлов в раздел.
Если вы рассматриваете эти 150 ГБ как проблему, обратите внимание, что это всего лишь 5% от вашего общего размера жесткого диска. Если вам потребуется более 95% на жестком диске, вам, вероятно, нужно купить больший, вместо того, чтобы беспокоиться о тех 150 ГБ, которые находятся за пределами вашей досягаемости.
Также имейте в виду, что в случае ext4 это пространство не теряется. Фрагментация данных здесь не проблема, но цена этого преимущества заключается в том, что они занимают дополнительное место. Есть способы уменьшить его и заставить ext4 использовать намного меньше этого пространства, но это не рекомендуется, поскольку - из-за вероятности фрагментации и других оптимизаций, которые не могут быть выполнены - это очень вероятно приведет к работе вашей машины. намного медленнее, поскольку доступ к данным не будет таким плавным.