Helo pawb! Rydym yn parhau i lansio ffrydiau newydd ar gyfer y cyrsiau rydych eisoes wedi syrthio mewn cariad â nhw a nawr rydym ar frys i gyhoeddi ein bod yn dechrau set newydd o gyrsiau
Mae systemau ffeiliau rhithwir yn fath o dynnu hudol sy'n caniatáu i athroniaeth Linux ddweud bod "popeth yn ffeil."
Beth yw system ffeiliau? Yn seiliedig ar eiriau un o gyfranwyr ac awduron cyntaf Linux
Hanfodion System Ffeil
Mae gan y cnewyllyn Linux ofynion penodol ar gyfer endid y gellir ei ystyried yn system ffeiliau. Rhaid iddo weithredu'r dulliau open()
, read()
и write()
ar gyfer gwrthrychau parhaus sydd ag enwau. O safbwynt gwrthrych-ganolog
Os gallwn agor, darllen ac ysgrifennu at endid, yna mae'r endid hwnnw'n cael ei ystyried yn ffeil, fel y gallwn weld o'r enghraifft yn y consol uchod.
Mae'r ffenomen VFS ond yn tanlinellu'r sylw tebyg i Unix bod "popeth yn ffeil". Meddyliwch pa mor rhyfedd bod yr enghraifft fach /dev/consol uchod yn dangos sut mae'r consol yn gweithio mewn gwirionedd. Mae'r llun yn dangos sesiwn Bash rhyngweithiol. Mae anfon llinyn i'r consol (dyfais consol rhithwir) yn ei ddangos ar sgrin rithwir. Mae gan VFS eiddo arall, hyd yn oed dieithryn. Er enghraifft, mae'n caniatáu ichi chwilio yn ôl
Mae gan systemau cyfarwydd fel ext4, NFS, a / proc dair swyddogaeth bwysig mewn strwythur data C o'r enw read()
un system ffeil ac yna defnyddiwch y dull write ()
system ffeil arall ar gyfer allbwn data.
Mae'r diffiniadau swyddogaeth sy'n perthyn i'r mathau VFS sylfaenol yn y ffeiliau fs/
cynnwys rhai systemau ffeil. Mae'r craidd hefyd yn cynnwys endidau megis cgroups
, /dev
и tmpfs
, sy'n ofynnol yn ystod y broses gychwyn ac felly wedi'u diffinio yn yr is-gyfeiriadur cnewyllyn init/
. Sylwch ar hynny cgroups
, /dev
и tmpfs
peidiwch â galw'r "tri mawr" swyddogaethau file_operations
, ond yn uniongyrchol darllen ac ysgrifennu i'r cof.
Mae'r diagram isod yn dangos sut mae gofod defnyddwyr yn cyrchu'r gwahanol fathau o systemau ffeiliau sydd wedi'u gosod yn gyffredin ar systemau Linux. Strwythurau heb eu dangos pipes
, dmesg
и POSIX clocks
, sydd hefyd yn gweithredu'r strwythur file_operations
, a gyrchir trwy'r haen VFS.
Mae VFS yn "haen lapio" rhwng galwadau system a gweithrediadau penodol file_operations
megis ext4
и procfs
. Swyddogaethau file_operations
yn gallu rhyngweithio â gyrwyr dyfais neu ddyfeisiau mynediad cof. tmpfs
, devtmpfs
и cgroups
peidiwch â defnyddio file_operations
, ond cyrchu'r cof yn uniongyrchol.
Mae bodolaeth VFS yn rhoi cyfle i ailddefnyddio cod, gan nad oes rhaid i'r dulliau sylfaenol sy'n gysylltiedig â systemau ffeiliau gael eu hail-weithredu gan bob math o system ffeiliau. Mae ailddefnyddio cod yn arfer cyffredin ymhlith peirianwyr meddalwedd! Fodd bynnag, os yw'r cod amldro yn cynnwys
/tmp: Awgrym syml
Ffordd hawdd o ganfod bod VFS yn bresennol ar system yw teipio mount | grep -v sd | grep -v :/
, a fydd yn dangos popeth wedi'i osod (mounted
) systemau ffeiliau nad ydynt yn breswylydd disg ac nad ydynt yn NFS, sy'n wir ar y rhan fwyaf o gyfrifiaduron. Un o'r mowntiau rhestredig (mounts
) Bydd VFS yn ddiamau /tmp
, dde?
Mae pawb yn gwybod bod storio / tmp
ar gyfrwng corfforol - gwallgofrwydd!
Pam ei fod yn annymunol i storio /tmp
ar gyfryngau corfforol? Oherwydd bod y ffeiliau yn /tmp
yn rhai dros dro ac mae dyfeisiau storio yn arafach na'r cof lle mae tmpfs yn cael eu creu. Ar ben hynny, mae cyfryngau corfforol yn fwy agored i wisgo pan gânt eu trosysgrifo na'r cof. Yn olaf, gall ffeiliau yn / tmp gynnwys gwybodaeth sensitif, felly mae eu gwneud yn diflannu ar bob ailgychwyn yn nodwedd hanfodol.
Yn anffodus, mae rhai sgriptiau gosod dosbarthu Linux yn creu / tmp ar y ddyfais storio yn ddiofyn. Peidiwch â digalonni pe bai hyn yn digwydd i'ch system hefyd. Dilynwch ychydig o gyfarwyddiadau syml gyda tmpfs
yn dod yn ddim ar gael at ddibenion eraill. Mewn geiriau eraill, gall system gyda tmpfs enfawr a ffeiliau mawr arno redeg allan o gof a damwain. Awgrym arall: wrth olygu ffeil /etc/fstab
, cofiwch fod yn rhaid iddo ddod i ben gyda llinell newydd, fel arall ni fydd eich system yn cychwyn.
/proc a /sys
Eithr /tmp
, VFS (systemau ffeiliau rhithwir) sydd fwyaf cyfarwydd i ddefnyddwyr Linux yw /proc
и /sys
. (/dev
yn byw mewn cof a rennir ac nid oes ganddo file_operations
). Pam y ddwy gydran hyn? Gadewch i ni edrych i mewn i'r mater hwn.
procfs
yn creu ciplun o'r cnewyllyn a'r prosesau y mae'n monitro ar eu cyfer userspace
. Yn /proc
mae'r cnewyllyn yn argraffu gwybodaeth am yr hyn sydd ganddo ar gael, megis ymyriadau, cof rhithwir, a'r rhaglennydd. Heblaw, /proc/sys
yw'r man lle mae'r paramedrau wedi'u ffurfweddu gyda'r gorchymyn sysctl
, ar gael ar gyfer userspace
. Dangosir statws ac ystadegau prosesau unigol mewn cyfeirlyfrau /proc/
.
Yma /proc/meminfo
yn ffeil wag sydd serch hynny yn cynnwys gwybodaeth werthfawr.
Ymddygiad /proc
ffeiliau yn dangos pa mor wahanol y gall systemau ffeiliau disg VFS fod. Ar un ochr, /proc/meminfo
cynnwys gwybodaeth y gellir ei gweld gyda'r gorchymyn free
. Ar y llaw arall, mae'n wag! Sut mae'n gweithio? Mae'r sefyllfa yn atgoffa rhywun o'r erthygl enwog o'r enw /proc
, ac mewn gwirionedd mewn ffeiliau /proc
nid oes dim pan nad oes neb yn edrych. Fel y dywedwyd
Edrych yn wag procfs
yn gwneud synnwyr oherwydd bod y wybodaeth sydd yno yn ddeinamig. Sefyllfa ychydig yn wahanol gyda sysfs
. Gadewch i ni gymharu faint o ffeiliau sydd o leiaf un beit mewn maint /proc
a /sys
.
Procfs
un ffeil, sef y cyfluniad cnewyllyn wedi'i allforio, sy'n eithriad oherwydd dim ond unwaith y cychwyn y mae angen ei gynhyrchu. Ar y llaw arall, yn /sys
mae llawer o ffeiliau mwy, ac mae llawer ohonynt yn cymryd tudalen gyfan o gof. Ffeiliau fel arfer sysfs
cynnwys un rhif neu linell yn union, yn wahanol i dablau gwybodaeth a gafwyd o ddarllen ffeiliau megis /proc/meminfo
.
Nod sysfs
- darparu priodweddau darllen/ysgrifennu o'r hyn y mae'r cnewyllyn yn ei alw «kobjects»
mewn gofod defnyddwyr. Yr unig nod kobjects
yw dolen yn cyfrif: pan fydd y ddolen olaf i kobject yn cael ei dynnu, bydd y system yn adfer yr adnoddau sy'n gysylltiedig ag ef. Serch hynny, /sys
yn gwneud i fyny y rhan fwyaf o'r enwog
Mae ABI sefydlog y cnewyllyn yn cyfyngu ar yr hyn a all ymddangos ynddo /sys
, nid yr hyn sy'n bresennol mewn gwirionedd ar y foment benodol honno. Mae rhestru caniatadau ffeil mewn sysfs yn rhoi cipolwg ar sut mae gosodiadau ffurfweddu ar gyfer dyfeisiau, modiwlau, systemau ffeiliau, ac ati. gellir ei ffurfweddu neu ei ddarllen. Y casgliad rhesymegol yw bod procfs hefyd yn rhan o ABI sefydlog y cnewyllyn, er nad yw hyn wedi'i nodi'n benodol yn
Ffeiliau mewn sysfs
disgrifio un eiddo penodol ar gyfer pob endid a gall fod yn ddarllenadwy, yn ysgrifennadwy, neu'r ddau. Mae "0" yn y ffeil yn golygu na ellir tynnu'r SSD.
Gadewch i ni ddechrau ail ran y cyfieithiad gyda sut i fonitro VFS gan ddefnyddio'r offer eBPF a bcc, ac yn awr rydym yn aros am eich sylwadau ac yn draddodiadol yn eich gwahodd i
Ffynhonnell: hab.com