லினக்ஸில் மெய்நிகர் கோப்பு முறைமைகள்: அவை ஏன் தேவைப்படுகின்றன, அவை எவ்வாறு செயல்படுகின்றன? பகுதி 1

அனைவருக்கும் வணக்கம்! நீங்கள் ஏற்கனவே காதலித்த படிப்புகளுக்கு நாங்கள் தொடர்ந்து புதிய ஸ்ட்ரீம்களைத் தொடங்குகிறோம், இப்போது நாங்கள் புதிய பாடத்திட்டங்களைத் தொடங்குகிறோம் என்பதை அறிவிப்பதில் அவசரமாக இருக்கிறோம். "லினக்ஸ் நிர்வாகி"இது ஏப்ரல் இறுதியில் தொடங்கப்படும். இந்த நிகழ்விற்கான புதிய வெளியீடு தேதியிடப்படும். அசல் பொருள் மூலம், உங்களால் முடியும் இங்கே படிக்கவும்.

மெய்நிகர் கோப்பு முறைமைகள் ஒரு வகையான மாயாஜால சுருக்கமாக செயல்படுகின்றன, இது லினக்ஸின் தத்துவத்தை "எல்லாம் ஒரு கோப்பு" என்று கூற அனுமதிக்கிறது.

லினக்ஸில் மெய்நிகர் கோப்பு முறைமைகள்: அவை ஏன் தேவைப்படுகின்றன, அவை எவ்வாறு செயல்படுகின்றன? பகுதி 1

கோப்பு முறைமை என்றால் என்ன? லினக்ஸின் முதல் பங்களிப்பாளர்கள் மற்றும் ஆசிரியர்களில் ஒருவரின் வார்த்தைகளின் அடிப்படையில் ராபர்ட்டா லாவா, "ஒரு கோப்பு முறைமை என்பது ஒரு குறிப்பிட்ட கட்டமைப்பின் படி சேகரிக்கப்பட்ட தரவுகளின் படிநிலை சேமிப்பகமாகும்." அது எப்படியிருந்தாலும், இந்த வரையறை VFAT (மெய்நிகர் கோப்பு ஒதுக்கீடு அட்டவணை), Git மற்றும் கசண்டிரா (NoSQL தரவுத்தளம்) அப்படியானால், "கோப்பு முறைமை" என சரியாக என்ன வரையறுக்கிறது?

கோப்பு முறைமை அடிப்படைகள்

லினக்ஸ் கர்னலுக்கு கோப்பு முறைமையாகக் கருதப்படும் ஒரு நிறுவனத்திற்கு சில தேவைகள் உள்ளன. அதற்கான வழிமுறைகளை செயல்படுத்த வேண்டும் open(), read() и write() பெயர்களைக் கொண்ட நிலையான பொருள்களுக்கு. ஒரு பொருள் சார்ந்த பார்வையில் இருந்து நிரலாக்கம், கர்னல் ஒரு பொதுவான கோப்பு முறைமையை ஒரு சுருக்க இடைமுகமாக வரையறுக்கிறது, மேலும் இந்த மூன்று பெரிய செயல்பாடுகள் "மெய்நிகர்" என்று கருதப்படுகின்றன மற்றும் உறுதியான வரையறை இல்லை. அதன்படி, இயல்புநிலை கோப்பு முறைமை செயல்படுத்தல் மெய்நிகர் கோப்பு முறைமை (VFS) என அழைக்கப்படுகிறது.

லினக்ஸில் மெய்நிகர் கோப்பு முறைமைகள்: அவை ஏன் தேவைப்படுகின்றன, அவை எவ்வாறு செயல்படுகின்றன? பகுதி 1

ஒரு உள்பொருளைத் திறக்கவும், படிக்கவும், எழுதவும் முடிந்தால், மேலே உள்ள கன்சோலில் உள்ள எடுத்துக்காட்டில் இருந்து நாம் பார்ப்பது போல, அந்த நிறுவனம் ஒரு கோப்பாகக் கருதப்படுகிறது.
VFS நிகழ்வு "எல்லாம் ஒரு கோப்பு" என்ற யுனிக்ஸ் போன்ற கவனிப்பை மட்டுமே அடிக்கோடிட்டுக் காட்டுகிறது. மேலே உள்ள சிறிய / dev/console உதாரணம் கன்சோல் உண்மையில் எவ்வாறு செயல்படுகிறது என்பதைக் காட்டுவது எவ்வளவு வித்தியாசமானது என்று சிந்தியுங்கள். படம் ஊடாடும் பாஷ் அமர்வைக் காட்டுகிறது. கன்சோலுக்கு ஒரு சரத்தை அனுப்புவது (மெய்நிகர் கன்சோல் சாதனம்) அதை மெய்நிகர் திரையில் காண்பிக்கும். VFS இல் மற்ற, கூட அந்நியமான பண்புகள் உள்ளன. எடுத்துக்காட்டாக, இது உங்களை தேட அனுமதிக்கிறது அவரால்.

ext4, NFS மற்றும் /proc போன்ற பழக்கமான அமைப்புகள் C தரவு கட்டமைப்பில் மூன்று முக்கியமான செயல்பாடுகளைக் கொண்டுள்ளன கோப்பு_செயல்பாடுகள். கூடுதலாக, சில கோப்பு முறைமைகள் VFS செயல்பாட்டை ஒரு பழக்கமான பொருள் சார்ந்த வழியில் நீட்டித்து மறுவரையறை செய்கின்றன. ராபர்ட் லவ் சுட்டிக்காட்டியுள்ளபடி, VFS சுருக்கமானது Linux பயனர்கள் தங்கள் உள் தரவு வடிவமைப்பைப் பற்றி கவலைப்படாமல் மூன்றாம் தரப்பு இயக்க முறைமைகள் அல்லது குழாய்கள் போன்ற சுருக்கமான நிறுவனங்களுக்கு அல்லது அவற்றிலிருந்து கோப்புகளை நகலெடுக்க அனுமதிக்கிறது. பயனர் பக்கத்தில் (பயனர்வெளி), ஒரு கணினி அழைப்பைப் பயன்படுத்தி, ஒரு செயல்முறை ஒரு கோப்பிலிருந்து கர்னல் தரவு கட்டமைப்புகளுக்கு முறையைப் பயன்படுத்தி நகலெடுக்க முடியும். read() ஒரு கோப்பு முறைமை, பின்னர் முறையைப் பயன்படுத்தவும் write () தரவு வெளியீட்டிற்கான மற்றொரு கோப்பு முறைமை.

அடிப்படை VFS வகைகளைச் சேர்ந்த செயல்பாடு வரையறைகள் கோப்புகளில் உள்ளன fs/*.c கர்னல் மூல குறியீடு, துணை அடைவுகள் fs/ சில கோப்பு முறைமைகளைக் கொண்டுள்ளது. கோர் போன்ற நிறுவனங்களும் உள்ளன cgroups, /dev и tmpfs, துவக்க செயல்பாட்டின் போது தேவைப்படும் மற்றும் கர்னல் துணை அடைவில் வரையறுக்கப்படுகிறது init/. அதை கவனி cgroups, /dev и tmpfs "பெரிய மூன்று" செயல்பாடுகளை அழைக்க வேண்டாம் file_operations, ஆனால் நேரடியாக படித்து நினைவகத்தில் எழுதலாம்.
லினக்ஸ் கணினிகளில் பொதுவாக ஏற்றப்பட்ட பல்வேறு வகையான கோப்பு முறைமைகளை பயனர்வெளி எவ்வாறு அணுகுகிறது என்பதை கீழே உள்ள வரைபடம் காட்டுகிறது. கட்டமைப்புகள் காட்டப்படவில்லை pipes, dmesg и POSIX clocks, இது கட்டமைப்பையும் செயல்படுத்துகிறது file_operations, VFS லேயர் மூலம் அணுகலாம்.

லினக்ஸில் மெய்நிகர் கோப்பு முறைமைகள்: அவை ஏன் தேவைப்படுகின்றன, அவை எவ்வாறு செயல்படுகின்றன? பகுதி 1

VFS என்பது கணினி அழைப்புகள் மற்றும் சில செயல்பாட்டிற்கு இடையே உள்ள "ரேப்பர் லேயர்" ஆகும் file_operationsபோன்றவை ext4 и procfs. செயல்பாடுகள் file_operations சாதன இயக்கிகள் அல்லது நினைவக அணுகல் சாதனங்களுடன் தொடர்பு கொள்ளலாம். tmpfs, devtmpfs и cgroups பயன்படுத்த வேண்டாம் file_operations, ஆனால் நேரடியாக நினைவகத்தை அணுகவும்.
VFS இன் இருப்பு குறியீட்டை மீண்டும் பயன்படுத்துவதற்கான வாய்ப்பை வழங்குகிறது, ஏனெனில் கோப்பு முறைமைகளுடன் தொடர்புடைய அடிப்படை முறைகள் ஒவ்வொரு வகை கோப்பு முறைமையாலும் மீண்டும் செயல்படுத்தப்பட வேண்டியதில்லை. குறியீடு மறுபயன்பாடு மென்பொருள் பொறியாளர்கள் மத்தியில் ஒரு பொதுவான நடைமுறை! இருப்பினும், மீண்டும் பயன்படுத்தக்கூடிய குறியீடு இருந்தால் கடுமையான தவறுகள், பொதுவான முறைகளைப் பெறுகின்ற அனைத்து செயலாக்கங்களும் அவற்றால் பாதிக்கப்படுகின்றன.

/tmp: எளிய குறிப்பு

கணினியில் VFS இருப்பதைக் கண்டறிய எளிதான வழி தட்டச்சு செய்வது mount | grep -v sd | grep -v :/, இவை அனைத்தும் ஏற்றப்பட்டதைக் காண்பிக்கும் (mounted) வட்டு-வாசி அல்லாத மற்றும் NFS அல்லாத கோப்பு முறைமைகள், இது பெரும்பாலான கணினிகளில் உண்மை. பட்டியலிடப்பட்ட மவுண்ட்களில் ஒன்று (mounts) VFS சந்தேகத்திற்கு இடமின்றி இருக்கும் /tmp, சரியா?

லினக்ஸில் மெய்நிகர் கோப்பு முறைமைகள்: அவை ஏன் தேவைப்படுகின்றன, அவை எவ்வாறு செயல்படுகின்றன? பகுதி 1

அந்த சேமிப்பு அனைவருக்கும் தெரியும் / tmp ஒரு உடல் ஊடகத்தில் - பைத்தியம்! மூல.

சேமிப்பது ஏன் விரும்பத்தகாதது /tmp உடல் ஊடகத்தில்? ஏனெனில் உள்ள கோப்புகள் /tmp தற்காலிகமானது மற்றும் சேமிப்பக சாதனங்கள் tmpfs உருவாக்கப்பட்ட நினைவகத்தை விட மெதுவாக இருக்கும். மேலும், இயற்பியல் ஊடகங்கள் நினைவகத்தை விட மேலெழுதப்படும் போது அணிய அதிக வாய்ப்புள்ளது. இறுதியாக, /tmp இல் உள்ள கோப்புகள் முக்கியமான தகவல்களைக் கொண்டிருக்கலாம், எனவே ஒவ்வொரு மறுதொடக்கத்திலும் அவை மறைந்துவிடும் ஒரு முக்கிய அம்சமாகும்.

துரதிர்ஷ்டவசமாக, சில லினக்ஸ் விநியோக நிறுவல் ஸ்கிரிப்டுகள் முன்னிருப்பாக சேமிப்பக சாதனத்தில் /tmp ஐ உருவாக்குகின்றன. உங்கள் கணினியிலும் இது நடந்தால் விரக்தியடைய வேண்டாம். சில எளிய வழிமுறைகளைப் பின்பற்றவும் Arch விக்கிஇதை சரிசெய்ய, நினைவகம் ஒதுக்கப்பட்டுள்ளது என்பதை அறிந்து கொள்ளுங்கள் tmpfs மற்ற நோக்கங்களுக்காக கிடைக்காமல் போகிறது. வேறு வார்த்தைகளில் கூறுவதானால், ஒரு பெரிய tmpfs மற்றும் பெரிய கோப்புகளைக் கொண்ட ஒரு கணினி நினைவகம் மற்றும் செயலிழக்கச் செய்யலாம். மற்றொரு குறிப்பு: கோப்பைத் திருத்தும் போது /etc/fstab, இது ஒரு புதிய வரியுடன் முடிவடைய வேண்டும் என்பதை நினைவில் கொள்ளுங்கள், இல்லையெனில் உங்கள் கணினி துவக்கப்படாது.

/proc மற்றும் /sys

தவிர /tmp, லினக்ஸ் பயனர்களுக்கு மிகவும் பரிச்சயமான VFS (மெய்நிகர் கோப்பு முறைமைகள்). /proc и /sys. (/dev பகிரப்பட்ட நினைவகத்தில் உள்ளது மற்றும் இல்லை file_operations) ஏன் இந்த இரண்டு கூறுகள்? இந்த சிக்கலைப் பார்ப்போம்.

procfs கர்னலின் ஸ்னாப்ஷாட் மற்றும் அது கண்காணிக்கும் செயல்முறைகளை உருவாக்குகிறது userspace. தி /proc கர்னல் குறுக்கீடுகள், மெய்நிகர் நினைவகம் மற்றும் திட்டமிடல் போன்றவற்றைப் பற்றிய தகவல்களை அச்சிடுகிறது. தவிர, /proc/sys கட்டளையுடன் அளவுருக்கள் கட்டமைக்கப்பட்ட இடம் sysctl, கிடைக்கும் userspace. தனிப்பட்ட செயல்முறைகளின் நிலை மற்றும் புள்ளிவிவரங்கள் கோப்பகங்களில் காட்டப்படும் /proc/.

லினக்ஸில் மெய்நிகர் கோப்பு முறைமைகள்: அவை ஏன் தேவைப்படுகின்றன, அவை எவ்வாறு செயல்படுகின்றன? பகுதி 1

இது /proc/meminfo மதிப்புமிக்க தகவல்களைக் கொண்ட ஒரு வெற்று கோப்பு.

நடத்தை /proc கோப்புகள் VFS வட்டு கோப்பு முறைமைகள் எவ்வாறு வேறுபடுகின்றன என்பதைக் காட்டுகிறது. ஒருபுறம், /proc/meminfo கட்டளையுடன் பார்க்கக்கூடிய தகவல்களைக் கொண்டுள்ளது free. மறுபுறம் காலி! இது எப்படி வேலை செய்கிறது? என்ற தலைப்பிலான புகழ்பெற்ற கட்டுரையை நினைவுபடுத்தும் நிலை உள்ளது யாரும் பார்க்காத போது சந்திரன் இருக்கிறதா? யதார்த்தம் மற்றும் குவாண்டம் கோட்பாடு"1985 இல் கார்னெல் பல்கலைக்கழக இயற்பியல் பேராசிரியர் டேவிட் மெர்மின் எழுதியது. உண்மை என்னவென்றால், கர்னல் நினைவக புள்ளிவிவரங்களை ஒரு கோரிக்கையை முன்வைக்கும் போது சேகரிக்கிறது /proc, மற்றும் உண்மையில் கோப்புகளில் /proc யாரும் பார்க்காத போது எதுவும் இல்லை. சொன்னது போல் மெர்மின், "அடிப்படை குவாண்டம் கோட்பாடு, அளவீடு பொதுவாக அளவிடப்படும் சொத்தின் முன்பே இருக்கும் மதிப்பை வெளிப்படுத்தாது என்று கூறுகிறது." (மேலும் சந்திரனைப் பற்றிய கேள்வியை வீட்டுப்பாடமாகக் கருதுங்கள்!)
வெறுமை தெரிகிறது procfs அங்குள்ள தகவல் மாறும் என்பதால் அர்த்தமுள்ளதாக இருக்கிறது. சற்று வித்தியாசமான சூழ்நிலை sysfs. குறைந்தபட்சம் ஒரு பைட் அளவுள்ள எத்தனை கோப்புகள் உள்ளன என்பதை ஒப்பிடுவோம் /proc மற்றும் உள்ளே /sys.

லினக்ஸில் மெய்நிகர் கோப்பு முறைமைகள்: அவை ஏன் தேவைப்படுகின்றன, அவை எவ்வாறு செயல்படுகின்றன? பகுதி 1

Procfs ஒரு கோப்பு உள்ளது, அதாவது ஏற்றுமதி செய்யப்பட்ட கர்னல் உள்ளமைவு, இது ஒரு விதிவிலக்கு, ஏனெனில் இது ஒரு துவக்கத்திற்கு ஒரு முறை மட்டுமே உருவாக்கப்பட வேண்டும். மறுபுறம், இல் /sys பல பெரிய கோப்புகள் உள்ளன, அவற்றில் பல நினைவகத்தின் முழு பக்கத்தையும் எடுத்துக்கொள்கின்றன. பொதுவாக கோப்புகள் sysfs போன்ற கோப்புகளைப் படிப்பதன் மூலம் பெறப்பட்ட தகவலின் அட்டவணையைப் போலன்றி, சரியாக ஒரு எண் அல்லது வரியைக் கொண்டிருக்கும் /proc/meminfo.

இலக்கு sysfs - கர்னல் அழைக்கும் படிக்க/எழுது பண்புகளை வழங்கவும் «kobjects» பயனர் இடத்தில். ஒரே இலக்கு kobjects இணைப்பு எண்ணுதல்: ஒரு கோப்ஜெக்டிற்கான கடைசி இணைப்பு அகற்றப்பட்டால், கணினி அதனுடன் தொடர்புடைய ஆதாரங்களை மீட்டெடுக்கும். இருப்பினும், /sys பெரும்பாலான பிரபலங்களை உருவாக்குகிறது "பயனர் இடத்திற்கான நிலையான ஏபிஐ" எந்த சூழ்நிலையிலும் யாராலும் முடியாது "உடைப்பு". sysfs இல் உள்ள கோப்புகள் நிலையானவை என்று இது அர்த்தப்படுத்துவதில்லை, இது நிலையற்ற பொருள்களின் குறிப்பு எண்ணிக்கையுடன் முரணாக இருக்கும்.
கர்னலின் நிலையான ஏபிஐ என்ன தோன்றலாம் என்பதைக் கட்டுப்படுத்துகிறது /sys, அந்த குறிப்பிட்ட தருணத்தில் உண்மையில் இருப்பது இல்லை. sysfs இல் கோப்பு அனுமதிகளை பட்டியலிடுவது சாதனங்கள், தொகுதிகள், கோப்பு முறைமைகள் போன்றவற்றிற்கான அமைப்புகளை எவ்வாறு உள்ளமைக்க முடியும் என்பதைப் பற்றிய நுண்ணறிவை வழங்குகிறது. கட்டமைக்க அல்லது படிக்க முடியும். தர்க்கரீதியான முடிவு என்னவென்றால், procfs ஆனது கர்னலின் நிலையான ABI இன் ஒரு பகுதியாகும், இருப்பினும் இது வெளிப்படையாகக் கூறப்படவில்லை. ஆவணங்கள்.

லினக்ஸில் மெய்நிகர் கோப்பு முறைமைகள்: அவை ஏன் தேவைப்படுகின்றன, அவை எவ்வாறு செயல்படுகின்றன? பகுதி 1

கோப்புகள் sysfs ஒவ்வொரு நிறுவனத்திற்கும் ஒரு குறிப்பிட்ட சொத்தை விவரிக்கவும் மற்றும் படிக்கக்கூடிய, எழுதக்கூடிய அல்லது இரண்டும் இருக்கலாம். கோப்பில் உள்ள "0" என்பது SSD ஐ அகற்ற முடியாது என்பதாகும்.

eBPF மற்றும் bcc கருவிகளைப் பயன்படுத்தி VFS ஐ எவ்வாறு கண்காணிப்பது என்பதன் மூலம் மொழிபெயர்ப்பின் இரண்டாம் பகுதியைத் தொடங்குவோம், இப்போது உங்கள் கருத்துகளுக்காக நாங்கள் காத்திருக்கிறோம் மற்றும் பாரம்பரியமாக உங்களை அழைக்கிறோம் திறந்த வெபினார், இது ஏப்ரல் 9 அன்று எங்கள் ஆசிரியரால் நடைபெறும் - விளாடிமிர் ட்ரோஸ்டெட்ஸ்கி.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்