Чи є спосіб змусити ext-файлові системи використовувати менше місця для себе в Linux?


48

У мене є маса зовнішніх і внутрішніх жорстких дисків, які я використовую в системі Linux. У мене є лише системи Linux, тому використання файлової системи Linux має сенс, правда? Однак на даний момент я використовую NTFS скрізь, тому що це дає мені найбільш корисний простір із жорстких дисків.

Хоча я хотів би перейти на файлові системи Linux зараз, в основному через дозволи та сумісність (наприклад, я не можу отримати зашифрований LUKS розділ NTFS для зміни розміру під Linux, продовжує говорити мені про chkdsk під Windows).

Однак, коли я відформатував ці жорсткі диски, я випробував купу різних файлових систем і кожної файлової системи Linux, навіть ext2, яка, наскільки я знаю, не має журналів, використовувала багато місця для себе. Я не пам'ятаю точних значень, але саме на 100 ГБ NTFS отримав більше на 2 ТБ жорсткому диску, що дуже багато.

Отже, моє запитання: чи існує спосіб змусити ext-файлові системи використовувати менше місця для себе? Або є інша файлова система (я пробував ext2, ext3, ext4, NTFS і vfat - жодна з них не наблизилася до зручного простору, який мені запропонував NTFS) з ідеальною підтримкою Linux та великим корисним простором?

Я хотів би почути про те, як і чому файлові системи (особливо ext2, у яких немає журналу), використовують набагато більше місця, ніж NTFS, і я не знаю, де б ще запитати. Я переважно віддаю перевагу способу використання ext4 без ведення журналів і нічого іншого, що займає стільки місця, якщо це можливо.



4
У мене є, і це пояснило, що використовує додатковий простір, але різниця між NTFS і ext набагато більша, ніж між reiserfs і ext, і мені цікаво, чи є спосіб зменшити його. Наприклад, на 1 ТБ жорсткому диску я можу використовувати 989 ГБ з NTFS. ext4 дав би мені близько 909 ГБ.
конфетті

Досить справедливо. Пристойне запитання і відповідь теж освічуюча.
JakeGould

3
як ви насправді вимірюєте, який простір є? це важливо, оскільки залежно від того, на які значення ви дивитесь, ви можете чи не побачите ефект 5% резервування, наприклад, як зазначено у пов'язаному питанні
eMBee

2
Майте на увазі, що ведення журналів у файлових системах, таких як ext3 та ext4, - це добре. Втратити живлення до зовнішнього накопичувача досить просто або від'єднати від розетки, якщо це USB, якщо це трапляється, часто нічого не буває, оскільки він заживає за допомогою журналу, коли він починає створювати резервну копію. Без цієї сітки безпеки все було б набагато гірше. Це не просто справа більше, а краще.
Джо

Відповіді:


97

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

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

5-відсоткова сума була встановлена ​​в 1980-х роках, коли дисків було значно менше, але їх просто залишили як є. Сьогодні 1%, мабуть, достатньо для стабільності системи.

Замовлення може бути змінено з допомогою -mопції в tune2fsкоманді:

tune2fs -m 0 /dev/sda1

Це встановить відсоток зарезервованих блоків на 0% (0 блоків).

Щоб отримати поточне значення (серед інших), скористайтеся командою:

tune2fs -l <device> 

10
Це б чудово пояснило величезну різницю у використаному просторі (оскільки 5% 2 ТБ - це 100 Гб). Диски не використовуватимуться ні для чого, як пов’язані з root або системними файлами, тому я думаю, що це було б заощадити, щоб вимкнути це. Однак у мене виникло питання: як кореневі програми знають, що більше вільного простору, ніж некореневі програми? Виконання dfяк некорінне порівняно з кореневим не виявляє різниці.
конфетті

12
@confetti: Оскільки VFS не відхиляє їх спроби запису на диск з помилкою ( звичайно, поки гучність фактично не заповнена).
Ігнасіо Васкес-Абрамс

1
tune2fs -l <device>повинні надавати цьому значення серед інших. 5-відсоткова сума була встановлена ​​в 1980-х роках, коли дисків було значно менше, але їх просто залишили як є. Сьогодні 1%, мабуть, достатньо для стабільності системи.
harrymc

7
XFS резервує менше 5% або 8192 блоки (32 МіБ), тому зарезервована кількість зазвичай невелика порівняно з розміром файлової системи.
Майкл Хемптон

5
Дуже дякую всім за пояснення. Це дуже допомогло мені зрозуміти. Раніше мій диск повністю заповнювався до останнього байта, але моя система не вийшла з ладу повністю, тепер я розумію, чому.
конфетті

3

якщо дані, які ви збираєтеся зберігати на ній, є компресійними, btrfs, встановлений з compress=zstd(або compress-force=zstd), може використовуватись значно менше дискового простору, ніж ext *

  • це змусить btrfs прозоро стискати ваші дані перед тим, як записати їх на диск, і прозоро розпакувати при читанні. Крім того, ext4 попередньо виділяє всі inode при створенні файлової системи, btrfs створює їх у міру необхідності, я думаю, це також може заощадити простір.

1
Ви не хочете додати до цієї відповіді більше інформації? (Як це працює, що робить, можливо, довідка, ...)
конфетті


Мені дуже подобається ця ідея, але більше інформації про те, як це вплине на швидкість та продуктивність, і таке було б непогано.
конфетті

2
@confetti, оскільки ви використовуєте жорсткий диск, це, ймовірно, підвищить продуктивність. Процесори настільки швидші, ніж жорсткі диски, що повільна частина доступу до диска - це отримання даних на диск і його вимикання; час, витрачений на стискання чи розпакування, не буде помітним.
Марк

2
З іншого боку, більшість типів великих файлів на сьогодні (наприклад, зображення, аудіо, відео, навіть найбагатші формати текстових документів), як правило, вже стиснуті, і, як правило, не отримують користі від додаткового стиснення. Принаймні, не з простого роду загального призначення, що виконується на рівні файлової системи.
Ільмарі Каронен

3

Ще один момент, про який ще не говорилося, - це кількість входів, які ви резервуєте у вашій файловій системі.

За замовчуванням mkfs створює кількість вкладень, які повинні дозволяти поміщати у вашу файлову систему цілу кількість дуже маленьких файлів. Якщо ви знаєте, що файли будуть дуже великими, і ви розмістите лише невелику кількість файлів на FS, ви можете зменшити кількість входів.

Піклуватися! Це число (відповідно співвідношення між простором та кількістю входів) можна встановити лише під час створення файлової системи. Навіть при продовженні FS співвідношення залишається колишнім.


Крім того, якщо ви знаєте, що збираєтеся зберігати безліч дійсно крихітних файлів, ви можете збільшити кількість вкладень і зменшити розмір блоку, щоб не витрачати стільки місця. (Кожен файл повинен споживати мінімум один блок, навіть якщо це 1 байт. Використовуйте ls -ls для порівняння розміру з тим, що використовується на диску.)
Перкінс

@Perkins Ви маєте рацію, але я думаю, що це стосується ДУЖЕ крихітних файлів: розмір блоку за замовчуванням - 4кіБ (IIRC), мінімальний - 1 кіБ. Тому не так вже й багато, щоб виграти, за винятком того, що ваш диск справді наповнений тими файлами. Але все-таки я можу зануритися в це завтра.
glglgl

2
або в якості альтернативи використовувати btrfs, що створює inode за потребою. враховуючи, що введення ext4 виділяється під час створення файлової системи і не може бути змінено розмір після створення, із жорстким обмеженням в 4 мільярди, вставки btrfs динамічно створюються у міру необхідності, а жорсткий межа становить 2 ^ 64, приблизно 18,4 квінтільйона, що становить приблизно 4,6 мільярда разів перевищує жорстку межу maxed ext4: p
hanshenrik

Нагадує мені встановити котушку Usenet. ext4 зберігатиме крихітні (ліміт - десь 60-160 байт залежно від безлічі речей) у самій inode.
mr.spuratic

@hanshenrik Зауважте, що у вас є однакове обмеження блокування на btrfs (з кількома додатковими способами обійти його), тому вам все одно потрібно знати, які файли (великі чи маленькі або обидва) ви збираєтеся зберігати і відповідно налаштуйте вашу файлову систему, якщо ви хочете вичавити з неї максимальний обсяг пам’яті. Наявність автоматичного стиснення дуже допомагає, хоча ви зберігаєте пухнасті дані.
Перкінс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.