அனைவருக்கும் வணக்கம், “மெய்நிகர் கோப்பு அமைப்புகள்” என்ற வெளியீட்டின் இரண்டாம் பகுதியை உங்களுடன் பகிர்ந்து கொள்கிறோம். Linuxஅவை ஏன் தேவைப்படுகின்றன மற்றும் அவை எவ்வாறு செயல்படுகின்றன? முதல் பகுதியைப் படிக்கலாம். . பாடத்திட்டத்தில் ஒரு புதிய ஸ்ட்ரீம் தொடங்கப்படுவதை ஒட்டி இந்தத் தொடர் வெளியீடுகள் சரியானவை என்பதை உங்களுக்கு நினைவூட்டுவோம். , இது மிக விரைவில் தொடங்குகிறது.
eBPF மற்றும் bcc கருவிகளைப் பயன்படுத்தி VFS ஐ எவ்வாறு கண்காணிப்பது
கோப்புகளில் கர்னல் எவ்வாறு செயல்படுகிறது என்பதைப் புரிந்துகொள்வதற்கான எளிதான வழி sysfs நடைமுறையில் அதைப் பார்ப்பது, மேலும் ARM64 ஐப் பார்ப்பதற்கான எளிதான வழி eBPF ஐப் பயன்படுத்துவதாகும். eBPF (Berkeley Packet Filter என்பதன் சுருக்கம்) இயங்கும் மெய்நிகர் இயந்திரத்தைக் கொண்டுள்ளது. , எந்த சலுகை பெற்ற பயனர்கள் கோரலாம் (query) கட்டளை வரியிலிருந்து. கர்னல் என்ன செய்ய முடியும் என்பதை கர்னல் ஆதாரங்கள் வாசகரிடம் தெரிவிக்கின்றன; ஏற்றப்பட்ட கணினியில் eBPF கருவிகளை இயக்குவது கர்னல் உண்மையில் என்ன செய்கிறது என்பதைக் காட்டுகிறது.

அதிர்ஷ்டவசமாக, கருவிகளின் உதவியுடன் eBPF ஐப் பயன்படுத்தத் தொடங்குவது மிகவும் எளிதானது , பொது விநியோகத்திலிருந்து தொகுப்புகளாகக் கிடைக்கும் மற்றும் விரிவாக ஆவணப்படுத்தப்பட்டுள்ளது . கருவிகள் bcc சி குறியீட்டின் சிறிய செருகல்கள் கொண்ட பைதான் ஸ்கிரிப்டுகள், அதாவது இரு மொழிகளையும் நன்கு அறிந்த எவரும் அவற்றை எளிதாக மாற்றலாம். IN bcc/tools 80 பைதான் ஸ்கிரிப்டுகள் உள்ளன, அதாவது டெவலப்பர் அல்லது சிஸ்டம் அட்மினிஸ்ட்ரேட்டர் சிக்கலைத் தீர்க்க பொருத்தமான ஒன்றைத் தேர்வுசெய்ய முடியும்.
இயங்கும் கணினியில் VFSகள் என்ன வேலை செய்கின்றன என்பதைப் பற்றிய மேலோட்டமான யோசனையைப் பெற முயற்சிக்கவும் vfscount அல்லது vfsstat. இது டஜன் கணக்கான அழைப்புகளைக் காண்பிக்கும் vfs_open() மற்றும் "அவரது நண்பர்கள்" ஒவ்வொரு நொடியும் உண்மையில் நடக்கும்.

vfsstat.pyVFS செயல்பாட்டு அழைப்புகளைக் கணக்கிடும் C குறியீடு செருகல்களுடன் கூடிய பைதான் ஸ்கிரிப்ட் ஆகும்.
இன்னும் அற்பமான உதாரணத்தைக் கொடுப்போம், USB ஃபிளாஷ் டிரைவை கணினியில் செருகும்போது என்ன நடக்கிறது என்று பார்ப்போம்.

eBPF ஐப் பயன்படுத்தி என்ன நடக்கிறது என்பதைக் காணலாம்
/sysUSB ஃபிளாஷ் டிரைவ் செருகப்படும் போது. ஒரு எளிய மற்றும் சிக்கலான உதாரணம் இங்கே காட்டப்பட்டுள்ளது.
மேலே காட்டப்பட்டுள்ள எடுத்துக்காட்டில், bcc கருவி கட்டளையை இயக்கும் போது ஒரு செய்தியை அச்சிடுகிறது sysfs_create_files(). என்று பார்க்கிறோம் sysfs_create_files() பயன்படுத்தி தொடங்கப்பட்டது kworker ஃபிளாஷ் டிரைவ் செருகப்பட்டதற்கு பதில் ஸ்ட்ரீம், ஆனால் என்ன கோப்பு உருவாக்கப்பட்டது? இரண்டாவது எடுத்துக்காட்டு eBPF இன் சக்தியைக் காட்டுகிறது. இங்கே trace.py கர்னல் பேக்டிரேஸ் (-K விருப்பம்) மற்றும் உருவாக்கப்பட்ட கோப்பின் பெயரை அச்சிடுகிறது sysfs_create_files(). சிங்கிள் ஸ்டேட்மென்ட் இன்செர்ஷன் என்பது LLVMஐ இயக்கும் பைதான் ஸ்கிரிப்ட்டால் வழங்கப்பட்ட எளிதில் அடையாளம் காணக்கூடிய வடிவமைப்பு சரத்தை உள்ளடக்கிய C குறியீடு ஆகும். சரியான நேரத்தில் கம்பைலர். இது இந்த வரியை தொகுத்து கர்னலில் உள்ள மெய்நிகர் கணினியில் செயல்படுத்துகிறது. முழு செயல்பாட்டு கையொப்பம் sysfs_create_files () இரண்டாவது கட்டளையில் மீண்டும் உருவாக்கப்பட வேண்டும், இதனால் வடிவமைப்பு சரம் அளவுருக்களில் ஒன்றைக் குறிக்கும். இந்த சி குறியீட்டில் உள்ள பிழைகள் சி கம்பைலரில் இருந்து அடையாளம் காணக்கூடிய பிழைகளை ஏற்படுத்துகின்றன. எடுத்துக்காட்டாக, -l அளவுரு தவிர்க்கப்பட்டால், "BPF உரையை தொகுக்க முடியவில்லை" என்று பார்ப்பீர்கள். சி மற்றும் பைத்தானை நன்கு அறிந்த டெவலப்பர்கள் கருவிகளைக் கண்டுபிடிப்பார்கள் bcc விரிவாக்க மற்றும் மாற்ற எளிதானது.
யூ.எஸ்.பி டிரைவைச் செருகும்போது, பிஐடி 7711 ஒரு த்ரெட் என்பதை கர்னல் பேக்டிரேஸ் காட்டும். kworkerஇது கோப்பை உருவாக்கியது «events» в sysfs. அதன்படி, இருந்து அழைப்பு sysfs_remove_files() இயக்ககத்தை அகற்றுவதன் விளைவாக கோப்பு நீக்கப்பட்டதைக் காண்பிக்கும் events, இது குறிப்பு எண்ணும் பொதுவான கருத்துக்கு ஒத்திருக்கிறது. அதே நேரத்தில், பார்ப்பது sysfs_create_link () eBPF உடன் USB டிரைவைச் செருகும் போது குறைந்தது 48 குறியீட்டு இணைப்புகள் உருவாக்கப்பட்டிருப்பதைக் காண்பிக்கும்.
எனவே நிகழ்வுகள் கோப்பின் பயன் என்ன? பயன்பாடு தேடலுக்கு , அது எதனால் ஏற்படுகிறது என்பதைக் காட்டுகிறது disk_add_events (), இது அல்லது அது "media_change", அல்லது "eject_request" நிகழ்வு கோப்பில் பதிவு செய்யலாம். இங்கே கர்னல் பிளாக் லேயர் ஒரு "டிஸ்க்" தோன்றி வெளியேற்றப்பட்டதை பயனர்களுக்குத் தெரிவிக்கிறது. யூ.எஸ்.பி டிரைவைச் செருகுவதன் மூலம் இந்த ஆராய்ச்சி முறை எவ்வளவு தகவலறிந்ததாக உள்ளது என்பதைக் கவனியுங்கள், மூலத்திலிருந்து விஷயங்கள் எவ்வாறு செயல்படுகின்றன என்பதைக் கண்டறியும் முயற்சியுடன் ஒப்பிடும்போது.
படிக்க-மட்டும் ரூட் கோப்பு முறைமைகள் உட்பொதிக்கப்பட்ட சாதனங்களை இயக்கும்
நிச்சயமாக, சாக்கெட்டிலிருந்து பிளக்கை இழுப்பதன் மூலம் யாரும் சேவையகத்தையோ அல்லது அவர்களின் கணினியையோ அணைக்க மாட்டார்கள். ஆனால் ஏன்? ஏனென்றால், இயற்பியல் சேமிப்பக சாதனங்களில் ஏற்றப்பட்ட கோப்பு முறைமைகள் எழுதுவதில் பின்தங்கியிருக்கலாம், மேலும் அவற்றின் நிலையைப் பதிவுசெய்யும் தரவு கட்டமைப்புகள் சேமிப்பகத்திற்கான எழுத்துகளுடன் ஒத்திசைக்கப்படாமல் இருக்கலாம். இது நிகழும்போது, கணினி உரிமையாளர்கள் பயன்பாட்டைத் தொடங்க அடுத்த துவக்கம் வரை காத்திருக்க வேண்டும். fsck filesystem-recovery மற்றும், மோசமான நிலையில், தரவு இழப்பு.
இருப்பினும், ரவுட்டர்கள், தெர்மோஸ்டாட்கள் மற்றும் கார்கள் உட்பட பல IoT சாதனங்கள் இப்போது இயங்குகின்றன என்பது நம் அனைவருக்கும் தெரியும். Linuxஇந்தச் சாதனங்களில் பலவற்றில் பயனர் இடைமுகம் என்பதே இருப்பதில்லை, மேலும் அவற்றை முறையாக அணைப்பதற்கும் வழியில்லை. கட்டுப்பாட்டுக் கருவிக்கான மின்சாரம் துண்டிக்கப்படும்போது, மின்கலம் செயலிழந்த ஒரு காரை இயக்குவதை கற்பனை செய்து பாருங்கள். தொடர்ந்து மேலும் கீழும் குதிக்கும். எப்படி கணினி நீண்ட நேரம் இல்லாமல் பூட் ஆகும் fsckஇயந்திரம் இறுதியாக எப்போது இயங்கத் தொடங்குகிறது? மற்றும் பதில் எளிது. உட்பொதிக்கப்பட்ட சாதனங்கள் ரூட் கோப்பு முறைமையை நம்பியுள்ளன (சுருக்கமாக ro-rootfs (படிக்க மட்டும் ரூட் கோப்பு முறைமை)).
ro-rootfs நம்பகத்தன்மையை விட குறைவான வெளிப்படையான பல நன்மைகளை வழங்குகிறது. தீம்பொருளால் எழுத முடியாது என்பது ஒரு நன்மை /usr அல்லது /libசெயல்முறை எதுவும் இல்லை என்றால் Linux அதில் எழுத முடியாது. மற்றொன்று என்னவென்றால், தொலைதூர சாதனங்களின் கள ஆதரவிற்கு பெரும்பாலும் மாற்ற முடியாத கோப்பு அமைப்பு மிகவும் இன்றியமையாதது, ஏனெனில் ஆதரவுப் பணியாளர்கள், தளத்தில் உள்ள அமைப்புகளைப் போலவே பெயரளவிற்கு இருக்கும் உள்ளூர் அமைப்புகளையே பயன்படுத்துகின்றனர். ஒருவேளை மிக முக்கியமான (ஆனால் மிகவும் நயவஞ்சகமான) நன்மை என்னவென்றால், கணினி வடிவமைப்பின் ஆரம்பத்திலேயே எந்த கணினிப் பொருள்கள் மாற்ற முடியாதவையாக இருக்கும் என்பதை டெவலப்பர்களை ro-rootfs தீர்மானிக்கக் கட்டாயப்படுத்துகிறது. நிரலாக்க மொழிகளில் உள்ள மாறாத மாறிகளைப் போலவே, ro-rootfs உடன் பணிபுரிவது சங்கடமாகவும் வேதனையாகவும் இருக்கலாம், ஆனால் அதன் நன்மைகள் கூடுதல் பணிச்சுமையை எளிதில் ஈடுசெய்கின்றன.
உருவாக்கம் rootfs படிக்க-மட்டும் செயல்பாட்டிற்கு எம்பெடட் டெவலப்பர்களுக்குக் கூடுதல் முயற்சி தேவைப்படுகிறது, இந்த இடத்தில்தான் VFS முக்கியப் பங்கு வகிக்கிறது. Linux கோப்புகளில் இருக்க வேண்டும் /var எழுதக்கூடியவை, மேலும், உட்பொதிக்கப்பட்ட அமைப்புகளை இயக்கும் பல பிரபலமான பயன்பாடுகள் உள்ளமைவை உருவாக்க முயற்சிக்கும். dot-files в $HOME. ஹோம் டைரக்டரியில் உள்ள உள்ளமைவுக் கோப்புகளுக்கான ஒரு தீர்வு பொதுவாக அவற்றை முன் உருவாக்கி உருவாக்குவது rootfs. ஐந்து /var ஒரு சாத்தியமான அணுகுமுறை அதை ஒரு தனி எழுதக்கூடிய பகிர்வில் ஏற்றுவதாகும் / படிக்க மட்டும் ஏற்றப்பட்டது. மற்றொரு பிரபலமான மாற்று பைண்ட் அல்லது ஓவர்லே மவுண்ட்களைப் பயன்படுத்துவதாகும்.
இணைக்கக்கூடிய மற்றும் அடுக்கி வைக்கக்கூடிய மவுண்ட்கள், கொள்கலன்களால் அவற்றின் பயன்பாடு
கட்டளை செயல்படுத்தல் man mount பிணைக்கக்கூடிய மற்றும் மேலெழுதக்கூடிய மவுண்ட்களைப் பற்றி அறிந்துகொள்வதற்கான சிறந்த வழியாகும், இது டெவலப்பர்கள் மற்றும் கணினி நிர்வாகிகளுக்கு ஒரு கோப்பு முறைமையை ஒரு பாதையில் உருவாக்கி பின்னர் மற்றொரு பாதையில் பயன்பாடுகளுக்கு வெளிப்படுத்தும் திறனை வழங்குகிறது. உட்பொதிக்கப்பட்ட அமைப்புகளுக்கு, இது கோப்புகளை சேமிக்கும் திறனைக் குறிக்கிறது /var படிக்க-மட்டும் ஃபிளாஷ் டிரைவில், ஆனால் மேலடுக்கு அல்லது இணைக்கக்கூடிய மவுண்ட் பாதை tmpfs в /var ஏற்றும் போது, பயன்பாடுகள் குறிப்புகளை எழுத அனுமதிக்கும் (ஸ்க்ரால்). அடுத்த முறை மாற்றங்களை இயக்கும் போது /var இழக்கப்படும். ஒரு மேலடுக்கு மவுண்ட் இடையே ஒரு தொழிற்சங்கத்தை உருவாக்குகிறது tmpfs மற்றும் அடிப்படை கோப்பு முறைமை மற்றும் ஏற்கனவே உள்ள கோப்புகளில் வெளிப்படையான மாற்றங்களைச் செய்ய உங்களை அனுமதிக்கிறது ro-tootf அதேசமயம் பிணைக்கக்கூடிய மவுண்ட் புதியவற்றை காலியாக்கும் tmpfs கோப்புறைகள் எழுதக்கூடியவையாகத் தெரியும் ro-rootfs வழிகள். போது overlayfs இதுதான் சரியானது (proper) கோப்பு முறைமை வகை, பைண்டபிள் மவுண்ட் செயல்படுத்தப்படுகிறது .
மேலடுக்கு மற்றும் இணைக்கக்கூடிய மவுண்ட் பற்றிய விளக்கத்தின் அடிப்படையில், யாரும் ஆச்சரியப்படுவதில்லை அவை தீவிரமாக பயன்படுத்தப்படுகின்றன. பயன்படுத்தினால் என்ன ஆகும் என்று பார்ப்போம் கருவியைப் பயன்படுத்தி கொள்கலனை இயக்க mountsnoop இருந்து bcc.
அழைப்பு system-nspawn இயங்கும் போது கொள்கலனைத் தொடங்குகிறது mountsnoop.py.
என்ன நடந்தது என்று பார்ப்போம்:
Запуск mountsnoop கன்டெய்னர் "பூட்" செய்யும் போது, கொள்கலனின் இயக்க நேரம் இணைக்கப்பட்டுள்ள மவுண்ட்டைப் பொறுத்தது என்பதைக் காட்டுகிறது (நீண்ட வெளியீட்டின் ஆரம்பம் மட்டுமே காட்டப்பட்டுள்ளது).
இது systemd-nspawn தேர்ந்தெடுக்கப்பட்ட கோப்புகளை வழங்குகிறது procfs и sysfs அதற்கான பாதைகளாக கொள்கலனுக்கு ஹோஸ்ட் rootfs. தவிர MS_BIND பைண்டிங் மவுண்டை அமைக்கும் கொடி, மவுண்டில் உள்ள வேறு சில கொடிகள் ஹோஸ்ட் மற்றும் கொள்கலன் பெயர்வெளிகளுக்கு இடையிலான மாற்றங்களுக்கு இடையிலான உறவை வரையறுக்கிறது. எடுத்துக்காட்டாக, இணைக்கப்பட்ட மவுண்ட், மாற்றங்களைத் தவிர்க்கலாம் /proc и /sys கொள்கலனுக்குள், அல்லது அழைப்பைப் பொறுத்து அவற்றை மறைக்கவும்.
முடிவுக்கு
உள் கட்டமைப்பைப் புரிந்து கொள்ளுங்கள் Linux பயனர்-இடப் பயன்பாடுகளைத் தவிர்த்து, கெர்னலிலேயே பெருமளவிலான குறியீடு அடங்கியிருப்பதால், இது ஒரு சாத்தியமற்ற பணியாகத் தோன்றலாம். Linux மற்றும் C நூலகங்களில் உள்ள சிஸ்டம் கால் இடைமுகங்கள் போன்றவை glibc. முன்னேற்றத்திற்கான ஒரு வழி, ஒரு கர்னல் துணை அமைப்பின் மூலக் குறியீட்டைப் படிப்பது, கணினி அழைப்புகள் மற்றும் பயனர்-வெளி தலைப்புகள் மற்றும் அட்டவணை போன்ற முக்கிய உள் கர்னல் இடைமுகங்களைப் புரிந்துகொள்வதில் முக்கியத்துவம் உள்ளது. file_operations. கோப்பு செயல்பாடுகள் "எல்லாமே ஒரு கோப்பு" கொள்கையை வழங்குகின்றன, அவற்றை நிர்வகிப்பது மிகவும் சுவாரஸ்யமாக இருக்கும். சி கர்னல் மூலக் கோப்புகள் மேல்-நிலை கோப்பகத்தில் fs/ பிரபலமான கோப்பு அமைப்புகளுக்கும் சேமிப்பக சாதனங்களுக்கும் இடையில் பரந்த மற்றும் ஒப்பீட்டளவில் எளிமையான இணக்கத்தன்மையை வழங்கும் ஒரு உறை அடுக்கான மெய்நிகர் கோப்பு அமைப்புகளின் செயலாக்கத்தைக் குறிக்கிறது. பெயர்வெளிகள் வழியாக இணைத்தல் மற்றும் மேலடுக்கி ஏற்றுதல். Linux கண்டெய்னர்களையும் படிக்க-மட்டும் ரூட் கோப்பு முறைமைகளையும் உருவாக்குவதை சாத்தியமாக்குவது VFS-இன் மாயாஜாலமே ஆகும். மூலக் குறியீட்டைப் பற்றிய ஆய்வு, eBPF கெர்னல் கருவி மற்றும் அதன் இடைமுகம் ஆகியவற்றுடன் இணைந்து... bcc
முக்கிய ஆய்வுகளை முன்னெப்போதையும் விட எளிதாக்குகிறது.
நண்பர்களே, இந்தக் கட்டுரை உங்களுக்குப் பயனுள்ளதாக இருந்ததா என்று எனக்குத் தெரியப்படுத்துங்கள். ஒருவேளை உங்களிடம் ஏதேனும் கருத்துகளோ அல்லது ஆலோசனைகளோ உள்ளதா? மேலும், "நிர்வாகி" (Administrator) பாடத்திட்டத்தில் ஆர்வமுள்ளவர்களுக்கு, Linuxநாங்கள் உங்களை அழைக்கிறோம் , இது ஏப்ரல் 18 அன்று நடைபெறும்.
ஆதாரம்: www.habr.com
