File system — storage qurilmasidagi baytlarni nomlangan fayllar va kataloglar ko‘rinishida tashkil etadigan ma’lumot tuzilmalari hamda operatsion tizim qoidalari majmui. U fayl mazmuni bilan birga nom, hajm, egasi, vaqt belgilari, permission va bloklar joylashuvi kabi metadata’ni boshqaradi.
Asosiy tuzilmalar
Ko‘p Unix file systemlarida directory fayl nomini inode raqamiga bog‘laydi. Inode fayl turi, permission, owner, vaqt va data bloklariga ko‘rsatkichlarni saqlaydi; nomning o‘zi inode ichida bo‘lmasligi mumkin. Shu sababli hard linklar turli nomni bitta inode va bitta mazmunga bog‘laydi. Symbolic link esa boshqa yo‘lni saqlaydigan alohida fayldir.
Disk bo‘sh bloklar, metadata va data hududlariga ajratiladi. Allocation extent orqali ketma-ket bloklar guruhini berishi mumkin. Katta ketma-ket fayl uchun bu fragmentatsiyani va metadata hajmini kamaytiradi. Kichik fayllar esa ko‘pincha data’dan ko‘ra ko‘proq metadata I/O keltiradi.
Operatsiyalar semantikasi
open, read, write, rename, link va unlink file system interfeysining asosiy amallaridir. Faylni o‘chirish nomni directory’dan olib tashlaydi; process uni ochiq tutsa inode va bloklar oxirgi reference yopilguncha saqlanishi mumkin. Shu holat disk band, ammo fayl nomi ko‘rinmayotgan vaziyatni tushuntiradi.
Atomic rename bir file system ichida yangi faylni tayyorlab, eski nom ustiga xavfsiz almashtirish uchun ishlatiladi. Turli mountlar orasida rename odatda copy va delete talab qiladi hamda bitta atomic amal bo‘lmaydi.
Crash consistency
Quvvat uzilishi vaqtida data va metadata yozuvlari diskka turli tartibda yetishi mumkin. Journaling file system avval ma’lum o‘zgarish niyatini jurnalga yozib, restartdan keyin tugallanmagan operatsiyani qayta ijro yoki bekor qiladi. Bu metadata tuzilishini tez tiklaydi, lekin har doim oxirgi foydalanuvchi data’si diskka yozilganini anglatmaydi.
Dastur durability uchun fsync chaqiradi. Directory entry yaratish ham alohida metadata bo‘lgani sababli muhim fayl yaratilgach uning parent directory’sini sync qilish talab etilishi mumkin. Hardware yoki virtual storage flushni noto‘g‘ri tasdiqlasa yuqori qatlam kafolati buziladi.
Turlar va qo‘llanish
Local file system block device ustida bitta OS instance tomonidan boshqariladi. Network file system server orqali ko‘p clientga fayl API beradi; cache, locking va uzilish semantikasi local diskdan farq qiladi. Cluster file system bir shared block device’ni ko‘p node’dan boshqarish uchun distributed lock ishlatadi. In-memory file system tez, ammo odatda rebootdan keyin saqlanmaydi.
Case sensitivity, maksimal nom uzunligi, permission modeli, extended attribute va snapshot imkoniyati turiga bog‘liq. Dastur bir platformada ishlagan nomlash taxminini boshqasiga ko‘chirsa moslik xatosi yuz berishi mumkin.
Sig‘im va boshqaruv
File systemda data bloklari va inode’lar alohida tugashi mumkin. Millionlab kichik fayl inode limitini to‘ldiradi, df esa hali bayt bo‘shligini ko‘rsatishi mumkin. Reserved blocks tizim administratoriga disk deyarli to‘lganda tiklash ishlari uchun joy qoldiradi.
Mount optionlar read-only, execute, device node va access-time xatti-harakatini boshqaradi. Permission bilan birga ACL va security label ham tekshirilishi mumkin. Encryption file darajasida yoki pastdagi block volume’da bajariladi; threat modeli qaysi metadata ochiq qolishini belgilaydi.
Backup oddiy ishlayotgan katalogni nusxalashdan ko‘ra consistency va metadata’ni ham hisobga oladi. Snapshot nuqtaviy holat beradi, ammo alohida failure domain’dagi nusxa bo‘lmasa qurilma yo‘qolishiga qarshi yetarli emas.
Bog‘liq tushunchalar
Inode, Directory, Journaling, Mount point, Block storage, File permission, Snapshot, fsync