Кіріспе

Журналдық файл жүйесі (Journaled File System, JFS) – IBM компаниясы жасаған 64 биттік журналды файл жүйесі. AIX, OS/2, eComStation, ArcaOS және Linux операциялық жүйелері үшін нұсқалары бар. Соңғысы GNU General Public License (GPL) лицензиясының шарттары бойынша ақысыз бағдарламалық қамтамасы ретінде қолжетімді. HP UX операциялық жүйесінде JFS деп аталатын тағы бір, басқа файл жүйесі бар, ол Veritas Software компаниясының VxFS өнімінің OEM нұсқасы болып табылады. AIX операциялық жүйесінде екі буын JFS бар, олар JFS (JFS1) және JFS2 деп аталады. IBM-нің JFS бастапқыда 32 биттік жүйелер үшін жобаланған. JFS2 64 биттік жүйелер үшін жобаланған. OS/2 және Linux сияқты басқа операциялық жүйелерде тек екінші буын ғана бар және ол жай ғана JFS деп аталады. Бұл AIX-тегі JFS1-ге сілтеме жасайтын AIX-тегі JFS-пен шатастырылмауы керек.

Тарих

IBM JFS-ті 1990 жылдың ақпан айында AIX 3.1 нұсқасының алғашқы шығарылымымен енгізді. Бұл файлдық жүйе, қазір AIX-те JFS1 деп аталады, келесі он жыл бойы AIX үшін ең басты файлдық жүйе болды және мыңдаған, тіпті миллиондаған клиенттердің AIX жүйелеріне орнатылды. Тарихи тұрғыдан алғанда, JFS1 файлдық жүйесі AIX жад менеджерімен тығыз байланысты. Бұл деректердің алғашқы шығарылымы JFS ашық кодының OS/2 нұсқасына қайтарудың негізін қалады. Осы жұмыстармен қатар, JFS әзірлеу тобының бір бөлігі 1997 жылы AIX операциялық жүйелерді әзірлеу тобына оралып, осы жаңа JFS деректер базасын AIX операциялық жүйесіне көшіруді бастады. 2001 жылдың мамыр айында AIX 5L үшін екінші журналдалған файлдық жүйе, Enhanced Journaled File System (JFS2) қолжетімді болды. Дегенмен, IBM Linux Technology Center және JFS Core Team мүшесі Дейв Клейкамп 2012 жылы JFS-ке қатты күйдегі жеке жад құрылғылары үшін TRIM командасын қолдау қосылды.

Ерекшеліктері

JFS келесі мүмкіндіктерді қолдайды.

Журнал

JFS – журналды файлдық жүйе. Ext3 файлдық жүйесіндегідей журналдауды қосымша мүмкіндік ретінде емес, бастапқыда жүзеге асырылған. Журнал көлемі 128 МБ-қа дейін жете алады. JFS тек метадеректерді журналдайды, яғни метадеректер дұрыс күйде қалады, бірақ апат немесе қуат үзілісінен кейін пайдаланушы файлдары зақымдануы мүмкін. JFS-тің журналдау әдісі XFS-тің журналдау әдісіне ұқсас, ол inode-тың тек бір бөлігін ғана журналдайды.

B+ ағашы

JFS каталогтарда іздеуді жеделдету үшін B+ ағашын пайдаланады. JFS каталогтың inode-ында 8 жазбаны сақтап, одан кейін жазбаларды B+ ағашына көшіреді. JFS сондай-ақ B+ ағашында экстенттерді индекстейді.

Динамикалық инодтар үлестірілуі

JFS қажет болған жағдайда дискідегі инодтарға орынды динамикалық түрде бөліп береді. Әрбір инод 512 байт көлемде болады. 16 кБ экстентке 32 инод бөлінеді.

Аумағы

JFS файлдарды кеңейтім ретінде бөліп береді. Кеңейтім – Агрегаттық блоктардың өзгермелі ұзындықтағы тізбегі. Бір кеңейтім бірнеше бөлу топтарында орналасуы мүмкін. Осы мәселені шешу үшін кеңейтімдер B+ ағашында индекстеледі, осылайша кеңейтімдердің орналасқан жерін табу тиімділігі артады.

Сығу

Қысым тек AIX-тегі JFS1 жүйесінде қолдау көрсетіледі және LZ алгоритмінің бір түрін пайдаланады. Жоғары процессорлық жүктеме және бос орынның ұсақталуының артуына байланысты, қысымды жеке пайдаланушының жұмыс станциясында немесе желіден тыс сақтық көшірмелері сақталатын аймақтардан басқа жерде қолдану ұсынылмайды.

Бір мезгілдегі кіріс / шығыс (CIO)

JFS әдетте файлдарға оқу-ортақ, жазу-ексклюзивті құлыптауды қолданады, бұл деректердің қарама-қайшылықтарын болдырмайды, бірақ файл деңгейінде жазуды тізбектеп орындауды талап етеді. CIO опциясы осы құлыптауды өшіреді. Деректердің дұрыстығын өздері қамтамасыз ететін реляциялық деректер базалары сияқты қолданбалар, бұл опцияны пайдаланып файлдық жүйенің көп бөлігін жоюға болады.

Бөлшек топтары

JFS бөлу топтарын пайдаланады. Бөлу топтары жиынтық кеңістікті бөліктерге бөледі. Бұл JFS-ке ресурстарды бөлу саясатын қолдану арқылы жоғары I/O өнімділігіне қол жеткізуге мүмкіндік береді. Бірінші саясат – байланысты деректердің диск блоктары мен диск инодтарын бір AG ішінде кластерлеуге тырысу, осылайша дискіде жақсы локалдылықты қамтамасыз ету. Екінші саясат – бос орынның фрагментациясын азайту үшін файлдық жүйе бойынша байланыссыз деректерді тарату. Ашық файл болған кезде JFS файл орналасқан AG-ны құлыптап, тек сол ашық файлтың өсуіне рұқсат береді. Бұл фрагментацияны азайтады, себебі тек ашық файл ғана AG-ға жаза алады.

Linux жүйесінде

Linux операциялық жүйесінде JFS ядролық модульмен (ядро нұсқасы 2.4.18pre9 ac4-тен бастап) және JFSutils атауымен топтастырылған пайдаланушы кеңістігінің қосымша құралдарымен қолдау көрсетіледі. Көптеген Linux дистрибутивтері JFS-ті қолдайды, егер ол орын шектеулеріне байланысты, мысалы, тікелей жүктелетін дискілерде (live CD) арнайы алынып тасталмаса. Linux үшін қолжетімді файлдық жүйелердің сынақтарына сәйкес, JFS жылдам және сенімді, әртүрлі жүктемелерде тұрақты жақсы өнімділік көрсетеді. Бірақ Linux-та JFS-ті пайдалану сирек кездеседі, себебі ext4 көбінесе жақсырақ өнімділік ұсынады. JFS-тің Linux-тағы ерекшелігі – ол көптеген басқа Linux файлдық жүйелерінен өзгеше, әріптерді ерекшелемейтін (case-insensitive) орнату опциясын ұсынады. JFS-те журналға жазуды іске асыру сияқты кейбір мәселелер де болуы мүмкін. Олар кейінге шегерілуі мүмкін, тіпті басқа оқиға туғанша, бұл теориялық тұрғыдан шексіз уақыт ішінде деректердің жоғалуына әкелуі мүмкін.