Disk bandligi (disk usage)
Disk kvotalari maqolasida foydalanuvchi yoki guruh qancha joydan foydalanishi mumkinligini cheklash ko'rib chiqildi. Lekin kvota faqat cheklovni belgilaydi — u fayl tizimida hozir aynan qayerda joy tugayotganini ko'rsatmaydi. Bular ikki mustaqil savol: kvota "kimga qancha ruxsat berilgan" degan savolga, disk bandligi esa "hozir aslida qancha joy ishlatilmoqda va qayerda" degan savolga javob beradi. Bu maqola ikkinchi savolga — mavjud joyni tekshirish va eng katta iste’molchilarni topish vositalariga bag'ishlangan.
Nimalarni o'rganasiz
Bu maqola oxirida siz quyidagilarni qila olasiz:
- nega
df -hvadu -shturli natija berishi mumkinligini tushuntirish; - "ochiq, lekin o'chirilgan fayl" muammosini va uning disk bandligiga ta’sirini tushuntirish;
- kataloglar ierarxiyasini
du --max-depthbilan bosqichma-bosqich tahlil qilish; - interaktiv
ncduvositasi bilan tezkor vizual tahlil qilish; - inode’lar tugashini
df -ibilan aniqlash; - eng katta fayl yoki katalogni qanday topishni bilish.
df -h: fayl tizimi darajasidagi umumiy ko'rinish
df (disk free) mount qilingan fayl tizimlarining umumiy, ishlatilgan va bo'sh joyini ko'rsatadi:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 42G 5.5G 89% /
/dev/vg_data/lv_app 20G 18G 1.1G 95% /mnt/app
tmpfs 2.0G 1.2M 2.0G 1% /run
-h (human-readable) baytlarni GiB/MiB ko'rinishida ko'rsatadi. df fayl tizimi metama’lumotlaridan (superblock’dan) o'qiydi, shuning uchun natija hatto juda katta fayl tizimida ham kechikishsiz, bir zumda chiqadi.
Bitta muayyan bo'limni tekshirish uchun:
du -sh: katalog darajasidagi hajm
du (disk usage) esa aksincha, haqiqiy fayllarni sanab chiqib, muayyan katalog yoki fayllar egallagan haqiqiy joyni hisoblaydi:
-s — faqat yakuniy umumiy yig'indini ko'rsatish (quyi kataloglarni alohida ro'yxatlamasdan), -h — odam o'qishi uchun qulay format.
du fayl tizimini haqiqatan skanerlaydi, shuning uchun katta kataloglarda vaqt olishi mumkin — df dan farqli o'laroq, natija bir zumda chiqmaydi.
Nega df va du mos kelmaydi
Ba’zan df -h / "95% ishlatilgan" deb ko'rsatadi, lekin du -sh /* bilan har bir katalog bo'yicha yig'ilgan son sezilarli darajada kichik chiqadi. Buning eng keng tarqalgan sababi — o'chirilgan, lekin ochiq turgan fayllar.
Linux’da fayl rm bilan o'chirilganda, agar u hali ham biror jarayon tomonidan ochiq bo'lsa (fayl deskriptori orqali), u darhol olib tashlanmaydi — faqat katalogdan (fayl nomlari ro'yxatidan) olib tashlanadi. Fayl uchun ajratilgan disk bloklari jarayon uni yopmaguncha bo'shatilmaydi.
rm removes the entry from the directory
│
▼
a process still holds the file open (via fd)
│
▼
disk blocks stay occupied — df reports this
du doesn't "see" the file, since it's no longer in the directory
Bu, masalan, log fayli aylantirilgan (rotate qilingan), lekin unga yozayotgan xizmat hali ham eski fayl deskriptorini ushlab turgan paytda tez-tez sodir bo'ladi — xizmat qayta ishga tushirilmaguncha yoki fayl yopilmaguncha disk joyi bo'shamaydi, garchi du umuman katta fayl ko'rsatmasa ham.
Warning
"df ishlatilgan deydi, lekin du hech narsa topmaydi" holatiga ko'pincha aynan shu sabab bo'ladi. Yechim — o'chirilgan, lekin ochiq turgan fayllarni lsof bilan topish; bu Disk to'lganda troubleshooting maqolasida chuqur ko'rib chiqiladi.
du --max-depth: bosqichma-bosqich tahlil
Katta katalog ichida aynan qaysi quyi katalog eng ko'p joy egallayotganini topish uchun chuqurlikni cheklash qulay:
Hajm bo'yicha tartiblash uchun bu natijani sort bilan birlashtirish tavsiya etiladi:
sort -rh odam o'qishi uchun qulay qiymatlarni (1.2G, 340M) kamayish tartibida to'g'ri tartiblaydi.
Keyingi qadam — eng katta katalogga kirib, xuddi shu buyruqni takrorlash va muammoli hududni bosqichma-bosqich toraytirish; bu jarayon ba’zan "disk arxeologiyasi" deb ataladi.
ncdu: interaktiv vizual tahlil
du --max-depth bilan bir necha darajaga qo'lda tushish sekin va noqulay bo'lishi mumkin. ncdu (NCurses Disk Usage) buning o'rniga interaktiv, harakatlanish mumkin bo'lgan terminal interfeysini taqdim etadi:
--- /var -----------------------------
1.2GiB [##########] /log
340MiB [### ] /cache
180MiB [## ] /lib
45MiB [ ] /tmp
Strelka tugmalari katalogga kirish imkonini beradi, d esa fayl yoki katalogni to'g'ridan-to'g'ri o'chiradi. du ga nisbatan ncdu bir marta skanerlaydi, so'ng butun daraxt bo'ylab tez harakatlanish imkonini beradi — har safar qayta skanerlash shart emas.
Danger
ncdu ichida d bilan o'chirish qaytarib bo'lmaydi. Production serverda fayllarni ko'r-ko'rona o'chirishdan oldin har doim fayl aslida nima ekanini (qaysi xizmatga tegishli, qachon yaratilgan) tekshiring — muhim konfiguratsiya yoki ma’lumot fayli tasodifan o'chirilishi mumkin.
Inode’lar tugashi: df -i
Diskda bo'sh joy bo'lsa ham fayl yaratib bo'lmasligi mumkin — chunki inode’lar tugagan. Har bir fayl (hajmidan qat’i nazar) bitta inode egallaydi va fayl tizimi yaratilganda qat’iy sondagi inode ajratiladi.
Agar IUse% 100% bo'lsa, diskda bo'sh joy bo'lsa ham yangi fayl yaratib bo'lmaydi — df -h buni umuman ko'rsatmaydi, chunki u fayllar sonini emas, faqat baytlarni sanaydi.
Bu holat odatda millionlab mayda fayl yaratadigan tizimlarda uchraydi: sessiya fayllari, keshlar, pochta spool’lari yoki noto'g'ri sozlangan vaqtinchalik fayllar generatori.
Eng katta fayl yoki katalogni topish
find bilan berilgan hajmdan katta fayllarni qidirish:
-xdev— qidiruvni joriy fayl tizimi bilan cheklaydi, boshqa mount qilingan fayl tizimlariga (masalan, NFS’ga) o'tmaydi;-size +500M— 500 MiB dan katta fayllar.
du va sort ni birlashtirib, eng katta 10 ta katalogni topish:
-a (all) — faqat kataloglarni emas, alohida fayllarni ham sanaydi.
Amaliy vaziyat: / 95% to'la, lekin sababi noma’lum
Vaziyat: df -h / root bo'lim 95% ishlatilganini ko'rsatyapti, lekin qaysi katalog bunga javobgar ekani noma’lum.
1-qadam. Umumiy holatni tasdiqlang.
2-qadam. Birinchi darajadagi kataloglarni tartiblang.
3-qadam. /var ga chuqurroq kiring.
4-qadam. /var/log ichidagi muayyan faylni toping.
Xulosa: aybdor — nazoratsiz o'sib ketgan bitta debug.log fayli, ehtimol log rotation ishlamay qolgani sababli. Muammoni to'liq hal qilish — faylni tozalash yoki olib tashlash, so'ng log rotation’ni tuzatish — Disk to'lganda troubleshooting maqolasining markaziy vaziyati sifatida davom etadi.
Keng tarqalgan xatolar
du ni butun / ga -x siz ishga tushirish
-x (yoki --one-file-system) siz du / ni ishga tushirish boshqa mount qilingan fayl tizimlariga (NFS, tashqi disk) ham tushib, noto'g'ri, oshirilgan natija beradi:
df "to'la" deganda sababni du dan qidirmaslik
df faqat "qancha ishlatilgan" deydi, "nima ishlatayotgani"ni emas. Sababni topish har doim du yoki ncdu bilan chuqurroq qazishni talab qiladi.
O'chirilgan, lekin ochiq turgan fayllarni unutish
Agar du natijasi va df natijasi mos kelmasa, bu ko'pincha xato emas — fayl allaqachon o'chirilgan, lekin biror jarayon uni hali ham ochiq ushlab turibdi. Bu holatni faqat du/ncdu bilan aniqlab bo'lmaydi.
Inode’lar tugashini tekshirmaslik
"Diskda joy bor, lekin fayl yaratib bo'lmayapti" xatosini ko'rib, df -i ni tekshirmasdan, faqat df -h ga qarab "joy yetarli" degan xulosaga kelish keng tarqalgan xato.
Mashqlar
df -hvadu -sh /*chiqishlarini solishtiring, nomuvofiqlik bor-yo'qligini aniqlang va nega ekanini tushuntiring./varichidagi eng katta uchta katalogni topish uchundu -h --max-depth=1 /var | sort -rhdan foydalaning.ncduni o'rnating, uni/da ishga tushiring va eng katta 5 ta katalogni interaktiv tarzda toping (o'chirmasdan, faqat ko'rib).- Tizimingizdagi inode bandligini
df -ibilan tekshiring va udf -hdan qanday farq qilishini qayd qiling.
Mashqni bajardim deyish uchun: baytlar bo'yicha 95% "ishlatilgan", lekin inode bandligi past bo'lgan fayl tizimi berilganda javobgar katalog yoki faylni topadigan keyingi buyruqni ayta olishingiz kerak.
Xulosa
df -h fayl tizimi darajasidagi tezkor umumiy ko'rinishni beradi, du -sh esa katalog ichidagi haqiqiy fayl hajmlarini sanaydi — ikkalasi o'rtasidagi nomuvofiqlikka ko'pincha o'chirilgan, lekin ochiq turgan fayllar sabab bo'ladi. du --max-depth va ncdu katta kataloglar ierarxiyasida aybdorni bosqichma-bosqich yoki interaktiv tarzda toraytirishga yordam beradi, df -i esa baytlar emas, fayllar (inode’lar) tugashi muammosini ochib beradi. Bu vositalar disk kvotalari bilan birga ishlaydi: kvota kimga qancha ruxsat berilganini, disk bandligi esa hozir joy aslida qayerga ketayotganini ko'rsatadi. Keyingi maqola — Disk to'lganda troubleshooting ikkala vositani haqiqiy "disk to'la" vaziyatini hal qilishning yagona amaliy tartibiga birlashtiradi.