Hammaga salom! Siz allaqachon sevib qolgan kurslar uchun yangi oqimlarni boshlashda davom etamiz va endi biz yangi kurslar toʻplamini boshlayotganimizni eʼlon qilishga shoshilmoqdamiz.
Virtual fayl tizimlari Linux falsafasiga "hamma narsa fayl" deb aytishga imkon beruvchi sehrli abstraksiya bo'lib xizmat qiladi.
Fayl tizimi nima? Linuxning birinchi hissa qo'shuvchilari va mualliflaridan birining so'zlari asosida
Fayl tizimi asoslari
Linux yadrosi fayl tizimi deb hisoblanishi mumkin bo'lgan ob'ekt uchun ma'lum talablarga ega. U usullarni amalga oshirishi kerak open()
, read()
и write()
nomlari bo'lgan doimiy ob'ektlar uchun. Ob'ektga yo'naltirilgan nuqtai nazardan
Agar biz ob'ektni ochishimiz, o'qishimiz va yozishimiz mumkin bo'lsa, u holda yuqoridagi konsoldagi misoldan ko'rib turganimizdek, bu ob'ekt fayl hisoblanadi.
VFS fenomeni faqat Unix-ga o'xshash "hamma narsa fayl" degan kuzatuvni ta'kidlaydi. Yuqoridagi kichik /dev/console misoli konsolning qanday ishlashini ko'rsatishi qanchalik g'alati ekanligini o'ylab ko'ring. Rasmda interaktiv Bash sessiyasi ko'rsatilgan. Konsolga satr yuborish (virtual konsol qurilmasi) uni virtual ekranda ko'rsatadi. VFS boshqa, hatto g'alati xususiyatlarga ega. Misol uchun, bu sizga qidirish imkonini beradi
Ext4, NFS va /proc kabi tanish tizimlar C ma'lumotlar strukturasida uchta muhim funktsiyaga ega. read()
bitta fayl tizimi va keyin usuldan foydalaning write ()
ma'lumotlarni chiqarish uchun boshqa fayl tizimi.
Asosiy VFS turlariga tegishli funksiya ta'riflari fayllarda mavjud fs/
ma'lum fayl tizimlarini o'z ichiga oladi. Yadro shuningdek, kabi ob'ektlarni o'z ichiga oladi cgroups
, /dev
и tmpfs
, ular yuklash jarayonida talab qilinadi va shuning uchun yadro pastki katalogida aniqlanadi init/
. E'tibor bering cgroups
, /dev
и tmpfs
"katta uchta" funktsiyalarni chaqirmang file_operations
, lekin to'g'ridan-to'g'ri o'qish va xotiraga yozish.
Quyidagi diagrammada foydalanuvchilar maydoni odatda Linux tizimlarida o'rnatilgan turli xil fayl tizimlariga qanday kirishi ko'rsatilgan. Tuzilmalar ko'rsatilmagan pipes
, dmesg
и POSIX clocks
, bu ham tuzilmani amalga oshiradi file_operations
, VFS qatlami orqali kirish mumkin.
VFS - bu tizim qo'ng'iroqlari va ma'lum dasturlarni amalga oshirish o'rtasidagi "o'rash qatlami" file_operations
, kabi ext4
и procfs
. Funksiyalar file_operations
qurilma drayverlari yoki xotiraga kirish qurilmalari bilan ishlashi mumkin. tmpfs
, devtmpfs
и cgroups
foydalanmang file_operations
, lekin to'g'ridan-to'g'ri xotiraga kirish.
VFS ning mavjudligi kodni qayta ishlatish imkoniyatini beradi, chunki fayl tizimlari bilan bog'liq bo'lgan asosiy usullar har bir fayl tizimi tomonidan qayta qo'llanilishi shart emas. Kodni qayta ishlatish dastur muhandislari orasida keng tarqalgan amaliyotdir! Biroq, agar qayta foydalanish mumkin bo'lgan kod mavjud bo'lsa
/tmp: oddiy maslahat
Tizimda VFS mavjudligini aniqlashning oson yo'li terishdir mount | grep -v sd | grep -v :/
, bu barcha o'rnatilganlarni ko'rsatadi (mounted
) diskda rezident bo'lmagan va NFS bo'lmagan fayl tizimlari, bu ko'pchilik kompyuterlarda to'g'ri. Ro'yxatdagi o'rnatishlardan biri (mounts
) VFS shubhasiz /tmp
, to'g'rimi?
Bu saqlash joyini hamma biladi / tmp
jismoniy vositada - jinnilik!
Nima uchun uni saqlash kerak emas /tmp
jismoniy ommaviy axborot vositalarida? Chunki fayllar ichida /tmp
vaqtinchalik va saqlash qurilmalari tmpfs yaratilgan xotiradan sekinroq. Bundan tashqari, fizik media xotiradan ko'ra qayta yozilganda kiyinishga ko'proq moyil bo'ladi. Va nihoyat, /tmp-dagi fayllar maxfiy ma'lumotlarni o'z ichiga olishi mumkin, shuning uchun ularni har bir qayta ishga tushirishda yo'q qilish muhim xususiyatdir.
Afsuski, ba'zi Linux tarqatish o'rnatish skriptlari sukut bo'yicha saqlash qurilmasida /tmp ni yaratadi. Agar bu sizning tizimingizda ham sodir bo'lgan bo'lsa, umidsizlikka tushmang. Bir nechta oddiy ko'rsatmalarga amal qiling tmpfs
boshqa maqsadlar uchun mavjud bo'lmaydi. Boshqacha qilib aytganda, gigant tmpfs va undagi katta fayllarga ega tizimning xotirasi tugashi va ishdan chiqishi mumkin. Yana bir maslahat: faylni tahrirlashda /etc/fstab
, esda tutingki, u yangi qator bilan tugashi kerak, aks holda tizimingiz yuklanmaydi.
/proc va /sys
Bundan tashqari /tmp
, Linux foydalanuvchilariga eng tanish bo'lgan VFS (virtual fayl tizimlari). /proc
и /sys
. (/dev
umumiy xotirada joylashgan va ega emas file_operations
). Nima uchun bu ikki komponent? Keling, bu masalani ko'rib chiqaylik.
procfs
yadro va u kuzatadigan jarayonlarning suratini yaratadi userspace
. The /proc
yadro uzilishlar, virtual xotira va rejalashtiruvchi kabi mavjud narsalar haqidagi ma'lumotlarni chop etadi. Bundan tashqari, /proc/sys
buyruq bilan sozlangan parametrlar joy sysctl
, uchun mavjud userspace
. Alohida jarayonlarning holati va statistikasi kataloglarda ko'rsatiladi /proc/
.
u /proc/meminfo
bo'sh fayl bo'lib, unda qimmatli ma'lumotlar mavjud.
Xatti-harakatlar /proc
fayllar turli VFS disk fayl tizimlari bo'lishi mumkinligini ko'rsatadi. Bir tomondan, /proc/meminfo
buyrug'i bilan ko'rish mumkin bo'lgan ma'lumotlarni o'z ichiga oladi free
. Boshqa tomondan, u bo'sh! Bu qanday ishlaydi? Vaziyat sarlavhali mashhur maqolani eslatadi /proc
, va aslida fayllarda /proc
hech kim qaramasa, hech narsa yo'q. Aytgandek
Ko'rinadigan bo'shliq procfs
mantiqiy, chunki u yerdagi axborot dinamik. Biroz boshqacha vaziyat sysfs
. Keling, kamida bir bayt o'lchamdagi nechta fayl mavjudligini taqqoslaylik /proc
va /sys
.
Procfs
bitta faylga, ya'ni eksport qilingan yadro konfiguratsiyasiga ega, bu istisno, chunki u yuklashda faqat bir marta yaratilishi kerak. Boshqa tomondan, ichida /sys
ko'p kattaroq fayllar mavjud bo'lib, ularning aksariyati xotiraning butun sahifasini egallaydi. Odatda fayllar sysfs
kabi fayllarni o'qish natijasida olingan ma'lumotlar jadvallaridan farqli o'laroq, aynan bitta raqam yoki qatorni o'z ichiga oladi /proc/meminfo
.
Maqsad sysfs
- yadro chaqiradigan narsalarni o'qish/yozish xususiyatlarini ta'minlash «kobjects»
foydalanuvchilar maydonida. Yagona maqsad kobjects
havolani hisoblash: ob'ektga oxirgi havola o'chirilganda, tizim u bilan bog'liq resurslarni tiklaydi. Shunga qaramasdan, /sys
mashhurlarining ko'p qismini tashkil qiladi
Yadroning barqaror ABI ko'rinishi mumkin bo'lgan narsalarni cheklaydi /sys
, o'sha paytda mavjud bo'lgan narsa emas. Sysfs-da fayllarga ruxsatnomalar ro'yxati qurilmalar, modullar, fayl tizimlari va boshqalar uchun qanday sozlanishi mumkinligi haqida tushuncha beradi. sozlanishi yoki o‘qilishi mumkin. Mantiqiy xulosa shuki, procfs ham yadroning barqaror ABI qismidir, garchi bu hujjatda aniq ko'rsatilmagan bo'lsa-da.
Fayllar sysfs
har bir ob'ekt uchun alohida xususiyatni tavsiflang va o'qilishi, yozilishi yoki ikkalasi bo'lishi mumkin. Fayldagi "0" SSD-ni olib tashlab bo'lmasligini anglatadi.
Tarjimaning ikkinchi qismini eBPF va bcc vositalaridan foydalangan holda VFS ni qanday kuzatish haqida boshlaylik, endi biz sizning sharhlaringizni kutamiz va an'anaviy ravishda sizni taklif qilamiz.
Manba: www.habr.com