لينڪس ۾ ورچوئل فائل سسٽم: اهي ڇو گهربل آهن ۽ اهي ڪيئن ڪم ڪن ٿا؟ حصو 1

هيلو سڀ! اسان ڪورسز لاءِ نوان اسٽريم شروع ڪرڻ جاري رکون ٿا جن سان توهان اڳ ۾ ئي پيار ڪيو آهي ۽ هاڻي اسان اعلان ڪرڻ لاءِ جلدي ۾ آهيون ته اسان ڪورسز جو هڪ نئون سيٽ شروع ڪري رهيا آهيون. "لينڪس ايڊمنسٽريٽر"جيڪو اپريل جي آخر ۾ شروع ٿيندو. هن واقعي لاء هڪ نئين اشاعت جي تاريخ ڪئي ويندي. اصل مواد سان، توهان ڪري سگهو ٿا هتي پڙهو.

ورچوئل فائل سسٽم هڪ قسم جي جادوئي تجريد جي طور تي ڪم ڪري ٿو جيڪو لينڪس جي فلسفي کي اهو چوڻ جي اجازت ڏئي ٿو ته "هر شي هڪ فائيل آهي."

لينڪس ۾ ورچوئل فائل سسٽم: اهي ڇو گهربل آهن ۽ اهي ڪيئن ڪم ڪن ٿا؟ حصو 1

هڪ فائيل سسٽم ڇا آهي؟ لينڪس جي پهرين مدد ڪندڙ ۽ ليکڪن مان هڪ جي لفظن جي بنياد تي رابرٽا لاوا, "هڪ فائيل سسٽم هڪ مخصوص ڍانچي جي مطابق گڏ ڪيل ڊيٽا جي درجه بندي اسٽوريج آهي." جيئن ته هجي، اها تعريف VFAT (Virtual File Allocation Table)، Git ۽ Cassandra (NoSQL ڊيٽابيس). پوء ڇا واقعي اهڙي شيء کي "فائل سسٽم" طور بيان ڪري ٿو؟

فائل سسٽم بنياديات

لينڪس ڪنييل کي هڪ اداري لاءِ ڪجهه گهرجون هونديون آهن جن کي فائيل سسٽم سمجهي سگهجي ٿو. اهو طريقو لاڳو ڪرڻ گهرجي open(), read() и write() مستقل شين لاءِ جن جا نالا آهن. اعتراض واري نقطي نظر کان پروگرامنگ, kernel هڪ عام فائيل سسٽم کي هڪ خلاصو انٽرفيس جي طور تي بيان ڪري ٿو، ۽ اهي ٽي وڏا ڪم "مجازي" سمجهيا وڃن ٿا ۽ انهن جي ڪا خاص تعريف نه آهي. ان جي مطابق، ڊفالٽ فائل سسٽم تي عمل درآمد کي ورچوئل فائل سسٽم (VFS) سڏيو ويندو آهي.

لينڪس ۾ ورچوئل فائل سسٽم: اهي ڇو گهربل آهن ۽ اهي ڪيئن ڪم ڪن ٿا؟ حصو 1

جيڪڏهن اسان هڪ اداري کي کوليو، پڙهي ۽ لکي سگهون ٿا، ته اهو ادارو هڪ فائيل سمجهيو ويندو آهي، جيئن اسان مٿي ڏنل ڪنسول ۾ مثال مان ڏسي سگهون ٿا.
VFS رجحان صرف يونڪس جھڙي مشاهدي کي بيان ڪري ٿو ته "هر شي هڪ فائل آهي". سوچيو ته ڪيترو عجيب آهي ته اهو ننڍڙو /dev/console مٿي ڏنل مثال ڏيکاري ٿو ته ڪنسول اصل ۾ ڪيئن ڪم ڪندو آهي. تصوير هڪ انٽرويو بش سيشن ڏيکاري ٿي. ڪنسول ڏانهن اسٽرنگ موڪلڻ (ورچوئل ڪنسول ڊيوائس) ان کي ورچوئل اسڪرين تي ڏيکاري ٿو. VFS ۾ ٻيون، اڃا به اجنبي ملڪيتون آهن. مثال طور، اهو توهان کي ڳولڻ جي اجازت ڏئي ٿو هن چيو.

واقف سسٽم جهڙوڪ ext4، NFS، ۽ /proc سي ڊيٽا جي جوڙجڪ ۾ ٽي اهم ڪم آهن. file_operations. اضافي طور تي، ڪجهه فائل سسٽم هڪ واقف اعتراض جي بنياد تي VFS ڪارڪردگي کي وڌايو ۽ ٻيهر بيان ڪيو. جيئن رابرٽ محبت نڪتو، VFS تجزيه لينڪس استعمال ڪندڙن کي اجازت ڏئي ٿو ته غير جانبدار طور تي فائلن کي ڪاپي يا ٽئين پارٽي جي آپريٽنگ سسٽم مان يا خلاصي ادارن جهڙوڪ پائپس کان سواء انهن جي اندروني ڊيٽا فارميٽ جي باري ۾ پريشان ٿيڻ کان سواء. صارف جي پاسي (userspace) تي، سسٽم ڪال استعمال ڪندي، هڪ عمل هڪ فائل مان نقل ڪري سگهي ٿو ڪنييل ڊيٽا جي جوڙجڪ کي طريقو استعمال ڪندي read() هڪ فائيل سسٽم ۽ پوء طريقو استعمال ڪريو write () ڊيٽا جي پيداوار لاء هڪ ٻيو فائيل سسٽم.

فنڪشن جون معنائون جيڪي بنيادي VFS قسمن سان تعلق رکن ٿيون فائلن ۾ fs/*.c kernel سورس ڪوڊ، جڏهن ته ذيلي ڊائريڪٽري fs/ ڪجهه فائل سسٽم تي مشتمل آهي. ڪور پڻ شامل آهن ادارا جهڙوڪ cgroups, /dev и tmpfs، جيڪي بوٽ جي عمل دوران گھربل آھن ۽ تنھنڪري kernel subdirectory ۾ بيان ڪيا ويا آھن 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 جو وجود ڪوڊ کي ٻيهر استعمال ڪرڻ جو موقعو فراهم ڪري ٿو، ڇاڪاڻ ته فائل سسٽم سان لاڳاپيل بنيادي طريقا هر قسم جي فائل سسٽم طرفان ٻيهر لاڳو ٿيڻ جي ضرورت ناهي. سافٽ ويئر انجنيئرن جي وچ ۾ ڪوڊ ٻيهر استعمال هڪ عام رواج آهي! تنهن هوندي به، جيڪڏهن reusable ڪوڊ تي مشتمل آهي سنگين غلطيون, سڀئي عمل جيڪي وراثت ۾ عام طريقا آهن انهن کان متاثر ٿين ٿا.

/tmp: سادو اشارو

اهو معلوم ڪرڻ جو هڪ آسان طريقو آهي ته VFS هڪ سسٽم تي موجود آهن ٽائپ ڪرڻ mount | grep -v sd | grep -v :/، جيڪو ڏيکاريندو سڀ نصب ٿيل (mounted) فائل سسٽم جيڪي ڊسڪ جي رهائشي ۽ غير NFS نه آهن، جيڪي اڪثر ڪمپيوٽرن تي صحيح آهن. فهرستن مان ھڪڙو (mounts) VFS ضرور ٿيندو /tmp، ساڄو؟

لينڪس ۾ ورچوئل فائل سسٽم: اهي ڇو گهربل آهن ۽ اهي ڪيئن ڪم ڪن ٿا؟ حصو 1

هرڪو ڄاڻي ٿو ته اسٽوريج / tmp جسماني وچولي تي - جنون! ذريعو.

اهو ذخيرو ڪرڻ لاء ناپسنديده ڇو آهي /tmp جسماني ميڊيا تي؟ ڇاڪاڻ ته فائلن ۾ /tmp عارضي آهن ۽ اسٽوريج ڊوائيسز ميموري کان سست آهن جتي tmpfs ٺاهي وئي آهي. ان کان علاوه، جسماني ميڊيا پائڻ لاء وڌيڪ حساس آهي جڏهن ميموري جي ڀيٽ ۾ مٿي لکجي. آخرڪار، /tmp ۾ فائلون حساس معلومات تي مشتمل ٿي سگھن ٿيون، تنهنڪري انهن کي هر ريبوٽ تي غائب ڪرڻ هڪ ضروري خاصيت آهي.

بدقسمتي سان، ڪجهه لينڪس ڊويزن انسٽاليشن اسڪرپٽ ٺاهيندا آهن /tmp اسٽوريج ڊوائيس تي ڊفالٽ طرفان. نااميد نه ٿيو جيڪڏهن اهو توهان جي سسٽم سان پڻ ٿيو. سان گڏ چند سادي هدايتن تي عمل ڪريو Arch Wikiهن کي درست ڪرڻ لاء، ۽ ڄاڻو ته ميموري لاء مختص ڪيو ويو آهي tmpfs ٻين مقصدن لاءِ دستياب ناهي. ٻين لفظن ۾، ھڪڙو سسٽم ھڪڙو وڏو tmpfs ۽ ان تي وڏيون فائلون ميموري ۽ حادثي کان ختم ٿي سگھي ٿو. ٻيو اشارو: فائل کي ايڊٽ ڪرڻ دوران /etc/fstabياد رکو ته ان کي نئين لائين سان ختم ڪرڻ گهرجي، ٻي صورت ۾ توهان جو سسٽم بوٽ نه ٿيندو.

/proc ۽ /sys

کان سواء /tmp, VFS (مجازي فائل سسٽم) جيڪي لينڪس استعمال ڪندڙن لاء تمام گهڻو واقف آهن /proc и /sys. (/dev گڏيل ياداشت ۾ رهي ٿو ۽ نه آهي file_operations). اهي ٻه حصا ڇو؟ اچو ته هن مسئلي تي غور ڪريون.

procfs kernel جو هڪ سنيپ شاٽ ٺاهي ٿو ۽ پروسيس ان جي نگراني ڪري ٿو 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 سڀ کان وڌيڪ مشهور ٺاهي ٿو "استحکام ABI استعمال ڪندڙ اسپيس لاءِ" بنيادي، جنهن کي ڪو به ڪڏهن به نه ٿو ڪري سگهي، ڪنهن به حالت ۾ "ٽڙڻ". هن جو مطلب اهو ناهي ته sysfs ۾ فائلون جامد آهن، جيڪي غير مستحڪم شين جي حوالي سان ڳڻپ سان متضاد هونديون.
ڪنييل جي مستحڪم ABI کي محدود ڪري ٿو جيڪو ظاهر ٿي سگھي ٿو /sys، نه ته ڇا اصل ۾ موجود آهي ان خاص وقت تي. sysfs ۾ فائلن جي اجازتن کي لسٽ ڪرڻ ۾ بصيرت مهيا ڪري ٿي ته ڪيئن سيٽنگون ڊوائيسز، ماڊلز، فائل سسٽم، وغيره لاء ترتيب ڏيڻ واري سيٽنگون. ترتيب ڏئي سگهجي ٿو يا پڙهي سگهجي ٿو. منطقي نتيجو اهو آهي ته procfs پڻ ڪنيل جي مستحڪم ABI جو حصو آهي، جيتوڻيڪ اهو واضح طور تي بيان نه ڪيو ويو آهي دستاويز.

لينڪس ۾ ورچوئل فائل سسٽم: اهي ڇو گهربل آهن ۽ اهي ڪيئن ڪم ڪن ٿا؟ حصو 1

۾ فائلون sysfs هر اداري لاءِ هڪ خاص ملڪيت بيان ڪريو ۽ پڙهي سگهجي ٿو، لکڻ جي قابل، يا ٻئي. فائل ۾ "0" جو مطلب آهي ته SSD ختم نه ٿي ڪري سگھجي.

اچو ته ترجمي جو ٻيو حصو شروع ڪريون ته EBPF ۽ bcc اوزار استعمال ڪندي VFS جي نگراني ڪيئن ڪجي، ۽ هاڻي اسان توهان جي تبصرن جا منتظر آهيون ۽ روايتي طور تي توهان کي دعوت ڏيون ٿا. کليل ويبينار، جيڪو اسان جي استاد پاران 9 اپريل تي منعقد ٿيندو - ولاديمير Drozdetsky.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو