Halo kabeh! Kita terus ngluncurake aliran anyar kanggo kursus sing wis sampeyan tresnani lan saiki kita cepet-cepet ngumumake yen kita miwiti kursus kursus anyar
Sistem file virtual dadi semacam abstraksi magis sing ngidini filosofi Linux ngomong yen "kabeh iku file."
Apa iku sistem file? Adhedhasar tembung saka salah siji kontributor pisanan lan penulis Linux
Dasar Sistem File
Kernel Linux nduweni syarat tartamtu kanggo entitas sing bisa dianggep minangka sistem file. Iku kudu ngleksanakake cara open()
, read()
ΠΈ write()
kanggo obyek terus-terusan sing duwe jeneng. Saka sudut pandang obyek
Yen kita bisa mbukak, maca, lan nulis menyang entitas, banjur entitas kasebut dianggep minangka file, kaya sing bisa dideleng saka conto ing konsol ing ndhuwur.
Fenomena VFS mung nandheske pengamatan kaya Unix sing "kabeh iku file". Mikir carane aneh sing sethitik / dev / conto console ndhuwur nuduhake carane console bener bisa. Gambar nuduhake sesi Bash interaktif. Ngirim senar menyang console (piranti console virtual) nampilake ing layar virtual. VFS duwe liyane, malah liyo sifat. Contone, ngidini sampeyan nggoleki kanthi
Sistem sing akrab kayata ext4, NFS, lan /proc duwe telung fungsi penting ing struktur data C sing diarani read()
siji sistem file banjur gunakake metode kasebut write ()
sistem file liyane kanggo output data.
Definisi fungsi sing kalebu jinis VFS dhasar ana ing file fs/
ngemot sistem file tartamtu. Inti uga ngandhut entitas kayata cgroups
, /dev
ΠΈ tmpfs
, sing dibutuhake sajrone proses boot lan mulane ditetepake ing subdirektori kernel init/
. Wigati sing cgroups
, /dev
ΠΈ tmpfs
aja nelpon "telu gedhe" fungsi file_operations
, nanging langsung maca lan nulis menyang memori.
Diagram ing ngisor iki nuduhake kepiye ruang pangguna ngakses macem-macem jinis sistem file sing umum dipasang ing sistem Linux. Struktur ora ditampilake pipes
, dmesg
ΠΈ POSIX clocks
, kang uga ngleksanakake struktur file_operations
, diakses liwat lapisan VFS.
VFS punika "lapisan wrapper" antarane sistem telpon lan implementasine tartamtu file_operations
kayata ext4
ΠΈ procfs
. Fungsi file_operations
bisa sesambungan karo driver piranti utawa piranti akses memori. tmpfs
, devtmpfs
ΠΈ cgroups
ora nganggo file_operations
, nanging langsung ngakses memori.
Anane VFS nyedhiyakake kemampuan kanggo nggunakake maneh kode, amarga cara dhasar sing ana gandhengane karo sistem file ora kudu dileksanakake maneh dening saben jinis sistem file. Gunakake maneh kode minangka praktik umum ing antarane insinyur piranti lunak! Nanging, yen kode sing bisa digunakake maneh ngemot
/tmp: Petunjuk prasaja
Cara sing gampang kanggo ndeteksi manawa VFS ana ing sistem yaiku ngetik mount | grep -v sd | grep -v :/
, sing bakal nuduhake kabeh sing dipasang (mounted
) filesystems sing ora disk-penduduk lan non-NFS, kang bener ing paling komputer. Salah sijine gunungan sing kadhaptar (mounts
) VFS mesthi bakal /tmp
, bener?
Saben uwong ngerti panyimpenan kasebut / tmp
ing medium fisik - Madness!
Apa iku undesirable kanggo nyimpen /tmp
ing media fisik? Amarga file ing /tmp
piranti sauntara lan panyimpenan luwih alon tinimbang memori ing ngendi tmpfs digawe. Kajaba iku, media fisik luwih rentan kanggo nimpa nyandhang tinimbang memori. Pungkasan, file ing /tmp bisa ngemot informasi sensitif, saengga ilang ing saben urip maneh minangka fitur sing penting.
Sayange, sawetara skrip instalasi distribusi Linux nggawe /tmp ing piranti panyimpenan kanthi standar. Aja nglokro yen iki kedadeyan ing sistem sampeyan uga. Tindakake sawetara instruksi prasaja karo tmpfs
dadi ora kasedhiya kanggo tujuan liyane. Ing tembung liyane, sistem karo tmpfs buta lan file gedhe ing bisa entek memori lan kacilakan. Petunjuk liyane: nalika nyunting file /etc/fstab
, Elinga yen kudu diakhiri karo baris anyar, yen ora, sistem sampeyan ora bakal boot.
/proc lan /sys
Kajaba iku /tmp
, VFS (sistem file virtual) sing paling akrab kanggo pangguna Linux yaiku /proc
ΠΈ /sys
. (/dev
manggon ing memori sambungan lan ora duwe file_operations
). Apa loro komponen iki? Ayo padha nliti masalah iki.
procfs
nggawe gambar asli saka kernel lan pangolahan sing dipantau userspace
. ing /proc
kernel nyithak informasi babagan apa sing kasedhiya, kayata interrupts, memori virtual, lan panjadwal. Kajaba iku, /proc/sys
iku panggonan ngendi paramèter diatur karo printah sysctl
, kasedhiya kanggo userspace
. Status lan statistik proses individu ditampilake ing direktori /proc/
.
iku /proc/meminfo
minangka file kosong sing isih ngemot informasi penting.
Prilaku /proc
file nuduhake carane sistem file disk VFS beda bisa. Ing sisih siji, /proc/meminfo
ngemot informasi sing bisa dideleng nganggo printah free
. Ing tangan liyane, iku kosong! Piye cara kerjane? Kahanan kasebut ngeling-eling artikel sing misuwur kanthi irah-irahan /proc
, lan bener ing file /proc
ora ana apa-apa nalika ora ana sing ndeleng. Minangka ngandika
Katon kekosongan procfs
masuk akal amarga informasi ana dinamis. A kahanan rada beda karo sysfs
. Ayo mbandhingake jumlah file sing ukurane paling sethithik sak bait /proc
lan ing /sys
.
Procfs
nduweni siji file, yaiku konfigurasi kernel sing diekspor, sing minangka pangecualian amarga mung kudu digawe sapisan saben boot. Ing tangan liyane, ing /sys
ana akeh file sing luwih gedhe, akeh sing njupuk kabeh kaca memori. Biasane file sysfs
ngemot persis siji nomer utawa baris, ora kaya tabel informasi sing dipikolehi saka maca file kayata /proc/meminfo
.
Tujuane sysfs
- nyedhiyakake properti maca / nulis apa sing diarani kernel Β«kobjectsΒ»
ing ruang panganggo. Tujuan mung kobjects
punika link pancacahan: nalika link pungkasan kanggo kobject dibusak, sistem bakal mulihake sumber daya gadhah. Nanging, /sys
ndadekake paling misuwur
ABI stabil kernel mbatesi apa sing bisa ditampilake /sys
, dudu apa sing ana ing wektu kasebut. Listing ijin file ing sysfs menehi wawasan babagan setelan sing bisa dikonfigurasi kanggo piranti, modul, sistem file, lsp. bisa diatur utawa diwaca. Kesimpulan logis yaiku procfs uga minangka bagean saka ABI stabil kernel, sanajan iki ora kasebut kanthi jelas ing
File ing sysfs
njlèntrèhaké siji properti tartamtu kanggo saben entitas lan bisa diwaca, bisa ditulis, utawa loro-lorone. "0" ing file tegese SSD ora bisa dibusak.
Ayo miwiti bagean kapindho terjemahan kanthi cara ngawasi VFS nggunakake alat eBPF lan bcc, lan saiki ngenteni komentar sampeyan lan kanthi tradisional ngajak sampeyan
Source: www.habr.com