Linux හි අතථ්‍ය ගොනු පද්ධති: ඒවා අවශ්‍ය වන්නේ ඇයි සහ ඒවා ක්‍රියා කරන්නේ කෙසේද? 1 කොටස

ආයුබෝවන් සියල්ලටම! ඔබ දැනටමත් ආදරය කරන පාඨමාලා සඳහා අපි නව ප්‍රවාහයන් දිගටම දියත් කරන අතර දැන් අපි නව පාඨමාලා මාලාවක් ආරම්භ කරන බව දැනුම් දීමට ඉක්මන් වෙමු "ලිනක්ස් පරිපාලක"අප්රේල් අවසානයේ දියත් කරනු ඇත. මෙම සිදුවීම සඳහා නව ප්‍රකාශනයක් දින නියම කරනු ලැබේ. මුල් ද්රව්ය සමඟ, ඔබට පුළුවන් මෙතැනින් කියවන්න.

අතථ්‍ය ගොනු පද්ධති ලිනක්ස් හි දර්ශනයට "සියල්ල ගොනුවක්" යැයි පැවසීමට ඉඩ සලසන ආකාරයේ ඉන්ද්‍රජාලික සාරාංශයක් ලෙස සේවය කරයි.

Linux හි අතථ්‍ය ගොනු පද්ධති: ඒවා අවශ්‍ය වන්නේ ඇයි සහ ඒවා ක්‍රියා කරන්නේ කෙසේද? 1 කොටස

ගොනු පද්ධතියක් යනු කුමක්ද? ලිනක්ස් හි පළමු දායකයෙකුගේ සහ කතුවරයෙකුගේ වචන මත පදනම්ව රොබර්ටා ලාවා, "ගොනු පද්ධතියක් යනු නිශ්චිත ව්‍යුහයකට අනුව එකලස් කරන ලද දත්තවල ධූරාවලි ගබඩාවකි." එය එසේ වුවද, මෙම නිර්වචනය VFAT (අථත්‍ය ගොනු වෙන් කිරීමේ වගුව), Git සහ සඳහා සමානව ගැලපේ. කැසන්ඩ්රා (NoSQL දත්ත සමුදාය) ඉතින් එවැනි දෙයක් "ගොනු පද්ධතියක්" ලෙස හරියටම නිර්වචනය කරන්නේ කුමක්ද?

ගොනු පද්ධති මූලික කරුණු

ලිනක්ස් කර්නලයට ගොනු පද්ධතියක් ලෙස සැලකිය හැකි ආයතනයක් සඳහා යම් යම් අවශ්‍යතා ඇත. එය ක්රම ක්රියාත්මක කළ යුතුය open(), read() и write() නම් ඇති ස්ථීර වස්තූන් සඳහා. වස්තු-නැඹුරු දෘෂ්ටි කෝණයකින් වැඩසටහන්කරණය, කර්නලය සාමාන්‍ය ගොනු පද්ධතියක් වියුක්ත අතුරු මුහුණතක් ලෙස නිර්වචනය කරයි, සහ මෙම විශාල ශ්‍රිත තුන "අථත්‍ය" ලෙස සලකනු ලබන අතර නිශ්චිත අර්ථ දැක්වීමක් නොමැත. ඒ අනුව පෙරනිමි ගොනු පද්ධති ක්‍රියාත්මක කිරීම අතථ්‍ය ගොනු පද්ධතියක් (VFS) ලෙස හැඳින්වේ.

Linux හි අතථ්‍ය ගොනු පද්ධති: ඒවා අවශ්‍ය වන්නේ ඇයි සහ ඒවා ක්‍රියා කරන්නේ කෙසේද? 1 කොටස

අපට යම් වස්තුවක් විවෘත කිරීමට, කියවීමට සහ ලිවීමට හැකි නම්, ඉහත කොන්සෝලයේ උදාහරණයෙන් අපට පෙනෙන පරිදි, එම ආයතනය ගොනුවක් ලෙස සලකනු ලැබේ.
VFS සංසිද්ධිය අවධාරනය කරන්නේ "සියල්ල ගොනුවක්" යන Unix වැනි නිරීක්ෂණ පමණි. ඉහත කුඩා / dev/console උදාහරණය කොන්සෝලය සැබවින්ම ක්‍රියා කරන ආකාරය පෙන්වන ආකාරය කෙතරම් අමුතුදැයි සිතන්න. පින්තූරයේ අන්තර්ක්‍රියාකාරී Bash සැසියක් පෙන්වයි. කොන්සෝලය වෙත තන්තුවක් යැවීම (අථත්‍ය කොන්සෝල උපාංගය) එය අතථ්‍ය තිරයක පෙන්වයි. VFS හි වෙනත්, ඊටත් වඩා ආගන්තුක ගුණාංග ඇත. උදාහරණයක් ලෙස, එය ඔබට සෙවීමට ඉඩ සලසයි ඔහු.

ext4, NFS, සහ /proc වැනි හුරුපුරුදු පද්ධති වලට C දත්ත ව්‍යුහයක වැදගත් කාර්යයන් තුනක් ඇත. ගොනු_මෙහෙයුම්. මීට අමතරව, ඇතැම් ගොනු පද්ධති VFS කාර්යයන් හුරුපුරුදු වස්තු-නැඹුරු ආකාරයෙන් දිගු කර නැවත අර්ථ දක්වයි. Robert Love පෙන්වා දෙන පරිදි, VFS සාරාංශය මඟින් Linux පරිශීලකයින්ට ඔවුන්ගේ අභ්‍යන්තර දත්ත ආකෘතිය ගැන කරදර නොවී තෙවන පාර්ශවීය මෙහෙයුම් පද්ධති හෝ පයිප්ප වැනි වියුක්ත ආයතන වෙත ලිපිගොනු නොසැලකිලිමත් ලෙස පිටපත් කිරීමට ඉඩ සලසයි. පරිශීලක පැත්තෙන් (පරිශීලක අවකාශය), පද්ධති ඇමතුමක් භාවිතා කරමින්, ක්‍රියාවලියකට ක්‍රමය භාවිතා කරමින් ගොනුවක සිට කර්නල දත්ත ව්‍යුහයන් වෙත පිටපත් කළ හැක. read() එක් ගොනු පද්ධතියක් සහ පසුව ක්රමය භාවිතා කරන්න write () දත්ත ප්‍රතිදානය සඳහා තවත් ගොනු පද්ධතියක්.

මූලික VFS වර්ග වලට අයත් ශ්‍රිත නිර්වචන ගොනු වල ඇත fs/*.c කර්නල් මූල කේතය, උප බහලුම් අතර fs/ සමහර ගොනු පද්ධති අඩංගු වේ. හරය වැනි ආයතන ද අඩංගු වේ cgroups, /dev и tmpfs, ඇරඹුම් ක්‍රියාවලියේදී අවශ්‍ය වන අතර එම නිසා කර්නල් උප බහලුම තුළ අර්ථ දක්වා ඇත init/. එය සැලකිල්ලට ගන්න cgroups, /dev и tmpfs "විශාල තුන" ශ්රිතයන් අමතන්න එපා file_operations, නමුත් කෙලින්ම කියවා මතකයට ලියන්න.
පහත රූප සටහන මඟින් Linux පද්ධති මත පොදුවේ සවිකර ඇති විවිධ වර්ගයේ ගොනු පද්ධති වෙත පරිශීලක අවකාශය ප්‍රවේශ වන ආකාරය පෙන්වයි. ව්යුහයන් පෙන්වා නැත pipes, dmesg и POSIX clocks, ව්යුහය ද ක්රියාත්මක කරන file_operations, VFS ස්තරය හරහා ප්‍රවේශ විය.

Linux හි අතථ්‍ය ගොනු පද්ධති: ඒවා අවශ්‍ය වන්නේ ඇයි සහ ඒවා ක්‍රියා කරන්නේ කෙසේද? 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, හරිද?

Linux හි අතථ්‍ය ගොනු පද්ධති: ඒවා අවශ්‍ය වන්නේ ඇයි සහ ඒවා ක්‍රියා කරන්නේ කෙසේද? 1 කොටස

ඒ ගබඩාව ගැන හැමෝම දන්නවා / 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/.

Linux හි අතථ්‍ය ගොනු පද්ධති: ඒවා අවශ්‍ය වන්නේ ඇයි සහ ඒවා ක්‍රියා කරන්නේ කෙසේද? 1 කොටස

එය /proc/meminfo කෙසේ වෙතත් වටිනා තොරතුරු අඩංගු හිස් ගොනුවකි.

හැසිරීම /proc ගොනු VFS තැටි ගොනු පද්ධති වෙනස් විය හැකි ආකාරය පෙන්වයි. එක පැත්තකින්, /proc/meminfo විධානය සමඟ නැරඹිය හැකි තොරතුරු අඩංගු වේ free. අනෙක් අතට, එය හිස්! එය ක්රියා කරන්නේ කෙසේද? යන ප්‍රසිද්ධ ලිපියේ තත්ත්වය සිහිගන්වයි කිසිවෙක් නොබලන විට සඳ පවතින්නේද? යථාර්ථය සහ ක්වොන්ටම් න්‍යාය"1985 දී Cornell විශ්වවිද්‍යාලයේ භෞතික විද්‍යා මහාචාර්ය ඩේවිඩ් මර්මින් විසින් ලියන ලද්දකි. කාරණය වන්නේ ඉල්ලීමක් කළ විට කර්නලය මතක සංඛ්‍යාලේඛන එකතු කරයි /proc, සහ ඇත්ත වශයෙන්ම ගොනු වල /proc කිසිවෙකු නොබලන විට කිසිවක් නැත. කිව්වා වගේ මර්මින්, "මූලික ක්වොන්ටම් මූලධර්මය පවසන්නේ මැනීම සාමාන්‍යයෙන් මනිනු ලබන දේපලෙහි පෙර පැවති අගයක් හෙළි නොකරන බවයි." (සහ සඳ පිළිබඳ ප්‍රශ්නය ගෙදර වැඩ ලෙස සලකන්න!)
හිස් බව පෙනේ procfs එහි ඇති තොරතුරු ගතික බැවින් එය අර්ථවත් කරයි. සමඟ තරමක් වෙනස් තත්වයක් sysfs. අවම වශයෙන් එක් බයිටයක් ප්‍රමාණයෙන් ඇති ගොනු කීයක් සංසන්දනය කරමු /proc හා ඇතුළත /sys.

Linux හි අතථ්‍ය ගොනු පද්ධති: ඒවා අවශ්‍ය වන්නේ ඇයි සහ ඒවා ක්‍රියා කරන්නේ කෙසේද? 1 කොටස

Procfs එක් ගොනුවක් ඇත, එනම් අපනයනය කරන ලද කර්නල් වින්‍යාසය, එය ව්‍යතිරේකයකි, මන්ද එය ආරම්භයකට එක් වරක් පමණක් ජනනය කිරීමට අවශ්‍ය වේ. අනෙක් අතට, තුළ /sys විශාල ගොනු රාශියක් ඇත, ඒවායින් බොහොමයක් මතකයේ සම්පූර්ණ පිටුවක් ගනී. සාමාන්යයෙන් ගොනු sysfs වැනි ගොනු කියවීමෙන් ලබාගත් තොරතුරු වගු මෙන් නොව, හරියටම එක් අංකයක් හෝ පේළියක් අඩංගු වේ /proc/meminfo.

ඉලක්කය sysfs - කර්නලය හඳුන්වන දේ කියවීමේ / ලිවීමේ ගුණාංග ලබා දෙන්න «kobjects» පරිශීලක අවකාශය තුළ. එකම ඉලක්කය kobjects සබැඳි ගණනය කිරීම වේ: kobject වෙත ඇති අවසාන සබැඳිය ඉවත් කළ විට, පද්ධතිය එයට සම්බන්ධ සම්පත් ප්‍රතිසාධනය කරයි. කෙසේ වෙතත්, /sys ප්‍රසිද්ධ බොහෝමයක් සෑදේ "පරිශීලක අවකාශය සඳහා ස්ථාවර ABI" කිසිම තත්වයක් යටතේ කිසිවකුට කළ නොහැකි හරය "බිඳීම". මින් අදහස් වන්නේ sysfs හි ඇති ගොනු ස්ථිතික බව නොවේ, එය අස්ථායී වස්තූන්ගේ යොමු ගණන් කිරීම සමඟ නොගැලපේ.
කර්නලයේ ස්ථායී ABI මඟින් දිස්විය හැකි දේ සීමා කරයි /sys, එම නිශ්චිත මොහොතේ ඇත්ත වශයෙන්ම පවතින දේ නොවේ. sysfs හි ගොනු අවසර ලැයිස්තුගත කිරීම උපාංග, මොඩියුල, ගොනු පද්ධති ආදිය සඳහා වින්‍යාසගත කළ හැකි ආකාරය පිළිබඳ අවබෝධයක් සපයයි. වින්‍යාසගත කිරීමට හෝ කියවිය හැක. තාර්කික නිගමනය නම්, procfs ද කර්නලයේ ස්ථායී ABI හි කොටසක් වන නමුත් මෙය පැහැදිලිව සඳහන් කර නැත. ලියකියවිලි.

Linux හි අතථ්‍ය ගොනු පද්ධති: ඒවා අවශ්‍ය වන්නේ ඇයි සහ ඒවා ක්‍රියා කරන්නේ කෙසේද? 1 කොටස

ගොනු ඇත sysfs එක් එක් ආයතනය සඳහා එක් විශේෂිත දේපල විස්තර කරන්න සහ කියවිය හැකි, ලිවිය හැකි, හෝ දෙකම විය හැක. ගොනුවේ "0" යන්නෙන් අදහස් වන්නේ SSD ඉවත් කළ නොහැකි බවයි.

eBPF සහ bcc මෙවලම් භාවිතයෙන් VFS නිරීක්ෂණය කරන්නේ කෙසේද යන්න සමඟ පරිවර්තනයේ දෙවන කොටස ආරම්භ කරමු, දැන් අපි ඔබේ අදහස් සඳහා බලා සිටින අතර සම්ප්‍රදායිකව ඔබට ආරාධනා කරන්නෙමු. විවෘත webinar, අපේ ගුරුවරයා විසින් අප්රේල් 9 වන දින පවත්වනු ලැබේ - ව්ලැඩිමීර් ඩ්‍රොස්ඩෙට්ස්කි.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න