لینکس میں ورچوئل فائل سسٹم: ان کی ضرورت کیوں ہے اور وہ کیسے کام کرتے ہیں؟ حصہ 1

سب کو سلام! ہم آپ کے پہلے سے پسند کردہ کورسز پر نئے سلسلے شروع کرنا جاری رکھے ہوئے ہیں، اور اب ہم یہ اعلان کرنے کی جلدی میں ہیں کہ ہم کورسز کا ایک نیا سیٹ شروع کر رہے ہیں۔ "لینکس ایڈمنسٹریٹر"، جو اپریل کے آخر میں شروع ہوگا۔ ایک نئی اشاعت اس تقریب کے لیے وقف کی جائے گی۔ اصل مواد کے ساتھ آپ کر سکتے ہیں یہاں پڑھیں.

ورچوئل فائل سسٹم ایک قسم کے جادوئی تجرید کے طور پر کام کرتے ہیں جو لینکس کے فلسفے کو یہ کہنے کی اجازت دیتا ہے کہ "ہر چیز ایک فائل ہے۔"

لینکس میں ورچوئل فائل سسٹم: ان کی ضرورت کیوں ہے اور وہ کیسے کام کرتے ہیں؟ حصہ 1

فائل سسٹم کیا ہے؟ لینکس کے ابتدائی شراکت دار اور مصنف کے الفاظ پر مبنی رابرٹ محبت، "ایک فائل سسٹم ایک مخصوص ڈھانچے کے مطابق جمع کردہ ڈیٹا کا درجہ بندی کا ذخیرہ ہے۔" تاہم، یہ تعریف VFAT (ورچوئل فائل ایلوکیشن ٹیبل)، گٹ اور پر یکساں طور پر لاگو ہوتی ہے۔ Cassandra (NoSQL ڈیٹا بیس)۔ تو اس طرح کی چیز کو "فائل سسٹم" کے طور پر بالکل واضح کیا ہے؟

فائل سسٹم کی بنیادی باتیں

لینکس کرنل میں کسی ایسی ہستی کے لیے کچھ تقاضے ہوتے ہیں جنہیں فائل سسٹم سمجھا جا سکتا ہے۔ اسے طریقوں کو نافذ کرنا ہوگا۔ open(), read() и write() مستقل اشیاء کے لیے جن کے نام ہیں۔ آبجیکٹ پر مبنی نقطہ نظر سے پروگرامنگ، kernel ایک عام فائل سسٹم کو ایک خلاصہ انٹرفیس کے طور پر بیان کرتا ہے، اور یہ تینوں بڑے فنکشنز کو "ورچوئل" سمجھا جاتا ہے اور ان کی کوئی خاص تعریف نہیں ہے۔ اس کے مطابق، پہلے سے طے شدہ فائل سسٹم کے نفاذ کو ورچوئل فائل سسٹم (VFS) کہا جاتا ہے۔

لینکس میں ورچوئل فائل سسٹم: ان کی ضرورت کیوں ہے اور وہ کیسے کام کرتے ہیں؟ حصہ 1

اگر ہم کسی ہستی کو کھول سکتے ہیں، پڑھ سکتے ہیں اور لکھ سکتے ہیں، تو اس ہستی کو ایک فائل سمجھا جاتا ہے، جیسا کہ ہم اوپر کنسول میں دی گئی مثال سے دیکھ سکتے ہیں۔
VFS رجحان صرف یونکس جیسے نظاموں میں عام مشاہدے پر روشنی ڈالتا ہے کہ "ہر چیز ایک فائل ہے۔" اس کے بارے میں سوچیں کہ یہ کتنا عجیب ہے کہ /dev/console کے ساتھ اوپر کی چھوٹی سی مثال ظاہر کرتی ہے کہ کنسول دراصل کیسے کام کرتا ہے۔ تصویر ایک انٹرایکٹو باش سیشن کو دکھاتی ہے۔ کنسول (ورچوئل کنسول ڈیوائس) پر سٹرنگ بھیجنا اسے ورچوئل اسکرین پر دکھاتا ہے۔ VFS میں دیگر، حتیٰ کہ اجنبی خصوصیات ہیں۔ مثال کے طور پر، یہ آپ کو تلاش کرنے کی اجازت دیتا ہے۔ اسے.

سسٹمز جن سے ہم واقف ہیں جیسے کہ ext4، NFS، اور /proc C ڈیٹا ڈھانچے میں تین اہم کام ہیں فائل_آپریشنز. اس کے علاوہ، کچھ فائل سسٹمز ایک مانوس آبجیکٹ پر مبنی انداز میں VFS فنکشنز کو بڑھاتے اور اوور رائیڈ کرتے ہیں۔ جیسا کہ رابرٹ لیو نوٹ کرتا ہے، VFS خلاصہ لینکس کے صارفین کو اجازت دیتا ہے کہ وہ اپنے اندرونی ڈیٹا فارمیٹ کی فکر کیے بغیر تھرڈ پارٹی آپریٹنگ سسٹمز یا خلاصہ اداروں جیسے پائپ جیسے فائلوں میں یا ان سے فائلیں کاپی کر سکیں۔ صارف کی طرف (یوزر اسپیس)، سسٹم کال کا استعمال کرتے ہوئے، طریقہ کار کا استعمال کرتے ہوئے ایک عمل فائل سے کرنل ڈیٹا ڈھانچے میں کاپی کر سکتا ہے۔ 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 بناتی ہیں۔ اگر آپ کے سسٹم کے ساتھ بھی ایسا ہوتا ہے تو مایوس نہ ہوں۔ کے ساتھ چند آسان ہدایات پر عمل کریں۔ آرکی وکیپیڈیااسے ٹھیک کرنے کے لیے، اور یاد رکھیں کہ میموری کے لیے مختص کیا گیا ہے۔ tmpfs دوسرے مقاصد کے لیے ناقابل رسائی ہو جاتا ہے۔ دوسرے لفظوں میں، ایک ایسا سسٹم جس میں ایک بڑا tmpfs اور بڑی فائلیں ہوں وہ تمام میموری اور کریش کو استعمال کر سکتا ہے۔ ایک اور اشارہ: فائل میں ترمیم کرتے وقت /etc/fstabیاد رکھیں کہ یہ ایک نئی لائن کے ساتھ ختم ہونا چاہیے، ورنہ آپ کا سسٹم بوٹ نہیں ہوگا۔

/proc اور /sys

اس کے علاوہ /tmpVFS (ورچوئل فائل سسٹم) جو لینکس کے صارفین کے لیے سب سے زیادہ واقف ہیں۔ /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 سب سے زیادہ مشہور بناتا ہے "یوزر اسپیس کے لیے مستحکم ABI" بنیادی، جسے کوئی بھی، کسی بھی حالت میں، کبھی نہیں کر سکتا، "توڑ". اس کا مطلب یہ نہیں ہے کہ sysfs میں فائلیں جامد ہیں، جو غیر مستحکم اشیاء کی حوالہ گنتی سے متصادم ہوں گی۔
دانا کا مستحکم ABI اس میں ظاہر ہونے والی چیزوں کو محدود کرتا ہے۔ /sys، بجائے اس کے کہ اصل میں اس خاص لمحے میں کیا موجود ہے۔ sysfs میں فائل کی اجازتوں کی فہرست سازی اس بات کی بصیرت فراہم کرتی ہے کہ ڈیوائسز، ماڈیولز، فائل سسٹمز وغیرہ کے کنفیگریبل پیرامیٹرز کیسے ہیں۔ ترتیب یا پڑھا جا سکتا ہے۔ ہم ایک منطقی نتیجہ اخذ کرتے ہیں کہ procfs دانا کے مستحکم ABI کا بھی حصہ ہے، حالانکہ اس میں واضح طور پر بیان نہیں کیا گیا ہے۔ دستاویزات.

لینکس میں ورچوئل فائل سسٹم: ان کی ضرورت کیوں ہے اور وہ کیسے کام کرتے ہیں؟ حصہ 1

میں فائلیں sysfs ہر ہستی کے لیے ایک مخصوص خاصیت کی وضاحت کریں اور پڑھنے کے قابل، قابل تحریر یا دونوں ہو سکتے ہیں۔ فائل میں ایک "0" اشارہ کرتا ہے کہ SSD کو ہٹایا نہیں جا سکتا۔

ہم ترجمہ کا دوسرا حصہ شروع کریں گے کہ ای بی پی ایف اور بی سی سی ٹولز کا استعمال کرتے ہوئے VFS کی نگرانی کیسے کی جائے، اور اب ہم آپ کے تبصروں کا انتظار کر رہے ہیں اور روایتی طور پر آپ کو مدعو کرتے ہیں۔ اوپن ویبینارجس کا انعقاد ہمارے استاد 9 اپریل کو کریں گے۔ ولادیمیر ڈروزڈیٹسکی.

ماخذ: www.habr.com

نیا تبصرہ شامل کریں