Rafitra rakitra virtoaly amin'ny Linux: nahoana izy ireo no ilaina ary ahoana no fiasan'izy ireo? Fizarana 1

Salama daholo! Manohy mamoaka stream vaovao ho an'ireo taranja efa nitiavanao anay izahay ary maika izahay izao hanambara fa hanomboka andiana taranja vaovao izahay. "Linux Administrator"izay hanomboka amin'ny faran'ny volana aprily. Hisy famoahana vaovao ho an'ity hetsika ity. Miaraka amin'ny fitaovana tany am-boalohany, azonao atao vakio eto.

Ny rafitra rakitra virtoaly dia karazana abstraction mahagaga izay ahafahan'ny filozofia Linux milaza fa "rakitra ny zava-drehetra."

Rafitra rakitra virtoaly amin'ny Linux: nahoana izy ireo no ilaina ary ahoana no fiasan'izy ireo? Fizarana 1

Inona no atao hoe rafitra fichier? Miorina amin'ny tenin'ny iray amin'ireo mpandray anjara voalohany sy mpanoratra ny Linux Roberta Lava, "Ny rafitra fichier dia fitehirizana angon-drakitra mivondrona araka ny rafitra manokana." Na izany na tsy izany, io famaritana io dia mifanaraka tsara amin'ny VFAT (Table Allocation File Virtual), Git ary Cassandra (Database NoSQL). Inona ary no tena mamaritra ny atao hoe "systeme file"?

Filesystem Basics

Ny kernel Linux dia manana fepetra sasany ho an'ny orinasa iray izay azo raisina ho rafitra rakitra. Tsy maintsy mampihatra ny fomba open(), read() ΠΈ write() ho an'ny zavatra maharitra manana anarana. Avy amin'ny fomba fijery mitodika amin'ny zavatra fandaharana, ny kernel dia mamaritra ny rafitra fichier generic ho toy ny interface abstract, ary ireo fiasa telo lehibe ireo dia heverina ho "virtoaly" ary tsy misy famaritana mivaingana. Noho izany, ny fampiharana ny rafitra rakitra default dia antsoina hoe rafitra virtoaly rakitra (VFS).

Rafitra rakitra virtoaly amin'ny Linux: nahoana izy ireo no ilaina ary ahoana no fiasan'izy ireo? Fizarana 1

Raha afaka manokatra, mamaky ary manoratra amin'ny sampana iray isika, dia heverina ho rakitra io sampana io, araka ny hitantsika amin'ny ohatra ao amin'ny console etsy ambony.
Ny trangan-javatra VFS dia manasongadina fotsiny ny fomba fijerin'ny Unix fa "rakitra ny zava-drehetra". Eritrereto ny hafahafa fa ny ohatra kely / dev / console etsy ambony dia mampiseho ny fomba fiasan'ny console. Ny sary dia mampiseho fivoriana Bash ifanakalozan-kevitra. Ny fandefasana tady mankany amin'ny console (fitaovana console virtoaly) dia mampiseho izany amin'ny efijery virtoaly. Ny VFS dia manana fananana hafa, na vahiny aza. Ohatra, mamela anao hikaroka amin'ny amin'ny alalany.

Ny rafitra mahazatra toy ny ext4, NFS, ary / proc dia manana fiasa telo manan-danja amin'ny rafitra data C antsoina hoe file_operations. Ho fanampin'izany, ny rafitra fisie sasany dia manitatra sy mamaritra indray ny fiasa VFS amin'ny fomba mahazatra mahazatra. Araka ny nomarihin'i Robert Love, ny abstraction VFS dia ahafahan'ny mpampiasa Linux mandika tsy misy dikany na avy amin'ny rafitra fiasan'ny antoko fahatelo na sampana abstract toy ny fantsona nefa tsy manahy momba ny format data anatiny. Amin'ny lafiny mpampiasa (userspace), amin'ny fampiasana antso an-tariby, ny dingana iray dia afaka mandika avy amin'ny rakitra iray mankany amin'ny rafitra angon-drakitra kernel amin'ny fampiasana ny fomba. read() rafitra rakitra iray ary ampiasao ny fomba write () rafitra rakitra hafa ho an'ny famoahana angona.

Ny famaritana asa izay an'ny karazana VFS fototra dia ao anaty rakitra fs/*.c kernel source code, raha ny subdirectories fs/ misy rafitra fichier sasany. Ny core koa dia misy entity toy ny cgroups, /dev ΠΈ tmpfs, izay takiana mandritra ny fizotran'ny boot ary noho izany dia voafaritra ao amin'ny subdirectory kernel init/. Mariho izany cgroups, /dev ΠΈ tmpfs aza antsoina hoe "telo lehibe". file_operations, fa mamaky sy manorata mivantana ho fitadidiana.
Ny kisary etsy ambany dia mampiseho ny fomba idiran'ny habaka mpampiasa amin'ireo karazana fichier isan-karazany apetraka amin'ny rafitra Linux. Tsy naseho ny rafitra pipes, dmesg ΠΈ POSIX clocks, izay mampihatra ny rafitra ihany koa file_operations, miditra amin'ny alalan'ny sosona VFS.

Rafitra rakitra virtoaly amin'ny Linux: nahoana izy ireo no ilaina ary ahoana no fiasan'izy ireo? Fizarana 1

VFS dia "layer wrapper" eo anelanelan'ny antson'ny rafitra sy ny fampiharana ny sasany file_operationstoy ext4 ΠΈ procfs. asa file_operations afaka mifandray amin'ny mpamily fitaovana na fitaovana fidirana fahatsiarovana. tmpfs, devtmpfs ΠΈ cgroups aza mampiasa file_operations, fa miditra mivantana ny fahatsiarovana.
Ny fisian'ny VFS dia manome fahafahana hampiasa indray ny kaody, satria ny fomba fototra mifandray amin'ny rafitra fichier dia tsy voatery haverina amin'ny alΓ lan'ny rafi-drakitra tsirairay. Ny fampiasana kaody indray dia fanao mahazatra eo amin'ny injeniera rindrambaiko! Na izany aza, raha misy ny code azo ampiasaina indray fahadisoana lehibe, ny fampiharana rehetra izay mandova ny fomba mahazatra dia mijaly amin'izy ireo.

/tmp: Soso-kevitra tsotra

Ny fomba mora hamantarana fa misy ny VFS amin'ny rafitra iray dia ny manoratra mount | grep -v sd | grep -v :/, izay hampiseho ny napetraka rehetra (mounted) rafitra fichier izay tsy monina kapila ary tsy NFS, izay marina amin'ny ankamaroan'ny solosaina. Iray amin'ireo tendrombohitra voatanisa (mounts) Tsy isalasalana fa hanao izany ny VFS /tmp, sa tsy izany?

Rafitra rakitra virtoaly amin'ny Linux: nahoana izy ireo no ilaina ary ahoana no fiasan'izy ireo? Fizarana 1

Fantatry ny rehetra izany fitahirizana izany / tmp amin'ny lafiny ara-batana - hadalana! loharano.

Nahoana no tsy ilaina ny mitahiry /tmp amin'ny haino aman-jery ara-batana? Satria ny rakitra ao /tmp dia vonjimaika ary ny fitaovana fitahirizana dia miadana kokoa noho ny fahatsiarovana izay namoronana tmpfs. Fanampin'izany, ny haino aman-jery ara-batana dia mora mora kokoa amin'ny fitafy rehefa soratana noho ny fitadidiana. Farany, ny rakitra ao amin'ny /tmp dia mety ahitana fampahalalana saro-pady, ka ny fanjavonan'izy ireo isaky ny reboot dia singa ilaina.

Indrisy anefa fa ny script fametrahana Linux sasany dia mamorona /tmp amin'ny fitaovana fitahirizana amin'ny alΓ lan'ny default. Aza kivy raha nitranga tamin'ny rafitrao koa izany. Araho toromarika tsotra vitsivitsy miaraka amin'ny Wiki puzzle.svgmba hamahana izany, ary aoka ho fantatrao fa ny fahatsiarovana natokana ho an'ny tmpfs lasa tsy azo ampiasaina amin'ny tanjona hafa. Raha lazaina amin'ny teny hafa, ny rafitra misy tmpfs goavambe sy rakitra lehibe ao aminy dia mety ho lany fahatsiarovana sy fianjerana. Soso-kevitra iray hafa: eo am-panovana rakitra /etc/fstab, tadidio fa tsy maintsy mifarana amin'ny tsipika vaovao izany, raha tsy izany dia tsy hivoaka ny rafitrao.

/proc sy /sys

afa-tsy /tmp, VFS (rafitra rakitra virtoaly) izay mahazatra indrindra amin'ny mpampiasa Linux dia /proc ΠΈ /sys. (/dev mipetraka ao anaty fitadidiana iombonana ary tsy manana file_operations). Nahoana ireo singa roa ireo? Andeha hojerentsika ity olana ity.

procfs mamorona sarin'ny kernel sy ny fizotrany manara-maso azy userspace. The /proc ny kernel dia manonta fampahalalana momba izay misy azy, toy ny fiatoana, fahatsiarovana virtoaly, ary ny fandaharam-potoana. Ankoatra izany, /proc/sys dia ny toerana misy ny masontsivana namboarina miaraka amin'ny baiko sysctl, azo alaina amin'ny userspace. Ny sata sy ny antontan'isa momba ny fizotran'ny tsirairay dia aseho amin'ny lahatahiry /proc/.

Rafitra rakitra virtoaly amin'ny Linux: nahoana izy ireo no ilaina ary ahoana no fiasan'izy ireo? Fizarana 1

izany /proc/meminfo dia rakitra poakaty izay misy fampahalalana sarobidy.

fitondran-tena /proc Ny rakitra dia mampiseho ny maha-samihafa ny rafitra rakitra kapila VFS. Amin'ny lafiny iray, /proc/meminfo misy fampahalalana azo jerena miaraka amin'ny baiko free. Etsy ankilany, banga! Ahoana no fiasan'izy io? Ny zava-misy dia mampahatsiahy ilay lahatsoratra malaza mitondra ny lohateny hoe Misy ve ny volana rehefa tsy misy mijery azy? Ny zava-misy sy ny teoria Quantum"nosoratan'ny profesora fizika ao amin'ny Oniversiten'i Cornell David Mermin tamin'ny 1985. Ny zava-misy dia ny kernel dia manangona antontan'isa fitadidiana rehefa misy fangatahana /proc, ary tena ao anaty rakitra /proc tsy misy na inona na inona rehefa tsy misy mijery. Araka ny voalaza Mermin, "Ny fotopampianaran'ny quantum fototra dia milaza fa ny fandrefesana amin'ny ankapobeny dia tsy mampiseho ny sanda efa nisy teo aloha amin'ny fananana refesina." (Ary hevero ho entimody ny fanontaniana momba ny volana!)
Toa fahabangana procfs misy dikany satria mavitrika ny vaovao any. Toe-javatra hafa kely miaraka amin'ny sysfs. Andeha isika hampitaha ny isan'ny rakitra izay iray byte farafahakeliny ny habeny /proc ary ao /sys.

Rafitra rakitra virtoaly amin'ny Linux: nahoana izy ireo no ilaina ary ahoana no fiasan'izy ireo? Fizarana 1

Procfs manana fisie iray, dia ny configuration kernel naondrana, izay tsy misy afa-tsy satria indray mandeha isaky ny boot. Amin'ny lafiny iray, in /sys misy rakitra lehibe maro, maro amin'izy ireo no maka pejy iray manontolo. Matetika ny rakitra sysfs misy isa na andalana iray katroka, tsy toy ny tabilao misy fampahalalana azo avy amin'ny famakiana rakitra toy ny /proc/meminfo.

tanjona sysfs - omeo toetra mamaky/manoratra ny antsoin'ny kernel Β«kobjectsΒ» amin'ny espace mpampiasa. Ny tanjona tokana kobjects dia manisa rohy: rehefa nesorina ny rohy farany mankany amin'ny kobject iray, dia hamerina ny loharanon-karena mifandray amin'izany ny rafitra. Na izany aza, /sys mahaforona ny malaza indrindra "ABI stable ho an'ny mpampiasa" fototra, izay tsy azon'iza na iza, na inona na inona toe-javatra "break". Tsy midika akory izany fa ny rakitra ao amin'ny sysfs dia static, izay mety tsy mifanaraka amin'ny fanisana ny zavatra tsy miorina.
Ny ABI stable an'ny kernel dia mametra izay mety hiseho /sys, tsy izay tena misy amin'io fotoana io. Ny fahazoan-dΓ lan'ny rakitra ao amin'ny sysfs dia manome fanazavana momba ny fomba azo amboarina ho an'ny fitaovana, modules, filesystems, sns. azo amboarina na vakiana. Ny fehin-kevitra lojika dia ny procfs dia anisan'ny ABI stable an'ny kernel, na dia tsy voalaza mazava aza izany tahirin-kevitra.

Rafitra rakitra virtoaly amin'ny Linux: nahoana izy ireo no ilaina ary ahoana no fiasan'izy ireo? Fizarana 1

Files in sysfs mamaritra toetra iray manokana ho an'ny sampana tsirairay ary azo vakiana, azo soratana, na izy roa. "0" ao amin'ny rakitra dia midika fa tsy azo esorina ny SSD.

Andao hanomboka ny tapany faharoa amin'ny fandikan-teny amin'ny fomba fanaraha-maso ny VFS amin'ny alΓ lan'ny fitaovana eBPF sy bcc, ary ankehitriny dia miandry ny fanehoan-kevitrao izahay ary manasa anao amin'ny fomba mahazatra. misokatra webinar, izay hataon'ny mpampianatra antsika ny 9 aprily - Vladimir Drozdetsky.

Source: www.habr.com

Add a comment