розбіжності розміру розділу / вільний простір


14

Створюючи резервний розділ 250GiB для моїх даних, я помітив безліч розбіжностей між розміром повідомленого розділу та вільним простором у Nautilus, gParted, df, tune2fs тощо.

Спочатку я подумав, що це плутанина GiB / GB. Це не було .

Тоді я подумав, що це можуть бути зарезервовані блоки ext4. Це не було .

Я зовсім спантеличений. Ось кілька зображень. Ось такі кроки:

  • По-перше, NTFS. 524288000 секторів x 512 байт / сектор = 268435456000 байт = 268,4 ГБ = 250 ГБ.

введіть тут опис зображення введіть тут опис зображення

Nautilus говорять " Загальна ємність: 250,0 ГБ " (навіть якщо це фактично ГіБ, а не ГБ). Окрім незначних помилок, поки що, так добре

  • Тепер той самий розділ, сформований як ext4 з gparted:

введіть тут опис зображення

По-перше, останній та загальний сектори однакові. Це той самий розділ 250GiB. Використовуваний розмір - 4.11GiB (можливо, зарезервовані блоки?)

введіть тут опис зображення

Ні. Схоже, що зарезервовані блоки - 12,7 Гб (~ 5%. Ой! ). Але ... чому загальна ємність зараз становить лише 246,1 ГіБ ??? . Ця різниця (на зразок) відповідає 4,11 ГБ, про які повідомляє gparted. Але ... якщо це не із зарезервованих блоків, що це? І чому gparted не повідомив, що 12,7 Гбіт використовуваного простору?

$ df -h /dev/sda5
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             247G  188M  234G   1% /media/BACKUP

dfвідповідає Nautilus у повідомленому вільному просторі. Але .. використано лише 188М? Чи не повинно бути ~ 12 Гб? І загальна потужність все ще помиляється. Тож я побіг tune2fsзнайти деякі підказки. (нерелевантний вихід вимкнено)

$ sudo tune2fs -l /dev/sda5
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   BACKUP
Filesystem UUID:          613d592e-47f5-4206-96a7-210090d340ef
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Filesystem state:         clean
Filesystem OS type:       Linux
Block count:              65536000
Reserved block count:     3276800
Free blocks:              64459851
First block:              0
Block size:               4096

Всього 65536000 блоків * 4096 байт / блок = 268435456000 байт = 268,4 ГБ = 250 ГБ. Це відповідає gparted.

3276800 зарезервованих блоків = 13421772800 байт = 13,4 ГБ = 12,5 Гб. Це (знову ж таки, подібне) відповідає Наутілусу.

64459851 вільних блоків = 264027549696 байт = 264,0 ГБ = 245,9 Гб. Чому? Чи не повинно бути або 250-12,5 = 237,5 (або 250- (12,5 + 4,11) = ~ 233)?

Видалення зарезервованих блоків:

$ sudo tune2fs -m 0 /dev/sda5
tune2fs 1.41.12 (17-May-2010)
Setting reserved blocks percentage to 0% (0 blocks)

$ sudo tune2fs -l /dev/sda5
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   BACKUP
Filesystem UUID:          613d592e-47f5-4206-96a7-210090d340ef
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Filesystem state:         clean
Filesystem OS type:       Linux
Block count:              65536000
Reserved block count:     0
Free blocks:              64459851
Block size:               4096

Як і очікувалося, те саме число блоків, 0 зарезервованих блоків, але ... такі ж безкоштовні блоки ? Хіба я щойно звільнив 12,5 Гб?

$ df -h /dev/sda5
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             247G  188M  246G   1% /media/BACKUP

введіть тут опис зображення

Схоже, я і зробив. Доступний простір збільшився з 233 до 245,9 Гб. gparted зовсім не піклувався, показуючи точно таку ж інформацію! (даремно публікувати ідентичний знімок екрана)

Який величезний безлад!

Я спробував це задокументувати якнайкраще ... Отже, будь ласка, хтось може дати мені якусь підказку щодо того, що відбувається тут?

  • Які ті загадкові 4,11 Гб не вистачають у форматі NTFS -> ext4?
  • Чому існує так багато розбіжностей між gparted, Nautilus, tune2fs, df?
  • Що не так з моєю математикою? (питання жирним шрифтом розсипали цю публікацію)

Будь-яка допомога вдячна. Поки я не можу зрозуміти, що відбувається, я серйозно розглядаю можливість відмовитися від ext4 на користь NTFS для всього, крім мого / розділу.

Спасибі!




@Uri Herrera: ти насправді читав моє запитання чи хоча б перші кілька рядків? Це не проблема GiB / GB. Розділ становить 268,4 ГБ = 250,0 Гбіт, а не 246,1
MestreLion

1
Ще одну відповідь, яку ви можете подивитися: askubuntu.com/questions/5335/…
enzotib

Відповіді:


13

Тут відбувається кілька речей. gparted повідомляє про фактично використаний / вільний простір. Ядро зменшує кількість доступних зарезервованого місця. Після того, як ви видалили зарезервований простір, кількість вільних рахунків не змінилася, оскільки зарезервовані блоки вже були вільними; це просто те, що некористувальні користувачі не можуть вторгнутись у цей простір, щоб запобігти виникненню проблем, заповнивши диск. Номери гномів трохи лускаті через помилку . Замість повідомлення про використаний простір, про який повідомляє ядро ​​(і df показує), воно обчислює його, віднімаючи вільний простір від загального. Це призводить до того, що він відображає зарезервований простір як раніше.

Фактично відсутній 4 Гб - це накладні витрати fs для ext4. NTFS лише спочатку виділяє невелику кількість місця для MFT та збільшує його за потребою. Однак, серія файлових систем ext виділяє простір для таблиці inode (приблизний еквівалент MFT) під час форматування, і вона не може рости. Простір, відсутній у повідомленому загальному просторі, є таблицею inode. Інший біт використовуваного простору знаходиться в журналі (зазвичай це 128 mb) та розмірі розмірів утворень.


Дякую, +1 за розв’язання деяких таємниць! Але якщо ~ 4 Гб файлова система накладні, чому частина її (3,9 ГБ) віднімається із загального простору, тоді як 188 МБ відображається як фактично використана? Який (або обидва) накладні витрати? А чому поводилися інакше? Крім того, dfнавіть із судо показує загальну ємність (247 Гб) та використаний простір (188 МБ), як Nautilus. Тож якщо його помилка, її не тільки гнома.
MestreLion

Я подумав, що 188 Мб - це накладні витрати (порівняно з 72 Мб від NTFS). Але, якщо накладні витрати NTFS будуть зростати з часом, чи це означає, що Nautilus пізніше повідомить, що загальна потужність зменшується ?
MestreLion

Виправлення: df завжди показує наявний простір, незалежно від того, хто ним керує. Щоб побачити вільний простір (== вільний простір + зарезервований простір), використовуйте stat -f /media/BACKUP.
Маріус Гедмінас

Відредагована відповідь для уточнення. І я вважаю, що NTFS просто повідомить про більше використовуваного простору, а не зменшиться в міру зростання MFT. @Marius, це теж неправильно. statfs () і, отже, і df і stat -f обидва показують наявний простір, не рахуючи зарезервовані блоки. Я міг би присягнути, що він також коригував квоту, і міняв свою відповідь залежно від того, хто викликає користувача, але ви маєте рацію щодо цього; вона не рахує квоту і не байдуже, як її називає користувач.
psusi

@psusi: тож у мене ~ 3.9GiB таблиці inode, і ~ 188MB журналу + щось? І Nautilus віднімає таблицю inode від Total Size, а журнал звітів використовує простір? І gparted повідомляє про них як про єдиний 4.11GiB використаного простору? Це правильно? Якщо так, я просто хотів, щоб Наутілус управляв обома накладними однаково. Або обидва віднімали від загального, або обидва рахували як "використаний простір" (бажано).
MestreLion

7

Перш за все, зарезервовані блоки не є блоком, який використовується для внутрішнього управління файловою системою.

Зарезервовані блоки просто зарезервовані для того root, щоб гарантувати, що сервіси, що використовують файли на цьому розділі, не можуть бути виключені з простору деяким не-адміністратором, який заповнює весь простір.

Навіть не маючи зарезервованих блоків ( -m 0), завжди є частина простору, що використовується для внутрішнього управління файловою системою, я не можу сказати, наскільки я не маю таких глибоких знань.

Крім того, Gparted виконується як root, тому він бачить зарезервовані блоки як вільні. Nautilus , виконаний як користувач, розглядає їх як невільні.

Гаразд, відповідь @psusi дуже чітка, мені нічого додати.


Гум, дуже інформативний, +1. Принаймні, це вирішує деякі проблеми, які я знайшов. Бачити зарезервовані блоки як "обмеження обмеження" для некорінних, а не "використаних блоків", gparted, df та tune2fs читання погоджуються (і мають сенс). Але деякі питання все ще залишаються, зокрема 4 Гб використовуваного простору / загальної ємності.
MestreLion

1
Крім того, я десь прочитав (один із тих старих "чому вам не потрібно дефрагментувати свій Linux-розділ щомісяця" HOWTOs?), Що резервування 5% простору для root дає деякий дихальний простір алгоритмам розподілу extN і тому уникає роздробленість.
Маріус Гедмінас

1

Спробуйте зменшити розмір розділу на кілька мегабайт за допомогою gparted, а потім знову збільшити його до початкового розміру. Це може призвести до того, що інші програми правильно прочитають розміри. Я нещодавно таким чином виправив помилку 50Gb!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.