Почему использование диска больше, чем размер всех файлов на нем?

У меня есть жесткий диск объемом 3 ТБ. На экране свойств жесткого диска он говорит, что я использовал 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,4 ГБ?

8
задан 2 January 2013 в 19:23

2 ответа

Файлы на диске имеют два размера: «видимый размер» и «размер на диске». Несколько причин могут вызвать большое несоответствие:

  • Большое количество файлов приведет к большим издержкам из-за внутренней фрагментации. Например. Ext4 имеет размер блока по умолчанию 4 КБ; файлы меньшего размера будут всегда занимать 4 КБ, а размеры выше будут «округлены» до этого выравнивания блока.
  • Каталоги также являются файлами, и то же правило применяется и к ним. Более того, если вы создадите большое количество файлов в каталоге и удалите их позже, использование файла каталога не может быть восстановлено (воссоздание каталога помогает).
  • Разреженные файлы - это специальные файлы, которые выглядят большими, но не «занимают» место. Это распространено в виртуализации для образов виртуальных дисков; они будут казаться большими, но «реальный» размер может быть намного меньше. Многие утилиты (и файловые менеджеры) не способны показать фактическое использование диска.
  • Использование жестких ссылок. Содержимое файла может существовать на диске, в то время как на него указывают несколько ссылок. Некоторые файловые менеджеры могут учитывать размер для каждой ссылки.

Я бы предложил использовать инструмент использования диска, который, как известно, способен перечислять оба размера, чтобы увидеть, является ли это проблемой. Попробуйте ncdu в терминале и используйте a для переключения между фактическим использованием и использованием диска.


Короткая демонстрация внутренней фрагментации из-за файловой системы размером 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
0
ответ дан 2 January 2013 в 19:23

Это происходит потому, что общее использование диска никогда не равно сумме всех файлов там (что показывает Наутилиус, когда вы выбираете все файлы).

Причина этого заключается в том, что сами файловые системы, как правило, занимают некоторое место на разделе. Скорее всего, если вы уничтожите все данные, хранящиеся на этом жестком диске, использование диска составит около 150 ГБ. Это пространство зарезервировано для файловой системы - это необходимо, поскольку файловая система должна где-то хранить данные о файлах. ext4 предварительно выделяет это служебное пространство до создания любых файлов, в отличие от - например - ext3, где это пространство увеличивается по мере добавления файлов в раздел.

Если вы рассматриваете эти 150 ГБ как проблему, обратите внимание, что это всего лишь 5% от вашего общего размера жесткого диска . Если вам потребуется более 95% на жестком диске, вам, вероятно, нужно купить больший, вместо того, чтобы беспокоиться о тех 150 ГБ, которые находятся за пределами вашей досягаемости.

Кроме того, имейте в виду, что в случае ext4 это пространство не теряется. Фрагментация данных здесь не проблема, но цена этого преимущества заключается в том, что они занимают дополнительное место. Есть способы уменьшить его и заставить ext4 использовать намного меньше этого пространства, но это не рекомендуется, поскольку - из-за вероятности фрагментации и других оптимизаций, которые не могут быть выполнены - это очень вероятно приведет к работе вашей машины. намного медленнее, поскольку доступ к данным не будет таким плавным.

0
ответ дан 2 January 2013 в 19:23

Другие вопросы по тегам:

Похожие вопросы: