Розміщення інформаціі у файлових системах
Накопичувачі на жорстких магнітних дисках, далі – диски, складаються з набору дискових пластин, які покриті магнітним матеріалом і обертаються двигуном із високою швидкістю. Кожній пластині відповідають дві головки, одна зчитує інформацію зверху, інша – знизу. Головки прикріплені до спеціального дискового маніпулятора. Маніпулятор може переміщатися по радіусу диска – від центра до зовнішнього краю і назад таким чином відбувається позиціювання головок. Головки зчитують інформацію із доріжок, які мають вигляд концентричних кіл. Мінімальна кількість доріжок на поверхні пластини в сучасних дисках – 700, максимальна – більше 20000. Сукупність усіх доріжок одного радіуса на всіх поверхнях пластин називають циліндром. Кожну доріжку під час низькорівневого форматування розбивають на сектори, обсяг даних сектора для більшості архітектур становить 512 байт (він обов’язково має дорівнювати степені числа 2). Кількість секторів для всіх доріжок однакова (у діапазоні від 16 до 1600).
Основними характеристиками доступу до диска є:
1) Час пошуку – час переміщення маніпулятора для позиціювання головки на потрібній доріжці (у середньому 10-20 мс).
2) Ротаційна затримка – час очікування, поки пластина повернеться так, що потрібний сектор опиниться під доріжкою (у середньому 8мс)
3) Пропускна здатність передавання даних – обсяг даних, що передаються від пристрою в пам’ять за одиницю часу. Для сучасних дисків ця характеристика порівнянна із пропускною здатністю оперативної пам’яті (200 Мбайт\с), час передавання одного сектора вимірюють у наносекундах.
Час, необхідний для читання сектора, одержують додаванням часу пошуку, ротаційної затримки і часу передавання. Очевидно, що час читання одного сектора практично не відрізняється від часу читання кількох розташованих поряд секторів, а час читання цілої доріжки за одну операцію буде менший, ніж час читання одного сектора через відсутність ротаційної затримки.
Час читання великих обсягів неперервних даних усе менше відрізняється від часу читання малих. Як наслідок, першорядне значення для розробників файлових систем набуває розв’язання двох задач:
1) Організації даних таким чином, щоб ті з них, які будуть потрібні одночасно, перебували на диску поруч (їх можна було зчитати за одну операцію).
2) Підвищення якості кешування даних (оскільки пам’яті стає все більше, зростає ймовірність того, що всі потрібні дані міститимуться в кеші, і доступ до диска стане взагалі не потрібний).
Файлова система звичайно будує базове відображення даних поверх того,яке їй надають драйвери дискових пристроїв. Насамперед, ОС розподіляє дисковий простір не секторами, а спеціальними одиницями розміщення – кластер або дисковими блоками. Визначення розміру кластера і розміщення інформації, необхідної для функціонування файлової системи, відбувається під час вискоровівневого форматування розділу. Саме таке форматування створює файлову систему в розділі.
Розмір кластера визначає особливості розподілу дискового простору в системі. Використання кластерів великого розміру може спричинити значну внутрішню фрагментацію через файли, які розміром менші, ніж кластер.
Деякі застосування (насамперед сервери баз даних) можуть реалізовувати свою власну фізичну організацію даних на диску. Для них файлова система може виявитися зайвим рівнем доступу, що тільки сповільнюватиме роботу. Багато ОС надають таким застосуванням можливість працювати із розділами, поданими у вигляді простого набору дискових секторів, який не містить структур даних файлової системи. Про такі розділи кажуть, що воно містять неорганізовану файлову систему. Для них не виконують операцію високорівневого форматування.