Halo sadayana! Kami terus ngaluncurkeun aliran anyar pikeun kursus-kursus anu anjeun parantos resep sareng ayeuna urang buru-buru ngumumkeun yén kami ngamimitian sét kursus-kursus anyar.
Sistem file maya dianggo salaku jenis abstraksi magis anu ngamungkinkeun filsafat Linux nyarios yén "sagala mangrupikeun file."
Naon sistem file? Dumasar kana kecap salah sahiji kontributor munggaran sareng pangarang Linux
Dasar Filesystem
Kernel Linux gaduh sarat anu tangtu pikeun éntitas anu tiasa dianggap sistem file. Eta kudu nerapkeun métode open()
, read()
и write()
pikeun objék pengkuh nu boga ngaran. Tina sudut pandang anu berorientasi obyék
Upami urang tiasa muka, maca, sareng nyerat ka éntitas, éntitas éta dianggap file, sakumaha anu urang tingali tina conto dina konsol di luhur.
Fenomena VFS ngan ukur negeskeun observasi sapertos Unix yén "sadayana mangrupikeun file". Pikirkeun kumaha anéh yén conto leutik / dev / konsol di luhur nunjukkeun kumaha konsolna leres-leres jalanna. Gambar nunjukkeun sési Bash interaktif. Ngirim string ka konsol (alat konsol virtual) mintonkeun eta dina layar virtual. VFS boga séjén, malah sipat muhrim. Salaku conto, éta ngamungkinkeun anjeun milarian ku
Sistem anu biasa sapertos ext4, NFS, sareng /proc gaduh tilu fungsi penting dina struktur data C anu disebut. read()
hiji sistem file lajeng nganggo metodeu write ()
sistem file sejen pikeun kaluaran data.
Definisi fungsi anu kalebet kana jinis dasar VFS aya dina file fs/
ngandung sistem file tangtu. Inti ogé ngandung éntitas sapertos cgroups
, /dev
и tmpfs
, nu diperlukeun salila prosés boot sahingga dihartikeun dina subdirectory kernel init/
. Perhatikeun éta cgroups
, /dev
и tmpfs
ulah nelepon "tilu badag" fungsi file_operations
, tapi langsung maca jeung nulis ka memori.
Diagram di handap ieu nunjukkeun kumaha ruang pangguna ngaksés sababaraha jinis sistem file anu biasa dipasang dina sistem Linux. Struktur teu ditémbongkeun pipes
, dmesg
и POSIX clocks
, anu ogé ngalaksanakeun struktur file_operations
, diaksés ngaliwatan lapisan VFS.
VFS mangrupakeun "lapisan wrapper" antara panggero sistem jeung palaksanaan tinangtu file_operations
sapertos ext4
и procfs
. Fungsi file_operations
tiasa berinteraksi sareng supir alat atanapi alat aksés memori. tmpfs
, devtmpfs
и cgroups
teu make file_operations
, tapi langsung ngaksés mémori.
Ayana VFS nyadiakeun kasempetan pikeun make deui kode, sabab métode dasar pakait sareng sistem file teu kudu ulang dilaksanakeun ku unggal tipe sistem file. Paké deui kode mangrupikeun prakték umum di kalangan insinyur parangkat lunak! Sanajan kitu, lamun kode reusable ngandung
/tmp: pitunjuk basajan
Cara anu gampang pikeun ngadeteksi yén VFS aya dina sistem nyaéta ngetik mount | grep -v sd | grep -v :/
, anu bakal nunjukkeun sadaya anu dipasang (mounted
) sistem file nu teu disk-nyicingan jeung non-NFS, nu bener dina kalolobaan komputer. Salah sahiji mounts didaptarkeun (mounts
) VFS bakal undoubtedly /tmp
, leres?
Sarerea weruh yén gudang / tmp
dina medium fisik - madness!
Naha teu pikaresepeun pikeun nyimpen /tmp
dina média fisik? Kusabab file di /tmp
samentara sareng alat panyimpen langkung laun tibatan mémori dimana tmpfs didamel. Leuwih ti éta, média fisik leuwih rentan mun maké nalika overwritten ti memori. Tungtungna, file dina /tmp tiasa ngandung inpormasi sénsitip, janten ngaleungit dina unggal reboot mangrupikeun fitur anu penting.
Hanjakalna, sababaraha skrip pamasangan distribusi Linux nyiptakeun /tmp dina alat panyimpen sacara standar. Entong hariwang upami ieu ogé kajantenan ka sistem anjeun. Turutan sababaraha parentah basajan kalawan tmpfs
janten teu sadia pikeun tujuan séjén. Dina basa sejen, sistem kalawan tmpfs raksasa sarta file badag dina eta bisa kaluar tina mémori jeung kacilakaan. Petunjuk sanésna: nalika ngédit file /etc/fstab
, Inget yen eta kudu ditungtungan ku newline a, disebutkeun sistem Anjeun moal boot.
/proc jeung /sys
sajaba ti /tmp
, VFS (sistem file virtual) anu paling akrab pikeun pangguna Linux nyaéta /proc
и /sys
. (/dev
resides dina memori dibagikeun jeung teu boga file_operations
). Naha dua komponén ieu? Hayu urang nalungtik masalah ieu.
procfs
nyiptakeun snapshot tina kernel sareng prosés anu dipantau userspace
. The /proc
kernel nyitak inpormasi ngeunaan naon anu sayogi, sapertos interrupts, mémori virtual, sareng jadwal. Salian ti éta, /proc/sys
nyaeta tempat dimana parameter ngonpigurasi kalawan paréntah sysctl
, sadia pikeun userspace
. Status sareng statistik prosés individu dipintonkeun dina diréktori /proc/
.
Ieu téh /proc/meminfo
mangrupa file kosong nu tapi ngandung émbaran berharga.
tingkah laku /proc
file nembongkeun sabaraha béda sistem file disk VFS tiasa. Di hiji sisi, /proc/meminfo
ngandung inpormasi anu tiasa ditingali kalayan paréntah free
. Di sisi séjén, éta kosong! Kumaha jalanna? Kaayaan ieu reminiscent tina artikel kawentar judulna /proc
, sarta sabenerna dina file /proc
aya nanaon lamun euweuh nu pilari. Sakumaha ceuk
Semu kosong procfs
asup akal sabab informasi aya dinamis. Hiji kaayaan rada béda jeung sysfs
. Hayu urang bandingkeun sabaraha file anu ukuranna sahenteuna hiji bait /proc
jeung /sys
.
Procfs
gaduh hiji file, nyaéta konfigurasi kernel anu diékspor, anu mangrupikeun pengecualian sabab ngan ukur kedah dibangkitkeun sakali per boot. Di sisi séjén, di /sys
aya loba file nu leuwih gede, loba nu nyokot hiji sakabéh kaca memori. Biasana file sysfs
ngandung persis hiji angka atawa garis, teu kawas tabel informasi diala tina maca file kayaning /proc/meminfo
.
tujuan sysfs
- nyadiakeun maca / nulis sipat naon nelepon kernel «kobjects»
dina rohangan pamaké. Hiji-hijina tujuan kobjects
nyaeta link cacah: lamun link panungtungan pikeun kobject a dihapus, Sistim bakal mulangkeun sumberdaya pakait sareng eta. Sanajan kitu, /sys
ngajadikeun paling kawentar
ABI stabil kernel ngabatesan naon anu tiasa muncul /sys
, teu naon sabenerna hadir dina momen nu tangtu. Listing idin file dina sysfs nyadiakeun wawasan kumaha setelan configurable pikeun alat, modul, filesystems, jsb. bisa dikonpigurasikeun atawa dibaca. Kacindekan logis nyaéta procfs ogé bagian tina ABI stabil kernel, sanajan ieu teu sacara eksplisit dinyatakeun dina
Berkas di sysfs
ngajelaskeun hiji sipat husus pikeun tiap éntitas sarta bisa dibaca, ditulis, atawa duanana. "0" dina file hartina SSD teu bisa dihapus.
Hayu urang mimitian bagian kadua tarjamahan ku cara ngawas VFS nganggo alat eBPF sareng bcc, sareng ayeuna urang ngantosan koméntar anjeun sareng sacara tradisional ngajak anjeun
sumber: www.habr.com