Talofa uma! O lo'o fa'aauau pea ona matou fa'alauiloa a'oa'oga fou mo kosi ua uma ona e alofa i ai ma o lea ua matou fa'anatinati e fa'ailoa atu o lo'o matou amataina se seti fou o kosi.
O faiga faila faila e avea o se ituaiga o faʻamatalaga faʻapitoa e mafai ai e le filosofia o Linux ona fai mai "o mea uma o se faila."
O le a le faiga faila? Faʻavae i luga o upu a se tasi o sao muamua ma tusitala o Linux
Fa'atonu Fa'atonu
O le fatu Linux e iai ni manaʻoga faapitoa mo se faʻalapotopotoga e mafai ona manatu o se faila faila. E tatau ona faʻatinoina metotia open()
, read()
и write()
mo mea fa'aauau e iai igoa. Mai se vaaiga fa'atatau i mea
Afai e mafai ona tatou tatalaina, faitau, ma tusi i se faalapotopotoga, ona avea lea o lena faalapotopotoga o se faila, e pei ona mafai ona tatou vaʻaia mai le faʻataʻitaʻiga i le faʻamafanafanaga i luga.
Ole fa'aaliga VFS e na'o le fa'amaninoina ole va'aiga pei ole Unix e fa'apea "o mea uma lava o se faila". Mafaufau i le uiga ese o lena faʻataʻitaʻiga / dev / console faʻataʻitaʻiga o loʻo i luga o loʻo faʻaalia ai le auala e galue ai le faʻamafanafanaga. O le ata o loʻo faʻaalia ai se fegalegaleaiga Bash session. O le lafoina o se manoa i le faʻamafanafanaga (mea faʻamafanafana faʻapolopolo) e faʻaalia i luga o se lau mata. VFS ei ai isi mea, e o'o lava i mea e le masani ai. Mo se faʻataʻitaʻiga, e faʻatagaina oe e suʻe e ala i
O faiga masani e pei o le ext4, NFS, ma le / proc e tolu galuega taua i totonu o se fausaga faʻamaumauga C ua taʻua. read()
tasi le faila faila ona faʻaaoga lea o le metotia write ()
se isi faiga faila mo fa'amaumauga.
O faʻamatalaga o galuega e aofia i ituaiga VFS faavae o loʻo i totonu o faila fs/
e iai nisi faiga faila. O lo'o iai fo'i fa'alapotopotoga e pei o cgroups
, /dev
и tmpfs
, lea e manaʻomia i le faagasologa o le taʻavale ma o lea e faʻamatalaina i le kernel subdirectory init/
. Matauina lena mea cgroups
, /dev
и tmpfs
aua le ta'ua o le "tolu tele" galuega file_operations
, ae faitau saʻo ma tusi e manatua.
O le ata o loʻo i lalo o loʻo faʻaalia ai pe faʻafefea ona faʻaogaina e le userspace ituaiga eseese o faila faila e masani ona faʻapipiʻi i luga o Linux. Fauga e le o fa'aalia pipes
, dmesg
и POSIX clocks
, lea e faʻatinoina foʻi le fausaga file_operations
, maua e ala ile VFS layer.
O le VFS o se "papa afifi" i le va o telefoni feaveaʻi ma faʻatinoga o nisi file_operations
e pei o ext4
и procfs
. Galuega file_operations
e mafai ona fegalegaleai ma aveta'avale masini po'o masini e mafai ona manatua. tmpfs
, devtmpfs
и cgroups
aua le faaaogaina file_operations
, ae maua sa'o le manatua.
O le i ai o le VFS e maua ai le avanoa e toe faʻaaoga ai le code, talu ai o auala autu e fesoʻotaʻi ma faila faila e le tatau ona toe faʻaaogaina e ituaiga taʻitasi faila faila. O le toe fa'aogaina o tulafono ose faiga masani lea i le va o inisinia software! Ae peitaʻi, afai o loʻo i ai i le code reusable
/tmp: Fa'ailoga faigofie
O se auala faigofie e iloa ai o loʻo i ai le VFS i luga o se faiga o le taina mount | grep -v sd | grep -v :/
, lea o le a faʻaalia uma faʻapipiʻi (mounted
) faila faila e le o nofo-tisiki ma e le-NFS, lea e moni i le tele o komepiuta. O se tasi o lisi lisi (mounts
) VFS o le a le masalomia /tmp
, tauagavale?
E iloa e tagata uma lena teuina / tmp
i se faiga fa'aletino - valea!
Aisea e le manaomia ai le teuina /tmp
i luga o ala o faasalalauga faaletino? Ona o faila i totonu /tmp
e le tumau ma le teuina o masini e sili atu lemu nai lo le manatua lea na faia ai tmpfs. E le gata i lea, o ala o faasalalauga faaletino e sili atu ona faigofie ona ofuina pe a toe tusi nai lo le manatua. Ma le mea mulimuli, faila i /tmp e mafai ona i ai faʻamatalaga maaleale, o le faʻaumatiaina o latou i luga o le toe faʻafouina o se mea taua.
Ae paga lea, o nisi faʻasalalauga faʻapipiʻi Linux e fatuina / tmp i luga o le masini teu oloa e ala i le faaletonu. Aua e te faʻavaivai pe a tupu foi lenei mea i lau masini. Mulimuli i nai faatonuga faigofie ma tmpfs
ua le avanoa mo isi faamoemoega. I se isi faaupuga, o se faiga e iai le tele tmpfs ma faila tetele i luga e mafai ona leai se manatua ma faʻalavelave. O le isi faʻamatalaga: aʻo faʻasaʻo se faila /etc/fstab
, manatua e tatau ona fa'ai'u i se laina fou, a leai o le a le ta'a lau faiga.
/proc ma /sys
e ese mai /tmp
, VFS (virtual file system) e sili ona masani ai tagata fa'aoga Linux /proc
и /sys
. (/dev
nofo i le manatu fa'asoa ma e leai file_operations
). Aisea e lua nei vaega? Sei o tatou vaavaai i lenei mataupu.
procfs
faia se ata o le fatu ma faiga e mata'ituina ai userspace
. le /proc
e lolomi e le fatu faʻamatalaga e uiga i mea o loʻo avanoa, e pei o faʻalavelave, mafaufauga faʻapitoa, ma le faʻatulagaina. E lē gata i lea, /proc/sys
o le nofoaga lea e fa'atulaga ai le fa'atonuga sysctl
, avanoa mo userspace
. O le tulaga ma fa'amaumauga o fa'agasologa ta'itasi o lo'o fa'aalia i totonu o fa'atonuga /proc/
.
o /proc/meminfo
ose faila gaogao lea e iai fa'amatalaga taua.
Amioga /proc
faila o loʻo faʻaalia ai le eseʻese o faiga faila faila VFS. I le tasi itu, /proc/meminfo
e iai fa'amatalaga e mafai ona va'aia ma le fa'atonuga free
. I le isi itu, ua gaogao! E faapefea ona aoga? O le tulaga e faamanatu mai ai le tala lauiloa ua faaulutalaina /proc
, ma moni lava i faila /proc
e leai se mea pe a leai se tasi e vaavaai. E pei ona fai mai
E foliga gaogao procfs
e talafeagai ona o faamatalaga iina e malosi. Se tulaga ese teisi ma sysfs
. Se'i o tatou fa'atusatusa pe fia faila o lo'o iai a itiiti ifo ma le tasi le paita /proc
ma i totonu /sys
.
Procfs
e tasi le faila, e taʻua o le faʻapipiʻi kernel faʻatau atu, o se tuusaunoaga ona e naʻo le tasi e manaʻomia ona gaosia i le seevae. I le isi itu, i /sys
e tele faila tetele, o le tele o ia mea e alu uma ai le itulau o manatua. E masani lava faila sysfs
o lo'o i ai tonu le numera e tasi po'o le laina, e le pei o laulau o fa'amatalaga e maua mai le faitau faila e pei o /proc/meminfo
.
Manulauti sysfs
- tu'uina atu mea faitau/tusi mea o lo'o ta'ua e le fatu «kobjects»
i le userspace. Pau lava le sini kobjects
o lo'o faitauina le feso'ota'iga: pe a 'ave'esea le so'otaga mulimuli i se kobject, o le a toe fa'afo'isia fo'i e le faiga mea e feso'ota'i ma ia. Ae ui i lea, /sys
faia ai le tele o ta'uta'ua
Ole kernel's stable ABI fa'atapula'a mea e mafai ona fa'aalia i totonu /sys
, e le o le mea moni o loo i ai i lena taimi faapitoa. Lisi fa'atagaga faila ile sysfs e maua ai fa'amatalaga ile fa'aogaina o fa'atonuga mo masini, modules, filesystems, etc. e mafai ona configured pe faitau. O le faaiuga talafeagai o le procfs o se vaega foi o le kernel's stable ABI, e ui lava e le o taʻua manino i totonu.
Faila i totonu sysfs
fa'amatala se meatotino fa'apitoa mo fa'alapotopotoga ta'itasi ma e mafai ona faitau, tusi, po'o mea uma e lua. "0" i le faila o lona uiga e le mafai ona aveese le SSD.
Sei o tatou amata le vaega lona lua o le faaliliuga i le auala e mataʻituina ai le VFS e faʻaaoga ai meafaigaluega eBPF ma bcc, ma o lea ua matou faʻatali mo au faʻamatalaga ma masani ona valaaulia oe e
puna: www.habr.com