NFS va autofs
Hozirgacha ko'rilgan barcha fayl tizimlari — mount va umount hamda fstab — jismoniy yoki mantiqiy (LVM) disklarga tegishli edi: qurilma serverning o'zida joylashgan. Amaliyotda ko'p hollarda fayl tizimi butunlay boshqa serverda joylashadi va tarmoq orqali ulanadi. Bu maqola eng keng tarqalgan tarmoq fayl tizimi — NFS (Network File System) — va uni talab bo'yicha, avtomatik boshqarish uchun ishlatiladigan autofs xizmatini ko'rib chiqadi. NFS mount'lari ham fstab orqali doimiy qilinishi mumkin, lekin tarmoq fayl tizimlari uchun oddiy fstab yozuvi ko'pincha yetarli emas — shuning uchun autofs alohida mavzu sifatida ko'riladi.
O'quv maqsadlari
Maqolani tugatgach:
- NFS server va klient rolini,
/etc/exportsvaexportfsbilan resurs ulashishni tushunasiz; - klient tomonda
showmountvamount -t nfsbilan NFS resursiga ulana olasiz; - NFSv3 va NFSv4 orasidagi asosiy farqlarni bilasiz;
- autofs nima uchun kerakligini — talab bo'yicha mount va ishlatilmagan ulanishlarni avtomatik uzish — tushunasiz;
/etc/auto.masterva map fayllarning tuzilishini o'qiy va yoza olasiz;root_squash, tarmoq ishonchi va firewall portlari bo'yicha asosiy xavfsizlik choralarini bilasiz.
NFS nima va nima uchun kerak
NFS — Sun Microsystems tomonidan ishlab chiqilgan, Unix/Linux muhitida eng keng tarqalgan tarmoq fayl tizimi protokoli. U bitta serverdagi katalogni tarmoq orqali boshqa mashinalarga "eksport" qilish va ularda xuddi lokal fayl tizimi kabi mount qilish imkonini beradi. Foydalanuvchi va dastur nuqtai nazaridan NFS orqali mount qilingan katalog oddiy lokal katalogdan deyarli farq qilmaydi — farqi shundaki, fayl operatsiyalari orqa fonda tarmoq orqali serverga yuboriladi.
Odatiy ishlatilish holatlari:
- bir nechta serverda umumiy konfiguratsiya yoki ma'lumot katalogini ulashish;
- markazlashtirilgan foydalanuvchi
homekataloglari (/home) — foydalanuvchi qaysi serverga kirmasin, bir xil fayllarni ko'radi; - markazlashtirilgan backup yoki arxiv xotirasi.
Server tomoni: /etc/exports va exportfs
NFS serverda qaysi kataloglar, qanday ruxsat bilan va kimlarga ulashilishi /etc/exports faylida belgilanadi. Format:
Misol:
/srv/nfs/shared 192.168.1.0/24(rw,sync,no_subtree_check)
/srv/nfs/backup 192.168.1.50(ro,sync,root_squash)
/home 10.0.0.0/8(rw,sync,root_squash,no_subtree_check)
Har bir qatorda:
- eksport qilinadigan katalog yo'li;
- qaysi klient(lar)ga ruxsat berilishi (aniq IP, tarmoq diapazoni yoki hostname/wildcard);
- qavs ichida ulashish option'lari.
Eng ko'p ishlatiladigan option'lar:
| Option | Vazifasi |
|---|---|
rw / ro |
o'qish-yozish yoki faqat o'qish uchun ruxsat |
sync |
yozish so'rovi diskga yozib bo'lingandan keyingina tasdiqlanadi (ishonchli, lekin sekinroq) |
async |
tezroq, lekin server qulab tushsa ma'lumot yo'qolish xavfi bor |
root_squash |
klientdagi root foydalanuvchisini serverda imtiyozsiz foydalanuvchiga (nobody) tenglashtiradi |
no_root_squash |
klient rootiga serverda ham to'liq root huquqini beradi — juda xavfli, faqat ishonchli ichki tarmoqda oqlangan holatlarda |
no_subtree_check |
subtree tekshiruvini o'chiradi, ko'p hollarda tezlik va barqarorlik uchun tavsiya etiladi |
/etc/exports o'zgartirilgandan keyin, xizmatni qayta ishga tushirmasdan o'zgarishlarni qo'llash:
-r — barcha eksportlarni /etc/exports asosida qayta o'qish, -a — barcha yozuvlarni qo'llash. Joriy eksportlarni ko'rish:
Klient tomoni: showmount va mount qilish
Klient tomondan, mount qilishdan oldin serverda qaysi kataloglar ulashilganini tekshirish mumkin:
NFS resursini qo'lda mount qilish oddiy mount buyrug'idan farq qilmaydi, faqat fayl tizimi turi nfs va qurilma o'rniga server:/yo'l ko'rsatiladi:
Doimiy qilish uchun fstab mantiqi xuddi shu tarzda qo'llaniladi:
Warning
NFS (va boshqa tarmoq fayl tizimlari) uchun fstab yozuvida nofail va _netdev option'larini qo'shish deyarli majburiy hisoblanadi. _netdev tizimga bu fayl tizimi tarmoqqa bog'liqligini bildiradi — yuklanish tartibi shunga moslashadi (tarmoq ko'tarilgunga qadar mount urinilmaydi). nofail esa server vaqtincha mavjud bo'lmasa ham, klient tizimi yuklanishda to'xtab qolmasligini ta'minlaydi. Bu ikkisi bo'lmasa, NFS server ishlamay qolganda klient qayta yuklanolmay, emergency shell'ga tushib qolishi mumkin — xuddi fstab maqolasida ko'rilgan noto'g'ri yozuv holatiga o'xshab.
NFSv3 va NFSv4 farqi
| Xususiyat | NFSv3 | NFSv4 |
|---|---|---|
| Portlar | Bir nechta port (rpcbind, mountd, nfsd alohida) |
Bitta port — TCP 2049, rpcbind shart emas |
| Holat | Stateless (holatsiz) | Stateful — server klient sessiyasini kuzatib boradi |
| Xavfsizlik | Asosan AUTH_SYS (klient UID/GID'iga ishonch) |
Kerberos orqali kuchli autentifikatsiyani qo'llab-quvvatlaydi |
| Fayl qulflash | Alohida NLM protokoli orqali |
Protokolning o'ziga integratsiya qilingan |
| Firewall bilan ishlash | Bir nechta port ochish kerak, murakkabroq | Bitta port tufayli ancha soddaroq |
Zamonaviy tizimlarda, ayniqsa firewall va xavfsizlik talab qilinadigan muhitda, NFSv4 tavsiya etiladi — yagona port va kuchliroq autentifikatsiya imkoniyati tufayli. Mount qilishda versiyani aniq ko'rsatish mumkin:
autofs: nima uchun kerak
Fstab orqali doimiy mount qilingan NFS resurslari bitta muammoga ega: mount tizim yuklanganda darhol amalga oshadi va doimiy saqlanadi, hatto foydalanuvchi o'sha katalogga hech qachon kirmasa ham. Bu bir nechta noqulaylikka olib keladi:
- server vaqtincha mavjud bo'lmasa, klient yuklanishi sekinlashishi yoki (yuqorida aytilganidek,
nofailbo'lmasa) butunlay to'xtashi mumkin; - ishlatilmayotgan tarmoq ulanishi doimiy resurs (masalan, TCP sessiya) band qilib turadi;
- ko'p sonli NFS resurslarni fstab orqali boshqarish katta, statik ro'yxatni talab qiladi.
autofs bu muammoni talab bo'yicha mount (on-demand mounting) orqali hal qiladi: katalog faqat unga birinchi marta kirilganda avtomatik mount qilinadi, va ma'lum vaqt davomida ishlatilmasa, avtomatik unmount qilinadi. Foydalanuvchi uchun bu shaffof — u oddiy katalogga kirayotganday tuyuladi, lekin orqa fonda automount daemon mount/umount jarayonini boshqaradi.
/etc/auto.master va map fayllar
autofs konfiguratsiyasi ikki darajali: markaziy /etc/auto.master fayli qaysi "trigger" katalog qaysi map fayl bilan boshqarilishini belgilaydi, map fayl esa har bir kichik kataloг qanday mount qilinishini tavsiflaydi.
Bu yerda /mnt/nfs — autofs nazorat qiladigan asosiy katalog, /etc/auto.nfs — map fayl, --timeout=600 — 600 soniya (10 daqiqa) ishlatilmagan mount avtomatik uziladi.
Map fayl namunasi:
shared -rw,soft,intr 192.168.1.10:/srv/nfs/shared
backup -ro,soft,intr 192.168.1.10:/srv/nfs/backup
Har bir qatorda:
- birinchi ustun —
/mnt/nfsostidagi qaysi nom bilan kirish mumkinligi (masalan,/mnt/nfs/shared); - ikkinchi ustun — mount option'lar (fstab'dagiga o'xshash,
-bilan boshlanadi); - uchinchi ustun — manba, ya'ni
server:/yo'l.
Konfiguratsiyani o'zgartirgandan keyin autofs xizmatini qayta ishga tushirish:
Endi /mnt/nfs/shared katalogiga birinchi marta kirilganda (masalan, cd yoki ls bilan), autofs uni avtomatik mount qiladi:
Belgilangan timeout davomida foydalanilmasa, mount avtomatik uziladi va mount chiqishida endi ko'rinmaydi.
Info
Bevosita map (/- bilan belgilanadigan) va indirect map (yuqoridagi misoldagi kabi, nisbiy nom orqali) farqlanadi. Ko'p ishlab chiqarish muhitida, ayniqsa NIS/LDAP orqali markazlashtirilgan home kataloglar uchun, indirect map ko'proq ishlatiladi — chunki u bitta trigger katalog ostida ko'p sonli kichik mountlarni boshqarish imkonini beradi.
Xavfsizlik eslatmalari
NFS tarmoq orqali ishlaydigan protokol bo'lgani uchun, uni sozlashda quyidagi jihatlarga alohida e'tibor berish kerak.
root_squash har doim yoqilgan bo'lishi kerak, agar aniq va oqlangan sabab bo'lmasa. no_root_squash klientdagi root foydalanuvchisiga serverdagi eksport qilingan katalogda ham to'liq root huquqini beradi — bu klient kompyuteri buzilgan holatda serverni ham to'liq xavf ostiga qo'yadi.
Tarmoq ishonchi (AUTH_SYS) cheklovlari. NFSv3 va standart NFSv4 sozlamasida klient autentifikatsiyasi ko'p hollarda faqat klientning UID/GID ma'lumotiga asoslanadi — bu ma'lumotni klient tomon o'zi beradi, ya'ni ishonchsiz tarmoqda buzilishi mumkin. Shu sababli NFS odatda faqat ishonchli, izolyatsiya qilingan ichki tarmoqda (masalan, xususiy VLAN) ishlatilishi tavsiya etiladi, ochiq internetda emas. Kuchliroq autentifikatsiya kerak bo'lsa, NFSv4 + Kerberos (sec=krb5) ko'rib chiqiladi.
Firewall portlari. NFSv4 uchun asosan bitta TCP port — 2049 — ochilishi kifoya. NFSv3 uchun bir nechta xizmat (rpcbind — 111, mountd, nfsd, nlockmgr, statd) turli portlarda ishlaydi, ular ko'p hollarda tasodifiy port oralig'idan tanlanadi, agar /etc/nfs.conf yoki mos konfiguratsiya faylida qat'iy portlarga bog'lanmagan bo'lsa. Bu NFSv3'ni firewall orqasida sozlashni ancha murakkablashtiradi — bu ham amaliyotda NFSv4'ga ustunlik berishning yana bir sababi.
Danger
Eksport ro'yxatida <klient> o'rniga hech qanday cheklovsiz * yoki juda keng tarmoq diapazoni (masalan, 0.0.0.0/0) yozish, ayniqsa rw va no_root_squash bilan birga, NFS serverini butun tarmoqqa ochiq zaif nuqtaga aylantiradi. Eksportlar har doim aniq klient IP yoki minimal zarur tarmoq diapazoni bilan cheklanishi kerak.
Amaliy ssenariy: NFS resursini autofs orqali talab bo'yicha ulash
Muammo. Bir nechta klient serverga umumiy /srv/nfs/shared katalogini kerak bo'lganda avtomatik ulashi, lekin doimiy fstab yozuvi orqali emas — chunki resurs kamdan-kam ishlatiladi va server vaqti-vaqti bilan texnik xizmat uchun o'chirilib turadi.
Tekshiruv (server tomonda eksport mavjudligini tasdiqlash).
Buyruq (klientda autofs sozlash).
Natija. Katalogga birinchi kirishda avtomatik mount ishlaydi:
5 daqiqa (300 soniya) davomida foydalanilmasa, resurs avtomatik unmount bo'ladi — muvaffaqiyatli tekshirish uchun kutib, qayta mount | grep shared bajarish mumkin (natija bo'sh bo'lishi kerak).
Xulosa. autofs statik fstab yozuvi o'rniga talab bo'yicha mount imkonini beradi — server vaqtinchalik mavjud bo'lmasligi klient yuklanishiga umuman ta'sir qilmaydi, chunki mount faqat haqiqiy foydalanish paytida amalga oshadi.
Ko'p uchraydigan xatolar
root_squash ni o'chirib qo'yish yoki e'tiborsiz qoldirish
no_root_squash faqat aniq, cheklangan va ishonchli holatlarda (masalan, backup server o'ziga ishonadigan yagona klientdan) qo'llanilishi kerak. Standart holatda root_squash yoqilgan bo'lishi lozim.
NFS mount uchun nofail/_netdev ni fstab'da qoldirmaslik
Bu eng ko'p uchraydigan, boot muammosiga olib keladigan xato — fstab maqolasida ko'rilgan umumiy qoidaning tarmoq fayl tizimlariga tegishli maxsus holati.
NFSv3 bilan firewall sozlashda faqat 2049-portni ochish
NFSv3 bir nechta port ishlatadi (rpcbind, mountd, statd); faqat 2049-portni ochish mount muvaffaqiyatsizlikka olib keladi. NFSv4'ga o'tish yoki NFSv3 portlarini /etc/nfs.conf orqali qat'iylashtirib, ularning barchasini ochish kerak.
autofs timeout'ini juda qisqa qilib qo'yish
Juda qisqa timeout (masalan, 10 soniya) tez-tez ishlatiladigan resursni doimiy mount/umount qilib, ortiqcha tarmoq va CPU yukini keltirib chiqaradi. Timeout resursning haqiqiy foydalanish chastotasiga qarab tanlanishi kerak (odatda bir necha daqiqa).
Amaliy mashqlar
- Ikkita disposable VM tayyorlang: birida NFS server (
nfs-kernel-server), ikkinchisida klient. Server tomonda bitta katalognirw,sync,no_subtree_checkbilan eksport qiling. - Klientda
showmount -ebilan eksportni tekshiring, so'ng qo'ldamount -t nfsbilan ulang va faylga yozib, server tomonda ko'rinishini tasdiqlang. - Xuddi shu resursni endi fstab o'rniga autofs orqali sozlang,
--timeoutqiymatini kichik qilib (masalan, 60 soniya) qo'yib, avtomatik unmount bo'lishini kuzating. - Eksportga
root_squashvano_root_squashbilan navbatma-navbat sinab, klientdagirootfoydalanuvchisi yaratgan faylning serverda qaysi egasi (nobodyyokiroot) bilan yaratilishini solishtiring.
Xulosa
NFS server tomonda /etc/exports va exportfs orqali kataloglarni tarmoqqa ochadi, klient tomonda esa oddiy mount -t nfs yoki fstab yozuvi (_netdev, nofail bilan) orqali ulanadi. NFSv4 yagona port va kuchliroq autentifikatsiya tufayli NFSv3'dan afzal. autofs statik, doimiy mount o'rniga talab bo'yicha mount va avtomatik unmount imkonini berib, kamdan-kam ishlatiladigan yoki vaqti-vaqti bilan mavjud bo'lmaydigan tarmoq resurslari bilan ishlashni ancha barqarorroq qiladi. root_squash, tor tarmoq cheklovlari va to'g'ri firewall sozlamalari — NFS xavfsizligining minimal talablari. Ulangan fayl tizimlar qancha joy egallayotgani va foydalanuvchilar bo'yicha qanday cheklangani endi disk kvotalari maqolasida davom etadi.