mount va umount
Swap fayl va partition maqolasida virtual xotirani qanday tayyorlash va yoqish ko'rib chiqildi — oddiy fayl tizimi kabi u ham avval qurilmani tayyorlashni (mkswap yoki mkfs), so'ng uni tizimga "ulashni" talab qiladi. Fayl tizimlari uchun bu ulash qadami mount buyrug'i orqali bajariladi: yangi yaratilgan yoki mavjud fayl tizimining qurilmasi muayyan katalogga (mount nuqtasiga) ulanmaguncha oddiy yo'l orqali unga kirib bo'lmaydi. Bu maqola mount va umount buyruqlarini, ularning asosiy parametrlarini va keng tarqalgan muammolarni ko'rib chiqadi. Keyingi maqola — fstab shu asosda mount’larni qayta yuklashlar osha saqlanadigan qiladi.
Nimalarni o'rganasiz
Bu maqola oxirida siz quyidagilarni qila olasiz:
mountvaumountning asosiy sintaksisidan foydalanish;- bind mount nima ekanini va qachon kerakligini tushuntirish;
- mount qilingan fayl tizimi parametrlarini uni unmount qilmasdan
mount -o remountbilan o'zgartirish; - "device is busy" xatosini
lsof/fuserbilan aniqlash vaumount -l(lazy umount) qachon o'rinli ekanini bilish; - mount namespace tushunchasi haqida umumiy tasavvurga ega bo'lish;
proc,sysfsvatmpfskabi virtual fayl tizimlarining vazifasini farqlash.
mount: asosiy sintaksis
Eng oddiy shakl:
Bu yerda /dev/sdb1 — mount qilinayotgan qurilma (yoki bo'lim), /mnt/data esa mount nuqtasi — fayl tizimi mazmuni ostida ko'rinadigan katalog. Mount nuqtasi bo'sh katalog sifatida oldindan mavjud bo'lishi kerak:
Argumentsiz mount hozir mount qilingan barcha fayl tizimlarini ro'yxatlaydi:
Info
mount chiqishi faqat fizik disklarni emas, proc, sysfs va tmpfs kabi virtual fayl tizimlarini ham ko'rsatadi (ular quyida ko'rib chiqiladi). Faqat haqiqiy saqlash qurilmalari bilan cheklangan ko'rinish uchun df -hT qulayroq — u disk hajmi va bo'sh joyni ham ko'rsatadi.
Kerak bo'lganda fayl tizimi turini aniq ko'rsatish (mount odatda uni avtomatik aniqlaydi):
Foydali umumiy mount parametrlari (-o bilan, vergul bilan ajratib birlashtiriladi):
| Parametr | Vazifasi |
|---|---|
ro |
faqat o'qish uchun mount qilish |
rw |
o'qish/yozish (sukut bo'yicha) |
noexec |
bu fayl tizimidagi fayllarni bajarishga ruxsat bermaslik |
nosuid |
setuid/setgid bitlarini e’tiborsiz qoldirish |
Bind mount: bitta katalogni ikkinchi joyda ko'rsatish
Bind mount alohida qurilmani mount qilmaydi — u fayl tizimi ichidagi mavjud katalogni boshqa joyga "ko'chiradi", aslida ikkinchi joyni birinchisiga yo'naltiradi. Yangi disk yoki bo'lim kerak emas:
Shundan keyin /var/www/html ichidagi har qanday o'zgarish /srv/www da ham ko'rinadi — ular aslida ikki yo'l orqali ko'rinadigan bitta joy.
Bind mount odatda quyidagilar uchun ishlatiladi:
- host tizimdagi bitta katalogni konteyner yoki
chrootmuhitiga ko'rsatish; - katalogni fizik ko'chirmasdan uni boshqa dastur kutayotgan yo'lga moslashtirish;
- muayyan katalogni faqat o'qiladigan bind mount orqali faqat o'qish uchun ochish:
Info
--bind katalogni mount qiladi, lekin faqat yuqori darajada — u ichidagi boshqa mount nuqtalarini (masalan, /srv/www ostida alohida fayl tizimi mount qilingan bo'lsa) aks ettirmaydi. Agar ularni ham aks ettirish kerak bo'lsa, buning o'rniga --rbind ishlatiladi.
mount -o remount: unmount qilmasdan parametrlarni o'zgartirish
Allaqachon mount qilingan fayl tizimining ayrim parametrlarini (masalan, ro dan rw ga) unmount qilib, qayta mount qilmasdan o'zgartirish mumkin:
Bu, masalan, tizim faqat o'qish rejimida boot qilganda (texnik xizmat uchun root fayl tizimi ro bilan mount qilingan) va uni yozish uchun ochish kerak bo'lganda foydali:
remount fayl tizimi band bo'lsa ham ishlaydi, chunki u mount nuqtasini almashtirmaydi — faqat mavjud mount’dagi flag'larni yangilaydi.
umount: fayl tizimini ajratish
yoki qurilma yo'li bo'yicha:
Ikkalasi ham bir xil natija beradi — muhimi, fayl tizimi o'sha paytda hech kim tomonidan ishlatilmayotgan bo'lishi kerak.
"device is busy" xatosi va uni aniqlash
Agar fayl tizimida ochiq fayl bo'lsa, u biror shell uchun joriy ishchi katalog (cd) bo'lsa yoki unda ishlab turgan jarayon bo'lsa, umount rad etadi:
Fayl tizimini qaysi jarayon band qilib turganini aniqlash uchun ikkita asosiy vosita bor.
lsof — mount nuqtasi ostidagi ochiq fayllarni ko'rsatadi:
fuser — mount nuqtasidan foydalanayotgan jarayonlarni qisqaroq formatda ko'rsatadi:
Natija mos jarayonning PID’si va nomini ko'rsatadi. O'sha jarayonni to'g'ri to'xtatish (masalan, xizmatni systemctl stop bilan yopish) eng xavfsiz yechim. fuser jarayonlarni majburan tugatishi ham mumkin:
Warning
fuser -k fayl tizimidan foydalanayotgan har bir jarayonni hech qanday ogohlantirishsiz o'ldiradi. Bu saqlanmagan ma’lumotlar yo'qolishiga sabab bo'lishi mumkin — avval ular qaysi jarayonlar ekanini lsof/fuser -v bilan aniqlang va ularni muloyimlik bilan to'xtatishga harakat qiling.
Lazy umount (umount -l)
Ba’zan jarayonni darhol aniqlab bo'lmaydi yoki uni to'xtatish xavfli, lekin fayl tizimini mount nuqtasidan tezda ajratish baribir kerak. umount -l (lazy) mount nuqtasini fayl tizimi ierarxiyasidan darhol olib tashlaydi, lekin haqiqiy ajratish faqat qurilmani ushlab turgan jarayonlar tugagandan keyin sodir bo'ladi:
Warning
umount -l muammoni hal qilish o'rniga uni "yashiradi": fayl tizimi fonda hali ham band bo'lishi mumkin, shuning uchun uni qayta mount qilishga urinish yoki qurilmani fizik ajratish (masalan, USB diskni sug'urib olish) xavfli. Undan doimiy yechim sifatida emas, faqat vaqtinchalik chora sifatida foydalaning.
Mount namespace haqida qisqacha
Zamonaviy Linux kernelida mount ma’lumotlari global emas — har bir jarayon o'zining mount namespace'iga ega bo'lishi mumkin. Bu shuni anglatadiki, bitta terminalda mount/umount bilan kiritilgan o'zgarish, maxsus namespace ishlatilmasa, odatda butun tizimga (yoki hech bo'lmaganda o'sha foydalanuvchi sessiyasiga) qo'llanadi, lekin konteynerlar (Docker, LXC) va unshare/chroot kabi vositalar har biri o'zining izolyatsiyalangan mount ko'rinishiga ega bo'lishi mumkin.
Amaliy oqibati: konteyner ichidagi mount/df chiqishi host tizimdagidan farq qilishi mumkin — bu xato emas, mount namespace izolyatsiyasining tabiiy natijasi. Buni chuqur o'rganish konteynerlash moduliga (masalan, Docker) tegishli; bu yerda u faqat nega mount natijalari ba’zan kutilganidan farq qilishi mumkinligini tushuntirish uchun tilga olingan.
Virtual fayl tizimlari: proc, sysfs, tmpfs
mount chiqishidagi ko'p qatorlar fizik diskka emas, kernel yaratgan virtual fayl tizimlariga tegishli. Ular disk joyini egallamaydi — buning o'rniga kernel ma’lumotlarini fayl ko'rinishida taqdim etadi:
proc(/proc) — ishlab turgan jarayonlar va kernel parametrlari haqidagi ma’lumotni fayllar sifatida taqdim etadi. Masalan,/proc/cpuinfo,/proc/meminfo.sysfs(/sys) — qurilmalar, drayverlar va kernel quyi tizimlari haqidagi tuzilgan ma’lumot; qurilma parametrlarini ko'pincha shu yerdan o'qish va (ehtiyotkorlik bilan) yozish mumkin.tmpfs— RAM’da yashaydigan vaqtinchalik fayl tizimi./tmpyoki/runko'pinchatmpfssifatida mount qilinadi — ularning mazmuni qayta yuklashda yo'qoladi, lekin ular diskdan ancha tez.
Bu fayl tizimlarini odatda qo'lda mount/unmount qilish shart emas — ular boot paytida avtomatik tayyorlanadi. Ularni bilish muhim, chunki mount/df chiqishida ko'rinadigan har bir qator ham "disk" degani emas.
Amaliy vaziyat: diskni almashtirishdan oldin xavfsiz unmount qilish
Muammo. /mnt/backup ga mount qilingan tashqi USB disk endi kerak emas va uni fizik ajratish kerak, lekin umount "target is busy" xatosi bilan muvaffaqiyatsiz bo'lyapti.
Tekshiruv.
Bu fayl tizimida hali ham rsync jarayoni ishlayotganini ko'rsatadi — ehtimol fonda ishlayotgan zaxira vazifasi.
Amal. Jarayon aniqlangach, uni majburan o'ldirish o'rniga tugashini kutish yoki uni to'g'ri to'xtatish ma’qulroq:
# watch the process's state
ps -p 2214 -o pid,etime,cmd
# if stopping the process is safe (e.g. it's a script that can be re-run)
sudo kill 2214
sleep 2
sudo umount /mnt/backup
Agar jarayonni to'xtatib bo'lmasa yoki vaqt bo'lmasa, muqobil sifatida lazy umount ishlatiladi va disk keyinroq fizik ajratiladi:
Natija.
Agar buyruq hech narsa qaytarmasa, mount nuqtasi ierarxiyadan olib tashlangan.
Xulosa. "Device is busy" xatosi deyarli har doim fayl tizimidan biror jarayon foydalanayotganini bildiradi. To'g'ri aniqlash (lsof/fuser) muammoni yashirmasdan hal qiladi; umount -l faqat jarayonni haqiqatan xavfsiz to'xtatib bo'lmaydigan holatda oxirgi chora sifatida ishlatilishi kerak.
Keng tarqalgan xatolar
Bo'sh bo'lmagan katalogdan mount nuqtasi sifatida foydalanish
Agar tanlangan mount nuqtasi katalogida allaqachon fayllar bo'lsa, mount qilingach ular vaqtincha "yo'qoladi" (ular hali ham fayl tizimi ostida turibdi, lekin ustiga yangi fayl tizimi mount qilingani uchun yashirin). Bu ma’lumot yo'qotish emas, lekin chalkashlikka sabab bo'ladi — mount nuqtasi sifatida bo'sh katalogdan foydalanish kerak.
umount ga noto'g'ri yo'l berish
umount /mnt/data/subdir faqat subdir alohida mount qilingan bo'lsa ishlaydi. Butun /mnt/data fayl tizimini ajratish uchun uning haqiqiy mount nuqtasi yoki qurilma nomi berilishi kerak.
Qo'lda mount qilingan fayl tizimi qayta yuklashdan keyin yo'qolishini unutish
mount buyrug'i bilan kiritilgan o'zgarish vaqtinchalik — u qayta yuklash osha saqlanmaydi. Doimiy mount uchun /etc/fstab da yozuv kerak.
Mashqlar
- O'chirib tashlasa bo'ladigan VM’da bo'sh bo'lim yoki loop qurilma (
dd+losetupyoki qo'shimcha virtual disk) yarating, unimkfs.ext4bilan formatlang va/mnt/testga mount qiling. - Ikki katalogni
--bindbilan bog'lang va ulardan biriga fayl yozish ikkinchisida ham ko'rinishini tasdiqlang. - Bitta terminaldan mount qilingan fayl tizimiga
cdqiling va boshqasidanumountga urining — xatoni oling, so'ng sababnifuser -vmbilan toping. - Fayl tizimini
mount -o remount,robilan faqat o'qish rejimiga o'tkazing, unga yozishga urinib xatoni ko'ring, so'ngremount,rwbilan qaytaring.
Mashqni bajardim deyish uchun: "device is busy" xatosi berilganda biror narsani majburlashga urinishdan oldin javobgar jarayonni aniqlaydigan aniq buyruqni ayta olishingiz kerak.
Xulosa
mount qurilmani (yoki --bind orqali mavjud katalogni) fayl tizimi ierarxiyasidagi muayyan nuqtaga ulaydi, umount esa uni ajratadi. -o remount band fayl tizimida ham parametrlarni xavfsiz o'zgartiradi, lsof/fuser esa "device is busy" xatosining sababini aniq ko'rsatadi. Bu buyruqlarning hammasi vaqtinchalik — qayta yuklashdan hech narsa omon qolmaydi. Keyingi maqola — fstab aynan shu muammoni hal qiladi va mount konfiguratsiyasini har bir boot’da avtomatik qo'llaydigan doimiy faylni tanishtiradi.