от Никола Антонов(28-11-2003)

рейтинг (5)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Файловата система ext3

Какво представлява, защо е необходима журналната файлова система ext3, а също и как да работим с нея

Виталий Яковлев, vit@skorohod.com
http://www.softerra.ru/freeos/18211/page1.html

Превод от руски: Н. Антонов, nikola@linux-bg.org

I. Въведение във файловата система ext3

Съвременната мощна и безплатна операционна система Linux дава широка територия за разработването на съвременни системи и за програмното обезпечаване на потребителя. Някои от най-интересните разработки в Linux-ядрото са високопроизводителните технологии за управление на съхранението, организирането и обновяването на данните върху диска. Един от най-интересните механизми е журналната файлова система ext3, която е интегрирана в Linux-ядрото от версия 2.4.16 и вече е достъпна по подразбиране в дистрибутивите на компаниите Red Hat и SuSE.

Файловата система ext3 е журнална, 100% съвместима с инструментите за създаване, управление и фина настройка на файловата система ext2, която се използува в Linux-системите по подразбиране през последните няколко години. Преди да направим детайлно описание на различията между файловите системи ext2 и ext3, ще уточним терминилогията, отнасяща се до файловите системи и съхранението на файловете.

II. Файловите системи в Linux. Суха теория.

В далечното минало, когато компютърните системи започнаха първо да четат и пишат на магнитни носители, гарантирането на целостта на файловете и (по-късно) директориите на тези устройства се превърна в трън в очите на администраторите. На системно ниво, всички данни в компютъра съществуват като блокове на някакво устройство за съхранение, организирани с помощта на специална структура в раздели (логически набори на устройството за съхранение), които на свой ред са организирани във файлове, директории и неизползвано (свободно) пространство.

Файловите системи обособяват диска на раздели, за да се опрости съхранението и организацията на данните във файлове и директории. Linux, като Unix-система, използва йерархическа файлова система, съставена от файлове и директории, които от своя страна също съдържат файлове и директории. Файловете и директориите във файловата система на Linux стават достъпни посредством тяхното монтиране (командата mount), което обикновено е част от процеса на зареждане на системата. Списъкът от файлови системи, достъпни за използване, се съхранява във файла /etc/fstab (filesystem table). Списъкът с файлови системи, които са монтирани в дадения момент, се съхранява във файла /etc/mtab (mount table).

В момента на монтиране на файловата система при зареждане на компютъра, битът в заглавната й част (т. нар. “чист бит”/”clean bit”) се изтрива, което означава, че файловата система се използва и че структурата на данните, използвани за управление на организацията на файловете и директориите в дадената файлова система, може да бъде
променена.

Файловата система се счита за цялостна, ако всички блокове от данни в нея се използват или са свободни; всеки разместен блок от данни е зает от един и само от един файл или директория; всички файлове и директории са достъпни след обработката на серия други директории във файловата система.

Когато Linux прекрати нормално работата си, всички файлови системи се демонтират. Демонтираните файлови системи в процеса на приключване на работата получават “чист бит” в заглавната си част, което означава, че системата е била демонтирана правилно и може да се счита за цялостна. Годините на усъвършенстване и преработка на файловите системи, както и  подобряването на алгоритмите за запис на данните върху диска до голяма степен намалиха вероятността от повреждане на данните, използвани от приложенията и от самото Linux-ядро, но отстраняването на повредите и загубите на данни при прекъсване на захранването и други системни проблеми досега си остава сложна задача. В случай на авариен срив или просто изключване на системата, без преминаването през стандартните процедури на демонтиране, няма установяване на “чист бит” в заглавната част на файловата система. При следващото зареждане на системата, процесът по монтиране ще открие, че системата не е маркирана като чиста и ще провери нейната физическа цялост, използвайки Linux/Unix-инструмента за проверка на файловата система fsck (filesystem check).

III. Какво е журнална файлова система?

Проверката на файловата система с fsck при големите дискови дялове може да отнеме много време, което е много лошо при днешните завишени изисквания за скорост на системите. Причината, която може да предизвика нарушаване на целостта на файловата система, може да бъде некоректно демонтиране, ако например в момента на демонтирането върху системата е вървял запис. Например, ако приложенията обновяват данните, съдържащи се във файловете, и системата обновява мета-данните, които се явяват “данни за данните във файловата система”, с други думи, информацията за това кои блокове с кои файлове са свързани, какви файлове са разместени в кои директории и т.н. Грешките (липсата на цялостност) във файловете с данни са нещо лошо, но грешките в мета-данните на файловата система могат да доведат до загуба на файлове и до други сериозни проблеми.

За да намали проблемите, свързани с целостта и времето за зареждане на системата, журналната файлова система съхранява списък от промените, които ще настъпят преди извършването на физическия им запис. Тези записи се съхраняват в отделни части на файловата система, наречени “журнал” или “лог”. След като промените бъдат безопасно описани в журнала журналната файлова система въвежда измененията в самите файловете и след това премахва записите от лога. Записите в журнала са организирани в набори, свързани с измененията във файловата система, което много прилича на промените при добавянето в бази данни, организирани в транзакции.

Журналната файлова система защитава целостта, защото записите в лог-файла се създават преди същинските промени във файловата структура и защото файловата система съхранява тези записи докато промените не бъдат безопасно и окончателно въведени във файловата структура. При изключване на компютъра, който използва журнална файлова система, програмата за монтиране може да гарантира целостта на файловата система само с проверка на лог-файла при наличие на очаквани, но неизвършени промени в записите на файловата система. В повечето случаи системата не се нуждае от проверка на целостта, а това означава, че компютърът ще бъде готов за работа практически веднага след зареждането. Съответно, шансовете от загуба на да данни при проблеми във файловата система значително намаляват.

Съществуват няколко файлови системи, достъпни за Linux. Най-известните са: XFS (журнална файлова система, разработена от Silicon Graphics, вече с отворен код), ReiserFS (разработена специално за Linux), JFS (първоначално разработена от IBM, вече с отворен код) и ext3 - файлова система, разработена от д-р Стивън Туийди за Red Hat и някои други системи.

IV. Журналната файлова система ext3.

Това е журнализирана версия на файловата система ext2. Тя има едно голямо преимущество пред другите журнални файлови системи - пълна съвместимост с файловата система ext2. Това прави възможно използването на всички съществуващи приложения за манипулиране и настройка на файловата система ext2.

Файловата система ext3 е включена в Linux-ядрото от версия 2.4.16 и може да бъде настроена чрез използването на диалога за конфигуриране на файловите системи при компилацията на ядрото. В Linux-дистрибуциите, като Red Hat 7.2 и SuSE 7.3, ext3 вече се поддържа по подразбиране. Можете да използвате файловата система ext3 само ако сте включили поддръжката й в ядрото и имате последните версии на програмите mount и e2fsprogs.

В повечето случаи преминаването от една файлова система на друга води след себе си задължително резервно копиране на всички данни, преформатиране на дяловете на диска и след това връщане на данните отново на мястото им. Във връзка със съвместимостта между системите ext2 и ext3 всички тези действия са ненужни, а преминаването от ext2 на ext3 става само с една команда:

tune2fs -j <име_на_дяла>

Например, преминаването от системата ext2, разположена на дяла /dev/hda5 към файловата система ext3 може да стане с помощта на командата:

tune2fs -j /dev/hda5

Опцията -j създава журнал към съществуващата вече ext2 файлова система. След преминаването от ext2 към ext3 трябва да въведете промените във файла /etc/fstab, за да посочите, че сега вече този дял използва файловата система ext3. Можете да използвате и опцията auto, но въпреки това се репоръчва да посочите точния тип на файловата система. Следващият пример показва как трябва да се редактира файлът /etc/fstab след преминаването на дяла /dev/hda5 от ext2 към ext3.

преди промяната:

/dev/hda5   /opt   ext2   defaults   1   2

след промяната:

/dev/hda5   /opt   ext3   defaults   1   0

Последното поле посочва етапа в зареждането на системата, когато целостта на файловата система трябва да бъде проверена с fsck. При използването на файловата система ext3 можете да го промените на 0. Това означава, че програмата fsck никога няма до проверява целостта на файловата система, тъй като тя се гарантира само от превъртането на журнала.

Преминаването на коренния дял към файловата система ext3 изисква повишено внимание и преди всичко преминаване в single-user-режим след създаването на RAM-диск, поддържащ файловата система ext3.

V. Различни режими на журналиране във файловата система ext3
Освен съвместимостта с инструментите за файловата система ext2 и лесния преход от ext2 към ext3, файловата система ext3 предлага също няколко различни типа на журналиране.

В класическия си вид журналната файлова система съхранява в лог измененията в мета-даннтие на файловата структура и всички  други изменения, включително и на самите файлове. Файловата система ext3 поддържа три различни режима на журналиране, които могат да бъдат активирани от файла /etc/fstab. Това са следните режими:

1. “Журнал” (journal) - запис на всички изменения в данните и мета-данните на файловата система. Най-бавен от всички. Този режим намалява до минимум шанса от загуба на информация за измененията на файловете.

2. “Последователен” (ordered) - записват се измененията в мета-данните на файловата система, но и промените в данните на файла преди измененията, асоциирани с мета-данните. Този режим се използва по подразбиране.

3. “Обратен запис” (writeback) - записват се само измененията в мета-данните на базата на стандартен запис на измененията на данните във файловете.

Разликите между трите режима на журналиране са едновременно едва забележими, но и фундаментални. Използването на режима “журнал” предполага, че файловата система записва всяка промяна два пъти - първия път в журнала, а след това в самата файлова структура. Това може да намали общата роизводителност, но този режим ще гарантира на всеки потребител, че свежда до минимум шансовете за загуба на информация при въвеждането на промени в данните както на файловете, така и в мета-данните, тъй като всички промени се записват в журнал и могат да бъдат възстановени при зареждането на системата.

Използването на “последователния” режим записва само измененията в мета-данните, което прави този метод по-бърз. Независимо от това, че промените във файла не се записват в журнала, те трябва да бъдат извършени преди измененията, асоциирани с мета-данните във файловата система и въвеждани от журналиращия ext3-демон, а това може малко да снижи производителността на вашата система. Използването на този метод гарантира, че файловете никога няма да бъдат в асинхрон с мета-данните във файловата система.

Методът на “обратен запис” е най-бърз, защото при него се съхранява само информацията за измененията в мета-данните на файловата система и не се изчакват промените, асоциирани с данните във файла при запис (например размер на файла и информация за директорията). Тъй като обновяването на данните става асинхронно, файловете могат да дават грешки в мета-данните, тъй като тяхното обновяване не е било приключило при рестартиране на системата). Това не е фатално, но може да смути потребителя.

Посочването на режима на журналиране, използван от файловата система ext3 става във файла /etc/fstab. Последователният режим се използва по подразбиране, но можете да посочите например на файловата система да използва режима на “обратен запис” по следния начин:

/dev/hda5   /opt   ext3   rw,data=writeback   1   0

Внимание! Не се препоръчва да задавате тази опция за коренния дял (бел. прев.).

VI. Заключение

Журналните файлови системи дават значителни преимущества за широк кръг потребители на Linux, намаляват изчакването при стартирането на системата и почти премахват възможността от появата на грешки във файловата система. Файловата система ext3 е високопроизводителна, съместима с ext2, а инструментът tune2fs прави преминаването от ext2 на ext3 съвсем проста работа.

Информация за тази и за други журнални файлови системи:
http://www.linuxplanet.com/linuxplanet/reports/4136/1/
http://www.redhat.com/support/wpapers/redhat/ext3/index.html#toc
http://people.spoiled.org/jha/ext3-faq.html


<< Съвети и трикове от Линукс Феста: част 2 | Създаване на по-бързо и устойчиво ядро >>