سب کو سلام! ہم آپ کے پہلے سے پسند کردہ کورسز پر نئے سلسلے شروع کرنا جاری رکھے ہوئے ہیں، اور اب ہم یہ اعلان کرنے کی جلدی میں ہیں کہ ہم کورسز کا ایک نیا سیٹ شروع کر رہے ہیں۔
ورچوئل فائل سسٹم ایک قسم کے جادوئی تجرید کے طور پر کام کرتے ہیں جو لینکس کے فلسفے کو یہ کہنے کی اجازت دیتا ہے کہ "ہر چیز ایک فائل ہے۔"
فائل سسٹم کیا ہے؟ لینکس کے ابتدائی شراکت دار اور مصنف کے الفاظ پر مبنی
فائل سسٹم کی بنیادی باتیں
لینکس کرنل میں کسی ایسی ہستی کے لیے کچھ تقاضے ہوتے ہیں جنہیں فائل سسٹم سمجھا جا سکتا ہے۔ اسے طریقوں کو نافذ کرنا ہوگا۔ 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
سب سے زیادہ مشہور بناتا ہے
دانا کا مستحکم ABI اس میں ظاہر ہونے والی چیزوں کو محدود کرتا ہے۔ /sys
، بجائے اس کے کہ اصل میں اس خاص لمحے میں کیا موجود ہے۔ sysfs میں فائل کی اجازتوں کی فہرست سازی اس بات کی بصیرت فراہم کرتی ہے کہ ڈیوائسز، ماڈیولز، فائل سسٹمز وغیرہ کے کنفیگریبل پیرامیٹرز کیسے ہیں۔ ترتیب یا پڑھا جا سکتا ہے۔ ہم ایک منطقی نتیجہ اخذ کرتے ہیں کہ procfs دانا کے مستحکم ABI کا بھی حصہ ہے، حالانکہ اس میں واضح طور پر بیان نہیں کیا گیا ہے۔
میں فائلیں sysfs
ہر ہستی کے لیے ایک مخصوص خاصیت کی وضاحت کریں اور پڑھنے کے قابل، قابل تحریر یا دونوں ہو سکتے ہیں۔ فائل میں ایک "0" اشارہ کرتا ہے کہ SSD کو ہٹایا نہیں جا سکتا۔
ہم ترجمہ کا دوسرا حصہ شروع کریں گے کہ ای بی پی ایف اور بی سی سی ٹولز کا استعمال کرتے ہوئے VFS کی نگرانی کیسے کی جائے، اور اب ہم آپ کے تبصروں کا انتظار کر رہے ہیں اور روایتی طور پر آپ کو مدعو کرتے ہیں۔
ماخذ: www.habr.com