next up previous contents index
Дал╕: Галоп по файловиx системаx Вгору: Файлов╕ системи Назад: Файлов╕ системи

Що таке файлов╕ системи?

Файлова система - це метод та структура даних, як╕ використовуються операц╕йною системою для збереження ╕нформац╕╖ про файли на диску чи розд╕л╕ диску. Тобто, ╕ншими словами, - це метод орган╕зац╕╖ збереження файл╕в на диску. Терм╕н часто також вжива╓ться як синон╕м до сл╕в ``диск'' або ``дисковий розд╕л'', коли мова йде про файли розташован╕ на даному диску чи розд╕л╕. Отже, якщо Ви почу╓те ``Я маю дв╕ файлов╕ системи'', знайте, що при цьому ма╓ться на уваз╕, два п╕дрозд╕ли, як╕ служать для запису файл╕в, або у випадку з Л╕наксом - це два п╕дрозд╕ли ╕з файловими системами типу ext2 (``розширена файлова система'', як ╖╖ називають в Л╕накс╕). В╕дм╕нност╕ м╕ж диском чи розд╕лом на диску та файловою системою, яка на ньому створена сутт╓в╕. Лише деяк╕ програми (включаючи сюди т╕, як╕ створюють файлов╕ системи) можуть працювати безпосередньо з секторами72 на диску або його розд╕л╕. Якщо на цьому диску або розд╕л╕ вже ╕сну╓ файлова система, вона може такими програмами бути знищена або серйозно пошкоджена. Б╕льш╕сть програм працюють, на в╕дм╕ну в╕д згаданих к╕лькох, з файловими системами ╕, отже, не зможуть працювати з розд╕лами, як╕ не мають файлово╖ системи на них (або, що приблизно те ж саме, - мають файлову систему не того типу, що потр╕бен).

Перед тим, як використовувати диск або розд╕л як файлову систему, його треба ╕н╕ц╕ал╕зувати. При цьому на диск запису╓ться деяка ╕нформац╕я для п╕дтримання файлово╖ системи у в╕дносному порядку. Цей процес в╕домий як створення файлово╖ системи.

Б╕льш╕сть файлових систем Юн╕кс╕в мають дуже схожу загальну структуру, але все-таки розходяться в подробицях. Основн╕ поняття включають суперблок73, inode[*], блок даних74, блок директор╕╖75 та блок ссилок[*]. Суперблок м╕стить ╕нформац╕ю про файлову систему в ц╕лому, таку, наприклад, як ╖╖ розм╕р (детальна ╕нформац╕я, яка тут мала б знаходиться, залежить в╕д конкретного типу файлово╖ системи). В inode збер╕га╓ться вся ╕нформац╕я про окремий файл, кр╕м його назви 76. Назва файлу запису╓ться в директор╕╖ разом з номером inode'у. inode збер╕га╓ номери к╕лькох блок╕в, в яких записаний сам файл. Але в inode'╕ достатньо м╕сця т╕льки для к╕лькох блок╕в даних, однак, якщо потр╕бно буде б╕льше, для ссилок на наступн╕ блоки динам╕чно вид╕ля╓ться б╕льше м╕сця. Ц╕ блоки, що вид╕ляються динам╕чно, ╓ непрямими блоками. Тобто, сама ╖х назва вказу╓ на те, що перш, н╕ж прочитати дан╕ з блоку, потр╕бно знайти, де знаходиться сам блок, користуючись ссилкою на нього.

Як звичайно файлов╕ системи Юн╕кс╕в дозволяють мати файли з ``д╕рками'' (це робиться за допомогою команди lseek , краще д╕знатися про яку можна з стор╕нки п╕дказки). Д╕рка в файл╕ означа╓, що файлова система просто робить вигляд, н╕бито якесь певне м╕сце в файл╕ ма╓ розм╕р нуль байт╕в, але жодного дискового простору при цьому не резерву╓ться на це в самому файл╕ (тобто файл насправд╕ буде використовувати трохи менше дискового простору). Це трапля╓ться особливо часто для невеликих дв╕йкових файл╕в, б╕бл╕отек для сп╕льного користування в Л╕накс╕, деяких баз даних та деяких спец╕альних випадк╕в. (Д╕рки створюються записуванням певно╖ спец╕ально╖ величини в блоц╕ ссилок або в inode'╕. Ця спец╕альна адреса означа╓, що для блоку даних не в╕дводиться простору на диску, тобто в файл╕ - д╕рка.)

Д╕рки досить корисн╕. На систем╕ автора просте вим╕рювання показало, що д╕рки збер╕гають близько 4 МБайт з 200 МБайт диску. Щоправда система ма╓ в╕дносно мало програм ╕ не ма╓ баз даних. Зас╕б для вим╕рювання д╕рок описаний в додатку [*]. 77



Dmytro Kovalev
1999-06-10