Tsarin fayil ɗin Virtual a Linux: me yasa ake buƙatar su kuma ta yaya suke aiki? Kashi na 2

Sannu kowa da kowa, muna raba tare da ku kashi na biyu na littafin "Tsarin fayil ɗin Virtual a Linux: me yasa ake buƙatar su kuma yaya suke aiki?" Kuna iya karanta kashi na farko a nan. Bari mu tunatar da ku cewa wannan jerin wallafe-wallafen an tsara shi ne don yin daidai da ƙaddamar da sabon rafi a kan kwas. "Linux Administrator", wanda ke farawa da wuri.

Yadda ake saka idanu VFS ta amfani da eBPF da kayan aikin bcc

Hanya mafi sauƙi don fahimtar yadda kernel ke aiki akan fayiloli sysfs shine ganin shi a aikace, kuma hanya mafi sauƙi don kallon ARM64 shine amfani da eBPF. eBPF (gajere don Fitar Fakitin Berkeley) ya ƙunshi injin kama-da-wane da ke aiki a ciki cibiya, wanda masu amfani masu gata zasu iya nema (query) daga layin umarni. Majiyoyin kernel suna gaya wa mai karatu abin da kwaya zai iya yi; gudanar da kayan aikin eBPF akan tsarin da aka ɗora yana nuna ainihin abin da kernel ke yi.

Tsarin fayil ɗin Virtual a Linux: me yasa ake buƙatar su kuma ta yaya suke aiki? Kashi na 2

Sa'ar al'amarin shine, fara amfani da eBPF abu ne mai sauƙi da taimakon kayan aiki bcc, waɗanda suke samuwa azaman fakiti daga rarraba gabaɗaya Linux kuma an rubuta dalla-dalla Bernard Gregg. Kayan aiki bcc Rubutun Python ne tare da ƙananan abubuwan shigar da lambar C, wanda ke nufin cewa duk wanda ya saba da harsunan biyu zai iya canza su cikin sauƙi. IN bcc/tools Akwai rubutun Python 80, wanda ke nufin cewa mai yiwuwa mai haɓakawa ko mai kula da tsarin zai iya zaɓar wani abu da ya dace don magance matsalar.
Don samun aƙalla ra'ayi na zahiri na abin da VFSs ke yi akan tsarin gudana, gwada vfscount ko vfsstat. Wannan zai nuna, bari mu ce, da dama na kira vfs_open() kuma "abokansa" suna faruwa a zahiri kowace daƙiƙa.

Tsarin fayil ɗin Virtual a Linux: me yasa ake buƙatar su kuma ta yaya suke aiki? Kashi na 2

vfsstat.py Rubutun Python ne tare da shigar lambar C wanda kawai ke ƙididdige kiran aikin VFS.

Bari mu ba da wani ƙaramin misali kuma mu ga abin da zai faru idan muka saka kebul na USB a cikin kwamfuta kuma tsarin ya gano shi.

Tsarin fayil ɗin Virtual a Linux: me yasa ake buƙatar su kuma ta yaya suke aiki? Kashi na 2

Amfani da eBPF zaku iya ganin abin da ke faruwa a ciki /syslokacin da aka saka kebul na USB. Ana nuna misali mai sauƙi da rikitarwa anan.

A cikin misalin da aka nuna a sama, bcc kayan aiki trace.py buga saƙo lokacin da umarni ke gudana sysfs_create_files(). Muna ganin haka sysfs_create_files() an kaddamar da shi ta amfani da kworker rafi don mayar da martani ga gaskiyar cewa an saka filasha, amma wane fayil aka ƙirƙira? Misali na biyu yana nuna ikon eBPF. nan trace.py Yana buga bayanan baya (-K zaɓi) da sunan fayil ɗin da aka ƙirƙira sysfs_create_files(). Shigar da sanarwa guda ɗaya shine lambar C wanda ya haɗa da sigar tsari mai sauƙi wanda aka samar ta hanyar rubutun Python wanda ke gudanar da LLVM mai tarawa kawai. Yana tattara wannan layin kuma yana aiwatar da shi a cikin injin kama-da-wane a cikin kwaya. Cikakkiyar sa hannun aiki sysfs_create_files () dole ne a sake yin su a cikin umarni na biyu domin sigar tsarin za ta iya komawa zuwa ɗaya daga cikin sigogi. Kurakurai a cikin wannan yanki na lambar C suna haifar da kurakurai masu iya ganewa daga mai tarawa C. Misali, idan an cire sigar -l, zaku ga "An kasa tattara rubutun BPF." Masu haɓakawa waɗanda suka saba da C da Python za su sami kayan aikin bcc sauƙin fadadawa da canzawa.

Lokacin shigar da kebul na USB, kernel backtrace zai nuna cewa PID 7711 zaren ne. kworkerwanda ya kirkiro fayil din «events» в sysfs. A kan haka, kiran daga sysfs_remove_files() zai nuna cewa cire drive ɗin ya haifar da goge fayil ɗin events, wanda yayi daidai da ma'anar ƙidayar ƙidayar magana gaba ɗaya. A lokaci guda, kallo sysfs_create_link () tare da eBPF yayin shigar da kebul na USB zai nuna cewa an ƙirƙiri aƙalla hanyoyin haɗin gwiwa 48.

To mene ne amfanin fayil ɗin abubuwan? Amfani guntu Domin nema __na'ura_add_disk(), yana nuna abin da yake haifarwa disk_add_events (), kuma ko dai "media_change", ko "eject_request" za a iya yin rikodin a cikin fayil ɗin taron. Anan kernel block Layer yana sanar da sararin samaniya cewa "faifan diski" ya bayyana kuma ya fita. Yi la'akari da yadda wannan hanyar bincike ke ba da labari ta hanyar shigar da kebul na USB, idan aka kwatanta da ƙoƙarin gano yadda abubuwa ke aiki zalla daga tushe.

Tushen fayil ɗin karantawa kawai yana ba da damar na'urorin da aka saka

Tabbas, babu wanda ke kashe uwar garken ko kwamfutarsu ta hanyar cire filogi daga soket. Amma me ya sa? Wannan saboda tsarin fayil ɗin da aka ɗora akan na'urorin ma'ajiyar jiki ƙila sun sami raguwar rubuce-rubuce, kuma tsarin bayanan da ke rikodin yanayin su bazai iya aiki tare da rubutawa zuwa ma'ajiyar ba. Lokacin da wannan ya faru, masu tsarin dole ne su jira har sai boot na gaba don ƙaddamar da mai amfani. fsck filesystem-recovery kuma, a cikin mafi munin yanayi, rasa bayanai.

Duk da haka, duk mun san cewa yawancin na'urorin IoT, da na'urori masu amfani da wutar lantarki, masu zafi da motoci, yanzu suna gudanar da Linux. Yawancin waɗannan na'urori ba su da ɗan ƙarami zuwa ga mai amfani, kuma babu wata hanyar da za a kashe su "a tsafta." Ka yi tunanin fara mota tare da mataccen baturi lokacin da wutar lantarki ta ke Linux kullum tsalle sama da kasa. Yaya tsarin takalma ba tare da dogon lokaci ba fsckyaushe injin zai fara aiki a karshe? Kuma amsar ita ce mai sauƙi. Na'urorin da aka haɗa sun dogara da tushen tsarin fayil ɗin kawai don karatu (a takaice ro-rootfs (karanta-kawai tushen fileystem)).

ro-rootfs bayar da fa'idodi da yawa waɗanda ba su da tabbas fiye da sahihanci. Ɗayan fa'ida ita ce malware ba zai iya rubutawa ba /usr ko /lib, idan babu tsarin Linux da zai iya rubuta a can. Wani kuma shine tsarin fayil ɗin da ba zai iya canzawa ba yana da mahimmanci don tallafin filin na na'urori masu nisa, tun da ma'aikatan tallafi sun dogara da tsarin gida waɗanda ke daidai da tsarin filin. Watakila fa'idar mafi mahimmanci (amma kuma mafi banƙyama) ita ce ro-rootfs yana tilasta masu haɓakawa su yanke shawarar waɗanne tsarin abubuwa ne ba za su iya canzawa ba a matakin ƙira na tsarin. Yin aiki tare da ro-rootfs na iya zama mai ban tsoro da raɗaɗi, kamar yadda masu canji sukan kasance a cikin harsunan shirye-shirye, amma fa'idodin su cikin sauƙi yana tabbatar da ƙarin abin hawa.

halittar rootfs Karanta-kawai yana buƙatar ƙarin ƙoƙari don masu haɓakawa, kuma wannan shine inda VFS ta shigo cikin hoton. Linux yana buƙatar cewa fayiloli su kasance a ciki /var an rubuta su, kuma ƙari, yawancin mashahuran aikace-aikacen da ke gudanar da tsarin da aka haɗa za su yi ƙoƙarin ƙirƙirar tsari dot-files в $HOME. Ɗayan mafita don fayilolin daidaitawa a cikin kundin adireshin gida shine yawanci don ƙirƙira da gina su a ciki rootfs. don /var Hanya ɗaya mai yuwuwa ita ce a ɗaura shi a kan wani ɓangaren rubutu daban, yayin da / saka karatu-kawai. Wani mashahurin madadin shine yin amfani da ɗorawa ko masu rufi.

Abubuwan haɗin kai da masu tarawa, ana amfani da su ta kwantena

aiwatar da umarni man mount ita ce hanya mafi kyau don koyo game da ɗorawa masu ɗauri da masu rufi, wanda ke ba masu haɓakawa da masu gudanar da tsarin ikon ƙirƙirar tsarin fayil a hanya ɗaya sannan kuma fallasa shi ga aikace-aikace a wata. Don tsarin da aka saka, wannan yana nufin ikon adana fayiloli a ciki /var a kan filasha mai karantawa kawai, amma mai rufi ko hanyar hawa mai alaƙa daga tmpfs в /var Lokacin lodawa, zai ba da damar aikace-aikacen su rubuta bayanin kula a wurin (scrawl). Lokaci na gaba da kuka kunna canje-canje zuwa /var za a rasa. Dutsen mai rufi yana haifar da haɗin kai tsakanin tmpfs da tsarin fayil ɗin da ke ƙasa kuma yana ba ku damar yin sauye-sauye masu yuwuwa ga fayilolin da ke ciki ro-tootf yayin da dutsen ɗaure zai iya sa sababbi su zama fanko tmpfs manyan fayiloli ana iya gani kamar yadda ake rubutawa a ciki ro-rootfs hanyoyi. Yayin overlayfs wannan shine daidai (proper) nau'in tsarin fayil, ana aiwatar da ɗorawa mai ɗaure a ciki VFS sunan yankin.

Dangane da bayanin mai rufi da dutsen haɗin gwiwa, babu wanda ya yi mamakin hakan Kwantena Linux ana amfani da su sosai. Bari mu ga abin da zai faru idan muka yi amfani da shi systemd-nspawn don gudanar da akwati ta amfani da kayan aiki mountsnoop daga bcc.

Kira system-nspawn fara kwantena yayin da yake gudu mountsnoop.py.

Bari mu ga abin da ya faru:

Kaddamarwa mountsnoop yayin da kwandon yana "booting" yana nuna cewa lokacin aikin kwantena ya dogara sosai akan dutsen da aka haɗa (kawai an nuna farkon dogon fitarwa).

Yana da systemd-nspawn yana ba da zaɓaɓɓun fayiloli a ciki procfs и sysfs mai masaukin baki a matsayin hanyoyin zuwa gare shi rootfs. Bayan haka MS_BIND Tuta da ke kafa dutsen dauri, wasu tutoci a kan dutsen suna bayyana alakar da ke tsakanin canje-canje ga majigi da wuraren suna. Misali, dutsen da aka haɗe zai iya ko dai ya tsallake canje-canje zuwa /proc и /sys a cikin akwati, ko ɓoye su dangane da kiran.

ƙarshe

Fahimtar ayyukan da ke cikin Linux na iya zama kamar aikin da ba zai yuwu ba, tunda kernel ɗin kanta yana ɗauke da adadi mai yawa, yana barin aikace-aikacen sararin samaniya na masu amfani da Linux da tsarin kiran tsarin a cikin ɗakunan karatu na C kamar su. glibc. Hanya ɗaya don samun ci gaba ita ce karanta lambar tushe na tsarin kernel guda ɗaya, tare da mai da hankali kan fahimtar kiran tsarin da masu amfani da sararin samaniya, da kuma manyan hanyoyin haɗin kernel na ciki, kamar tebur. file_operations. Ayyukan fayil suna ba da ƙa'idar "komai fayil ne", yana sa su ji daɗin sarrafawa musamman. Fayilolin tushen kernel C a cikin babban jagorar matakin fs/ gabatar da aiwatar da tsarin fayil ɗin kama-da-wane, waxanda suke daɗaɗɗen rufin da ke ba da daidaituwa mai faɗi da sauƙi tsakanin shahararrun tsarin fayil da na'urorin ajiya. Haɗawa da rufewa ta hanyar wuraren sunaye na Linux shine sihirin VFS wanda ke ba da damar ƙirƙirar kwantena masu karantawa kawai da tsarin fayilolin tushen. Haɗe tare da gwajin lambar tushe, ainihin kayan aikin eBPF da keɓancewar sa bcc
yin ainihin bincike cikin sauƙi fiye da kowane lokaci.

Abokai, rubuta, shin wannan labarin yana da amfani a gare ku? Wataƙila kuna da wani sharhi ko tsokaci? Kuma ana gayyatar waɗanda ke da sha'awar kwas ɗin Gudanarwa na Linux Ranar Budewa, wanda zai gudana a ranar 18 ga Afrilu.

Kashi na farko.

source: www.habr.com

Add a comment