2

в нашей организации у нас есть файловый сервер Windows, который я использую для хранения большого количества файлов. Этот файловый сервер монтируется с использованием smbmount на 2 кластера.

Кластер A работает под управлением CentOS 4.8 и du версии 5.2.1. Кластер B работает под управлением Ubuntu 8.04.4 и du version 6.10.

Когда я запускаю du cmd на кластере A, для определенной папки я получаю

user@ClusterA:~/particular_dir$ du -h
....
637G  .

Однако, когда я запускаю du cmd на кластере B, для той же папки я получаю

user@ClusterB:~/particular_dir$ du -h
....
1.1T  .

Почему такая большая разница? Хотя разные версии ОС и du, конечно, размер файла равен размеру файла.

2 ответа2

1

Что если вы попробуете ls -1s? Он печатает размер файла в блоках. Или что, если вы попробуете ls -1ak (который сообщает о результатах с blockize = 1k) или просто просто ls -lah , результаты на серверах выглядят одинаково?

Я подозреваю, что Samba решает использовать разные размеры блоков в разных версиях, поэтому при составлении отчетов могут получаться ложные отчеты по общему сетевому ресурсу. du означает использование диска, а не использование файла :-), и в целом такие вещи, как размер файловой системы и размер блока файловой системы, имеют значение, если у вас много файлов вокруг.

0

С одной стороны, такая отчетность действительно кажется запутанной. Это происходит из-за разницы в размере блока (512, 1k, 4k и т.д.), Определенного для конкретной файловой системы, а также из-за количества файлов, описанных в метаданных (файловая система обычно хранит его на одном устройстве, увеличивая тем самым объем диска). использование).

С другой стороны, очень удобно выяснить, каков полезный (фактический) размер данных и как он отличается от использования дискового пространства = полезный размер данных + размер метаданных + фрагментация (использование файлового пространства в терминах du).

Чтобы сообщить об использовании диска вместо реального размера:

# du -sh Data/
2.0T    Data/

Теперь, чтобы сообщить полезный размер файла:

# du -sb Data/
1650071895576   Data/

Это 1,5 Тб, что означает, что 0,5 Тб используется для метаданных (мета-блоков, например, inode-ов) и хвостовых фрагментов в блоках, которые выделены, но не используются в самом конце файла (верно для всех файлов с размером делится на размер блока). Имея размер файла 2М с размером блока 4096 со средней фрагментацией, скажем, ~ 512b, можно объяснить "потерю" дискового пространства 0,5–1 ТБ. Следовательно, смежные данные экономят место.

Также, пожалуйста, смотрите человек для

-b, --bytes эквивалентно `--apparent-size --block-size = 1 '

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .