Mga virtual nga sistema sa file sa LinuxNgano nga kini gikinahanglan ug unsaon kini pagtrabaho? Bahin 2

Kumusta sa tanan, among ipaambit kaninyo ang ikaduhang bahin sa publikasyon nga "Mga Virtual file system sa Linux: зачем они нужны и как они работают?» Первую часть можно прочитать dinhi. Pahinumdum kami kanimo nga kini nga serye sa mga publikasyon gitakda nga motakdo sa paglansad sa usa ka bag-ong sapa sa kurso. "Administrador Linux», nga magsugod sa dili madugay.

Giunsa pag-monitor ang VFS gamit ang eBPF ug bcc nga mga himan

Ang labing kadali nga paagi aron masabtan kung giunsa ang pag-operate sa kernel sa mga file sysfs mao ang pagtan-aw niini sa praktis, ug ang pinakasayon ​​nga paagi sa pagtan-aw sa ARM64 mao ang paggamit sa eBPF. Ang eBPF (mubo alang sa Berkeley Packet Filter) naglangkob sa usa ka virtual nga makina nga nagdagan kinauyokan, nga mahimong hangyoon sa mga pribilihiyo nga tiggamit (query) gikan sa command line. Ang mga tinubdan sa kernel nagsulti sa magbabasa kung unsa ang mahimo sa kernel; Ang pagpadagan sa mga himan sa eBPF sa usa ka puno nga sistema nagpakita kung unsa ang tinuod nga gibuhat sa kernel.

Mga virtual nga sistema sa file sa LinuxNgano nga kini gikinahanglan ug unsaon kini pagtrabaho? Bahin 2

Suwerte, ang pagsugod sa paggamit sa eBPF dali ra sa tabang sa mga himan bcc, nga magamit isip mga pakete gikan sa kinatibuk-ang pag-apod-apod Linux ug gidokumento sa detalye Bernard Gregg. Mga galamiton bcc mao ang mga script sa Python nga adunay gamay nga pagsal-ot sa C code, nga nagpasabut nga bisan kinsa nga pamilyar sa duha nga mga sinultian dali nga mabag-o kini. SA bcc/tools Adunay 80 ka mga script sa Python, nga nagpasabut nga lagmit ang usa ka developer o system administrator makahimo sa pagpili sa usa ka butang nga angay alang sa pagsulbad sa problema.
Aron makakuha labing menos usa ka taphaw nga ideya kung unsa ang gibuhat sa mga VFS sa usa ka nagdagan nga sistema, sulayi vfscount o vfsstat. Kini magpakita, ingnon ta, nga daghang mga tawag vfs_open() ug ang "iyang mga higala" literal nga mahitabo matag segundo.

Mga virtual nga sistema sa file sa LinuxNgano nga kini gikinahanglan ug unsaon kini pagtrabaho? Bahin 2

vfsstat.py usa ka script sa Python nga adunay mga pagsal-ot sa C code nga nag-ihap sa mga tawag sa function sa VFS.

Hatagan ta ang usa ka labi ka gamay nga pananglitan ug tan-awon kung unsa ang mahitabo kung magsulud kita usa ka USB flash drive sa usa ka kompyuter ug ang sistema nakamatikod niini.

Mga virtual nga sistema sa file sa LinuxNgano nga kini gikinahanglan ug unsaon kini pagtrabaho? Bahin 2

Gamit ang eBPF imong makita kung unsa ang nahitabo sa /syssa diha nga ang usa ka USB flash drive gisal-ut. Ang usa ka yano ug komplikado nga pananglitan gipakita dinhi.

Sa pananglitan nga gipakita sa ibabaw, bcc instrumento trace.py nag-imprenta sa usa ka mensahe kung ang mando gipadagan sysfs_create_files(). Atong makita kana sysfs_create_files() gilusad gamit ang kworker stream isip tubag sa kamatuoran nga ang flash drive gisal-ut, apan unsa nga file ang gibuhat? Ang ikaduha nga pananglitan nagpakita sa gahum sa eBPF. Dinhi trace.py Nag-imprinta og kernel backtrace (-K nga opsyon) ug ang ngalan sa file nga gimugna sysfs_create_files(). Ang single statement insertion mao ang C code nga naglakip sa usa ka dali mailhan nga format string nga gihatag sa Python script nga nagpadagan sa LLVM just-in-time compiler. Gi-compile kini nga linya ug gipatuman kini sa usa ka virtual nga makina sa sulod sa kernel. Bug-os nga function nga pirma sysfs_create_files () kinahanglan nga kopyahon sa ikaduha nga mando aron ang format nga string mahimong magtumong sa usa sa mga parameter. Ang mga kasaypanan niini nga piraso sa C code moresulta sa mailhan nga mga sayop gikan sa C compiler. Pananglitan, kung ang -l parameter wala iapil, imong makita ang "Napakyas sa pag-compile sa BPF nga teksto." Ang mga nag-develop nga pamilyar sa C ug Python makit-an ang mga himan bcc sayon ​​sa pagpalapad ug pagbag-o.

Sa diha nga ang USB drive gisulod, ang kernel backtrace magpakita nga ang PID 7711 usa ka hilo kworkernga naghimo sa file «events» в sysfs. Subay niini, ang tawag gikan sa sysfs_remove_files() ipakita nga ang pagtangtang sa drive miresulta sa pagtangtang sa file events, nga katumbas sa kinatibuk-ang konsepto sa pag-ihap sa pakisayran. Sa samang higayon, ang pagtan-aw sysfs_create_link () uban sa eBPF samtang gisal-ot ang USB drive magpakita nga labing menos 48 ka simbolo nga mga link ang nahimo.

Busa unsa ang punto sa mga panghitabo nga file? Paggamit cscope Para pangitaon __device_add_disk(), nagpakita kon unsay hinungdan niini disk_add_events (), ug bisan asa "media_change", o "eject_request" mahimong irekord sa usa ka file sa panghitabo. Dinhi ang kernel block layer nagpahibalo sa userspace nga usa ka "disk" ang nagpakita ug gitangtang. Timan-i kung unsa ka informative kini nga pamaagi sa panukiduki pinaagi sa pagsal-ot sa usa ka USB drive, kung itandi sa pagsulay nga mahibal-an kung giunsa ang mga butang molihok gikan sa gigikanan.

Ang read-only nga root file system makapahimo sa mga embedded device

Siyempre, walay usa nga nagpatay sa server o sa ilang kompyuter pinaagi sa pagbira sa plug gikan sa socket. Pero ngano man? Kini tungod kay ang gi-mount nga mga sistema sa file sa pisikal nga mga aparato sa pagtipig mahimo’g adunay mga lagged nga pagsulat, ug ang mga istruktura sa datos nga nagrekord sa ilang estado mahimo’g dili ma-synchronize sa mga pagsulat sa pagtipig. Kung mahitabo kini, ang mga tag-iya sa sistema kinahanglan maghulat hangtod sa sunod nga boot aron ilunsad ang utility. fsck filesystem-recovery ug, sa pinakagrabe nga kaso, pagkawala sa datos.

Тем не менее, все мы знаем, что многие IoT устройства, а также маршрутизаторы, термостаты и автомобили теперь работают под управлением Linux. Многие из этих устройств практически не имеют пользовательского интерфейса, и нет никакого способа выключить их «чисто». Представьте себе запуск автомобиля с разряженной батареей, когда питание управляющего устройства на Linux kanunay nga naglukso-lukso. Giunsa nga ang sistema nag-boot nga wala’y kadugay fsckkanus-a magsugod ang makina? Ug ang tubag yano ra. Ang mga embedded device nagsalig sa root file system para lang sa pagbasa (gipamub-an ro-rootfs (read-only root filesystem)).

ro-rootfs nagtanyag daghang mga benepisyo nga dili kaayo klaro kaysa sa pagkatinuod. Usa ka bentaha mao nga ang malware dili makasulat sa /usr o /lib, если ни один процесс Linux не может туда писать. Другое заключается в том, что в значительной степени неизменяемая файловая система имеет решающее значение для полевой поддержки удаленных устройств, поскольку вспомогательный персонал пользуется локальными системами, которые номинально идентичны системам на местах. Возможно, самым важным (но и самым коварным) преимуществом является то, что ro-rootfs заставляет разработчиков решать, какие системные объекты будут неизменными, еще на этапе проектирования системы. Работа с ro-rootfs может быть неудобной и болезненной, как это часто бывает с переменными const в языках программирования, но их преимущества легко окупают дополнительные накладные расходы.

paglalang rootfs только для чтения требует некоторых дополнительных усилий для разработчиков встраиваемых систем, и именно здесь на сцену выходит VFS. Linux требует, чтобы файлы в /var masulat, ug dugang pa, daghang mga sikat nga aplikasyon nga nagpadagan sa mga naka-embed nga sistema ang mosulay sa paghimo og configuration dot-files в $HOME. Ang usa ka solusyon alang sa mga file sa pag-configure sa direktoryo sa balay kasagaran ang pag-pre-generate ug paghimo niini rootfs. Alang /var Usa ka posible nga pamaagi mao ang pag-mount niini sa usa ka bulag nga partisyon nga masulat, samtang / gi-mount read-only. Ang laing popular nga alternatibo mao ang paggamit sa bind o overlay mounts.

Linkable ug stackable mounts, ang ilang paggamit sa mga sudlanan

Pagpatuman sa sugo man mount mao ang pinakamaayong paagi sa pagkat-on mahitungod sa mga bindable ug overlayable mounts, nga naghatag sa mga developers ug system administrator og abilidad sa paghimo og file system sa usa ka dalan ug dayon ibutyag kini sa mga aplikasyon sa lain. Alang sa mga naka-embed nga sistema, kini nagpasabut nga ang abilidad sa pagtipig sa mga file sa /var sa usa ka read-only flash drive, apan usa ka overlay o linkable mount path gikan sa tmpfs в /var kung nagkarga, tugotan niini ang mga aplikasyon sa pagsulat sa mga nota didto (scrawl). Sa sunod higayon nga imong i-on ang mga kausaban sa /var mawala. Ang usa ka overlay mount nagmugna og panaghiusa tali tmpfs ug ang nagpahiping sistema sa file ug nagtugot kanimo sa paghimo og mga pagbag-o sa mga kasamtangan nga mga file sa ro-tootf samtang ang usa ka mabugkos nga bukid makahimo sa mga bag-o nga walay sulod tmpfs mga folder nga makita nga masulat sa ro-rootfs mga paagi. Samtang overlayfs kini ang husto (proper) tipo sa sistema sa file, gipatuman ang bindable mount sa VFS namespace.

Base sa paghulagway sa overlay ug linkable mount, walay usa nga natingala niana Linux mga sudlanan sila aktibo nga gigamit. Atong tan-awon kon unsay mahitabo sa dihang atong gamiton systemd-nspawn sa pagpadagan sa sudlanan gamit ang himan mountsnoop gikan sa bcc.

Hagit system-nspawn magsugod sa sudlanan samtang nagdagan mountsnoop.py.

Atong tan-awon kon unsay nahitabo:

Lansad mountsnoop samtang ang sudlanan "nag-boot" nagpakita nga ang runtime sa sudlanan nagsalig kaayo sa bukid nga gisumpay (Ang sinugdanan ra sa taas nga output ang gipakita).

kini mao ang systemd-nspawn naghatag ug pinili nga mga file sa procfs и sysfs host sa sudlanan ingon nga mga agianan niini rootfs... Gawas MS_BIND Ang bandila nga nagbutang sa nagbugkos nga bukid, ang uban nga mga bandila sa bukid nagpaila sa relasyon tali sa mga pagbag-o sa host ug mga namespace sa sudlanan. Pananglitan, ang usa ka nalambigit nga mount mahimong makalaktaw sa mga pagbag-o sa /proc и /sys sa sudlanan, o itago kini depende sa tawag.

konklusyon

Понимание внутреннего устройства Linux может казаться невыполнимой задачей, так как само ядро содержит гигантское количество кода, оставляя в стороне приложения пользовательского пространства Linux и интерфейсы системных вызовов в библиотеках на языке C, таких как glibc. Usa ka paagi sa pag-uswag mao ang pagbasa sa source code sa usa ka kernel subsystem, uban ang paghatag gibug-aton sa pagsabot sa mga tawag sa sistema ug mga ulohan sa user-space, ingon man usab sa mga nag-unang internal nga kernel interface, sama sa lamesa. file_operations. Ang mga operasyon sa file naghatag sa prinsipyo nga "ang tanan usa ka file", nga naghimo kanila nga labi ka makalingaw sa pagdumala. C kernel source files sa top-level nga direktoryo fs/ представляют реализацию виртуальных файловых систем, которые являются слоем оболочки, обеспечивающим широкую и относительно простую совместимость популярных файловых систем и устройств хранения. Монтирование со связыванием и накладыванием через пространства имен Linux — это волшебство VFS, которое делает возможным создание контейнеров и корневых файловых систем только для чтения. В сочетании с изучением исходного кода, средство ядра eBPF и его интерфейс bcc
paghimo sa kinauyokan nga eksplorasyon nga mas sayon ​​kaysa kaniadto.

Друзья, напишите была ли эта статья полезной для вас? Возможно у вас есть какие-то комментарии или замечания? А тех, кому интересен курс «Администратор Linux», приглашаем на Bukas nga Adlaw, nga mahitabo sa Abril 18.

Una nga bahin.

Source: www.habr.com

Pagpalit kasaligan nga pag-host alang sa mga site nga adunay proteksyon sa DDoS, mga server sa VPS VDS 🔥 Pagpalit og kasaligang website hosting nga adunay proteksyon sa DDoS, VPS VDS servers | ProHoster