fstab
mount va umount maqolasida ko'rsatilganidek, qo'lda ishga tushirilgan mount buyrug'i vaqtinchalik — tizim qayta yuklanganda qo'lda mount qilingan har bir fayl tizimi yo'qoladi. Amalda disklar, tarmoq ulashmalari va boshqa qurilmalar tizim har safar boot qilganda kelishilgan parametrlar bilan avtomatik mount qilinishi kerak. Linux aynan shu maqsad uchun /etc/fstab (file system table) dan foydalanadi: bu boot paytida mount -a orqali o'qiladigan va har bir fayl tizimi qanday va qaysi parametrlar bilan mount qilinishini belgilaydigan markaziy konfiguratsiya fayli. Keyingi maqolalardan biri — Disk kvotalari da ko'riladigan foydalanuvchi darajasidagi cheklovlar ham ko'pincha aynan shu yerda belgilangan mount parametrlariga bog'liq.
Nimalarni o'rganasiz
Bu maqola oxirida siz quyidagilarni qila olasiz:
/etc/fstabning olti ustunli formatini o'qish va yozish;- nega UUID yoki label qurilma yo'lidan (
/dev/sdX) ishonchliroq ekanini tushuntirish; - eng ko'p ishlatiladigan mount parametrlarini bilish:
defaults,noatime,nofail,ro; - dump va fsck ustunlarining vazifasini tushuntirish;
- yangi fstab yozuvini qayta yuklashdan oldin
mount -avafindmnt --verifybilan xavfsiz sinash; - noto'g'ri fstab yozuvi tizimni boot qila olmaydigan holatda qoldirishi mumkinligini va bunday vaziyatni qanday tuzatishni bilish.
fstab formati: olti ustun
/etc/fstab dagi har bir qator (bo'sh qatorlar va # bilan boshlanadigan izohlardan tashqari) bitta fayl tizimini tasvirlaydi va bo'sh joy yoki tab bilan ajratilgan oltita ustundan iborat:
Misol:
# <device> <mount point> <fs type> <options> <dump> <fsck>
UUID=1b4e28ba-2fa1-11d2-883f-0016d3cca427 / xfs defaults 0 1
UUID=9c8e6f3a-1234-4a3b-9abc-0011223344ee /home ext4 defaults,noatime 0 2
LABEL=data /mnt/data ext4 defaults,nofail 0 2
/dev/sda2 swap swap defaults 0 0
Ustunlar tartib bo'yicha:
- device — qurilma yo'li, label (
LABEL=...) yoki UUID (UUID=...); - mount point — qurilma mount qilinishi kerak bo'lgan katalog (swap uchun
swapso'zi ishlatiladi); - fs type — fayl tizimi turi (
ext4,xfs,swap,nfsva hokazo); umkfsbilan yaratilgandagi turga mos kelishi kerak; - options — mount parametrlari, vergul bilan ajratilgan, bo'sh joysiz (
defaults,noatimeto'g'ri,defaults, noatimenoto'g'ri); - dump —
dumpzaxira vositasi uchun flag (0— e’tiborsiz qoldirish,1— zaxira nusxa olish); - fsck order — boot paytida
fsckqaysi tartibda ishlashi (0— tekshirilmaydi,1— birinchi tekshiriladi, odatda/uchun,2— keyin tekshiriladi, qolgan fayl tizimlari uchun).
Info
dump bugun amalda kamdan-kam ishlatiladi (uning o'rnini boshqa vositalar — rsync, tar, bulut zaxira xizmatlari egallagan), shuning uchun ko'p tizimlarda bu ustun har doim 0. fsck ustuni esa hali ham muhim, ayniqsa uni talab qiladigan ext4 kabi fayl tizimlari uchun.
Nega /dev/sdX o'rniga UUID yoki label
/dev/sda, /dev/sdb kabi nomlar disklarning aniqlanish tartibiga bog'liq — bu tartib bir xil qolishi kafolatlanmagan. Yangi disk qo'shish, USB qurilma ulash yoki hatto oddiy qayta yuklash disklarni nomlash tartibini o'zgartirishi mumkin. Natijada agar fstab da /dev/sdb1 kabi qattiq yozilgan yo'l bo'lsa, keyingi boot’da bu nom butunlay boshqa diskka ishora qilishi yoki umuman mavjud bo'lmasligi mumkin.
UUID (universally unique identifier) va label diskning o'ziga bog'langan, fayl tizimi yaratilganda metama’lumot sifatida yoziladi — disk qaysi portga ulanganidan yoki qaysi tartibda aniqlanganidan qat’i nazar ular bir xil qoladi. Shu sababli production tizimlar deyarli har doim UUID yoki label’dan foydalanadi.
UUID’larni ko'rish:
yoki faqat UUID kerak bo'lsa:
Namunaviy chiqish:
/dev/sda1: UUID="1b4e28ba-2fa1-11d2-883f-0016d3cca427" TYPE="xfs" PARTUUID="..."
/dev/sda2: UUID="7f3c9e21-..." TYPE="swap"
/dev/sdb1: LABEL="data" UUID="9c8e6f3a-..." TYPE="ext4"
Label o'rnatish fayl tizimiga mos vosita bilan bajariladi, masalan, ext4 uchun:
Warning
UUID yoki label’dan foydalanish /dev/sdX nomlarini butunlay unutish degani emas — troubleshooting paytida qaysi UUID qaysi fizik diskka tegishli ekanini (lsblk/blkid orqali) bilish hali ham muhim. Farq shundaki, fstab ichida fizik nom emas, doimiy identifikator ishlatiladi.
Ko'p ishlatiladigan mount parametrlari
| Parametr | Vazifasi |
|---|---|
defaults |
standart to'plam: rw, suid, dev, exec, auto, nouser, async |
noatime |
fayl har safar o'qilganda kirish vaqti yozuvini yangilamaslik — ayniqsa tez-tez o'qiladigan fayl tizimlarida I/O yuklamasini kamaytiradi |
nofail |
qurilma boot paytida topilmasa ham tizim xatosiz davom etadi (tafsilotlar quyida) |
ro |
faqat o'qish uchun mount qilish |
noexec |
bu fayl tizimidagi fayllarni bajarishga ruxsat bermaslik (masalan, /tmp uchun xavfsizlik chorasi) |
nosuid |
setuid/setgid bitlarini e’tiborsiz qoldirish |
user / nouser |
oddiy foydalanuvchiga mount qilishga ruxsat berish yoki bermaslik |
Bir nechta parametr vergul bilan birlashtiriladi:
Info
nofail ayniqsa tashqi disk, tarmoq fayl tizimi (NFS kabi) yoki har doim ham ulanmagan bo'lishi mumkin bo'lgan har qanday qurilma uchun muhim: bu parametrsiz mount muvaffaqiyatsiz bo'lsa, tizim butun boot jarayonini to'xtatib, emergency shell’ga tushishi mumkin.
mount -a: fstab’ni qo'llash va sinash
Faylni tahrirlagandan keyin tizimni qayta yuklamasdan har bir fstab yozuvini qo'llash uchun:
mount -a fstab dagi har bir qatorni o'qiydi va hali mount qilinmagan fayl tizimini mount qiladi. Agar qatorda sintaksis xatosi yoki noto'g'ri UUID bo'lsa, mount -a xato xabari bilan to'xtaydi — xatoni qayta yuklashdan oldin ushlab qoladi.
Agar fayl tizimi turi yoki mount parametri noto'g'ri yozilgan bo'lsa, odatiy xato shunday ko'rinadi:
mount: /mnt/data: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error.
findmnt --verify: chuqurroq tekshiruv
mount -a faqat mount qilishga urinadi — u fstab formatining o'zini chuqur tekshirmaydi (masalan, ustunlar soni, takrorlangan mount nuqtasi). findmnt --verify aynan shu uchun yaratilgan:
Hammasi to'g'ri bo'lsa, namunaviy chiqish:
Agar xato bo'lsa, findmnt --verify aynan qaysi qatorda va nega muammo borligini ko'rsatadi — masalan, takrorlangan mount nuqtasi, mavjud bo'lmagan UUID yoki noto'g'ri parametr nomi.
Amaliy vaziyat: qayta yuklashdan oldin fstab yozuvini tekshirish
Muammo. Yangi diskni /mnt/archive ga doimiy mount qilish kerak, lekin fstab yozuvini qo'lda qo'shish xato yozib qo'yish xavfini tug'diradi — bu esa keyingi qayta yuklashda tizimni boot qila olmaydigan holatda qoldirishi mumkin.
Tekshiruv (yozuv qo'shishdan oldin UUID’ni topish).
Amal (fstab yozuvini qo'shish).
echo 'UUID=a1b2c3d4-e5f6-4789-90ab-cdef01234567 /mnt/archive ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab
Tekshirish (qayta yuklashdan oldin, xavfsiz muhitda).
findmnt --verify sintaksis xatolarini ushlaydi, mount -a esa mount haqiqatan muvaffaqiyatli bo'lishini tekshiradi. Agar ikkalasi ham xatosiz o'tsa:
Natija. Yozuv mount nuqtasi, UUID va fayl tizimi turi bo'yicha to'g'ri ekani qayta yuklashsiz tasdiqlandi.
Xulosa. mount -a va findmnt --verify ni birga ishga tushirish yangi fstab yozuvi boot muammosiga sabab bo'lmasligini qayta yuklamasdan oldindan bilish imkonini beradi. Bu ikki tekshiruvni o'tkazib yubormaslik — production serverda fstab ga o'zgarish kiritishning asosiy qoidasi.
Danger
nofail parametrisiz qo'shilgan noto'g'ri fstab yozuvi (mavjud bo'lmagan UUID, noto'g'ri fayl tizimi turi, xato yozuv) keyingi boot’da tizimni qotirib qo'yishi va uni emergency mode yoki initramfs shell'ga tushirishi mumkin. Bunday holatda tizim boot qila olmaydi va foydalanuvchi darajasidagi hech qanday xizmat ishga tushmaydi — tuzatish uchun fizik yoki konsol orqali kirish kerak.
Noto'g'ri fstab yozuvi sababli boot qilmayotgan tizimni tuzatish
Agar server qayta yuklangandan keyin noto'g'ri fstab yozuvi sababli emergency shell’ga tushsa, odatda quyidagi qadamlar yordam beradi:
- Emergency/rescue shell’ga kiring. Ko'p distributivlarda buzilgan fstab avtomatik ravishda
rootparolini so'raydigan texnik xizmat shell’ini ochadi (systemdasosidagi tizimlarda: "Give root password for maintenance"). -
Fayl tizimini yozish uchun oching, agar u faqat o'qish rejimida bo'lsa:
-
fstab’dagi muammoli qatorni toping va uni vaqtincha izohga aylantiring (
#qo'shib): -
Qolgan yozuvlarni
findmnt --verifybilan tekshiring, so'ng qayta yuklang: -
Tizim muvaffaqiyatli boot qilgach, muammoli qurilmani to'g'ri UUID va
nofailparametri bilan qayta qo'shing.
Kelajakda bunday vaziyatning oldini olish uchun nofail ni standart amaliyot sifatida qo'llash tavsiya etiladi — ayniqsa har doim ulangan bo'lishi kafolatlanmagan qurilmalar (tashqi disk, tarmoq fayl tizimi) uchun, chunki u o'sha mount muvaffaqiyatsiz bo'lganda ham boot jarayoniga davom etish imkonini beradi.
Keng tarqalgan xatolar
Parametrlar orasida bo'sh joy qoldirish
defaults, noatime (vergul + bo'sh joy) fstab tahlilchisini chalkashtirib, kutilmagan xatoga sabab bo'lishi mumkin. To'g'ri format bo'sh joysiz: defaults,noatime.
Tarmoq fayl tizimlari uchun nofail ni unutish
Agar NFS kabi tarmoq fayl tizimi tarmoq hali mavjud bo'lmagan paytda boot qilsa, nofail siz butun boot jarayoni qotib qolishi mumkin. Bu NFS va autofs maqolasida chuqurroq ko'rib chiqiladi.
Yozuvni avval tekshirmasdan to'g'ridan-to'g'ri qayta yuklash
Avval mount -a va findmnt --verify bilan tekshirmasdan darhol qayta yuklash — production muhitdagi eng keng tarqalgan va eng qimmatga tushadigan xato. Ikkala tekshiruv bir necha soniya oladi, lekin buzilgan boot’ning oldini oladi.
Mashqlar
- O'chirib tashlasa bo'ladigan VM’da qo'shimcha bo'lim yarating, uning UUID’sini
blkidbilan toping va uninofailparametri bilan fstab’ga qo'shing. - fstab’ga ataylab noto'g'ri UUID yozing va
findmnt --verifyhamdamount -axato haqida qanday xabar berishini kuzating (qayta yuklamasdan!). - Noto'g'ri yozuvni tuzating va muammo yo'qolganini
mount -abilan tasdiqlang. statyordamidanoatimebilan mount qilingan fayl tizimida kirish vaqti yangilanadimi-yo'qmi, uninoatimesiz mount qilingani bilan solishtiring.
Mashqni bajardim deyish uchun: taklif qilingan yangi fstab yozuvi berilganda u qayta yuklashdan oldin xavfsiz ekanini tekshiradigan ikkita buyruqni va ularning har biri boshqasi tekshirmaydigan nimani tekshirishini ayta olishingiz kerak.
Xulosa
/etc/fstab mount konfiguratsiyasini olti ustunli formatda saqlaydi va uni boot paytida avtomatik qo'llaydi. UUID yoki label’dan foydalanish disklarni nomlash tartibi o'zgarishidan himoya qiladi, nofail esa har doim ham mavjud bo'lmasligi mumkin bo'lgan qurilma tufayli boot qotib qolmasligini ta’minlaydi. Har qanday o'zgarishni qayta yuklashdan oldin mount -a va findmnt --verify bilan tekshirish tizim noto'g'ri yozuv sababli boot qila olmay qolishining oldini olishning eng ishonchli usuli. Keyingi maqola — NFS va autofs xuddi shu fstab bilimini tarmoq orqali mount qilinadigan fayl tizimlariga qanday qo'llashni ko'rsatadi.