Кіріспе

Linux үшін журналдық файлдық жүйе
ext3, немесе үшінші кеңейтілген файлдық жүйе – Linux ядросымен кеңінен қолданылатын журналдық файлдық жүйе. Бұл көптеген танымал Linux дистрибутивтері үшін әдепкі файлдық жүйе болып табылды. Стивен Твиди алғаш рет 1998 жылғы мақаласында және кейіннен 1999 жылғы ақпан айындағы ядролық пошта тізімінде ext2 файлдық жүйесіне журналдау мүмкіндігін қосу жұмыстарын жүргізіп жатқанын хабарлады. Файлдық жүйе 2001 жылдың қараша айында 2.4.15 нұсқасынан бастап негізгі Linux ядросына қосылды. Оның ext2-ге қарағанда басты артықшылығы – журналдау, ол сенімділікті арттырады және жүйе дұрыс тоқтатылмаған жағдайда файлдық жүйені тексеру қажеттілігін жояды. Оның ізбасары – ext4.

Функционалдылығы

Ext3 бұрынғы ext2 нұсқасымен кері үйлесімді болуды мақсат ететіндіктен, дискідегі көптеген құрылымдар ext2-ге ұқсас. Сәйкесінше, ext3-де экстенттер, инодтардың динамикалық бөлінуі және блоктардың қосалқы бөлінуі сияқты жаңа мүмкіндіктер жоқ. Бір каталогта ең көп дегенде 31998 кіші каталог болуы мүмкін, себебі бір инодта ең көп дегенде 32000 сілтеме болуы мүмкін (әрбір тікелей кіші каталог аталық каталогының инод сілтемелерінің санын арттырады). Ext3 файлдық жүйесінде, көптеген қазіргі Linux файлдық жүйелері сияқты, файлдық жүйе жазу үшін орнатылғанда "fsck" жүйелік құралын пайдалануға болмайды. "Shake" және "defrag" сияқты пайдаланушы кеңістігінде фрагментацияны жою құралдары бар. Shake бүкіл файлға бір операция ретінде орын бөлу арқылы жұмыс істейді, бұл әдетте бөлушіге үзділіссіз дискілік кеңістікті табуға көмектеседі. Егер бір уақытта пайдаланылатын файлдар болса, Shake оларды бір-біріне жақын жазуға тырысады. Defrag әрбір файлды өзінің үстіне көшіру арқылы жұмыс істейді. Дегенмен, бұл стратегия файлдық жүйеде жеткілікті бос орын болған жағдайда ғана жұмыс істейді. Ext3 үшін толыққанды фрагментацияны жою құралы жоқ. Алайда, Linux жүйелік әкімшісінің нұсқаулығында айтылғандай, "Қазіргі Linux файлдық жүйелері фрагментацияны азайту үшін файлдың барлық блоктарын бір-біріне жақын сақтайды, тіпті оларды тізбектес секторларда сақтау мүмкін болмаса да. Кейбір файлдық жүйелер, ext3 сияқты, файлдың басқа блоктарына ең жақын бос блокты тиімді бөледі. Сондықтан Linux жүйесінде фрагментация туралы алаңдаудың қажеті жоқ". Ext3 файлдық фрагментацияға төзімді болғанымен, уақыт өте келе немесе үлкен файлдарды баяу жазу сияқты белгілі бір пайдалану үлгілері салдарынан фрагментация пайда болуы мүмкін. Сәйкесінше, ext4 (ext3-дің ізбасары) онлайн файлдық жүйе фрагментациясын жою құралы e4defrag-қа ие және қазіргі уақытта экстенттерді (тізбектес файлдық аймақтарды) қолдайды.

Өшіруді қалпына келтіру

ext3 өшірілген файлдарды қалпына келтіруді қолдамайды. Ext3 драйвері қауіпсіздік мақсатында файлдың инодтарын жойып, файлдарды белсенді түрде өшіреді. Файл жүйесі журналын талдау арқылы өшірілген немесе жоғалған файлдарды қалпына келтіруге әлі де бірнеше техникалар мен тегін және коммерциялық бағдарламалық құралдар бар; бірақ олар нақты файлды қалпына келтіруге кепілдік бермейді.

Сығу

e3compr – ext3 файлдық жүйесі үшін ресми емес түзету, ол деректерді автоматты түрде қысып сақтайды. Бұл e2compr-дің тікелей көшірмесі және оны одан әрі жетілдіру қажет. Ол стандартты ядролармен сәтті құрастырылады және жүктеледі, бірақ журналдау функциясы әлі дамытылмаған.

Снапшоттарды қолдаудың болмауы

Қазіргі заманғы көптеген файлдық жүйелерден өзгеше, ext3 кез келген уақытта файлдық жүйенің күйін жылдам түсіру мүмкіндігі – шұғыл түсірілімдерді (snapshots) түзілуге ие емес. Оның орнына, ол Linux LVM ұсынатын, көлемдік деңгейдегі, жадты тиімсіз пайдаланатын түсірілімдерге сүйенеді. Next3 файлдық жүйесі – ext3-тің өзгертілген нұсқасы болып табылады, ол түсірілімдерді қолдайды, бірақ ext3 дискілік форматымен үйлесімділігін сақтайды.

Журналда тексеру жиынтығы жоқ

ext3 журналына жазғанда тексеру сомасын есептемейді. Қосымша кэш бар сақтау құрылғысында, егер /etc/fstab-да barrier=1 орнату опциясы қосылмаса, және аппараттық жазу кэші ретсіз жұмыс істесе, жүйе құлау кезінде файлдық жүйенің күрделі зақымдануына соқтығуы мүмкін. Себебі, жазу кэші бар сақтау құрылғылары деректердің (ұшқыш) кэшке жазылғанын тіркесе де, толық жазылғанын жүйеге хабарлайды. Егер қатты дискіге жазулар ретсіз орындалса (қазіргі заманғы қатты дискілер жазу жылдамдығын арттыру үшін жазуларды кэштейтіндіктен), транзакцияның коммит блогы басқа қатысты блоктар жазылмай тұрып жазылуы мүмкін. Егер басқа блоктар жазылмай тұрып қуат жоғалып кетсе немесе қалпына келтірілмейтін апат орын алса, жүйе қайта іске қосылуы керек. Қайта іске қосылғанда файлдық жүйе журналды әдеттегідей қайта ойнатады және "жеңімпаздарды" (коммит блогы бар транзакцияларды, соның ішінде жоғарыдағы жарамсыз транзакцияны, ол жарамды коммит блогымен белгіленген) қайта ойнатады. Аяқталмаған дискіге жазу бұзылған журнал деректерін пайдалана отырып жалғасады. Осылайша файлдық жүйе журналды қайта ойнату кезінде қате деректерді қалыпты деректермен алмастырады. Егер "жалған жеңімпаз" транзакциясының блоктары өзара тексеру сомасымен белгіленген болса, файлдық жүйе мұны біліп, бұзылған деректерді дискіге қайта жазбас еді. Журналдың тексеру сомасы ext4-ке қосылды. Құрылғы карталау интерфейсі арқылы өтетін файлдық жүйелер (бағдарламалық RAID және LVM жүзеге асырулары қоса алғанда) кедергілерді қолдамайтын болуы мүмкін және егер осы орнату опциясы қолданылса ескерту шығарады. Сондай-ақ, кейбір дискілер кедергілердің жұмыс істеуі үшін қажетті жазу кэшін тазалау кеңейтуін дұрыс іске асырмайды, бұл ұқсас ескертуге әкеледі. Мұндай жағдайларда, егер кедергілер қолдау көрсетілмесе немесе тиімді болмаса, дискінің жазу кэшін өшіру және орнату опциясын пайдалану арқылы жазу тәртібін сенімді етуге болады. Кедергілерді іске асыру кезінде, мысалы, дискінің істен шығуы сияқты жағдайларда қателерді өңдеуге байланысты да проблемалар болуы мүмкін. Кейбір виртуализациялық технологиялар қонақ опералық жүйеден негізгі құрылғыларға (файлдар, томдар, дискілер) fsync немесе flush командаларын дұрыс жібермейтіні де белгілі. Сол сияқты, кейбір қатты дискілер немесе контроллерлер кэшті тазалауды дұрыс емес немесе мүлдем орындамайды, бірақ оны қолдайтынын жарнамалайды және оны қолданғанда қате жібермейді. Fsync және жазу кэшін басқаруды дұрыс емес жүзеге асырудың көптеген жолдары бар, сондықтан жеке компоненттердің қаншалықты сенімді екеніне қарамастан, кэшті тазалау жұмыс істемейді деп есептеу қауіпсіз, егер ол нақты сынақтан өтпесе.

Күн белгісімен шектелуіне байланысты уақытқа жақын жойылу

Ext3 файлдың басында төрт байтты пайдаланып, күндерді Unix уақыты түрінде сақтайды. 32 бит 2038 жылдың 18 қаңтарынан кейін файлдарды өңдеуді жалғастыруға жеткіліксіз, бұл 2038 жыл мәселесі деп аталады.

ext4

2006 жылдың 28 маусымында ext3 бағдарламасының негізгі әзірлеушісі Теодор Цо ext4 деп аталатын жақсартылған нұсқасын жариялады. 2008 жылдың 11 қазанында ext4 тұрақты код ретінде белгіленген түзетулер Linux 2.6.28 бастапқы код қоймаларына енгізілді, бұл даму кезеңінің аяқталуын көрсетеді және оны пайдалануға ұсынылады. 2008 жылы Цо ext4, ext3-тен әлдеқайда жылдам сияқты жақсартуларға қарамастан, бұл үлкен қадам емес, ескі технологияны қолданады және уақытша шешім екенін айтты; Цо Btrfs дұрыс бағыт екеніне сенді, себебі "ол масштабтану, сенімділік және басқарудың қарапайымдығы жағынан артықшылықтар ұсынады". Btrfs-те "reiser3/4-те болған бірнеше ұқсас дизайндық идеялар бар".