Типи файлових систем. Сучасні файлові системи Повний порівняльний аналіз Файлові системи linux порівняння

Привіт читачі мого сайту сайт, хотів вам розповісти про існуючіі нові файлові системи, а також допомогти правильно її вибрати. Адже вибір залежить від швидкості роботи, комфорту та здоров'я, т.к. коли комп'ютер зависає, гальмує, не думаю, що вам це подобається і правильно впливає на нерви 🙂

Що ж таке файлова система і навіщо вона потрібна?

Просто кажучи, це система, яка служить для зберігання файлів і папок на жорсткому диску або на іншому носії, флешці, телефоні, камері і т.д. А також для впорядкування файлів та папок: переміщення їх, копіювання, перейменування. Так що за всі ваші файли відповідає ця система, ось чому вона така важлива.

Якщо вибрати неправильно файлову систему ваш комп'ютер може некоректно працювати, зависати, виснути, повільно надходити інформація, а ще гірше можливе псування даних. Це добре якщо не системне, а то з'явиться . А ще найголовніше, що якщо ваш комп'ютер гальмуватиме з цієї причини, ніякі чистки від сміття так і не допоможуть!

Види файлових систем?

Багато файлові системи пішли вже у минуле, а якісь тримаються на останньому подиху, т.к. сучасні технології зростають і зростають з кожним днем ​​і ось уже на підході зовсім нова файлова система за якою може і майбутнє! Давайте подивимося, з чого все начилося.

Fat 12

Fat - file allocation tableв перекладі таблиця розміщення файлів. Спочатку файлова система була 12-розрядною, використовувала максимум 4096 кластерів. Розроблялася вона дуже давно, ще за часів DOS і використовувалася для дискет та невеликих накопичувачів обсягом до 16 мб. Але на заміну прийшла більш удосконалена fat16.

Fat 16

Ця файлова системамістила вже 65525 і підтримувала диски розмірів 4.2 Гб, на той час це було розкішшю і тому вона добре справлялася. Але розмір файлу було перевищувати 2гб, та й з економічності не найкращий варіант, що більше обсяг файлу, то більше вписувалося кластер займає місця. Тому обсяг більше 512 мб використовувати не вигідно. У таблиці показано, скільки займає розмір сектора в залежності від величини носія.

Хоча на той час система справлялася, але надалі з'явилася низка недоліків:

1. Неможливо працювати з жорсткими дисками більше 8 Гб.

2. Неможливо створювати файли більше 2 Гб.

3. Коренева папка не може містити більше 512 елементів.

4. Неможливість працювати з розділами дисків понад 2 Гб.

Fat 32

Сучасні технології не стоять на місці і з часом і системи fat 16 стало не вистачати. на заміну прийшла fat 32. Ця система вже могла підтримувати диски розміром до 2 терабайт (2048 гігабайт) і вже економічно використовувати дисковий простір за рахунок менших кластерів. З плюсів ще те що немає обмежень щодо використання файлів у кореневій папці і більш надійна порівняно з попередніми версіями. Але найбільший мінус для теперішнього часу, що файли можуть пошкоджуватися і добре що це не призведе до . І другий головний мінус, що зараз файли перевищують розмір більше 4 Гб, а система не підтримує більшого обсягу одного файлу. Що часто виникають питання у користувачів чому я не можу завантажити фільм розміром 7гб, хоча на диску вільно 100гб, ось і вся проблема.

Тому мінусіві тут вистачає:

1. Файли об'ємом понад 4 Гб система, що не підтримує.

2. Система схильна до фрагментації файлів, через що система починає гальмувати.

3. Зазнає пошкодження файлів.

4. На сьогодні вже існують диски більше 2 Тб.

NTFS

І ось на заміну прийшла нова система ntfs(New Technology File System) що в перекладі файлова система нової технології, В якій прибрано ряд недоліків, але й мінусів вистачає. Ця система є останньою затвердженою, крім нової, про яку я розповім трохи нижче. Система з'явилася ще в 90-х роках, а затверджена в 2001 році при виході windows xp і використовується досі. підтримує диски розміром до 18 Тб, круто так? І при фрагментації файлів швидкість втрачається негаразд помітно. Безпека вже досягла хороших висот, при збої пошкодження інформації малоймовірна.

Мінусиі тут будуть:

1. Споживання оперативної пам'яті, якщо у вас оперативної пам'яті менше 64 мб, то ставити не рекомендується.

2. Залишаючи 10% вільного місця на жорсткому диску, система починає помітно гальмувати.

3. Робота з малим обсягом накопичувача може бути утруднена.

Нова ReFS

Зовсім нова файлова система ReFS ( Resilient File System) у перекладі відмовостійка файлова система, розроблена для нової операційної системи Windows, за якою може бути і майбутнє!За словами розробників система має бути надзвичайно надійною і незабаром після доопрацювання, буде підтримуватися інших операційних системах. Ось таблиця, відмінностей:

Як видно, нова система підтримує великі обсяги дискового простору, так і більшу кількість символів у дорозі та імені файлу. Система обіцяє бути безпечнішою в якій має бути мінімум збоїв через нову архітектуру та інший спосіб запису журналу. Поки видно звичайно одні плюсиале на скільки це правда поки що не відомо. Після повного затвердження можливо з'явиться і ряд мінусів. Але поки що це залишається ще загадкою. Будемо сподіватися, що нова файлова система принесе нам тільки позитивні відчуття від неї.

Яку ж файлову систему вибрати?

На добре продуктивний комп'ютер краще ставити Ntfs, вона підійде продуктивніше та безпечніше для цих цілей. Не рекомендується ставити на комп'ютери, у яких об'єм жорсткого диска менше 32ГБ та оперативної пам'яті 64 Мб. А стареньку fat32можна ставити на флешки із невеликим обсягом, т.к. продуктивність може бути вищою. І ще один момент, що відформатувавши флешку для телефону, цифрової камери та інших електронних пристроїв у форматі ntfs, у вас можуть бути помилки, т.к. деякі пристрої можуть не підтримувати NTFS або гальмувати з нею і видавати збої. Так що перед форматуванням переконайтеся, яка файлова система краща для вашого пристрою.

Існують і інші види файлових систем, наприклад для Лінуксів XFS, ReiserFS (Reiser3), JFS (Journaled File System), ext (extended filesystem), ext2 (second extended file system), ext3 (third extended filesystem), Reiser4, ext4, Btrfs (B-tree FS або Butter FS), Tux2, Tux3, Xiafs, ZFS (Zettabyte File System), але це зовсім інша історія.

Був час, коли питання, винесене в заголовок статті, просто не стояло перед користувачами. Незважаючи на те, що файлових систем було більше однієї ще до моменту появи перших персоналок, вибору зазвичай не існувало. Просто тому, що різних несумісних (або лише частково сумісних) архітектур комп'ютерів було багато, за кожною стояла конкретна фірма, яка використовує свою власну операційну систему і має уявлення про те, що таке добре і що таке погано. Причому ще й носії даних застосовувалися різні та несумісні. А якщо і сумісні апаратно (наприклад, НГМД використовувалися багатьма обчислювальними системами, причому основні типорозміри дисководів на апаратному рівні були стандартизовані), то дані всі організовували по-своєму. Більш-менш сумісними виявилися стрічкові накопичувачі, оскільки так склалося історично, що ще з часів «великих» комп'ютерів саме вони найчастіше застосовувалися для обміну даними між системами різної архітектури. Але єдиними масовими магнітофонами, які використовувалися спільно з персоналками, виявилися побутові, а примітивність типових компакт-касет приводила до того, що всі виробники, якщо вже їх і використовували, намагалися «вичавити» з носія максимум, причому всі робили це різними способами.

Ситуація покращилася лише тоді, коли стало ясно, що лінійка IBM PC (прародителька практично всіх архітектур ПЕОМ, що вижили на сьогоднішній день) поступово стає стандартом де-факто в галузі (і не тільки). Ну а коли на ринку з'являється домінуюча архітектура, решта змушені це враховувати - з міркувань виживання. Основним змінним носієм даних тоді були гнучкі диски, тому досить швидко засобом забезпечення сумісності виявилися ті їх формати, які використовувала компанія IBM. Далеко не найкращі, треба помітити. Причому не тільки по апаратурі, хоча і це теж - незважаючи на те, що перші дисководи на 3,5″ з'явилися в тому ж році, що і перші РС, і багато виробників почали їх використовувати ще в першій половині 80-х років, сама IBM перейшла цей конструктив лише 1987 року, а доти чіплялася за пятидюймовые дисководи, представлені над ринком ще 1976 року. Однак і з погляду форматування «оригінальні» розробки IBM поступалися навіть багатьом клонам її комп'ютерів - зокрема, компанія на двосторонніх дискетах подвійної щільності зберігала лише 360 Кбайт інформації, тоді як конкуренти з них без особливих хитрощів вичавлювали і 600-720 Кбайт. . Ну а вже про примітивність файлової системи FAT не міркував лише лінивий. Хоча, цілком можливо, саме примітивність і стала другою причиною перетворення «пісюкових дискет» на стандарт - його було дуже легко підтримувати. Нехай хоча б тільки для читання і на додаток до свого «просунутого» варіанту.

Втім, з погляду сьогодення все це має лише історичну цінність. Дискети давно вже перестали використовуватися як основний засіб перенесення інформації, та й альтернативних лінійці «х86-based» комп'ютерів на більшості сегментів ринку не залишилося. Проте не можна сказати, що це вирішило всі проблеми. Справа в тому, що на цій самій єдиній стандартній платформі працює чи не більше операційних систем, ніж їх було за часів, коли «розквітали всі квіти». Навіть якщо взяти найпоширеніше на ринку сімейство, а саме Windows, воно, строго кажучи, неоднорідне. Більшість інсталяцій доводиться досі на Windows XP - родом з початку століття, але займає чи не 2/3 ринку. Десь чверть останнього припадає на сучасні версії Windows, а все - на збірну солянку з комп'ютерів із системами, що з'явилися до Windows XP (їх зараз залишилося мало, але все ще зустрічаються), різні версії MacOS і цільний букет UNIX-систем. Але навіть якщо вам пощастило ніколи не стикатися в практичному житті ні з чим, окрім Windows XP, повністю цю проблему не вирішує – колись «комп'ютерні» технології давно вже вийшли за межі цього ринку, активно вторгаючись у сферу побутової електроніки. Наприклад, більшість сьогоднішніх відеоплеєрів уміє працювати з USB-накопичувачами, а у фотоапаратах чи мобільних телефонах повсюдно застосовуються різноманітні карти пам'яті. І тут все виявляється просто тільки в тому випадку, якщо, наприклад, карта використовується виключно у «своєму» фотоапараті - форматуємо її засобами камери і назавжди забуваємо про це питання:) Проте якщо нам треба хоча б обмінюватися даними з комп'ютером, тут уже все не так очевидно…

Причина виникнення проблеми в тому, що практично всі сучасні операційні системи за рідкісним винятком підтримують не одну файлову систему (як це було 20-30 років тому), а кілька. Причому ступінь їхньої підтримки може бути зовсім різним. І іноді змінюється за допомогою додаткових програм. Варіантів маса, тому ми не намагатимемося охопити їх усі в одній невеликій статті. Але достатньо базової інформації, щоб можна було зрозуміти «куди копати», все ж таки спробуємо дати. А для цього достатньо познайомитися з основними доступними файловими системами, а також їх перевагами та недоліками.

FAT - стара, обмежена, але всюдисуща

Почнемо ми з найстарішої файлової системи, що з'явилася ще за часів MS DOS, але досі іноді зустрічається. До позитивних особливостей системи відносяться простота, компактність службових областей та великий термін присутності на ринку. Загалом, перші дві переваги безпосередньо випливають із третьої - в 1980 році, коли система і з'явилася, комп'ютери були настільки «потужними», а носії інформації настільки «ємними», що нічого складного використовувати просто не можна. Втім, оригінальний варіант, а саме FAT12, вже давно вийшов із широкого користування через те, що розмір диска з цією системою не може перевищувати 32 МіБ. Хоча, звичайно, до деяких фотоапаратів і навіть відеокамер досі примудряються додавати флеш-карту такого чи навіть меншого розміру, але повноцінно використовувати їх у подібній комплектації все одно не вийде.

А ось FAT16, що з'явилася 23 роки тому, вже цікавіше, благо розмір як файлу, так і розділу доведено вже до 2 ГіБ (для тих, хто ще не встиг звикнути до двійкових приставок – це трохи більше двох гігабайт). Теоретично, ємність розділу може досягати і 4 ГіБ при використанні кластерів по 64 Кбайт, однак цей варіант не стандартний, так що підтримується далеко не скрізь. На комп'ютерах з таким розділом вміють працювати системи починаючи з Windows NT4 і новішими цієї лінійки, але ні побутова техніка, ні більшість «альтернативних» систем з ними не сумісні. Таким чином, цей варіант можна вважати цілком придатним для накопичувачів невисокої ємності. Останніх користувачів на руках досить багато досі, але «бал правлять» не вони. А ось у часи флешок розміром до гігабайта була FAT16 дуже актуальною з огляду на невеликі потреби в обсязі для своїх потреб. Так, наприклад, на відформатованій під FAT16 флешці на 128 МБ користувачеві залишаються доступними 128 621 744 байт, а якщо використовувати FAT32 - 127 921 152 байт. З одного боку, дрібниця, а з іншого - років п'ять тому зайві 700 КБ на дорозі не валялися. Недарма Microsoft не рекомендує використовувати FAT32 на розділах менше 512 МБ, так що відформатувати їх у щось відмінне від FAT16 можна лише сторонніми засобами.

Остання все ще актуальна сфера застосування цієї системи – телефони, плеєри, фотоапарати та інша «побутова», розрахована на підтримку карток SD або microSD, але не підтримує SDHC (зараз таке вже не випускається, але ще використовується). Стандартною файловою системою для цих карт є саме FAT16, тому більшість таких пристроїв жодних інших і не підтримують. У цьому випадку вкрай бажано форматувати картку виключно у пристрої, але не робити цього на комп'ютері. Причина в тому, що Windows XP (принаймні про неї це відомо точно) іноді примудряється при явній вказівці ФС відформатувати картку під FAT32, після чого той же фотоапарат може її не побачити і навіть не запропонувати переформатувати. Вирішувати проблему доводиться якоюсь альтернативною програмою форматування - знову на комп'ютері.

FAT32 - розумний компроміс між сумісністю та іншими характеристиками

На відміну від попередниці, FAT32 є наймасовішою системою для зовнішніх накопичувачів. 90% флешок і більше половини ВЖД надходять із заводів відформатованими саме під неї. Причина? За сумісністю вона лише трохи гірша за FAT16 - «за кадром залишаються» лише надто давні операційні системи. Спочатку підтримка FAT32 з'явилася в серпні 1996 року разом з Windows 95 OSR2 – якщо хтось нині і використовує більш стару ОС на своєму комп'ютері, то навряд чи він підключатиме до нього сучасний зовнішній накопичувач:) Причому в більшості випадків – і не зможе.

Однак іноді використання FAT32 вже незручно, тому доводиться використовувати інші системи. Основним і найважливішим недоліком є ​​те, що файли не можуть мати розмір більше 4 ГіБ. Відповідно, зберігати на накопичувачі образи DVD-дисків, дуже великі архіви чи деякі фільми – не виходить. Точніше, це можна зробити, але їх доводиться розбивати на частини, а потім перед використанням «склеювати», що дуже незручно. Або таке розбиття треба передбачити заздалегідь, що іноді робиться, але не завжди. Саме ця причина і викликає необхідність використання інших файлових систем - нехай тих, хто має меншу підтримку з боку обладнання, зате вільних від обмеження на розмір файлу. Судячи з нашої конференції, до речі, ця проблема останнім часом стоїть досить гостро - багато користувачів, купивши зовнішній жорсткий диск або флешдрайв, буквально в перші ж дні намагаються записати туди дуже великий файл і дуже дивуються реакції системи, яка повідомляє про нестачу місця на носії. А дивуватися є чому: по-хорошому, творці ОС могли б обробляти цю ситуацію коректніше - повідомляючи користувачеві, що використовувана файлова система непридатна для запису даного файлу; а інакше все дуже дивно виглядає: вільного місця десяток або навіть сотня (або навіть кілька сотень) гігабайт, а рапортують про його нестачу при спробі запису файла розміром всього 5-6 гігабайт. Ми, звичайно, не думаємо, що після публікації цієї статті відповідні повідомлення у форумі зникнуть, однак сподіваємося, що їх хоча б стане трохи менше:)

А ось розмір тома, відформатованого під FAT32, теоретично може становити до 8 ТіБ, що навіть сьогодні дуже багато (не кажучи вже про час, коли система створювалася). Втім, не все так просто – компанія Microsoft, скажімо, вважає, що томи понад 32 ГіБ робити небажано. І не просто вважає, а запровадила відповідні обмеження у вбудовані програми форматування Windows XP та новіших версій своєї системи. Особливо сумний результат виходить при спробі відформатувати, наприклад, флешку на 64 ГБ штатними засобами: для FAT32 (на думку Microsoft) вона занадто велика, а NTFS на змінних носіях (знову ж таки - на думку Microsoft) використовувати не належить. Обидві проблеми легко вирішуються за допомогою використання сторонніх утиліт форматування. Так, наприклад, простенька консольна програма fat32formatспокійно працює із томами до 2 ТБ (максимум для нединамічних розділів Windows XP).

Не все гладко, до речі, і з Windows 98 або ME, незважаючи на те, що для них використання FAT32 безальтернативно. Справа в тому, що деякі вбудовані в ці системи утиліти так і залишилися 16-розрядними. Ну а оскільки для таких програм максимальний розмір блоку пам'яті, що адресується, дорівнює приблизно 16 МБ, то розділи, на яких таблиця FAT має більший розмір, їм недоступні. У перекладі простою мовою це означає неможливість повноцінно використовувати розділи більше ≈127,5 ГіБ (близько 133 ГБ). Точніше, спробувати можна, але обережно - не намагаючись «натруїти» на такий розділ різноманітні дискові утиліти: у кращому випадку (штатні засоби) вони просто не будуть працювати, а в гіршому - можуть і дані зіпсувати. Або для страховки можна просто розбивати накопичувачі, які планується використовувати і з Windows 9x, на розділи по сотні гігабайт. Зауважимо, що до зовнішніх дисків ці ОС все одно більш лояльні, ніж до внутрішніх: отримати під їх керуванням доступ до внутрішнього вінчестера більш ніж на 137 ГБ - завдання не зовсім тривіальне, а ось для USB-накопичувача великі обсяги допустимі без особливих проблем. виключенням непрацездатності дискових утиліт.

В інших ОС таких проблем немає, та й описані, в принципі, можна вирішити. Це і дозволяє вважати цю файлову систему оптимальною для випадків, коли потрібно забезпечити максимальну сумісність зовнішнього накопичувача з усім спектром комп'ютерної та побутової техніки. Особливо в тих випадках, коли зберігання файлів розміром більше 4 ГБ не передбачається – тоді і помітних на практиці недоліків не буде.

NTFS – швидка, потужна, але надмірна

Досі дана файлова система була єдиним надійно працюючим засобом обійти «проблему великих файлів» на комп'ютерах під керуванням Windows. Зрозуміло, не будь-якої версії Windows - лінійка 9х в принципі не підтримує NTFS, але сумісність з цими системами важлива вже не всім. Найгірше те, що у побутовій техніці підтримка NTFS зустрічається досить рідко. Але останнім часом трапляється. Крім того, такі розділи підтримують і комп'ютери, що працюють під керуванням MacOS або Linux - як мінімум, вони вміють читати дані з таких розділів, а при встановленні спеціальних драйверів нерідко починає працювати функція запису. За допомогою додаткових драйверів, до речі, підтримку NTFS можна "прикрутити" і до Windows 98 або навіть до DOS.

Чим ця система хороша? По-перше, обмеження як на розмір тома, так і на розмір файлів можна вважати відсутніми: і те, й інше може становити до 16 екзабайт (для поліпшення сприйняття повідомимо, що в одному екзабайті приблизно мільйон терабайт). По-друге, можна отримати і більш високу швидкість роботи, особливо якщо трапляються каталоги, що містять дуже велику кількість файлів – наприклад, коли їх кілька тисяч, різниця у швидкості роботи FAT32 та NTFS помітна неозброєним оком. По-третє, ця система є більш стійкою до відмови, як мінімум через журналування. По-четверте, вона здатна працювати з кластерами малого розміру (точніше, не тільки здатна, але й розрахована на це), так що втрати дискового простору при зберіганні маленьких файлів у NTFS помітно менші, ніж у FAT32, не кажучи вже про exFAT. По-п'яте, досить зручною можливістю є вбудована підтримка стиснення даних. Зрозуміло, архівування «на льоту» куди менш ефективне, ніж за допомогою спеціальних програм-архіваторів із серйозними алгоритмами, зате і виконується прозорим для користувача чином, а при зберіганні даних, що добре стискуються, дає помітний ефект. Загалом немає нічого дивного, що на внутрішніх жорстких дисках на даний момент NTFS є домінуючою системою.

Але на зовнішніх вона має й недоліки. Найнешкідливішим є неможливість практично отримати багато переваг системи. Зокрема, зараз рідко хто переносить стиснуті файли: навіть якщо говорити про офісні документи, то починаючи з 2007 року вони вже автоматично стискаються при збереженні, а про фотографії або відеофайли і говорити нічого, так що вбудована підтримка стиснення виявляється не при справах. і навіть частіше заважає, ніж навпаки. Та й величезні кількості файлів у каталозі зустрічаються рідко - набагато типовим є десяток дуже великих файлів. (Заодно це нівелює і користь від невеликих кластерів.) Крім того, покращена за рахунок кешування продуктивність може виявитися палицею з двома кінцями - відформатовані під NTFS накопичувачі вкрай небажано відключати від комп'ютера, не скориставшись "Безпечним вилученням" або його аналогами. Всі зазначені незручності притаманні будь-яким зовнішнім накопичувачам, але для заснованих на флеш-пам'яті є і додаткові. По-перше, журналування в даному випадку рекомендується відключати (оскільки ресурс масових флешок обмежений, так що «зайві» записи файлів їм ні до чого). По-друге, швидкодія цих накопичувачів істотно залежить від вирівняності всіх структур ФС та кластерів за межами блоків стирання, що актуально і для FAT, але для NTFS, з її невеликим розміром кластера (а також любов'ю багатьох програм, у тому числі і штатної утиліти форматування Windows XP, зміщувати початок розділу на 63 сектори), може бути дуже критично. Та й взагалі - як показує досвід багатьох користувачів, найкращих швидкісних результатів найпростіше досягти, використовуючи розмір кластера в 32 Кбайт, тобто не менший, ніж для FAT32.

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

exFAT - майбутнє флеш-накопичувачів і не тільки

У ситуації, коли FAT32 вже недостатньо, а NTFS – неоптимальна, не дивно, що компанія Microsoft у черговий раз (через 10 років після появи FAT32) допрацювала FAT. Нова версія, що отримала назву exFAT, дебютувала у Windows CE 6, оскільки була найбільш актуальною для вбудованих систем та побутової техніки, але пізніше її підтримка з'явилася і в настільних комп'ютерах. Чим новинка відрізняється від попередньої версії?

По-перше, знято обмеження на розмір файлу - подібно до варіанта «дорослих» систем, він може досягати 16 екзабайт. По-друге, збільшений розмір кластера: якщо для попередніх систем його доводилося утримувати в рамках 32 Кбайт (іноді застосовуючи не всіма підтримуваний варіант на 64 Кбайт), то exFAT максимальний розмір кластера становить 32 МіБ, тобто збільшився в 1024 рази. Зрозуміло, це вкрай незручно у разі файлів невеликого розміру, проте вони зараз не дуже актуальні як об'єкт транспортування, зате розмір таблиці розміщення файлів вдалося скоротити відповідним чином, а отже, знизилися і вимоги до обсягу оперативної пам'яті для роботи з томами великого розміру . Природно, для exFAT було скасовано і волюнтаристське обмеження в 32 ГіБ для розміру тому - не потрібно воно більше:) Першими, хто цим скористався, до речі, виявилися виробники карток пам'яті SD, досить жорстко зав'язуються в стандартах саме на FAT. Для специфікацій версій SD 1.х стандартною була FAT16 (що і визначало максимальну ємність карти в 2 ГБ), версія 2.0 орієнтується на FAT32 (карти SDHC до 32 ГБ), а в новій версії 3.0 для карт великого обсягу стандартом є саме exFAT (відповідно , карти SDXC помітні з точки зору практичного використання обмежень за ємністю не мають).

Не можна також сказати, що всі покращення були лише кількісними – знайшлися і якісні. Зокрема, скасовано обмеження кількості файлів у каталозі. Не те щоб вони сильно заважали раніше, але все ж таки - тепер, наприклад, виробникам фотоапарата зовсім необов'язково розкладати фотографії по папках, а можна все записувати в корінь карти. Більш суттєве поліпшення - з'явилася бітова карта вільного місця, що при правильному використанні дозволяє зменшити фрагментацію (раніше підбір найбільш відповідного вільного шматка дискового простору теж був можливий, але ціною активного використання кожної операції ресурсів системи). Журналування, природно, в рамках нової системи немає - дуже проста вона для цього, та й для флеш-накопичувачів (на які exFAT насамперед і націлена) ця операція небажана. Але й потенційну можливість підвищення стійкості до відмови - можлива підтримка транзакцій (природно, якщо це підтримує хост-пристрій).

Загалом, система вийшла на диво хороша - є все потрібне і немає нічого непотрібного. Чому ж досі доводиться мучитися з вибором, а чи не перейти на exFAT повсюдно? А тому, що для зовнішнього накопичувача, як уже не раз було сказано, сумісність є тією ще «священною коровою» - що користь в характеристиках використовуваної вами на флешці файлової системи, якщо ви цією флешкою ​​зможете скористатися лише на кожному десятому комп'ютері? exFAT досі перебуває якраз у подібному положенні. Гарантовано її використовувати можна лише на комп'ютерах, що працюють під керуванням Windows Vista із SP1, Windows Server 2008 та Windows Seven. Як би підтримка є і в MacOS X 10.6, але тут, мабуть, знадобиться апдейт системи - до речі, дуже можливо, що Apple би і не стала підтримувати нову розробку Microsoft, проте в останню лінійку комп'ютерів компанія вирішила вбудувати картоводи з підтримкою карт SDXC, а це обов'язково зажадало і сумісності з exFAT. Для Linux доведеться самостійно інтегрувати драйвер (причому їх два: нормальний підтримує лише читання, а запис – лише використовує FUSE). Користувачам Windows XP пощастило трохи більше – ще на початку 2009 року на Windows Update з'явилося офіційне оновлення KB955704, що додає до систем з SP2 та SP3 підтримку exFAT, проте воно не належить до обов'язкових, тому знайдеться далеко не на всіх комп'ютерах. З побутовою технікою все так само сумно, як з попередніми версіями Windows - щасливим винятком є ​​небагато сучасних пристроїв з підтримкою SDXC (їм подітися нікуди), проте в інших досі простіше зустріти підтримку NTFS, ніж exFAT.

Інша екзотика, іноді корисна

Подобається це комусь чи ні, але на даний момент часу більшість персональних комп'ютерів (порядку 95%) працює під управлінням однієї із систем сімейства Windows, причому в основному ця частка розподілена між Windows XP, Vista та Seven. Відповідно, найбільш актуальним є вибір між переліченими файловими системами, адже тільки вони без особливих хитрощів підтримуються цією трійкою. Замислюватися про щось інше є сенс тільки в тому випадку, коли сумісність з Windows вас в принципі не хвилює: незважаючи на те, що для підтримки більшості «рідних» для інших ОС файлових систем є і драйвери для Windows, на кожен комп'ютер їх ставити справа невдячна. Тому незалежно від переваг та недоліків якоїсь ext3 використовувати її можна хіба що в тому випадку, коли зовнішній накопичувач експлуатується як стаціонарний або близький до того виду.

Єдиний частковий виняток із правил - файлова система HFS+, традиційна для MacOS X. І справа навіть не в якихось її особливих якостях, а в тому, що ця операційна система має нехай і невелику, але монолітну частку ринку (чого не скажеш про різні іноді несумісних один з одним «лінуксах»). Крім того, незважаючи на малу поширеність у світовому масштабі, є країни, де ніша MacOS цілком відчутна. Це і ставить HFS+ у привілейоване становище. Аж до того, що деякі виробники продають спеціальні версії зовнішніх вінчестерів for Mac, відформатованих під HFS+ (а не FAT32 або NTFS, які зустрічаються частіше) прямо на заводі. З цього не випливає ні непридатність для Mac інших вінчестерів, ні неможливість використовувати "маковські" на інших комп'ютерах. Більш того - для обміну даними між Маком та іншими системами взагалі зручніше застосовувати FAT32, яка гарантовано працює в більшості випадків. У чому плюс саме HFS+? У тому, що вбудована система резервного копіювання та відновлення інформації Time Machine сумісна лише з дисками із цією файловою системою. Таким чином, якщо ви використовуєте накопичувач для резервування даних на маку, вибору не залишається. Ну а якщо іноді виникає необхідність підключення цього зовнішнього пристрою до інших комп'ютерів, цілком логічною дією буде встановлення на них спеціальних драйверів з підтримкою HFS+. Втім, не найгіршим варіантом виявиться і розбиття диска на пару розділів - невеликий з FAT32 дозволить обмінюватися даними різним системам, а розділ HFS + дозволить ні в чому не відмовляти при роботі під MacOS X.

Іноді покупка спеціальної версії зовнішнього вінчестера для Маків може бути виправдана і для користувача Windows - як правило, всі ці моделі забезпечені інтерфейсом FireWire (іноді і FireWire-800) на додаток до USB 2.0, що може виявитися корисним. З файловою системою проблем не буде - з точки зору Windows, відформатовані під HFS+ вінчестери жодної структури даних не містять, тому просто створюємо розділ (або розділи) і форматуємо потрібним нам чином.

FAQ замість ув'язнення

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

Файлова система - це спосіб організації зберігання даних на носіях інформації. Також файлова система визначає довжину імені файлів, максимальний розмір файлу та розділу, атрибути файлів. У цій статті ми розповімо про що таке файлові системи.

Завдання, які має вирішувати файлова система:

  • Найменування файлів.
  • програмний інтерфейс для роботи програм користувача.
  • захист даних від збоїв живлення та апаратних та програмних помилок.
  • збереження параметрів файлів.

Сучасні файлові системи можна розділити на кілька груп, згідно з їх призначенням:

  • Файлові системи для носіїв інформації з довільним доступом (для , флеш накопичувачів): FAT32, HPFS, ext2 та багато інших.
  • Файлові системи носіїв інформації з послідовним доступом (магнітні стрічки): QIC та інших.
  • Файлові системи для оптичних дисків: ISO9660, HFS, UDF та ін.
  • Віртуальні файлові системи: AEFS та ін.
  • Мережеві файлові системи: NFS, SSHFS, CIFS, GmailFS та ін.
  • Файлові системи призначені виключно для: YAFFS, exFAT, ExtremeFFS.

Популярні файлові системи:

FAT– файлова система розроблена Біллом Гейтсом та Марком МакДональдом у 70-х роках минулого століття. Завдяки своїй простоті використовується у флеш-накопичувачах досі. Існує три версії файлової системи FAT: FAT12, FAT16 та FAT32. Ці версії файлової системи FAT відрізняються розрядністю записів (кількістю біт, що відведені під зберігання номера кластера). Тобто, чим більша розрядність, тим більший обсяг диска, з яким може працювати файлова система FAT. Так, для FAT32 максимальний розмір диска становить 127 Гб.

NTFS- Файлова система нового покоління від компанії Microsoft. Ця файлова система використовується для всіх операційних систем Microsoft Windows NT. Вперше NTFS побачила світ 1993 року, разом із операційною системою Windows NT 3.1. У порівнянні з FAT, файлова система NTFS отримала велику кількість покращень. Так, практично зникло обмеження на максимальний розмір файлу та диска. Крім цього з'явилася підтримка жорстких посилань, шифрування та стиснення.

ext- Файлова система, розроблена спеціально під операційні системи на ядрі Linux. Розробка була вперше представлена ​​у 1992 році. Зараз існує кілька версій даної файлової системи: ext, ext2, ext3, ext3cow та ext4. Файлова система ext4 на даний момент є найновішою та найактуальнішою версією ext, саме ця версія використовується більшістю сучасних дистрибутивів Linux.

Чому смартфон може не запускати програми з картки пам'яті? Чим ext4 принципово відрізняється від ext3? Чому флешка проживе довше, якщо відформатувати її у NTFS, а не у FAT? У чому проблема F2FS? Відповіді криються особливостях будови файлових систем. Про них ми й поговоримо.

Вступ

Файлові системи визначають спосіб збереження даних. Від них залежить, з якими обмеженнями зіткнеться користувач, наскільки швидкими будуть операції читання та запису та як довго накопичувач пропрацює без збоїв. Особливо це стосується бюджетних SSD та їх молодших братів – флешок. Знаючи ці особливості, можна вичавити з будь-якої системи максимум та оптимізувати її використання для конкретних завдань.

Вибирати тип і параметри файлової системи доводиться щоразу, коли треба зробити щось нетривіальне. Наприклад, потрібно прискорити найчастіші файлові операції. На рівні файлової системи цього можна досягти різними способами: індексування забезпечить швидкий пошук, а попереднє резервування вільних блоків дозволить спростити перезапис файлів, що часто змінюються. Попередня оптимізація даних в оперативній пам'яті зменшить кількість необхідних операцій введення-виводу.

Збільшити термін безвідмовної експлуатації допомагають такі властивості сучасних файлових систем, як відкладений запис, дедуплікація та інші просунуті алгоритми. Особливо актуальні вони для дешевих SSD із чіпами пам'яті TLC, флешок та карт пам'яті.

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

Чорний ящик

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

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

На мобільних гаджетах з Android найчастіше зустрічається ext4 у внутрішній пам'яті та FAT32 на картках microSD. Яблучникам і зовсім не різниці, що у них за файлова система: HFS+, HFSX, APFS, WTFS... для них існують тільки красиві значки папок і файлів, намальовані найкращими дизайнерами. Найбагатший вибір у лінуксоїдів, але прикрутити підтримку нерідних для операційної системи файлових систем можна і в Windows, і в macOS - про це трохи пізніше.

Загальне коріння

Різних файлових систем створено понад сотню, але актуальними можна назвати трохи більше десятка. Хоча всі вони розроблялися для своїх специфічних застосувань, багато хто в результаті виявився спорідненим на концептуальному рівні. Вони схожі, оскільки використовують однотипну структуру уявлення (мета)даних - B-дерева («бі-дерева»).

Як і будь-яка ієрархічна система, B-дерево починається з кореневого запису і далі розгалужується аж до кінцевих елементів - окремих записів про файли та їх атрибути, або «листя». Основний сенс створення такої логічної структури був у тому, щоб прискорити пошук об'єктів файлової системи на великих динамічних масивах - на кшталт жорстких дисків об'ємом у кілька терабайт або ще більших RAID-масивів.

B-дерева вимагають набагато менше звернень до диска, ніж інші типи збалансованих дерев, при виконанні тих самих операцій. Досягається це за рахунок того, що кінцеві об'єкти в B-деревах ієрархічно розташовані на одній висоті, а швидкість всіх операцій пропорційна висоті дерева.

Як і інші збалансовані дерева, B-trees мають однакову довжину колії від кореня до будь-якого листа. Замість зростання вгору вони дужче гілкуються і більше ростуть в ширину: всі точки розгалуження у B-дерева зберігають безліч посилань на дочірні об'єкти, завдяки чому їх легко відшукати за меншу кількість звернень. Велика кількість покажчиків знижує кількість найдовших дискових операцій – позиціонування головок під час читання довільних блоків.

Концепція B-дерев була сформульована ще в сімдесятих роках і з тих пір піддавалася різним поліпшенням. У тому чи іншому вигляді вона реалізована в NTFS, BFS, XFS, JFS, ReiserFS та безлічі СУБД. Усі вони – родичі з погляду базових принципів організації даних. Відмінності стосуються деталей, часто досить важливих. Недолік у родинних файлових систем також загальний: всі вони створювалися для роботи саме з дисками ще до появи SSD.

Флеш-пам'ять як двигун прогресу

Твердотільні накопичувачі поступово витісняють дискові, але поки що змушені використовувати чужі їм файлові системи, передані у спадок. Вони побудовані на масивах флеш-пам'яті, принципи роботи якої відрізняються від дискових пристроїв. Зокрема, флеш-пам'ять має стиратися перед записом, а ця операція в чіпах NAND не може виконуватися на рівні окремих осередків. Вона можлива лише для великих блоків.

Пов'язано це обмеження з тим, що в NAND-пам'яті всі осередки об'єднані в блоки, кожен з яких має лише одне загальне підключення до шини, що управляє. Не будемо вдаватися до деталей сторінкової організації та розписувати повну ієрархію. Важливим є сам принцип групових операцій з осередками і той факт, що розміри блоків флеш-пам'яті зазвичай більші, ніж блоки, що адресуються в будь-якій файловій системі. Тому всі адреси та команди для накопичувачів із NAND flash треба транслювати через шар абстрагування FTL (Flash Translation Layer).

Сумісність із логікою дискових пристроїв та підтримку команд їх нативних інтерфейсів забезпечують контролери флеш-пам'яті. Зазвичай FTL реалізується саме в їх прошивці, але може (частково) виконуватися і на хості – наприклад, компанія Plextor пише для своїх SSD драйвери, що прискорюють запис.

Зовсім без FTL не обійтися, оскільки навіть запис одного біта в конкретну комірку призводить до запуску цілої серії операцій: контролер шукає блок, що містить необхідну комірку; блок зчитується повністю, записується в кеш або вільне місце, потім стирається повністю, після чого перезаписується назад вже з необхідними змінами.

Такий підхід нагадує армійські будні: щоб наказати одному солдатові, сержант робить загальну побудову, викликає бідолаху з ладу і командує іншим розійтися. У рідкісній нині NOR-пам'яті організація була спецназівською: кожен осередок управлявся незалежно (у кожного транзистора був індивідуальний контакт).

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

Модулі з однорівневими осередками SLC мали заявлений ресурс у 100 тисяч циклів перезапису та навіть більше. Багато хто з них досі працює у старих флешках та картках CF. У MLC корпоративного класу (eMLC) ресурс заявлявся в межах від 10 до 20 тисяч, тоді як у звичайної MLC споживчого рівня він оцінюється в 3-5 тисяч. Пам'ять цього типу активно витісняє ще більш дешева TLC, у якої ресурс ледве дотягує до тисячі циклів. Утримувати термін життя флеш-пам'яті на прийнятному рівні доводиться за рахунок програмних хитрощів, і нові файлові системи стають одним із них.

Спочатку виробники припускали, що файлова система не має значення. Контролер сам повинен обслуговувати недовговічний масив осередків пам'яті будь-якого типу, розподіляючи між ними навантаження оптимальним чином. Для драйвера файлової системи він імітує звичайний диск, а сам виконує низькорівневі оптимізації за будь-якого звернення. Однак на практиці оптимізація у різних пристроїв відрізняється від чарівної до фіктивної.

У корпоративних SSD вбудований контролер – це маленький комп'ютер. Він має величезний буфер пам'яті (полгига і більше), і він підтримує безліч методів підвищення ефективності роботи з даними, що дозволяє уникати зайвих циклів перезапису. Чіп упорядковує всі блоки в кеші, виконує відкладений запис, робить дедуплікацію на льоту, резервує одні блоки та очищає у фоні інші. Все це диво відбувається абсолютно непомітно для ОС, програм та користувача. З таким SSD дійсно неважливо, яка файлова система використовується. Внутрішні оптимізації значно впливають на продуктивність і ресурс, ніж зовнішні.

У бюджетні SSD (і тим більше - флешки) ставлять менш розумні контролери. Кеш у них урізаний або відсутній, а просунуті серверні технології не використовуються зовсім. У картах пам'яті контролери настільки примітивні, що часто стверджується, що їх немає зовсім. Тому для дешевих пристроїв з флеш-пам'яттю залишаються актуальними зовнішні методи балансування навантаження – насамперед за допомогою спеціалізованих файлових систем.

Від JFFS до F2FS

Однією з перших спроб написати файлову систему, яка враховувала б принципи організації флеш-пам'яті, була JFFS - Journaling Flash File System. Спочатку ця розробка шведської фірми Axis Communications була орієнтована підвищення ефективності пам'яті мережевих пристроїв, які Axis випускала в дев'яностих. Перша версія JFFS підтримувала лише NOR-пам'ять, але вже у другій версії потоваришувала з NAND.

Наразі JFFS2 має обмежене застосування. В основному вона так само використовується в дистрибутивах Linux для вбудовуваних систем. Її можна знайти в маршрутизаторах, IP-камерах, NAS та інших завсідниках інтернету речей. Загалом, скрізь, де потрібний невеликий обсяг надійної пам'яті.

Подальшою спробою розвитку JFFS2 стала LogFS, у якої індексні дескриптори зберігалися окремому файлі. Автори цієї ідеї – співробітник німецького підрозділу IBM Йорн Енгель та викладач Оснабрюкського університету Роберт Мертенс. Вихідний код LogFS викладено на GitHub. Судячи з того, що остання зміна в ньому була зроблена чотири роки тому, LogFS так і не набула популярності.

Зате ці спроби спонукали поява іншої спеціалізованої файлової системи - F2FS. Її розробили в корпорації Samsung, частку якої припадає чимала частина виробленої у світі флеш-пам'яті. У Samsung роблять чіпи NAND Flash для власних пристроїв та на замовлення інших компаній, а також розробляють SSD із принципово новими інтерфейсами замість успадкованих дискових. Створення спеціалізованої файлової системи з оптимізацією для флеш-пам'яті було з погляду Samsung давно назрілою необхідністю.

Чотири роки тому, у 2012 році, у Samsung створили F2FS (Flash Friendly File System). Її ідея хороша, але реалізація виявилася вологою. Ключове завдання при створенні F2FS було просте: знизити кількість операцій перезапису осередків та розподілити навантаження на них максимально рівномірно. Для цього потрібно виконувати операції з декількома осередками в межах того самого блоку одночасно, а не ґвалтувати їх по одній. Значить, потрібна не миттєва перезапис наявних блоків на перший запит ОС, а кешування команд і даних, дозапис нових блоків на місце і відкладене стирання осередків.

Сьогодні підтримка F2FS вже офіційно реалізована в Linux (а значить, і в Android), але особливих переваг практично вона поки не дає. Основна особливість цієї файлової системи (відкладений перезапис) призвела до передчасних висновків щодо її ефективності. Старий трюк з кешування навіть обдурював ранні версії бенчмарків, де F2FS демонструвала уявну перевагу не на кілька відсотків (як очікувалося) і навіть не в рази, а на порядки. Просто драйвер F2FS рапортував про виконання операції, яку контролер тільки-но планував зробити. Втім, якщо реальний приріст продуктивності у F2FS і невеликий, то зношування осередків виразно буде менше, ніж при використанні тієї ж ext4. Ті оптимізації, які зможе зробити дешевий контролер, будуть виконані лише на рівні самої файлової системи.

Екстенти та бітові карти

Поки що F2FS сприймається як екзотика для гіків. Навіть у своїх смартфонах Samsung все ще застосовується ext4. Багато хто вважає її подальшим розвитком ext3, але це не зовсім так. Йдеться швидше про революцію, ніж про подолання бар'єру в 2 Тбайт на файл та просте збільшення інших кількісних показників.

Коли комп'ютери були великими, а файли - маленькими, адресація не була складною. Кожному файлу виділялася кількість блоків, адреси яких заносилися в таблицю відповідності. Так працювала і файлова система ext3, що залишається до ладу. А ось у ext4 з'явився принципово інший спосіб адресації – екстенти.

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

Змінився на ext4 і сам механізм запису. Тепер розподіл блоків відбувається за один запит. І не заздалегідь, а перед записом даних на диск. Відкладений багатоблочний розподіл дозволяє позбутися зайвих операцій, якими грішила ext3: в ній блоки для нового файлу виділялися відразу, навіть якщо він повністю вміщувався в кеші і планувався видалити як тимчасовий.


Дієта з обмеженням FAT

Крім збалансованих дерев та їх модифікацій, є інші популярні логічні структури. Існують файлові системи з іншим типом організації - наприклад, лінійним. Як мінімум однією з них ти часто користуєшся.

Загадка

Відгадай загадку: о дванадцятій вона почала повніти, до шістнадцяти була дурною товстушкою, а до тридцяти двох стала жирною, так і залишившись простушкою. Хто вона?

Правильно, це історія про файлову систему FAT. Вимоги сумісності забезпечили їй погану спадковість. На дискетах вона була 12-розрядною, на жорстких дисках – спочатку 16-бітною, а до наших днів дійшла вже як 32-розрядна. У кожній наступній версії збільшувалася кількість адресованих блоків, але в суті нічого не змінювалося.

Популярна файлова система FAT32 з'явилася аж двадцять років тому. Сьогодні вона так само примітивна і не підтримує ні списки управління доступом, ні дискові квоти, ні фонове стиснення, ні інші сучасні технології оптимізації роботи з даними.

Навіщо FAT32 потрібна в наші дні? Так само виключно для забезпечення сумісності. Виробники справедливо вважають, що розділ FAT32 зможе прочитати будь-яка ОС. Тому саме його вони створюють на зовнішніх жорстких дисках, USB Flash та картах пам'яті.

Як звільнити флеш-пам'ять смартфона

Картки microSD(HC), які використовуються у смартфонах, за замовчуванням відформатовані у FAT32. Це основна перешкода для встановлення на них програм та перенесення даних із внутрішньої пам'яті. Щоб його подолати, потрібно створити на картці розділ ext3 або ext4. На нього можна перенести всі файлові атрибути (включаючи власника та права доступу), тому будь-яка програма зможе працювати так, ніби запустилася з внутрішньої пам'яті.

Windows не вміє робити на флешках більше одного розділу, але для цього можна запустити Linux (хоча б у віртуалці) або просунуту утиліту для роботи з логічною розміткою – наприклад, MiniTool Partition Wizard Free. Виявивши на картці додатковий первинний розділ з ext3/ext4, додаток Link2SD та аналогічні йому запропонують значно більше варіантів, ніж у випадку з одним розділом FAT32.


Як ще один аргумент на користь вибору FAT32 часто називають відсутність у ній журналування, а значить, швидші операції запису та менший знос осередків пам'яті NAND Flash. Насправді ж використання FAT32 призводить до зворотного і породжує безліч інших проблем.

Флешки та карти пам'яті якраз швидко вмирають через те, що будь-яка зміна в FAT32 викликає перезапис одних і тих же секторів, де розташовані два ланцюжки файлових таблиць. Зберіг веб-сторінку повністю, і вона перезаписувалася разів сто - з кожним додаванням на флешку чергової дрібної гіфки. Запустив портейбл-софт? Він створював тимчасових файлів і постійно змінює їх під час роботи. Тому краще використовувати на флешках NTFS з її стійкою до збоїв таблицею $ MFT. Дрібні файли можуть зберігатися прямо в головній файловій таблиці, а її розширення та копії записуються в різні області флеш-пам'яті. До того ж, завдяки індексації на NTFS пошук виконується швидше.

INFO

Для FAT32 та NTFS теоретичні обмеження за рівнем вкладеності не вказані, але на практиці вони однакові: у каталозі першого рівня можна створити лише 7707 підкаталогів. Любителі пограти у матрьошки оцінять.

Інша проблема, з якою стикається більшість користувачів, - на розділ FAT32 неможливо записати файл більше 4 Гбайт. Причина полягає в тому, що в FAT32 розмір файлу описується 32 бітами в таблиці розміщення файлів, а 2^32 (мінус одиниця, якщо бути точним) дають чотири гіга. Виходить, що на флешку не можна записати ні фільм в нормальній якості, ні образ DVD.

Копіювання великих файлів ще півбіди: при спробі зробити це помилка хоча б видно відразу. В інших ситуаціях FAT32 виступає у ролі бомби уповільненої дії. Наприклад, ти скопіював на флешку портейбл-софт і спочатку користуєшся ним без проблем. Через тривалий час одна з програм (припустимо, бухгалтерської чи поштової) база даних роздмухується, і... вона просто перестає оновлюватися. Файл не може бути перезаписаний, оскільки досяг ліміту 4 Гбайт.

Менш очевидна проблема у тому, що у FAT32 дата створення файлу чи каталогу може бути задана з точністю до двох секунд. Цього недостатньо для багатьох криптографічних програм, що використовують тимчасові мітки. Низька точність атрибуту "дата" - ще одна причина того, чому FAT32 не розглядається як повноцінна файлова система з точки зору безпеки. Однак її слабкі сторони можна використати і у своїх цілях. Наприклад, якщо скопіювати на тому FAT32 будь-які файли з розділу NTFS, вони очистяться від усіх метаданих, а також успадкованих і спеціально заданих дозволів. FAT просто не підтримує їх.

exFAT

На відміну від FAT12/16/32, exFAT розроблялася спеціально для USB Flash та карт пам'яті великого (≥32 Гбайт) об'єму. Extended FAT усуває вищезгаданий недолік FAT32 - перезаписування одних і тих же секторів при будь-якій зміні. Як і 64-разрядной системи, вона має майже значних лімітів розмір одного файла. Теоретично він може мати довжину в 264 байт (16 Ебайт), а картки такого обсягу з'являться нескоро.

Ще одна важлива відмінність exFAT - підтримка списків контролю доступу (ACL). Це вже не та простушка з дев'яностих, однак запровадження exFAT заважає закритість формату. Підтримка exFAT повноцінно та легально реалізована лише у Windows (починаючи з XP SP2) та OS X (починаючи з 10.6.5). У Linux і *BSD вона підтримується або з обмеженнями, або цілком законно. Microsoft вимагає ліцензувати exFAT, і в цій області багато правових суперечок.

Btrfs

Ще один яскравий представник файлових систем на основі B-дерев називається Btrfs. Ця ФС з'явилася в 2007 році і спочатку створювалася в Oracle з прицілом на роботу з SSD та RAID. Наприклад, її можна динамічно масштабувати: створювати нові індексні дескриптори прямо в працюючій системі або розділяти том на підтому без виділення їм вільного місця.

Реалізований у Btrfs механізм копіювання під час запису та повна інтеграція з модулем ядра Device mapper дозволяють робити практично миттєві снапшоти через віртуальні блокові пристрої. Попереднє стиснення даних (zlib або lzo) та дедуплікація прискорюють основні операції, заодно подовжуючи час життя флеш-пам'яті. Особливо це помітно при роботі з базами даних (досягається стиснення в 2-4 рази) і дрібними файлами (вони записуються впорядковано великими блоками і можуть зберігатися безпосередньо в листі).

Також Btrfs підтримує режим повного журналування (даних та метаданих), перевірку тома без розмонтування та безліч інших сучасних фіч. Код Btrfs опубліковано за ліцензією GPL. Ця файлова система підтримується в Linux як стабільна з версії ядра 4.3.1.

Бортові журнали

Практично всі більш-менш сучасні файлові системи (ext3/ext4, NTFS, HFSX, Btrfs та інші) відносять до загальної групи журналів, оскільки вони ведуть облік змін, що вносяться в окремому лозі (журналі) і звіряються з ним у разі збою при виконанні дискових операцій . Проте ступінь подробиці ведення журналів і стійкість до відмови у цих файлових систем різні.

Еxt3 підтримує три режими ведення журналу: зі зворотним зв'язком, упорядкований та повне журналування. Перший режим передбачає запис лише загальних змін (метаданих), що виконується асинхронно стосовно змін самих даних. У другому режимі виконується той самий запис метаданих, але перед внесенням будь-яких змін. Третій режим еквівалентний повному журналу (змін як метаданих, і у самих файлах).

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

Журнал NTFS схожий на другий режим ведення лога в ext3. У журнал записуються лише зміни метаданих, а самі дані у разі збою можуть бути втрачені. Такий метод ведення журналу в NTFS замислювався не як спосіб досягнення максимальної надійності, а лише як компроміс між швидкодією та стійкістю до відмови. Саме тому люди, які звикли до роботи з системами, що повністю журналюються, вважають NTFS псевдожурнальованою.

Реалізований в NTFS підхід у чомусь навіть краще використовуваного за умовчанням ext3. У NTFS додатково періодично створюються контрольні точки, які гарантують виконання всіх відкладених раніше дискових операцій. Контрольні точки не мають нічого спільного з точками відновлення в System Volume Infromation . Це просто службові записи у лозі.

Практика показує, що такого часткового журналування NTFS здебільшого вистачає для безпроблемної роботи. Адже навіть при різкому відключенні живлення дискові пристрої не знеструмлюються миттєво. Блок живлення та численні конденсатори у самих накопичувачах забезпечують саме той мінімальний запас енергії, якого вистачає на завершення поточної операції запису. Сучасним SSD при їх швидкодії та економічності такої ж кількості енергії зазвичай вистачає і на виконання відкладених операцій. Спроба перейти на повне журналування знизила б швидкість більшості операцій у рази.

Підключаємо сторонні ФС у Windows

Використання файлових систем лімітовано їх підтримкою лише на рівні ОС. Наприклад, Windows не розуміє ext2/3/4 та HFS+, а використовувати їх часом треба. Зробити це можна, додавши відповідний драйвер.

WARNING

Більшість драйверів і плагінів для підтримки сторонніх файлових систем мають обмеження і не завжди працюють стабільно. Вони можуть конфліктувати з іншими драйверами, антивірусами та програмами віртуалізації.

Відкритий драйвер для читання та запису на розділи ext2/3 з частковою підтримкою ext4. В останній версії підтримуються екстенти та розділи об'ємом до 16 Тбайт. Не підтримуються LVM, списки контролю доступу та розширені атрибути.


Існує безкоштовний плагін для Total Commander. Підтримує читання розділів ext2/3/4.


coLinux - відкритий та безкоштовний порт ядра Linux. Разом з 32-бітним драйвером він дозволяє запускати Linux серед Windows з 2000 по 7 без використання технологій віртуалізації. Підтримує лише 32-бітові версії. Розробка 64-бітної модифікації було скасовано. coLinux дозволяє в тому числі організувати з Windows доступ до розділів ext2/3/4. Підтримку проекту призупинено у 2014 році.

Можливо, Windows 10 вже є вбудована підтримка характерних для Linux файлових систем, просто вона прихована. На ці думки наводить драйвер рівня ядра Lxcore.sys та сервіс LxssManager, який завантажується як бібліотека процесом Svchost.exe. Докладніше про це дивись у доповіді Алекса Йонеску «Ядро Лінукс, приховане всередині Windows 10», з яким він виступив на Black Hat 2016.


ExtFS for Windows – платний драйвер, що випускається компанією Paragon. Він працює у Windows з 7 по 10, підтримує доступ до томів ext2/3/4 у режимі читання та запису. Забезпечує майже повну підтримку ext4 у Windows.

HFS+ for Windows 10 – ще один пропрієтарний драйвер виробництва Paragon Software. Незважаючи на назву, працює у всіх версіях Windows, починаючи з XP. Надає повний доступ до файлових систем HFS+/HFSX на дисках із будь-якою розміткою (MBR/GPT).

WinBtrfs – рання розробка драйвера Btrfs для Windows. Вже у версії 0.6 підтримує доступ до томів Btrfs як читання, і запис. Вміє обробляти жорсткі та символьні посилання, підтримує альтернативні потоки даних, ACL, два види компресії та режим асинхронного читання/запису. Поки WinBtrfs не може використовувати mkfs.btrfs, btrfs-balance та інші утиліти для обслуговування цієї файлової системи.

Можливості та обмеження файлових систем: зведена таблиця

Фай-ло-ва сис-те-ма Мак-си-маль-ний розмір тома Розмір одного файлу Довжина собст-вен-ного імені файлу Довжина повного імені файлу (включаючи шлях від кореня) Кількість файлів та/або каталогів Точність ука-за-ня дати файлу/ката-ло-га Права доступу Жорсткі посилання Сім-вільні посилання Мгно-венні знімки (snap-shots) Стиснення даних у фоні Шиф-ро-ва-ня даних у фоні Діду-плі-ка-ція дан-них
FAT16 2 ГБ секторами по 512 байт або 4 ГБ кластерами по 64 КБ 2 ГБ 255 байт із LFN - - - - - - - - - -
FAT32 8 ТБ секторами по 2 КБ 4 ГБ (2^32 - 1 байт) 255 байт із LFN до 32 підкаталогів із CDS 65460 10 мс (створення) / 2 с (зміна) ні ні ні ні ні ні ні
exFAT ≈ 128 ПБ (2^32-1 кластерів по 2^25-1 байт) теоретично / 512 ТБ через сторонні обмеження 16 ЕБ (2 ^ 64 - 1 байт) 2796202 у каталозі 10 мс ACL ні ні ні ні ні ні
NTFS 256 ТБ кластерами з 64 КБ або 16 ТБ кластерами з 4 КБ 16 ТБ (Win 7) / 256 ТБ (Win 8) 255 символів Unicode (UTF-16) 32760 символів Unicode, але не більше 255 символів у кожному елементі 2^32-1 100 нс ACL так так так так так так
HFS+ 8 ЕБ (2^63 байт) 8 ЕБ 255 символів Unicode (UTF-16) окремо не обмежується 2^32-1 1 с Unix, ACL так так ні так так ні
APFS 8 ЕБ (2^63 байт) 8 ЕБ 255 символів Unicode (UTF-16) окремо не обмежується 2^63 1 нс Unix, ACL так так так так так так
Ext3 32 ТБ (теоретично) / 16 ТБ кластерами по 4 КБ (через обмеження утиліт e2fs programs) 2 ТБ (теоретично) / 16 ГБ у старих програм 255 символів Unicode (UTF-16) окремо не обмежується - 1 с Unix, ACL так так ні ні ні ні
Ext4 1 ЕБ (теоретично) / 16 ТБ кластерами по 4 КБ (через обмеження утиліт e2fs programs) 16 ТБ 255 символів Unicode (UTF-16) окремо не обмежується 4 млрд. 1 нс POSIX так так ні ні так ні
F2FS 16 ТБ 3,94 ТБ 255 байт окремо не обмежується - 1 нс POSIX, ACL так так ні ні так ні
BTRFS 16 ЕБ (2 ^ 64 - 1 байт) 16 ЕБ 255 символів ASCII 2^17 байт - 1 нс POSIX, ACL так так так так так так