سلام به همه! ما همچنان به راه اندازی استریم های جدید برای دوره هایی که قبلاً عاشق آنها شده اید ادامه می دهیم و اکنون عجله داریم که اعلام کنیم مجموعه جدیدی از دوره ها را شروع می کنیم.
سیستم های فایل مجازی به عنوان نوعی انتزاع جادویی عمل می کنند که به فلسفه لینوکس اجازه می دهد بگوید "همه چیز یک فایل است."
فایل سیستم چیست؟ بر اساس صحبت های یکی از اولین مشارکت کنندگان و نویسندگان لینوکس
مبانی سیستم فایل
هسته لینوکس الزامات خاصی برای موجودیتی دارد که می تواند یک سیستم فایل در نظر گرفته شود. باید روش ها را اجرا کند open()
, read()
и write()
برای اشیاء ثابتی که نام دارند. از دیدگاه شی گرا
اگر بتوانیم یک موجود را باز کنیم، بخوانیم و بنویسیم، آن موجودیت یک فایل در نظر گرفته می شود، همانطور که از مثال موجود در کنسول بالا می بینیم.
پدیده VFS تنها بر مشاهدات یونیکس مانند تأکید می کند که "همه چیز یک فایل است". فکر کنید که چقدر عجیب است که مثال کوچک /dev/console بالا نشان می دهد که کنسول واقعا چگونه کار می کند. تصویر یک جلسه تعاملی Bash را نشان می دهد. ارسال یک رشته به کنسول (دستگاه کنسول مجازی) آن را در یک صفحه مجازی نمایش می دهد. 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
شمارش پیوند است: هنگامی که آخرین پیوند به یک kobject حذف شود، سیستم منابع مرتبط با آن را بازیابی می کند. با این اوصاف، /sys
بیشتر معروف ها را تشکیل می دهد
ABI پایدار هسته چیزی را که می تواند در آن ظاهر شود محدود می کند /sys
، نه آنچه در آن لحظه خاص وجود دارد. فهرست کردن مجوزهای فایل در sysfs بینشی در مورد نحوه تنظیم تنظیمات برای دستگاه ها، ماژول ها، سیستم های فایل و غیره ارائه می دهد. را می توان پیکربندی کرد یا خواند. نتیجه منطقی این است که procfs نیز بخشی از ABI پایدار هسته است، اگرچه این به صراحت در
فایل ها در sysfs
یک ویژگی خاص را برای هر موجود توصیف کنید و می تواند قابل خواندن، قابل نوشتن یا هر دو باشد. "0" در فایل به این معنی است که SSD را نمی توان حذف کرد.
بیایید قسمت دوم ترجمه را با نحوه نظارت بر VFS با استفاده از ابزارهای eBPF و bcc شروع کنیم و اکنون منتظر نظرات شما هستیم و به طور سنتی از شما دعوت می کنیم
منبع: www.habr.com