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

Sistem file virtual tumindak minangka sawijining abstraksi magis sing ngidini filsafat Linux ngomong nèk "kabèh iku berkas".

Sistem berkas virtual ing LinuxApa sebabe dibutuhake lan kepiye cara kerjane? Bagean 1

Apa kuwi sistem berkas? Miturut salah sawijining kontributor lan penulis pisanan 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

Inti Linux nduweni syarat tartamtu supaya entitas bisa dianggep minangka sistem file. Entitas kasebut kudu ngetrapake metode 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 berkas virtual ing LinuxApa sebabe 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_operationsKajaba iku, sistem file tartamtu ngembangake lan ngleksanakake maneh fungsi VFS kanthi cara sing wis dikenal kanthi orientasi objek. Kaya sing dicathet Robert Love, abstraksi VFS ngidini pangguna Linux Nyalin file menyang lan saka sistem operasi pihak katelu utawa entitas abstrak kayata pipa kanthi sembrono, tanpa kuwatir babagan format data internal. Saka sisih pangguna (ruang panganggo), proses bisa nyalin saka file menyang struktur data kernel nggunakake panggilan sistem. 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 panganggo ngakses macem-macem jinis sistem file sing umum dipasang ing sistem. LinuxKonstruksi kaya sing ora dituduhake pipes, dmesg и POSIX clocks, kang uga ngleksanakake struktur file_operations, diakses liwat lapisan VFS.

Sistem berkas virtual ing LinuxApa sebabe 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 berkas virtual ing LinuxApa sebabe 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 Linux Distribusi nggawe /tmp ing piranti panyimpenan kanthi gawan. Aja kuwatir yen iki kedadeyan karo sistem sampeyan. Tindakake sawetara pandhuan prasaja nganggo 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 dikenal dening pangguna Linux - iki /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 berkas virtual ing LinuxApa sebabe 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 berkas virtual ing LinuxApa sebabe 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 berkas virtual ing LinuxApa sebabe 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

Tuku hosting sing dipercaya kanggo situs kanthi proteksi DDoS, server VPS VDS 🔥 Tuku hosting situs web sing bisa dipercaya nganggo proteksi DDoS, server VPS VDS | ProHoster