அனைவருக்கும் வணக்கம்! நீங்கள் ஏற்கனவே காதலித்த படிப்புகளுக்கு நாங்கள் தொடர்ந்து புதிய ஸ்ட்ரீம்களைத் தொடங்குகிறோம், இப்போது நாங்கள் புதிய பாடத்திட்டங்களைத் தொடங்குகிறோம் என்பதை அறிவிப்பதில் அவசரமாக இருக்கிறோம்.
மெய்நிகர் கோப்பு முறைமைகள் ஒரு வகையான மாயாஜால சுருக்கமாக செயல்படுகின்றன, இது லினக்ஸின் தத்துவத்தை "எல்லாம் ஒரு கோப்பு" என்று கூற அனுமதிக்கிறது.
கோப்பு முறைமை என்றால் என்ன? லினக்ஸின் முதல் பங்களிப்பாளர்கள் மற்றும் ஆசிரியர்களில் ஒருவரின் வார்த்தைகளின் அடிப்படையில்
கோப்பு முறைமை அடிப்படைகள்
லினக்ஸ் கர்னலுக்கு கோப்பு முறைமையாகக் கருதப்படும் ஒரு நிறுவனத்திற்கு சில தேவைகள் உள்ளன. அதற்கான வழிமுறைகளை செயல்படுத்த வேண்டும் open()
, read()
и write()
பெயர்களைக் கொண்ட நிலையான பொருள்களுக்கு. ஒரு பொருள் சார்ந்த பார்வையில் இருந்து
ஒரு உள்பொருளைத் திறக்கவும், படிக்கவும், எழுதவும் முடிந்தால், மேலே உள்ள கன்சோலில் உள்ள எடுத்துக்காட்டில் இருந்து நாம் பார்ப்பது போல, அந்த நிறுவனம் ஒரு கோப்பாகக் கருதப்படுகிறது.
VFS நிகழ்வு "எல்லாம் ஒரு கோப்பு" என்ற யுனிக்ஸ் போன்ற கவனிப்பை மட்டுமே அடிக்கோடிட்டுக் காட்டுகிறது. மேலே உள்ள சிறிய / dev/console உதாரணம் கன்சோல் உண்மையில் எவ்வாறு செயல்படுகிறது என்பதைக் காட்டுவது எவ்வளவு வித்தியாசமானது என்று சிந்தியுங்கள். படம் ஊடாடும் பாஷ் அமர்வைக் காட்டுகிறது. கன்சோலுக்கு ஒரு சரத்தை அனுப்புவது (மெய்நிகர் கன்சோல் சாதனம்) அதை மெய்நிகர் திரையில் காண்பிக்கும். VFS இல் மற்ற, கூட அந்நியமான பண்புகள் உள்ளன. எடுத்துக்காட்டாக, இது உங்களை தேட அனுமதிக்கிறது
ext4, NFS மற்றும் /proc போன்ற பழக்கமான அமைப்புகள் C தரவு கட்டமைப்பில் மூன்று முக்கியமான செயல்பாடுகளைக் கொண்டுள்ளன read()
ஒரு கோப்பு முறைமை, பின்னர் முறையைப் பயன்படுத்தவும் write ()
தரவு வெளியீட்டிற்கான மற்றொரு கோப்பு முறைமை.
அடிப்படை VFS வகைகளைச் சேர்ந்த செயல்பாடு வரையறைகள் கோப்புகளில் உள்ளன fs/
சில கோப்பு முறைமைகளைக் கொண்டுள்ளது. கோர் போன்ற நிறுவனங்களும் உள்ளன cgroups
, /dev
и tmpfs
, துவக்க செயல்பாட்டின் போது தேவைப்படும் மற்றும் கர்னல் துணை அடைவில் வரையறுக்கப்படுகிறது init/
. அதை கவனி cgroups
, /dev
и tmpfs
"பெரிய மூன்று" செயல்பாடுகளை அழைக்க வேண்டாம் file_operations
, ஆனால் நேரடியாக படித்து நினைவகத்தில் எழுதலாம்.
லினக்ஸ் கணினிகளில் பொதுவாக ஏற்றப்பட்ட பல்வேறு வகையான கோப்பு முறைமைகளை பயனர்வெளி எவ்வாறு அணுகுகிறது என்பதை கீழே உள்ள வரைபடம் காட்டுகிறது. கட்டமைப்புகள் காட்டப்படவில்லை pipes
, dmesg
и POSIX clocks
, இது கட்டமைப்பையும் செயல்படுத்துகிறது file_operations
, VFS லேயர் மூலம் அணுகலாம்.
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
, சரியா?
அந்த சேமிப்பு அனைவருக்கும் தெரியும் / tmp
ஒரு உடல் ஊடகத்தில் - பைத்தியம்!
சேமிப்பது ஏன் விரும்பத்தகாதது /tmp
உடல் ஊடகத்தில்? ஏனெனில் உள்ள கோப்புகள் /tmp
தற்காலிகமானது மற்றும் சேமிப்பக சாதனங்கள் tmpfs உருவாக்கப்பட்ட நினைவகத்தை விட மெதுவாக இருக்கும். மேலும், இயற்பியல் ஊடகங்கள் நினைவகத்தை விட மேலெழுதப்படும் போது அணிய அதிக வாய்ப்புள்ளது. இறுதியாக, /tmp இல் உள்ள கோப்புகள் முக்கியமான தகவல்களைக் கொண்டிருக்கலாம், எனவே ஒவ்வொரு மறுதொடக்கத்திலும் அவை மறைந்துவிடும் ஒரு முக்கிய அம்சமாகும்.
துரதிர்ஷ்டவசமாக, சில லினக்ஸ் விநியோக நிறுவல் ஸ்கிரிப்டுகள் முன்னிருப்பாக சேமிப்பக சாதனத்தில் /tmp ஐ உருவாக்குகின்றன. உங்கள் கணினியிலும் இது நடந்தால் விரக்தியடைய வேண்டாம். சில எளிய வழிமுறைகளைப் பின்பற்றவும் tmpfs
மற்ற நோக்கங்களுக்காக கிடைக்காமல் போகிறது. வேறு வார்த்தைகளில் கூறுவதானால், ஒரு பெரிய tmpfs மற்றும் பெரிய கோப்புகளைக் கொண்ட ஒரு கணினி நினைவகம் மற்றும் செயலிழக்கச் செய்யலாம். மற்றொரு குறிப்பு: கோப்பைத் திருத்தும் போது /etc/fstab
, இது ஒரு புதிய வரியுடன் முடிவடைய வேண்டும் என்பதை நினைவில் கொள்ளுங்கள், இல்லையெனில் உங்கள் கணினி துவக்கப்படாது.
/proc மற்றும் /sys
தவிர /tmp
, லினக்ஸ் பயனர்களுக்கு மிகவும் பரிச்சயமான VFS (மெய்நிகர் கோப்பு முறைமைகள்). /proc
и /sys
. (/dev
பகிரப்பட்ட நினைவகத்தில் உள்ளது மற்றும் இல்லை file_operations
) ஏன் இந்த இரண்டு கூறுகள்? இந்த சிக்கலைப் பார்ப்போம்.
procfs
கர்னலின் ஸ்னாப்ஷாட் மற்றும் அது கண்காணிக்கும் செயல்முறைகளை உருவாக்குகிறது userspace
. தி /proc
கர்னல் குறுக்கீடுகள், மெய்நிகர் நினைவகம் மற்றும் திட்டமிடல் போன்றவற்றைப் பற்றிய தகவல்களை அச்சிடுகிறது. தவிர, /proc/sys
கட்டளையுடன் அளவுருக்கள் கட்டமைக்கப்பட்ட இடம் sysctl
, கிடைக்கும் userspace
. தனிப்பட்ட செயல்முறைகளின் நிலை மற்றும் புள்ளிவிவரங்கள் கோப்பகங்களில் காட்டப்படும் /proc/
.
இது /proc/meminfo
மதிப்புமிக்க தகவல்களைக் கொண்ட ஒரு வெற்று கோப்பு.
நடத்தை /proc
கோப்புகள் VFS வட்டு கோப்பு முறைமைகள் எவ்வாறு வேறுபடுகின்றன என்பதைக் காட்டுகிறது. ஒருபுறம், /proc/meminfo
கட்டளையுடன் பார்க்கக்கூடிய தகவல்களைக் கொண்டுள்ளது free
. மறுபுறம் காலி! இது எப்படி வேலை செய்கிறது? என்ற தலைப்பிலான புகழ்பெற்ற கட்டுரையை நினைவுபடுத்தும் நிலை உள்ளது /proc
, மற்றும் உண்மையில் கோப்புகளில் /proc
யாரும் பார்க்காத போது எதுவும் இல்லை. சொன்னது போல்
வெறுமை தெரிகிறது procfs
அங்குள்ள தகவல் மாறும் என்பதால் அர்த்தமுள்ளதாக இருக்கிறது. சற்று வித்தியாசமான சூழ்நிலை sysfs
. குறைந்தபட்சம் ஒரு பைட் அளவுள்ள எத்தனை கோப்புகள் உள்ளன என்பதை ஒப்பிடுவோம் /proc
மற்றும் உள்ளே /sys
.
Procfs
ஒரு கோப்பு உள்ளது, அதாவது ஏற்றுமதி செய்யப்பட்ட கர்னல் உள்ளமைவு, இது ஒரு விதிவிலக்கு, ஏனெனில் இது ஒரு துவக்கத்திற்கு ஒரு முறை மட்டுமே உருவாக்கப்பட வேண்டும். மறுபுறம், இல் /sys
பல பெரிய கோப்புகள் உள்ளன, அவற்றில் பல நினைவகத்தின் முழு பக்கத்தையும் எடுத்துக்கொள்கின்றன. பொதுவாக கோப்புகள் sysfs
போன்ற கோப்புகளைப் படிப்பதன் மூலம் பெறப்பட்ட தகவலின் அட்டவணையைப் போலன்றி, சரியாக ஒரு எண் அல்லது வரியைக் கொண்டிருக்கும் /proc/meminfo
.
இலக்கு sysfs
- கர்னல் அழைக்கும் படிக்க/எழுது பண்புகளை வழங்கவும் «kobjects»
பயனர் இடத்தில். ஒரே இலக்கு kobjects
இணைப்பு எண்ணுதல்: ஒரு கோப்ஜெக்டிற்கான கடைசி இணைப்பு அகற்றப்பட்டால், கணினி அதனுடன் தொடர்புடைய ஆதாரங்களை மீட்டெடுக்கும். இருப்பினும், /sys
பெரும்பாலான பிரபலங்களை உருவாக்குகிறது
கர்னலின் நிலையான ஏபிஐ என்ன தோன்றலாம் என்பதைக் கட்டுப்படுத்துகிறது /sys
, அந்த குறிப்பிட்ட தருணத்தில் உண்மையில் இருப்பது இல்லை. sysfs இல் கோப்பு அனுமதிகளை பட்டியலிடுவது சாதனங்கள், தொகுதிகள், கோப்பு முறைமைகள் போன்றவற்றிற்கான அமைப்புகளை எவ்வாறு உள்ளமைக்க முடியும் என்பதைப் பற்றிய நுண்ணறிவை வழங்குகிறது. கட்டமைக்க அல்லது படிக்க முடியும். தர்க்கரீதியான முடிவு என்னவென்றால், procfs ஆனது கர்னலின் நிலையான ABI இன் ஒரு பகுதியாகும், இருப்பினும் இது வெளிப்படையாகக் கூறப்படவில்லை.
கோப்புகள் sysfs
ஒவ்வொரு நிறுவனத்திற்கும் ஒரு குறிப்பிட்ட சொத்தை விவரிக்கவும் மற்றும் படிக்கக்கூடிய, எழுதக்கூடிய அல்லது இரண்டும் இருக்கலாம். கோப்பில் உள்ள "0" என்பது SSD ஐ அகற்ற முடியாது என்பதாகும்.
eBPF மற்றும் bcc கருவிகளைப் பயன்படுத்தி VFS ஐ எவ்வாறு கண்காணிப்பது என்பதன் மூலம் மொழிபெயர்ப்பின் இரண்டாம் பகுதியைத் தொடங்குவோம், இப்போது உங்கள் கருத்துகளுக்காக நாங்கள் காத்திருக்கிறோம் மற்றும் பாரம்பரியமாக உங்களை அழைக்கிறோம்
ஆதாரம்: www.habr.com