ආයුබෝවන් සියල්ලටම! ඔබ දැනටමත් ආදරය කරන පාඨමාලා සඳහා අපි නව ප්රවාහයන් දිගටම දියත් කරන අතර දැන් අපි නව පාඨමාලා මාලාවක් ආරම්භ කරන බව දැනුම් දීමට ඉක්මන් වෙමු
අතථ්ය ගොනු පද්ධති ලිනක්ස් හි දර්ශනයට "සියල්ල ගොනුවක්" යැයි පැවසීමට ඉඩ සලසන ආකාරයේ ඉන්ද්රජාලික සාරාංශයක් ලෙස සේවය කරයි.
ගොනු පද්ධතියක් යනු කුමක්ද? ලිනක්ස් හි පළමු දායකයෙකුගේ සහ කතුවරයෙකුගේ වචන මත පදනම්ව
ගොනු පද්ධති මූලික කරුණු
ලිනක්ස් කර්නලයට ගොනු පද්ධතියක් ලෙස සැලකිය හැකි ආයතනයක් සඳහා යම් යම් අවශ්යතා ඇත. එය ක්රම ක්රියාත්මක කළ යුතුය open()
, read()
и write()
නම් ඇති ස්ථීර වස්තූන් සඳහා. වස්තු-නැඹුරු දෘෂ්ටි කෝණයකින්
අපට යම් වස්තුවක් විවෘත කිරීමට, කියවීමට සහ ලිවීමට හැකි නම්, ඉහත කොන්සෝලයේ උදාහරණයෙන් අපට පෙනෙන පරිදි, එම ආයතනය ගොනුවක් ලෙස සලකනු ලැබේ.
VFS සංසිද්ධිය අවධාරනය කරන්නේ "සියල්ල ගොනුවක්" යන Unix වැනි නිරීක්ෂණ පමණි. ඉහත කුඩා / dev/console උදාහරණය කොන්සෝලය සැබවින්ම ක්රියා කරන ආකාරය පෙන්වන ආකාරය කෙතරම් අමුතුදැයි සිතන්න. පින්තූරයේ අන්තර්ක්රියාකාරී Bash සැසියක් පෙන්වයි. කොන්සෝලය වෙත තන්තුවක් යැවීම (අථත්ය කොන්සෝල උපාංගය) එය අතථ්ය තිරයක පෙන්වයි. VFS හි වෙනත්, ඊටත් වඩා ආගන්තුක ගුණාංග ඇත. උදාහරණයක් ලෙස, එය ඔබට සෙවීමට ඉඩ සලසයි
ext4, NFS, සහ /proc වැනි හුරුපුරුදු පද්ධති වලට C දත්ත ව්යුහයක වැදගත් කාර්යයන් තුනක් ඇත. read()
එක් ගොනු පද්ධතියක් සහ පසුව ක්රමය භාවිතා කරන්න write ()
දත්ත ප්රතිදානය සඳහා තවත් ගොනු පද්ධතියක්.
මූලික VFS වර්ග වලට අයත් ශ්රිත නිර්වචන ගොනු වල ඇත fs/
සමහර ගොනු පද්ධති අඩංගු වේ. හරය වැනි ආයතන ද අඩංගු වේ cgroups
, /dev
и tmpfs
, ඇරඹුම් ක්රියාවලියේදී අවශ්ය වන අතර එම නිසා කර්නල් උප බහලුම තුළ අර්ථ දක්වා ඇත init/
. එය සැලකිල්ලට ගන්න cgroups
, /dev
и tmpfs
"විශාල තුන" ශ්රිතයන් අමතන්න එපා file_operations
, නමුත් කෙලින්ම කියවා මතකයට ලියන්න.
පහත රූප සටහන මඟින් Linux පද්ධති මත පොදුවේ සවිකර ඇති විවිධ වර්ගයේ ගොනු පද්ධති වෙත පරිශීලක අවකාශය ප්රවේශ වන ආකාරය පෙන්වයි. ව්යුහයන් පෙන්වා නැත 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 හි ඇති ගොනු වල සංවේදී තොරතුරු අඩංගු විය හැක, එබැවින් සෑම නැවත පණගැන්වීමකදීම ඒවා අතුරුදහන් කිරීම අත්යවශ්ය අංගයකි.
අවාසනාවකට, සමහර Linux බෙදාහැරීමේ ස්ථාපන ස්ක්රිප්ට් පෙරනිමියෙන් ගබඩා උපාංගයේ /tmp නිර්මාණය කරයි. ඔබේ පද්ධතියටද මෙය සිදු වූවා නම් බලාපොරොත්තු සුන් නොකරන්න. සමඟ සරල උපදෙස් කිහිපයක් අනුගමනය කරන්න tmpfs
වෙනත් අරමුණු සඳහා ලබා ගත නොහැක. වෙනත් වචන වලින් කිවහොත්, යෝධ tmpfs සහ විශාල ගොනු සහිත පද්ධතියක් මතකය අවසන් වී බිඳ වැටීමට ඉඩ ඇත. තවත් ඉඟියක්: ගොනුවක් සංස්කරණය කරන අතරතුර /etc/fstab
, එය නව රේඛාවකින් අවසන් විය යුතු බව මතක තබා ගන්න, එසේ නොමැතිනම් ඔබේ පද්ධතිය ආරම්භ නොවනු ඇත.
/proc සහ /sys
හැර /tmp
, Linux භාවිතා කරන්නන්ට වඩාත් හුරුපුරුදු 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
සබැඳි ගණනය කිරීම වේ: kobject වෙත ඇති අවසාන සබැඳිය ඉවත් කළ විට, පද්ධතිය එයට සම්බන්ධ සම්පත් ප්රතිසාධනය කරයි. කෙසේ වෙතත්, /sys
ප්රසිද්ධ බොහෝමයක් සෑදේ
කර්නලයේ ස්ථායී ABI මඟින් දිස්විය හැකි දේ සීමා කරයි /sys
, එම නිශ්චිත මොහොතේ ඇත්ත වශයෙන්ම පවතින දේ නොවේ. sysfs හි ගොනු අවසර ලැයිස්තුගත කිරීම උපාංග, මොඩියුල, ගොනු පද්ධති ආදිය සඳහා වින්යාසගත කළ හැකි ආකාරය පිළිබඳ අවබෝධයක් සපයයි. වින්යාසගත කිරීමට හෝ කියවිය හැක. තාර්කික නිගමනය නම්, procfs ද කර්නලයේ ස්ථායී ABI හි කොටසක් වන නමුත් මෙය පැහැදිලිව සඳහන් කර නැත.
ගොනු ඇත sysfs
එක් එක් ආයතනය සඳහා එක් විශේෂිත දේපල විස්තර කරන්න සහ කියවිය හැකි, ලිවිය හැකි, හෝ දෙකම විය හැක. ගොනුවේ "0" යන්නෙන් අදහස් වන්නේ SSD ඉවත් කළ නොහැකි බවයි.
eBPF සහ bcc මෙවලම් භාවිතයෙන් VFS නිරීක්ෂණය කරන්නේ කෙසේද යන්න සමඟ පරිවර්තනයේ දෙවන කොටස ආරම්භ කරමු, දැන් අපි ඔබේ අදහස් සඳහා බලා සිටින අතර සම්ප්රදායිකව ඔබට ආරාධනා කරන්නෙමු.
මූලාශ්රය: www.habr.com