Mga sistema sa virtual nga file sa Linux: nganong gikinahanglan kini ug giunsa kini pagtrabaho? Bahin 1

Kumusta tanan! Nagpadayon kami sa paglansad sa mga bag-ong sapa alang sa mga kurso nga gihigugma na nimo ug karon nagdali kami sa pagpahibalo nga nagsugod kami usa ka bag-ong hugpong sa mga kurso "Linux Administrator"nga ilusad sa katapusan sa Abril. Usa ka bag-ong publikasyon ang mapetsahan alang niini nga kalihokan. Uban sa orihinal nga materyal, mahimo nimo basaha dinhi.

Ang mga sistema sa virtual nga file nagsilbi nga usa ka matang sa mahika nga abstraction nga nagtugot sa pilosopiya sa Linux sa pag-ingon nga "ang tanan usa ka file."

Mga sistema sa virtual nga file sa Linux: nganong gikinahanglan kini ug giunsa kini pagtrabaho? Bahin 1

Unsa ang file system? Pinasukad sa mga pulong sa usa sa mga una nga nag-ambag ug tagsulat sa Linux Roberta Lava, "Ang sistema sa file usa ka hierarchical nga pagtipig sa datos nga gitigum sumala sa usa ka piho nga istruktura." Bisan pa, kini nga kahulugan parehas nga haum sa VFAT (Virtual File Allocation Table), Git ug Cassandra (database sa NoSQL). Busa unsa gayud ang naghubit sa usa ka butang ingon nga usa ka "file system"?

Mga sukaranan sa Filesystem

Ang Linux kernel adunay piho nga mga kinahanglanon alang sa usa ka entidad nga maisip nga usa ka file system. Kinahanglang ipatuman niini ang mga pamaagi open(), read() ΠΈ write() alang sa padayon nga mga butang nga adunay mga ngalan. Gikan sa usa ka object-oriented nga punto sa panglantaw programa, gihubit sa kernel ang usa ka generic filesystem isip abstract interface, ug kining tulo ka dagkong mga function giisip nga "virtual" ug walay konkretong kahulugan. Tungod niini, ang default file system nga pagpatuman gitawag og virtual file system (VFS).

Mga sistema sa virtual nga file sa Linux: nganong gikinahanglan kini ug giunsa kini pagtrabaho? Bahin 1

Kung kita makaabli, makabasa, ug makasulat sa usa ka entidad, nan kana nga entidad giisip nga usa ka file, ingon sa atong makita gikan sa panig-ingnan sa console sa ibabaw.
Ang panghitabo sa VFS nagpasiugda lamang sa obserbasyon nga sama sa Unix nga "ang tanan usa ka file". Hunahunaa kung unsa ka katingad-an nga ang gamay nga / dev / console nga pananglitan sa ibabaw nagpakita kung giunsa ang paglihok sa console. Ang hulagway nagpakita sa usa ka interactive nga Bash session. Ang pagpadala og string ngadto sa console (virtual console device) nagpakita niini sa usa ka virtual screen. Ang VFS adunay lain, bisan ang mga estranghero nga kabtangan. Pananglitan, kini nagtugot kanimo sa pagpangita pinaagi sa pinaagi kaniya.

Ang pamilyar nga mga sistema sama sa ext4, NFS, ug / proc adunay tulo ka importante nga mga gimbuhaton sa usa ka C data structure nga gitawag file_operations. Dugang pa, ang pipila ka mga sistema sa file nagpalapad ug nagbag-o sa pag-andar sa VFS sa usa ka pamilyar nga paagi nga gipunting sa butang. Sama sa gipunting ni Robert Love, ang abstraction sa VFS nagtugot sa mga tiggamit sa Linux nga wala'y pagtagad nga pagkopya sa mga file ngadto o gikan sa mga operating system sa ikatulo nga partido o mga abstract nga entidad sama sa mga tubo nga dili mabalaka mahitungod sa ilang internal nga format sa datos. Sa bahin sa user (userspace), gamit ang usa ka tawag sa sistema, ang usa ka proseso mahimong kopyahon gikan sa usa ka file ngadto sa mga istruktura sa data sa kernel gamit ang pamaagi read() usa ka file system ug dayon gamita ang pamaagi write () laing file system alang sa data output.

Ang mga kahulugan sa function nga nahisakop sa base nga mga tipo sa VFS naa sa mga file fs/*.c kernel source code, samtang ang mga subdirectory fs/ adunay pipila ka mga sistema sa file. Ang kinauyokan naglangkob usab sa mga entidad sama sa cgroups, /dev ΠΈ tmpfs, nga gikinahanglan sa panahon sa proseso sa boot ug busa gihubit sa kernel subdirectory init/. Matikdi kana cgroups, /dev ΠΈ tmpfs ayaw tawga ang "dako nga tulo" nga mga gimbuhaton file_operations, apan direkta nga pagbasa ug pagsulat sa memorya.
Ang dayagram sa ubos nagpakita kung giunsa pag-access sa userspace ang lain-laing mga klase sa filesystem nga sagad gi-mount sa mga sistema sa Linux. Wala gipakita ang mga istruktura pipes, dmesg ΠΈ POSIX clocks, nga nagpatuman usab sa istruktura file_operations, na-access pinaagi sa VFS layer.

Mga sistema sa virtual nga file sa Linux: nganong gikinahanglan kini ug giunsa kini pagtrabaho? Bahin 1

Ang VFS kay usa ka "wrapper layer" tali sa mga tawag sa sistema ug mga pagpatuman sa pipila file_operations, sama sa ext4 ΠΈ procfs. Mga gimbuhaton file_operations mahimong makig-interact sa mga driver sa device o sa memory access device. tmpfs, devtmpfs ΠΈ cgroups ayaw gamita file_operations, apan direkta nga ma-access ang memorya.
Ang paglungtad sa VFS naghatag usa ka higayon nga magamit pag-usab ang code, tungod kay ang sukaranan nga mga pamaagi nga adunay kalabotan sa mga file system dili kinahanglan nga ipatuman pag-usab sa matag klase sa file system. Ang paggamit pag-usab sa code kay kasagarang praktis sa mga software engineer! Bisan pa, kung ang magamit nga code adunay sulud seryoso nga mga sayop, ang tanan nga mga pagpatuman nga nakapanunod sa kasagarang mga pamaagi nag-antus gikan kanila.

/tmp: Yano nga pahibalo

Ang usa ka dali nga paagi aron mahibal-an nga ang VFS naa sa usa ka sistema mao ang pag-type mount | grep -v sd | grep -v :/, nga magpakita sa tanan nga naka-mount (mounted) mga filesystem nga dili residente sa disk ug dili NFS, nga tinuod sa kadaghanan sa mga kompyuter. Usa sa gilista nga mga mount (mounts) Ang VFS sa walay duhaduha /tmp, di ba?

Mga sistema sa virtual nga file sa Linux: nganong gikinahanglan kini ug giunsa kini pagtrabaho? Bahin 1

Nahibal-an sa tanan kana nga pagtipig / tmp sa usa ka pisikal nga medium - kabuang! Tinubdan.

Ngano nga dili gusto ang pagtipig /tmp sa pisikal nga media? Tungod kay ang mga file sa /tmp temporaryo ug mas hinay ang mga storage device kay sa memorya diin gihimo ang tmpfs. Dugang pa, ang pisikal nga media mas dali nga ma-overwrite ang pagsul-ob kaysa memorya. Sa katapusan, ang mga file sa /tmp mahimong adunay sulud nga sensitibo nga kasayuran, mao nga ang pagwagtang niini sa matag pag-reboot usa ka hinungdanon nga bahin.

Ikasubo, ang pipila ka mga script sa pag-install sa pag-apod-apod sa Linux nagmugna / tmp sa aparato sa pagtipig pinaagi sa default. Ayaw pagkawalay paglaum kung mahitabo usab kini sa imong sistema. Sunda ang pipila ka yano nga mga panudlo nga adunay Arch Wikiaron ayuhon kini, ug hibaloi nga ang panumduman gigahin alang sa tmpfs mahimong dili magamit alang sa ubang mga katuyoan. Sa laing pagkasulti, ang usa ka sistema nga adunay higanteng tmpfs ug dagkong mga file niini mahimong mahurot sa memorya ug ma-crash. Laing pahibalo: samtang nag-edit sa usa ka file /etc/fstab, hinumdomi nga kinahanglan kini matapos sa usa ka bag-ong linya, kung dili ang imong sistema dili mag-boot.

/proc ug /sys

labut pa sa /tmp, VFS (virtual file system) nga labing pamilyar sa mga tiggamit sa Linux /proc ΠΈ /sys, (/dev nagpuyo sa shared memory ug wala file_operations). Nganong kining duha ka sangkap? Atong tan-awon kini nga isyu.

procfs nagmugna og snapshot sa kernel ug sa mga proseso nga gimonitor niini userspace. ang /proc ang kernel nag-imprenta og impormasyon mahitungod sa unsay anaa niini, sama sa mga interrupts, virtual memory, ug ang scheduler. Gawas pa, /proc/sys mao ang dapit diin ang mga parameter gi-configure uban sa sugo sysctl, magamit alang sa userspace. Ang kahimtang ug estadistika sa mga indibidwal nga proseso gipakita sa mga direktoryo /proc/.

Mga sistema sa virtual nga file sa Linux: nganong gikinahanglan kini ug giunsa kini pagtrabaho? Bahin 1

kini mao ang /proc/meminfo usa ka walay sulod nga payl nga bisan pa niana adunay sulod nga bililhong impormasyon.

Paggawi /proc Ang mga file nagpakita kung unsa ka lainlain ang VFS disk file system. Sa usa ka bahin, /proc/meminfo naglangkob sa impormasyon nga mahimong tan-awon uban sa sugo free. Sa laing bahin, walay sulod! Giunsa kini pagtrabaho? Ang kahimtang nagpahinumdom sa bantog nga artikulo nga giulohan Naglungtad ba ang bulan kung walay nagtan-aw niini? Reality ug Quantum Theory"gisulat sa propesor sa pisika sa Cornell University nga si David Mermin niadtong 1985. Ang tinuod mao nga ang kernel nagkolekta sa mga istatistika sa panumduman kung ang usa ka hangyo gihimo sa /proc, ug sa tinuod sa mga file /proc walay bisan unsa kung walay nagtan-aw. Ingon sa giingon Mermin, "Ang sukaranan nga doktrina sa quantum nag-ingon nga ang pagsukod sa kasagaran wala magpadayag sa usa ka nag-una nga bili sa kabtangan nga gisukod." (Ug ikonsiderar ang pangutana bahin sa bulan isip homework!)
Daw kahaw-ang procfs makatarunganon tungod kay ang impormasyon didto dinamiko. Usa ka gamay nga lahi nga kahimtang sa sysfs. Atong itandi kung pila ang mga file nga labing menos usa ka byte ang gidak-on /proc ug sa /sys.

Mga sistema sa virtual nga file sa Linux: nganong gikinahanglan kini ug giunsa kini pagtrabaho? Bahin 1

Procfs adunay usa ka file, nga mao ang gi-eksport nga kernel configuration, nga usa ka eksepsiyon tungod kay kini kinahanglan lamang nga mamugna kausa matag boot. Sa laing bahin, sa /sys adunay daghang dagkong mga file, daghan niini mokuha sa tibuok panid sa memorya. Kasagaran mga file sysfs adunay eksaktong usa ka numero o linya, dili sama sa mga lamesa sa impormasyon nga nakuha gikan sa pagbasa sa mga file sama sa /proc/meminfo.

Tumong sysfs - paghatag ug pagbasa/pagsulat sa mga kabtangan sa gitawag sa kernel Β«kobjectsΒ» sa userspace. Ang bugtong tumong kobjects mao ang pag-ihap sa link: kung ang kataposang sumpay sa usa ka kobject matangtang, ibalik sa sistema ang mga kahinguhaan nga nalangkit niini. Bisan pa niana, /sys naglangkob sa kadaghanan sa mga inila "stable nga ABI para sa userspace" kinauyokan, nga dili mahimo sa bisan kinsa, sa bisan unsang kahimtang "break". Wala kini magpasabot nga ang mga file sa sysfs kay static, nga dili uyon sa reference nga pag-ihap sa dili lig-on nga mga butang.
Ang stable nga ABI sa kernel naglimite sa kung unsa ang makita /sys, dili ang aktuwal nga anaa nianang partikular nga higayon. Ang paglista sa mga permiso sa file sa sysfs naghatag ug panabut kung giunsa ang pag-configure sa mga setting alang sa mga aparato, module, filesystem, ug uban pa. mahimong ma-configure o mabasa. Ang lohikal nga konklusyon mao nga ang mga procf bahin usab sa stable nga ABI sa kernel, bisan kung wala kini klaro nga gipahayag sa dokumentasyon.

Mga sistema sa virtual nga file sa Linux: nganong gikinahanglan kini ug giunsa kini pagtrabaho? Bahin 1

Mga file sa sysfs ihulagway ang usa ka partikular nga kabtangan alang sa matag entidad ug mahimong mabasa, masulat, o pareho. Ang "0" sa file nagpasabot nga ang SSD dili matangtang.

Atong sugdan ang ikaduhang bahin sa hubad kung unsaon pagmonitor ang VFS gamit ang eBPF ug bcc nga mga himan, ug karon naghulat kami sa imong mga komento ug tradisyonal nga nagdapit kanimo sa bukas nga webinar, nga ipahigayon sa among magtutudlo karong Abril 9 - Vladimir Drozdetsky.

Source: www.habr.com

Idugang sa usa ka comment