Sistem file virtual ing Linux: kenapa dibutuhake lan kepiye cara kerjane? Bagean 1

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 "Linux Administrator"sing bakal diluncurake ing akhir April. A publikasi anyar bakal tanggal kanggo acara iki. Kanthi bahan asli, sampeyan bisa maca kene.

Sistem file virtual dadi semacam abstraksi magis sing ngidini filosofi Linux ngomong yen "kabeh iku file."

Sistem file virtual ing Linux: kenapa dibutuhake lan kepiye cara kerjane? Bagean 1

Apa iku sistem file? Adhedhasar tembung saka salah siji kontributor pisanan lan penulis Linux Roberta Lava, "Sistem file minangka panyimpenan hirarkis data sing diklumpukake miturut struktur tartamtu." Nanging, definisi iki uga cocog karo VFAT (Virtual File Allocation Table), Git lan Cassandra (database NoSQL). Dadi apa persis sing nemtokake bab kasebut minangka "sistem file"?

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 program, kernel nemtokake sistem file umum minangka antarmuka abstrak, lan telung fungsi gedhe iki dianggep "virtual" lan ora duwe definisi konkrit. Mulane, implementasine sistem file standar diarani sistem file virtual (VFS).

Sistem file virtual ing Linux: kenapa dibutuhake lan kepiye cara kerjane? Bagean 1

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 dening dheweke.

Sistem sing akrab kayata ext4, NFS, lan /proc duwe telung fungsi penting ing struktur data C sing diarani file_operations. Kajaba iku, sistem file tartamtu ngluwihi lan nemtokake maneh fungsi VFS kanthi cara orientasi obyek sing akrab. Kaya sing dituduhake Robert Love, abstraksi VFS ngidini pangguna Linux nyalin file menyang utawa saka sistem operasi pihak katelu utawa entitas abstrak kaya pipa tanpa kuwatir babagan format data internal. Ing sisih pangguna (ruang pangguna), nggunakake panggilan sistem, proses bisa nyalin saka file menyang struktur data kernel nggunakake metode 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/*.c kode sumber kernel, nalika subdirektori 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.

Sistem file virtual ing Linux: kenapa dibutuhake lan kepiye cara kerjane? Bagean 1

VFS punika "lapisan wrapper" antarane sistem telpon lan implementasine tartamtu file_operationskayata 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 kesalahan serius, kabeh implementasine sing marisi cara umum nandhang sangsara marga saka wong-wong mau.

/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?

Sistem file virtual ing Linux: kenapa dibutuhake lan kepiye cara kerjane? Bagean 1

Saben uwong ngerti panyimpenan kasebut / tmp ing medium fisik - Madness! Sumber.

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 Arch Wikikanggo ndandani iki, lan weruh sing memori diparengake kanggo 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/.

Sistem file virtual ing Linux: kenapa dibutuhake lan kepiye cara kerjane? Bagean 1

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 Apa rembulan ana nalika ora ana sing ndeleng? Teori Realitas lan Kuantum"ditulis dening profesor fisika Universitas Cornell David Mermin ing taun 1985. Kasunyatan iku kernel nglumpukake statistik memori nalika request digawe kanggo /proc, lan bener ing file /proc ora ana apa-apa nalika ora ana sing ndeleng. Minangka ngandika Mermin, "Doktrin kuantum dhasar nyatakake yen pangukuran umume ora nuduhake nilai sing wis ana saka properti sing diukur." (Lan nimbang pitakonan babagan rembulan minangka peer!)
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.

Sistem file virtual ing Linux: kenapa dibutuhake lan kepiye cara kerjane? Bagean 1

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 kanggo pangguna" inti, sing ora ana sing bisa, ing kahanan apa wae "putus". Iki ora ateges file ing sysfs statis, sing bakal ora konsisten karo referensi ngetung obyek sing ora stabil.
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 dokumentasi.

Sistem file virtual ing Linux: kenapa dibutuhake lan kepiye cara kerjane? Bagean 1

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 mbukak webinar, sing bakal dianakake guru ing tanggal 9 April - Vladimir Drozdetsky.

Source: www.habr.com

Add a comment