نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی

ساختار فایل سیستم سیستم فایل لینوکس و ساختار دایرکتوری

سیستم فایل لینوکس

یکی از مهمترین اجزای مهمدر لینوکس سیستم فایل است. AT این بخشمفهوم در نظر گرفته خواهد شد سیستم فایلو هدف آن؛ سلسله مراتب سیستم فایل سیستم عامل لینوکس. انواع فایل سیستم عامل لینوکس سایر مسائل مربوط به مدیریت فایل سیستم با جزئیات بیشتر در ماژول 3 پوشش داده خواهد شد.

هدف فایل سیستم

در لینوکس، مانند هر سیستم عامل یونیکس دیگر، هر شیء یک فایل ذخیره شده در سیستم فایل است. سیستم فایل دستگاهی (مانند هارد دیسک) است که برای ذخیره فایل ها فرمت شده است. فایل سیستم ها را می توان بر روی دیسکهای سخت، فلاپی دیسک ها، CD-ROM ها یا رسانه های دیگری که امکان دسترسی تصادفی یا متوالی به داده ها را فراهم می کند.

به طور معمول، سیستم فایل سیستم عامل لینوکس را می توان به اجزای زیر تقسیم کرد.

فضای نام - روش های نامگذاری برای اشیاء سیستم فایل و سازماندهی سلسله مراتبی آنها.

رابط برنامه نویسی برنامه (API) - مجموعه ای از تماس های سیستمی و کتابخانه هایی که برای مدیریت اشیاء سیستم فایل طراحی شده اند.

مدل امنیتی - شامل طرح کلیحفاظت، تفکیک حقوق دسترسی به اشیا و اشتراک گذاریاشیاء.

اجرای فنی - کد برنامه نویسیربط دادن مدل های منطقیسیستم فایل با سخت افزار

وظایف اصلی فایل سیستم عبارتند از:

سازماندهی داده های ذخیره شده؛

ساده و دسترسی سریعبه داده های ذخیره شده؛

اطمینان از یکپارچگی داده های ذخیره شده

فرمت دقیق و روش های ذخیره فایل ها در لینوکس مهم نیست، همانطور که سیستم ارائه می دهد رابط مشترکبرای همه انواع فایل سیستمی که تشخیص می دهد. سیستم عامل فایل لینوکسسیستم پیش فرض ext3fs است. هنگام دسترسی به هر فایل سیستمی از سیستم عامل داده های لینوکسبه عنوان سلسله مراتبی از دایرکتوری ها با فایل هایی که حاوی آنها هستند، همراه با شناسه مالک و گروه، بیت های مجوز و سایر ویژگی ها نشان داده می شوند.

سلسله مراتب سیستم فایل

سلسله مراتب دایرکتوری سیستم فایل سیستم عامل لینوکس با استاندارد سیستم سلسله مراتبی سیستم فایل (FHS) که عموماً در دنیای یونیکس پذیرفته شده است مطابقت دارد. مزیت اصلی این استانداردچیز این است انواع خاصیفایل ها در دایرکتوری مربوطه خود قرار دارند.

به عنوان مثال، بیشتر فایل های پیکربندی در دایرکتوری /etc قرار دارند، در حالی که فایل های log برای سرویس های مختلف در پوشه /var/log قرار دارند.

شرح فهرست های سیستم فایل سیستم عامل لینوکس

دایرکتوری های /bin، /usr/bin، /usr/locl/bin، /sbin، /usr/sbin و /usr/local/sbin حاوی دستورات نصب شده روی سیستم هستند. هنگام کار بر روی سیستم کاربر معمولی، شما فقط به دستورات /bin، /usr/bin و /usr/locl/bin دسترسی خواهید داشت زیرا FHS مشخص می کند که فقط دستورات اداری باید در دایرکتوری های sbin وجود داشته باشد.


شکل 1.2 ساختار دایرکتوری سیستم عامل لینوکس

دایرکتوری اصلی سیستم فایل سیستم عامل لینوکس دایرکتوری ریشه / است. در زیر دایرکتوری ریشه همه دایرکتوری های دیگر ایجاد شده در محلی وجود دارد زیر سیستم دیسکیا از دستگاه های خارجی نصب شده است. روش نصب فایل سیستم به معنای پیوند دایرکتوری از یک سیستم فایل موجود، به نام نقطه اتصال، به دایرکتوری ریشه یک سیستم فایل جدید است.

نصب یک فایل سیستم به یک نقطه اتصال با استفاده از دستور mount انجام می شود. فهرست زیر نمونه ای از یک مانت را نشان می دهد درایو دی وی دی a، حاوی توزیع سیستم عامل RedHatEnterpriseLinux 5.

# mount /dev/hdc /mnt/

mount: دستگاه مسدود /dev/hdc دارای محافظت از نوشتن است و فقط خواندنی نصب می شود

در نتیجه اجرای دستور mount، سیستم اطلاعاتی را که دستگاه بلوک (در این مورددرایو DVD) در حالت خواندن نصب شد.

لیست فایل سیستم های نصب شده در فایل /etc/fstab ذخیره می شود. به لطف این امکان پذیر است بررسی خودکاریکپارچگی سیستم فایل با استفاده از دستور fsck و نصب سیستم های فایل در مرحله بوت استرپو همچنین اجرای دستورات مختصر مانند mount /var/spool. اطلاعات موجود در این فایل منعکس کننده مکان سیستم های فایل روی دیسک است. فایل /etc/fstab با جزئیات بیشتر در ماژول 3 پوشش داده خواهد شد.

حذف فایل سیستم ها با دستور umount انجام می شود. یک فایل سیستم "قفل" را نمی توان جدا کرد. نباید حاوی هیچکدام باشد باز کردن فایل هاو نه دایرکتوری های فعلی فرآیندهای در حال اجرا. اگر فایل سیستمی که در حال unmount شدن است حاوی برنامه های اجرایی باشد، آنها نباید اجرا شوند. فهرست زیر نمونه ای از حذف یک فایل سیستم نصب شده قبلی در پوشه /mnt را نشان می دهد.

# مقدار /mnt # -1 /mnt مجموع 0 است

برای اینکه بفهمید کدام دستگاه ها روی سیستم نصب شده اند این لحظهباید دستور mount را بدون گزینه اجرا کنید. فهرست زیر نمونه ای از تعیین دستگاه های نصب شده را نشان می دهد.

#/dev/sda2 را روی /type ext3 (rw) mount کنید

proc on /proc نوع proc (rw)

sunrpc در /var/lib/nfs/rpc_pipefs نوع rpc_pipefs (rw) /dev/hdc در /mnt نوع iso9660 (ro)

همانطور که می بینید، خروجی دستور mount به صورت متوالی دستگاه نصب شده، نقطه اتصال، نوع سیستم فایل و گزینه های اضافیکوه.

انواع فایل

هنگام کار با سیستم عامل لینوکس، درک این نکته مهم است که هر شی OS یک فایل است. این یکی از ویژگی های کلیدی سیستم عامل لینوکس در مقایسه با سیستم عامل های خانواده ویندوز است.

فایل ها هم از نظر ساختار و هم از نظر هدف متفاوت هستند. لینوکس هفت نوع فایل را تعریف می کند:

فایل های معمولی (فایل های معمولی)؛

دایرکتوری ها

لوله های نامگذاری شده;

مسدود کردن فایل های دستگاه؛

فایل های دستگاه کاراکتر

با استفاده از دستور Is -Id می توانید نوع فایل را تعیین کنید. اولین کاراکتر در خط خروجی نوع فایل را نشان می دهد. لیست زیر اطلاعاتی در مورد فایل ارائه می دهد

/dev/hdc. # Is -Id /dev/hdc

فایل های معمولی

فایل های معمولی شامل فایل های باینری، کتابخانه ها، فایل های متنی و فایل های کاربردی مختلف می باشد. سیستم عامل لینوکس هیچ محدودیتی برای ساختار این فایل ها اعمال نمی کند. محتوای آنها هم به صورت متوالی و هم مستقیم قابل دسترسی است.

کاتالوگ ها

لینوکس دارای دایرکتوری های ویژه است. دایرکتوری های ویژه ای مانند "." و ".."، به ترتیب دایرکتوری فعلی و دایرکتوری والد آن را نشان می دهند.

در لینوکس مرسوم است که بین لینک های نمادین و سخت که هر کدام معنای خاصی دارند، تمایز قائل می شوند.

یک پیوند نمادین به شما امکان می دهد نام مستعار آن را به جای نام فایل مشخص کنید. در فرآیند جستجوی یک فایل از طریق پیوندهای نمادین، هسته نام های ذخیره شده در آنها را استخراج می کند. لینک سخت یک لینک مستقیم است، یعنی. به طور مستقیم به inode یک فایل اشاره می کند، در حالی که یک پیوند نمادین به یک فایل با نام آن اشاره می کند. فایلی که توسط یک پیوند نمادین نشان داده می شود و خود پیوند، اشیاء سیستم فایل متفاوتی هستند.

پیوندهای نمادین می توانند حاوی یک نام دلخواه باشند، به عنوان مثال. آنها اجازه دارند به فایل های ذخیره شده در سیستم های فایل دیگر اشاره کنند و حتی به فایل های موجود نیست. پیوندهای سخت نمی توانند به فایلی که در سیستم فایل دیگری قرار دارد اشاره کنند.

سیستم عامل لینوکس تعداد پیوندهای هر فایل را می شمارد و زمانی که یک فایل حذف می شود، تا زمانی که آخرین پیوند به آن حذف نشود، بلوک های داده را آزاد نمی کند.

پریز برق

سوکت یک نوع فایل خاص است که توسط فرآیندها برای برقراری ارتباط با یکدیگر استفاده می شود. اتصالات سوکت به فرآیندها اجازه می دهد بدون اینکه تحت تأثیر سایر فرآیندها قرار گیرند، ارتباط برقرار کنند. انواع مختلفی از سوکت در سیستم عامل لینوکس وجود دارد که استفاده از آنها وجود آنها را فرض می کند زیرساخت شبکه. سوکت های محلی فقط در رایانه محلی در دسترس هستند، آنها از طریق اشیاء سیستم فایل خاص قابل دسترسی هستند و نه از طریق پورت های شبکه. به این گونه سوکت ها، سوکت های دامنه یونیکس (UNIXdomainsocket) می گویند. علاوه بر سوکت های محلی، سوکت های شبکه نیز وجود دارند که به فرآیندها اجازه می دهند از طریق شبکه با هم ارتباط برقرار کنند.

اگرچه سایر فرآیندها فایل‌های سوکت را به عنوان ورودی دایرکتوری تشخیص می‌دهند، فقط فرآیندهایی با اتصال مناسب می‌توانند فایل‌های سوکت را بخوانند و بنویسند. با سوکت های محلی کار کنید خدمات مختلفسیستم عامل لینوکس - CUPS، XWindow و Syslog.

لوله های نامگذاری شده ( FIFO)

فایل ها از این نوعشبیه سوکت ها هستند زیرا برای برقراری ارتباط بین فرآیندها نیز استفاده می شوند، اما برخلاف سوکت ها، لوله های نامگذاری شده داده ها را تنها در یک جهت انتقال می دهند.

فایل های دستگاه را مسدود و کاراکتر کنید

فایل‌های دستگاه بلاک و کاراکتر به برنامه‌ها امکان دسترسی به سخت‌افزار و تجهیزات جانبی سیستم را می‌دهند. در مرحله پیکربندی، ماژول های لازم طراحی شده برای کنترل سخت افزار سیستم به صورت پویا در هسته لینوکس بارگذاری می شوند. برای مدیریت دستگاه خاصبه یک ماژول خاص به نام درایور دستگاه پاسخ می دهد.

درایورهای دستگاه یک رابط تعاملی استاندارد را تشکیل می دهند که توسط کاربر به عنوان مجموعه ای از فایل های معمولی درک می شود. به محض دریافت درخواست برای یک کاراکتر یا فایل دستگاه بلوک، هسته درخواست را به درایور مناسب ارسال می کند. فایل های دستگاه بلاک و کاراکتر خود درایور نیستند. آنها را می توان به عنوان دروازه هایی در نظر گرفت که از طریق آنها راننده درخواست هایی را برای انجام عملیات مورد نظر دریافت می کند.

فایل‌های دستگاه کاراکتر در طول عملیات ورودی/خروجی از بافر استفاده نمی‌کنند. تمام عملیات I/O بلافاصله به محض رسیدن انجام می شود. دستگاه‌های کاراکتری شامل پایانه‌های مجازی، مودم‌ها و سایر دستگاه‌هایی هستند که از دسترسی تصادفی داده پشتیبانی نمی‌کنند.

لینوکس (لینوکس) سیستم عاملی است که امروزه در واقع تنها است جایگزینی جایگزینسیستم عامل ویندوز از مایکروسافت. لینوکس از سال 1991 شروع شد، زمانی که یک برنامه نویس جوان از فنلاند بود لینوس توروالدزشروع به کار بر روی اولین نسخه از سیستم، که به نام او بود. طلوع محبوبیت لینوکس با شروع آن آغاز شد. دلیل این امر قبل از هر چیز این است که هسته این سیستم عامل مانند اکثر برنامه هایی که برای آن نوشته شده اند دارای کیفیت های بسیار مهمی است.

هسته هسته یک سیستم عامل سطح پایین است. بخشی وابسته به ماشین از سطح سنتی که فایل‌هایی را که از هسته اجرا می‌شوند پردازش می‌کند. سیستم عامل یونیکس شامل اجزای زیر است: دیسک، شبکه و غیره عملیات لازم. (در حالی که بستگی به ویژگی های تجهیزات دارد)؛ هسته سیستم عامل لینوکس یک سیستم معماری میکروکرنل یکپارچه است. ارتقاء و مقداردهی اولیه سیستم در سطح پایین با وقفه؛ هنگام کامپایل کردن هسته، می توانید پیش پردازش پویا داخلی و را فعال کنید مدیریت خارجیحافظه (در بخشی که مربوط به بارگیری و تخلیه بسیاری از اجزای هسته است - ویژگی های پشتیبانی سخت افزاری از ماژول های مجازی به اصطلاح. در زمان بارگذاری ماژول حافظه). کد آن در سطح سیستم بارگذاری شده و به بقیه هسته پیوند داده می شود. توابع را می توان در داخل یک ماژول استفاده کرد. هر زمینه فرآیند صادر شده توسط هسته بین حالت های کاربر و هسته تغییر می کند. بخش های خاص پلت فرم از درایورهای دستگاه را هدف قرار دهید.

ساختار فایل(سیستم) /bin - باینری‌های پایه کاربر / بوت - فایل‌های بوت استاتیک / CDrom - نقطه اتصال تاریخی انتخاب شده برای CD / dev - فایل‌های دستگاه / و غیره - فایل های پیکربندی/home - فهرست‌های اصلی /lib - کتابخانه‌های مشترک هسته / گمشده+ یافت شده - فایل‌های بازیابی شده / رسانه - رسانه قابل نصب /proc - فایل‌های هسته و پردازش /روت - فهرست اصلی کاربر ریشه/srv - داده بخش های خدماتی/tmp- فایل های موقت/usr - کاربر باینری هاو داده های فقط خواندنی (در تصویر نشان داده شده است)

رابط ( پوسته گرافیکی) برنامه ای است که تعامل کاربر با کامپیوتر را سازماندهی می کند. پشتیبانی از ویندوز، منوها، نمادها، ماوس و سایر عناصر GUI شناخته شده - رابط کاربری گرافیکیکاربر. محیط های گرافیکی پیچیده تری در بالای X ساخته شده اند. محبوب ترین آنها KDE و GNOME هستند. رابط کاربری گرافیکی مجموعه ای از آیکون ها، منوها، دیالوگ ها، پنل ها، پنجره ها و غیره است عناصر گرافیکی، به کاربران اجازه می دهد تا به راحتی با رایانه و برنامه ها کار کنند. KDE و Gnome محیط های دسکتاپ یکپارچه هستند. کاربران با عناصر و برنامه های رابط کار می کنند.

Utilities Utility (ابزار یا ابزار انگلیسی) - کمکی برنامه کامپیوتریدر Embedded در لینوکس ابزارهای نرم افزاریو زبان ها متشکل از کامپایلر g++ -GNU C++; Perl یک زبان برنامه نویسی بسیار قدرتمند است. g 77 - کامپایلر GNU FORTRAN. (پارامترها، تنظیمات، تنظیمات)، یا فرآیند f 2 c - رمزگذار از FORTRAN به C را انجام دهید. تغییر پارامتر (آن را خودکار کنید). Fort 77 یک کامپایلر FORTRAN است. f 2 c و سپس general را اجرا می کند نرم افزاربرای انجام وظایف معمولی تخصصی ابزارهای کمکی دسترسی به ویژگی ها را فراهم می کنند انواع ابزارهای کمکی برای برقراری ارتباط با سیستم عامل از gcc یا g++ استفاده می کنند. ابزارهای مستقلی که برای کار خود نیازی به سیستم عامل ندارند، Grep - یک قطعه متن را در فایل هایی که با ماسک تایپ شده مطابقت دارد جستجو کنید. ماسک با تعریف شده است ابزارهای سیستمی، در تحویل سیستم عامل گنجانده شده است و به کمک آن نیاز دارد سیستم استانداردنمادگذاری، به نام حضور " عبارات با قاعده"؛ انواع ابزارهای کاربردی توسط مدیریت فایل تابع. بایگانی کننده ها (با فشرده سازی ممکنداده ها)؛ بینندگان؛ Uninstaller - نرم افزار [; برنامه برای Tr - ابزار ترجمه (به عبارت دیگر - جایگزینی حروف در یک فایل متنی). Gawk - GNU awk (برای پردازش فایل های متنی فرمت شده استفاده می شود). حذف نرم افزار sed - ابزاری برای پردازش فایل های متنی.

بسیار متفاوت از دستگاه در ویندوز است. برای شروع، هیچ درایو C یا D در لینوکس وجود ندارد دیسک فیزیکی(یا چندین) در هنگام نصب سیستم به دایرکتوری ها و زیر شاخه ها تقسیم می شود. دایرکتوری اصلی ریشه با نماد نشان داده می شود / (اسلش) به جای فایل swap، یک پارتیشن جداگانه وجود دارد /مبادله. بسته به وظایف کاربر، هر دایرکتوری را می توان به سیستم فایل مورد نظر قالب بندی کرد. به عنوان مثال Ext3، ReiserFS، JFS یا موارد دیگر.
در توزیع های مختلف لینوکس، طرح و هدف برخی از دایرکتوری ها ممکن است کمی متفاوت باشد.
شما می توانید دایرکتوری های خود را ایجاد کنید. من یک پوشه با فیلم ها در یک هارد دیسک جداگانه دارم. در پارتیشن ریشه، به نظر می رسد /films.

شرح دایرکتوری های اصلی و زیر شاخه ها در لینوکس:
/صندوقچه- آن شامل
فایل های دستور اصلی

/بوت- این دایرکتوری شامل بوت لودر سیستم (Grub یا Lilo) و فایل های مورد نیاز برای بوت شدن سیستم می باشد.

/dev- دایرکتوری dev حاوی فایل هایی است که دستگاه های رایانه را توصیف می کند. در لینوکس، همه دستگاه ها فایل در نظر گرفته می شوند. حتی پورت ها، درایوها، چاپگرها همگی فایل هستند.

/و غیره- دایرکتوری حاوی فایل های پیکربندی سیستم، برنامه ها، اسکریپت های راه اندازی.
/etc/rc.d- فایل های دستوری که برنامه ها را هنگام بوت شدن سیستم اجرا می کنند.
/etc/passwd- تمام اطلاعات کاربر در فایل رمزگذاری شده است.
/etc/fstab- فایل حاوی اطلاعاتی در مورد سیستم های فایل است که به طور خودکار در هنگام راه اندازی سیستم نصب شده اند

/خانه- کاربر، فهرست اصلی. لینوکس می تواند چندین کاربر داشته باشد. هر کاربر دایرکتوری مخصوص به خود را دارد (به عنوان مثال /home/user) شامل هر فایل کاربری است که مستقیماً به آنها دسترسی دارد
نوشتن/حذف همچنین در فهرست اصلی برنامه های کاربر، تنظیمات وجود دارد. نام آنها با یک نقطه شروع می شود و برای مثال به این شکل است - .kde .fonts

/lib- در اینجا کتابخانه های مختلف سیستم، ماژول های هسته وجود دارد
/lib/firmware- ماژول های هسته غیر رایگان با مجوز بسته
/lib/modules- ماژول های کرنل قابل بارگذاری به عنوان مثال، درایورهای دستگاه، سیستم های فایل.

/mnt- دستگاه های مختلف قابل اتصال به طور موقت در این دایرکتوری نصب شده اند. درایوهای فلش، فلاپی دیسک، دیسک

/انتخاب- در دایرکتوری نصب شده است بسته های اضافیبرنامه ها.

/proc- دایرکتوری با فایل سیستم مجازی. این در قالب فایل حاوی اطلاعاتی در مورد فرآیندهای رخ داده در سیستم است.
/proc/modules- این فایل حاوی اطلاعاتی در مورد لیست ماژول های هسته بارگذاری شده است.
/proc/cpuinfo - اطلاعات دقیقدر مورد پردازنده
/proc/meminfo -
اطلاعاتی درباره حافظه دسترسی تصادفی.
/proc/devices- درایورهای دستگاه تعبیه شده در هسته سیستم.
/proc/uptime- اطلاعات مربوط به آپتایم سیستم آن ها زمان کار بدون راه اندازی مجدد
/proc/version- نسخه هسته لینوکس مورد استفاده سیستم.
تمام این داده ها را می توان با استفاده از دستور در کنسول نمایش داد گربه.
مثلا cat /proc/cpuinfo

/ریشه- دایرکتوری اصلی مدیر (ابر کاربر) سیستم. اگر دایرکتوری اصلی به دلایلی در دسترس نباشد توسط مدیر استفاده می شود.

/sbin- در اینجا برنامه های اصلی اجرا شده توسط روت آمده است.

/tmp- دایرکتوری برای ذخیره سازی موقت داده ها توسط برنامه ها.

/usr- دایرکتوری اصلی برای نصب برنامه ها. علاوه بر برنامه ها، حاوی فایل های مستندات، کدهای منبع برنامه و هسته است.
/usr/local- در این دایرکتوری قرار دارند
بسته های نرم افزاری به طور جداگانه نصب شده است.
/usr/src- منابع برنامه های نصب شدهو هسته ها
/usr/man- فایل های دستی برای برنامه های نصب شده
/usr/lib- فایل های پیکربندی غیرقابل تغییر و داده های برنامه.

/var- دایرکتوری var حاوی داده هایی است که به طور مکرر در طول عملیات سیستم تغییر می کند. به عنوان مثال، لاگ ها، کش های برنامه.
/var/local- داده های برنامه قابل تغییر، توسط مدیر تنظیم شده استدر /usr/local.
/var/log- سیاهههای مربوط به انواع مختلف برنامه های سیستمی.
/var/run- فایل های موقت اطلاعات تا راه اندازی مجدد بعدی سیستم در آنها ذخیره می شود.
/var/tmp- دایرکتوری برای فایل های موقت

ساختار فایل لینوکس با ویندوز بسیار متفاوت است، بنابراین اگر تصمیم دارید به طور جدی سیستم های مشابه یونیکس را مطالعه کنید، به نظر من، بهتر است از ساختار دایرکتوری شروع کنید.

تاریخ ده ها مورد را می داند که یک خلبان ناآماده با موفقیت یک هواپیما را فرود آورد. یا مثلاً یک پزشک مبتدی یک عمل جراحی را با موفقیت انجام داد شرایط میدانی. با این حال، من فکر می کنم بعید است که کسی داوطلبانه قبول کند که جای او را بگیرد ...

من به چه چیزی منجر می شوم؟ و به این واقعیت که کاربر ویندوزکه برای اولین بار لینوکس را دید، البته، می تواند با آن کنار بیاید (آنلاین شوید یا یک ویدیو تماشا کنید)، اما به محض اینکه هر موقعیت اضطراری پیش بیاید، دیگر نمی داند چه باید بکند!

بنابراین، برای اینکه چنین کاربر نادانی نباشید، باید حداقل اصول و اصول سیستم عاملی را که قصد دارید با آن کار کنید، یاد بگیرید. و در مقاله امروز به ساختار دایرکتوری لینوکس و همچنین ویژگی های چیدمان هارد دیسک و نصب پارتیشن خواهیم پرداخت.

همانطور که ضرب المثل می گوید ظاهرفریبنده است توزیع‌های لینوکس مدرن می‌توانند ظاهراً و طبق اصول اولیه کار تا حد زیادی از موارد آشنا برای بسیاری کپی کنند محیط ویندوز. با این حال، فقط کافی است عمیق تر "کاوش کنیم" و بلافاصله خواهیم دید که چیزی کاملاً متفاوت و غیرقابل درک داریم :)

بررسی این موضوع با یک مثال آسان است لینوکس مینت. بیایید پوشه "رایانه" را در دسکتاپ باز کنیم و به محتویات آن نگاه کنیم:

همانطور که می بینید، در اینجا، علاوه بر درایو فلش متصل، هیچ پارتیشن دیسک سختی به جز دستگاه "File system" برای ما آشنا نیست. اینجاست (یا بهتر است بگوییم در دایرکتوری ریشه ای به نام "/" که گاهی به اشتباه "/root/" نامیده می شود، اگرچه پوشه جداگانهبه "/") به طور پیش فرض و تمام داده ها، از جمله فایل های سیستم و کاربر را ذخیره می کند! در نگاه اول بسیار عجیب و نامفهوم. بیا بفهمیم...

واقعیت این است که لینوکس برای سازماندهی و کار با فایل سیستم از ویندوز از رویکردی اساساً متفاوت استفاده می کند. اگر در مبتنی بر ویندوزپارتیشن‌های دیسک سخت هستند که می‌توانیم روی آنها پوشه‌های دلخواه با فایل‌ها ایجاد کنیم، سپس در لینوکس همه چیز بر اساس یک سلسله‌مراتب دایرکتوری واضح است که به چیدمان هارد دیسک بستگی ندارد و توسط استاندارد FHS تنظیم می‌شود (مخفف انگلیسی "Filesystem Hierarchy استاندارد" - "استاندارد سلسله مراتب سیستم فایل").

مفهوم دیسک‌ها و پارتیشن‌های آنها، البته، در لینوکس نیز وجود دارد، اما در اینجا ساختار پوشه اصلی است، که در یکی از آنها (معمولاً "/media/"، "/dev/" یا "/mnt/" است. ) و سوار شد انواع متفاوتدیسک ها معمولاً خود درایوها بسته به نوع اتصال آنها نامگذاری می شوند: SATA - sda (sdb و غیره بسته به تعداد آنها) و IDE - hda (hdb...). پارتیشن های روی دیسک ها به سادگی شماره گذاری می شوند (به عنوان مثال، sda1، hdb2).

دایرکتوری های لینوکس مجزا را می توان روی پارتیشن های مختلف قرار داد دیسک های مختلفو حتی از راه دور ذخیره سازی های شبکه. تنها شرط این است که همه آنها باید قبل از بوت شدن سیستم سوار شوند. این معمولا به طور خودکار انجام می شود زمانی که راه اندازی لینوکس، اما گاهی اوقات ممکن است نیاز به ویرایش دستی پارامترها باشد.

من فکر می کنم که ما کمی در مورد اصول اولیه سازماندهی ذخیره سازی اطلاعات در لینوکس پی برده ایم، بنابراین پیشنهاد می کنم به طور خاص با ساختار دایرکتوری آشنا شوید.

پوشه های اصلی لینوکس

در حالی که صدها توزیع لینوکس وجود دارد، اکثر آنها ساختار دایرکتوری مشابهی دارند. از یک طرف، این امر تا حدی سازگاری با استانداردها و از سوی دیگر، سهولت استفاده را فراهم می کند: کاربری که به سازماندهی یک سیستم فایل در یک توزیع لینوکس عادت دارد، در صورت لزوم به راحتی به استفاده از دیگری تغییر می کند.

در اصل، دانستن هدف همه پوشه ها از طریق حافظه ضروری نیست، با این حال، چنین دانشی مورد استقبال قرار می گیرد. بنابراین، من پیشنهاد می کنم در قالب یک جدول دایرکتوری های اصلی، هدف آنها و مقایسه جزئی با آنها را در نظر بگیریم اجزای ویندوز(من طبق لینوکس مینتی که دارم توضیح می دهم، بنابراین لیست پوشه ها در سیستم های دیگر ممکن است کمی متفاوت باشد).

کاتالوگ هدف معادل ویندوز (در صورت وجود)
/ کل ساختار دایرکتوری سیستم را ذخیره می کند دیسک C:
/صندوقچه/ فایل های اجرایی باینری برنامه های کاربردی سیستم را ذخیره می کند C:\Windows\System32
/boot/ هسته سیستم و سایر فایل های بوت را ذخیره می کند ج:\ویندوز
/سی دی رام/ نقاط نصب را برای درایوها ذخیره می کند -
/dev/ فایل های دستگاه متصل را بر اساس نوع ( دیسکهای سخت، دستگاه های ویدیویی و غیره) یا شبه دستگاه ها (به عنوان مثال /dev/null و /dev/zero) -
/و غیره/ برخی از فایل های تنظیمات سیستم و تنظیمات برنامه های نصب شده را ذخیره می کند تا حدی C:\Windows\System32، قسمتی C:\Program Files
/خانه/ پوشه های خانگی کاربران سیستم را با تنظیمات و داده های آنها ذخیره می کند C:\Documents and Settings یا C:\Users
/lib/ اکثر کتابخانه ها را ذخیره می کند برنامه های استانداردو برخی تاسیس شد جزئی C:\Windows و C:\Windows\System32
/گمشده+ یافت شده/ فایل هایی را ذخیره می کند که به عنوان یک قاعده، در نتیجه برخی از خرابی ها، در هیچ یک از دایرکتوری ها نانوشته باقی می مانند، اما در عین حال برای بازنویسی علامت گذاری نشده اند. کاربر معمولاً به آن دسترسی ندارد جزئی C:\Recycler (سطل زباله)
/رسانه ها/ نقاط اتصال را برای همه ذخیره می کند رسانه قابل جابجایی(درایوهای فلش، درایوهای فلاپی، هارد دیسک های قابل جابجایی) -
/mnt/ نقاط نصب موقت دستگاه ها و سیستم فایل آنها را که به صورت دستی اضافه شده اند ذخیره می کند -
/opt/ بسته های اضافی از برنامه های مختلف را ذخیره می کند C:\Users\Admin\Application Data
/proc/ اطلاعات مربوط به فرآیندهای در حال اجراو عملکرد هسته سیستم مدیر وظیفه جزئی
/root/ داده ها را برای ابرکاربر (ریشه) سیستم ذخیره می کند C جزئی:\Users\Admin
/اجرا کن/ فایل های موقتی را که در طول فرآیند بوت سیستم اجرا می شوند ذخیره می کند
/sbin/ اکثر برنامه های سیستم را برای مدیریت و پیکربندی سیستم عامل ذخیره می کند جزئی C:\Windows\System32
/srv/ فایل های مسئول عملکرد بخش سرور سیستم و پروتکل های مختلف برای انتقال داده ها از طریق شبکه (HTTP، FTP و غیره) را ذخیره می کند. جزئی C:\Windows\System32
/sys/ یک سیستم فایل مجازی را با اطلاعاتی در مورد ذخیره می کند دستگاه های نصب شدهو رانندگان مدیر دستگاه جزئی
/tmp/ فایل های موقت را ذخیره می کند C:/windows/temp
/usr/ داده های کاربران سیستم و فایل های برنامه های نصب شده به صورت دستی را ذخیره می کند. ج جزئی:\کاربران\
/var/ فایل هایی را با داده های مختلف در حال تغییر، گزارش ها، کش ها و غیره ذخیره می کند. -

علاوه بر پوشه های موجود در خود root، باید به چند زیر شاخه نیز توجه کنید:

کاتالوگ هدف معادل ویندوز (در صورت وجود)
/etc/X11/ فایل های تنظیمات سیستم پنجره X را ذخیره می کند -
/etc/samba/ فایل های پیکربندی را برای سرور سامبا که برای برقراری ارتباط با آن استفاده می شود، ذخیره می کند پوشه های شبکهپنجره ها -
/home/نام کاربری/ ذخیره فایل ها و پیکربندی یک حساب کاربری خاص (پوشه اصلی) ج:\Users\Username
/usr/bin/ تعدادی از برنامه های مورد نیاز برای کار در حالت چند کاربره را ذخیره می کند -
/usr/share/ اطلاعات کلی برنامه های نصب شده را ذخیره می کند -
/usr/src/ فایل های منبع هسته را ذخیره می کند -
/var/cache/ کش های برنامه و بسته های نرم افزاری دانلود شده از مخزن را ذخیره می کند -
/var/games/ ذخیره و دستاوردهای بازی های نصب شده را ذخیره می کند -
/var/log/ گزارش ها (لاگ) سیستم و برنامه های نصب شده را ذخیره می کند -
/var/mail/ تنظیمات فروشگاه صندوق های پستیکاربران -
/var/run/ اطلاعات مربوط به فرآیندهای در حال اجرا و دیمون ها را ذخیره می کند مدیر وظیفه جزئی
/var/tmp/ فایل های موقتی را ذخیره می کند که هنگام راه اندازی مجدد سیستم ذخیره می شوند -
/var/www/ صفحات وب ارائه شده توسط ابزارهای سرور محلی را ذخیره می کند -

کمی در مورد سیستم فایل

از آنجایی که تصمیم گرفتیم کم و بیش به طور کامل به ساختار دایرکتوری لینوکس بپردازیم، نمی توانیم به موضوع مهمی مانند سیستم فایل اشاره نکنیم.

در ویندوز، ما عادت داریم از NTFS سنتی استفاده کنیم و خودمان را گول نزنیم (خب، FAT32 در درایوهای فلش یا UDF روی دیسک ها). در دنیای لینوکس، همه چیز بسیار متنوع تر است. پشتیبانی از تمام ویندوزهای FS وجود دارد، اما استفاده از آن توصیه می شود سیستم های خاص، برای سیستم عامل های مشابه یونیکس بهینه شده است.

همه سیستم های فایل را می توان به طور مشروط به دو گروه ژورنال و غیر ژورنال تقسیم کرد. سیستم های فایل ژورنال شده، مکان خاصی را برای ذخیره یک گزارش با لیستی از فایل ها در رایانه شخصی، ویژگی ها و مکان آنها اختصاص می دهند. آنها در برابر خرابی ها انعطاف پذیرتر هستند و یکپارچگی بیشتر داده ها را تضمین می کنند. سیستم‌های غیر ژورنال سریع‌تر هستند و نیازی به فضای ذخیره‌سازی گزارش ندارند، با این حال، ذخیره‌سازی پایدار اطلاعات را تضمین نمی‌کنند، زیرا همه اقدامات را با فایل‌ها به‌طور مستقیم و بدون ورود به سیستم انجام می‌دهند.

برای اینکه تمام فایل سیستم های موجود امروز را لیست نکنم، فکر می کنم بهتر است فقط بهترین آنها را ذکر کنم که بهترین انتخاب برای لینوکس هستند.

  1. Ext4یک سیستم فایل ژورنالینگ است که در اکثر توزیع های مدرن لینوکس استاندارد است. به خوبی از مسائل پراکندگی محافظت می شود و برای کار با آن بهینه شده است فایل های بزرگ. اگر در حین نصب پارتیشن سیستم را به صورت دستی فرمت نکردید، به احتمال زیاد دقیقا Ext4 دارید.
  2. ext2- سیستم فایل بدون ژورنال، که اصلی ترین سیستم برای توزیع های قدیمی لینوکس بود (تا دهه 2000). این دارای تعدادی محدودیت برای کار با فایل های بزرگ است، با این حال، در عین حال، سریع ترین FS نیز هست، بنابراین اغلب در موارد مختلف استفاده می شود. آزمون های مقایسه ایبه عنوان مرجع
  3. Reiser4یک سیستم فایل ژورنالینگ است که بسیاری از کاربران پیشرفته آن را برای استفاده در لینوکس توصیه می کنند. مزیت آن پایداری خوب و سرعت بالاکار، که علاوه بر این، می تواند با فعال کردن یک پلاگین ویژه برای فشرده سازی داده ها، بیشتر بهبود یابد.
  4. btrfs(همچنین B-tree FS) یک سیستم فایل ژورنالینگ است که اخیراً (در سال 2007) توسط شرکت معروف اوراکل توسعه یافته است. از ویژگی های آن می توان به ذخیره شاخص فایل در به اصطلاح "B-trees" - ساختارهای سلسله مراتبی اشاره کرد که به دلیل عمق کم تودرتو داده ها، بیشترین استفاده را از منابع RAM می کنند.
  5. مبادله- نوع خاصی از سیستم فایل بدون ژورنال که ساختار ذخیره سازی داده مشابه ساختار سلولی RAM را پیاده سازی می کند. به همین دلیل از آن برای پیاده سازی فایل پیجینگ در لینوکس استفاده می شود.

در اکثر توزیع های مدرن، پیش فرض است HDDفرمت شده در Ext4، و همچنین SWAP، که تحت آن اندازه ای شبیه به اندازه RAM نصب شده اختصاص داده شده است. بنابراین، به عنوان مثال، طرح دیسک استاندارد در Linux Mint به نظر می رسد، که اگر شما بر ایجاد پارتیشن ها به صورت دستی تأثیر نگذارید، انجام می شود:

با این حال، به کاربران پیشرفته توصیه می شود قبل از نصب، دیسک را به روشی "پیچیده" از قبل پارتیشن بندی کنند تا با نصب دایرکتوری های جداگانه بر روی پارتیشن های ایجاد شده، از ایمنی بهتر داده ها در هنگام نصب مجدد اجباری سیستم اطمینان حاصل کنند. بیایید چندین "دستور العمل" مشابه برای پارتیشن بندی یک دیسک در نظر بگیریم.

پارتیشن بندی دیسک

فکر می کنم شما قبلاً متوجه شده اید که چرا این همه هیاهو با بخش های مختلف چیست. اگر مثلاً چیزی را در نصب شده خراب کنید به صورت منظم(به ازای هر پارتیشن) به یک سیستم لینوکس، هنگام نصب مجدد، ناگزیر تمام اطلاعات کاربری خود را از دست خواهید داد! با این حال، اگر آنها به طور جداگانه از فایل های سیستمی، سپس برای نصب مجدد لازم است که فقط دایرکتوری های سیستم را تحت تأثیر قرار دهیم و سپس دایرکتوری های کاربر موجود را سوار کنیم.

فقط اولین گزینه نشانه گذاری این است که فهرست "/home/" را به یک پارتیشن دیسک جداگانه منتقل کنید. یعنی در واقع باید دیسک را به سه پارتیشن تقسیم کنیم:

اگر در حال برنامه ریزی هستید چکمه دوتاییبا نصب ویندوز، علاوه بر سه پارتیشنی که در بالا توضیح داده شد، بهتر است به جای sda1 و sda2 دو پارتیشن فرمت شده با NTFS قرار دهید: یکی برای Disk C و دومی برای Disk D.

کاربران پیشرفته تر تمایل دارند طرح بندی دیسک پیچیده تری را با در نظر گرفتن تقسیم آن به مناطق راه اندازی جداگانه و مناطق اجرای برنامه ایجاد کنند:

اصولاً برخی از کاربران دایرکتوری های ذکر شده را بر روی sda4 روی پارتیشن های جداگانه سوار می کنند و برخی اصلاً آنها را تخصیص نمی دهند. همه چیز به این بستگی دارد که قصد دارید چه وظایفی را روی رایانه شخصی خود حل کنید. اگر هنوز تصمیم نگرفته‌اید که چگونه از دایرکتوری‌های فردی استفاده کنید، پس توصیه می‌کنم چند ده گیگابایت فضای هارد دیسک را بدون تخصیص "در ذخیره" بگذارید. بنابراین در هر زمان، درست از زیر سیستم خود، می توانید دایرکتوری های لازم را به پارتیشن های ایجاد شده مجدداً نصب کنید.

و مهمتر از همه - نحوه ایجاد این بخش ها! برای انجام این کار، توصیه می کنم برنامه ذکر شده را در فرم دانلود کنید تصویر بوت، این تصویر را روی یک درایو فلش USB یا دیسک رایت کرده و از آن بوت کنید.

در طول فرآیند بوت از LiveCD، یک سری سوالات در مورد گزینه های بوت از شما پرسیده می شود. همه جا به طور پیش فرض همه چیز را رها می کنیم، به جز صفحه نمایش با انتخاب زبان. در آنجا باید شماره مربوط به آن را وارد کنید رابط روسی زبان(برای من "22" بود). در تمام سوالات دیگر، فقط Enter را فشار دهید و در نتیجه به دسکتاپ مجازی سیستم عامل دبیان با اجرای GParted خواهیم رسید:

اگر رابط روسی را انتخاب کرده باشید، حتی اگر تصمیم به پارتیشن بندی مجدد دیسک با این برنامه داشته باشید، مشکلی برای کار در برنامه نخواهید داشت. سیستم نصب شده. الگوریتم اقدامات به شرح زیر است:

  1. پارتیشن موجود را برای تقسیم انتخاب کنید و روی دکمه "تغییر اندازه یا انتقال" یا کلیک کنید مورد مشابهدر منوی زمینه
  2. در پنجره باز شده، با استفاده از اسلایدرها یا پنجره های وارد کردن اعداد، اندازه پارتیشن جدید و افست آن را از ابتدا یا انتهای دیسک تنظیم کنید (به یاد داشته باشید که بهتر است root را قرار داده و به ابتدا نزدیکتر کنید).
  3. ناحیه تخصیص نیافته جدید ایجاد شده را انتخاب کنید و روی دکمه "جدید" در نوار ابزار یا در منوی زمینه کلیک کنید.
  4. در پنجره ای که باز می شود، نوع سیستم فایل، برچسب حجم و سایر پارامترها را تنظیم کنید.
  5. مراحل بالا را هر چند بار که لازم باشد تکرار می کنیم و پس از آن همه تغییرات را اعمال کرده و منتظر می مانیم تا تکمیل شوند.

اکنون کمی باقی مانده است. سیستم را در دایرکتوری ریشه (اگر هنوز نصب نشده است) نصب کنید و آن را بوت کنید. اکنون همه دایرکتوری ها روی یک پارتیشن قرار دارند و ما باید آنها را در قسمت های دیگر دیسک که مخصوص این کار ایجاد شده است دوباره نصب کنیم. این را می توان تقریباً به طور کامل در حالت بصری یا با استفاده از ترمینال انجام داد. برای واضح تر شدن، اجازه دهید فرآیند انتقال را با استفاده از مثال دایرکتوری /home/ در حالت نیمه بصری در نظر بگیریم.

اگر تصمیم دارید همه کارها را به صورت بصری انجام دهید، برای مثال پوشه /mnt/ یا /media/ را باز کنید و یک پوشه موقت در آن ایجاد کنید (بیایید آن را /newhome/ بنامیم) برای انتقال داده. اکنون باید ترمینال را راه اندازی کنیم تا پوشه جدید ایجاد شده را به پارتیشنی که می خواهیم پوشه /home/ را به آن منتقل کنیم، سوار کنیم. این کار با دستوری مانند:

طبیعتاً به جای "ext4" سیستم فایل خود را مشخص می کنید و به جای "sda5" پارتیشنی را که پوشه را به آن منتقل می کنید. وقتی پارتیشن نصب شد و پوشه روی آن قرار گرفت، آن را باز کنید و تمام محتویات فعلی دایرکتوری /home/ را در آنجا کپی کنید. در پایان کپی، پارتیشن را از پوشه با دستور زیر جدا کنید:

$sudo umount /mnt/newhome

اکنون پوشه موجود/home/ می تواند به طور کامل حذف شود (یا بهتر است، برای مثال به /oldhome/ تغییر نام داده شود) و دوباره ایجاد شود، یا به سادگی کاملاً پاک شود. نکته اصلی این است که ما یک پوشه /home/ خالی داریم. اکنون پارتیشن خود را با داده های کپی شده در اینجا سوار می کنیم:

$sudo mount /dev/sda5 /home

اگر همه چیز به خوبی پیش رفت، تمام فایل هایی که کپی کردیم در پوشه /home/ ظاهر می شوند. یعنی در واقع انتقال با موفقیت انجام شد. تنها برای تثبیت موفقیت و اطمینان از اینکه مجبور نیستیم هر بار که سیستم بوت می شود، دایرکتوری خود را به صورت دستی نصب کنیم، باقی می ماند. برای انجام این کار، از ویرایش فایل fstab (مخفف شده از "جدول سیستم های فایل" انگلیسی - "جدول سیستم فایل") که در فهرست /etc/ قرار دارد استفاده می کنیم. بیایید آن را با هر کدام باز کنیم ویرایشگر متنو در آخر این خط را اضافه کنید:

/dev/sda5 /home ext4 nodev,nosuid 0 2

با انجام این کار، ما به سیستم به معنای واقعی کلمه موارد زیر را به سیستم می گوییم: در پارتیشن /dev/sda5 یک پوشه /home/ وجود دارد که در سیستم ext4 فرمت شده است، که در آن نمی توانید یک دایرکتوری با پیکربندی دستگاه (/dev/) ایجاد کنید. و عملیات با بیت های suid و sgid نیز ممنوع و غیرفعال هستند پشتیبان گیریو سیستم فایل در پاس دوم مانت می شود (سیستم ریشه همیشه در پاس اول سوار می شود).

راه اندازی مجدد و شادی :) برای گیک های واقعی، من می گویم که تمام عملیات (به جز ویرایش fstab) را می توان مستقیماً در کنسول با دنباله دستورات زیر انجام داد:

$sudo mkdir /mnt/newhome

$sudo mount -t ext4 /dev/sda5 /mnt/newhome

$پیدا کردن -depth -print0 | sudo cpio --null --sparse -pvd /mnt/newhome/

$sudo umount /mnt/newhome

$sudo mv /home /oldhome

$sudo mkdir /home

$sudo mount /dev/sda5 /home

sudo gedit /etc/fstab

نتیجه گیری

درک ساختار دایرکتوری و اعمال قبلی دستورات کنسولبه یک کاربر تازه کار ایده نسبتاً خوبی از ساختار سیستم می دهد و به آنها می آموزد که فکر کنند دسته های لینوکس. در عمل، هیچ مشکل خاصی در علامت گذاری و نصب پارتیشن های دیسک وجود ندارد، اما این اقدامات به طور قابل توجهی پایداری سیستم عامل را افزایش می دهد، بنابراین توصیه می شود قبل از هر چیز هنگام نصب یک سیستم جدید انجام شود.

صرف کمی زمان برای بهینه سازی ساختار دایرکتوری، لینوکس شما را از نظر ذخیره اطلاعات ایمن تر می کند و در آینده از اعصاب و تلاش شما صرفه جویی می کند!

P.S. اجازه کپی و نقل قول آزادانه این مقاله داده می شود، مشروط بر اینکه باز باشد لینک فعالدر مورد منبع و حفظ نویسندگی روسلان ترتیشنی.

مفاهیم اساسی

سیستم عامل لینوکس مطابق با الزامات استاندارد بین المللی برای سیستم های سازگار با یونیکس IEEE POSIX توسعه یافته است، بنابراین منطقی است که ابتدا به طور خلاصه ساختار فایل سیستم عامل یونیکس را در نظر بگیریم.

یکی از مزایای سیستم عامل یونیکس این است که سیستم مبتنی بر عدد کوچکمفاهیم شهودی با این حال، با وجود سادگی این مفاهیم، ​​باید به آنها عادت کنید. بدون این، درک ماهیت سیستم عامل یونیکس غیرممکن است.

کاربر

از همان ابتدا، یونیکس به عنوان یک سیستم تعاملی در نظر گرفته شد. به عبارت دیگر، یونیکس طراحی شده است تا کار ترمینال. برای شروع کار، فرد باید با وارد کردن نام حساب خود (نام حساب) و احتمالاً رمز عبور (رمز عبور) از یک ترمینال رایگان، وارد سیستم شود. شخصی که در فایل های حساب کاربری سیستم ثبت شده و در نتیجه نام حساب کاربری دارد، کاربر ثبت نام شده سیستم نامیده می شود. ثبت نام کاربران جدید معمولا توسط مدیر سیستم انجام می شود. کاربر نمی تواند نام حساب خود را تغییر دهد، اما می تواند رمز عبور خود را تنظیم و/یا تغییر دهد. رمزهای عبور ذخیره می شوند فایل جداگانهبه صورت کد شده رمز عبور خود را فراموش نکنید، حتی مدیر به شما کمک نمی کند تا دوباره آن را پیدا کنید!

همه کاربران یونیکس با فایل ها به صورت صریح یا ضمنی کار می کنند. سیستم فایل سیستم عامل یونیکس ساختار درختی دارد. گره های میانی درخت، دایرکتوری هایی هستند که پیوندهایی به دایرکتوری ها یا فایل های دیگر دارند و برگ های درخت مربوط به فایل ها یا دایرکتوری های خالی هستند. هر کاربر ثبت نام شده با یک دایرکتوری در سیستم فایل به نام دایرکتوری "home" کاربر مرتبط است. هنگامی که وارد سیستم می شود، کاربر دسترسی نامحدودی به فهرست اصلی خود و همه فهرست ها و فایل های موجود در آن دارد. کاربر می تواند دایرکتوری ها و فایل های موجود در فهرست اصلی را ایجاد، حذف و اصلاح کند. دسترسی به تمام فایل های دیگر به طور بالقوه امکان پذیر است، اما اگر کاربر از امتیازات کافی برخوردار نباشد، می توان آن را محدود کرد.

سیستم فایل

مفهوم فایل یکی از مهمترین موارد برای سیستم عامل یونیکس است. تمام فایل هایی که کاربران می توانند دستکاری کنند در سیستم فایل قرار دارند که درختی است که گره های میانی آن مربوط به دایرکتوری ها و برگ های آن مربوط به فایل ها و دایرکتوری های خالی است. نمونه ای از ساختار سیستم فایل یونیکس در شکل 2.1 نشان داده شده است. واقعا بر همه درایو منطقی(بخش فیزیکی بسته دیسک) یک سلسله مراتب جداگانه از فهرست ها و فایل ها است. برای به دست آوردن یک درخت مشترک در دینامیک، "نصب" سلسله مراتب فردی به یک سیستم فایل ریشه ثابت استفاده می شود.

اظهار نظر:در دنیای سیستم عامل یونیکس، به دلایل تاریخی، اصطلاح "سیستم فایل" بیش از حد بارگذاری شده است، که هم به سلسله مراتب دایرکتوری ها و فایل ها و هم به بخشی از هسته که دایرکتوری ها و فایل ها را مدیریت می کند اشاره دارد. ظاهراً اگر سلسله مراتب دایرکتوری‌ها و فایل‌ها را آرشیو فایل‌ها بنامیم و فقط به معنای دوم از اصطلاح «فایل سیستم» استفاده کنیم، درست‌تر است. با این حال، با پیروی از سنت سیستم عامل یونیکس، ما این اصطلاح را به دو معنا به کار می بریم و معانی را بر اساس زمینه متمایز می کنیم.

هر دایرکتوری و فایل در سیستم فایل دارای یک فایل منحصر به فرد است نام و نام خانوادگی(در یونیکس این نام معمولاً نام مسیر کامل نامیده می شود - نامی که یک مسیر کامل را مشخص می کند، زیرا در واقع یک مسیر کامل از ریشه سیستم فایل را از طریق زنجیره ای از دایرکتوری ها به فهرست یا فایل مربوطه مشخص می کند؛ من از این اصطلاح استفاده خواهم کرد. "نام کامل"، زیرا هیچ معادلی برای نام مسیر روسی وجود ندارد). دایرکتوری که ریشه سیستم فایل (دایرکتوری ریشه) در هر فایل سیستمی است نام از پیش تعریف شده "/" (اسلش) دارد. یک نام فایل کاملا واجد شرایط مانند /bin/sh به این معنی است که دایرکتوری ریشه باید شامل نام دایرکتوری bin و دایرکتوری bin باید حاوی نام فایل sh ​​باشد. نام فایل کوتاه یا نسبی (مسیر نسبی) نامی است (احتمالاً مرکب) که مسیر فایل را از دایرکتوری کاری فعلی مشخص می کند (یک فرمان و یک فراخوانی سیستم مربوطه وجود دارد که به شما امکان می دهد دایرکتوری کاری فعلی را تنظیم کنید).

هر دایرکتوری حاوی دو نام خاص است، نام "."، که خود دایرکتوری را نامگذاری می کند، و نام ".."، که فهرست "والد" دایرکتوری را نامگذاری می کند، یعنی. دایرکتوری بلافاصله قبل از فهرست داده شده در سلسله مراتب دایرکتوری.

برنج. 2.1. ساختار دایرکتوری سیستم فایل

یونیکس از ابزارهای متعددی پشتیبانی می کند که به شما امکان می دهد با سیستم فایل کار کنید و به عنوان دستورات پوسته در دسترس هستند. در اینجا به برخی از آنها (متداول ترین آنها) اشاره می کنیم:

ساختار سیستم فایل

سیستم فایل معمولاً روی دیسک ها یا دستگاه های دیگر قرار دارد حافظه خارجیداشتن ساختار بلوکی علاوه بر بلوک‌هایی که دایرکتوری‌ها و فایل‌ها را ذخیره می‌کنند، چندین ناحیه خدماتی دیگر در حافظه خارجی پشتیبانی می‌شوند.

در دنیای یونیکس، چندین نوع سیستم فایل با ساختار حافظه خارجی خاص خود وجود دارد. معروف ترین فایل سنتی سیستم یونیکس System V (s5) و سیستم فایل خانواده UNIX BSD (ufs). سیستم فایل s5 از چهار بخش تشکیل شده است (شکل 2.2، a). در سیستم فایل ufs، یک دیسک منطقی (پارتیشن یک دیسک واقعی) شامل دنباله ای از بخش های سیستم فایل است (شکل 2.2، b).

برنج. 2.2. ساختار حافظه خارجی سیستم های فایل s5 و ufs

اجازه دهید ماهیت و هدف هر قسمت از دیسک را به طور خلاصه شرح دهیم.

    بلوک بوت شامل یک برنامه spinup است که برای شروع اولیه سیستم عامل یونیکس استفاده می شود. در سیستم های فایل s5، در واقع فقط از بلوک بوت فایل سیستم ریشه استفاده می شود. در فایل سیستم های ثانویه، این ناحیه وجود دارد اما استفاده نمی شود.

    superblock مهمترین قسمت سیستم فایل است که حاوی اطلاعاتی است که برای کار با فایل سیستم به عنوان یک کل ضروری است. superblock شامل لیستی از بلوک های آزاد و i-node های رایگان (گره های اطلاعاتی) است. در سیستم های فایل ufs، چندین نسخه از superblock برای بهبود انعطاف پذیری نگهداری می شود (همانطور که در شکل 2.2b نشان داده شده است، یک نسخه در هر گروه سیلندر). اندازه هر کپی superblock 8196 بایت است و تنها یک نسخه superblock هنگام نصب فایل سیستم استفاده می شود (به زیر مراجعه کنید). با این حال، اگر mount تشخیص دهد که کپی اولیه superblock خراب است یا معیارهای یکپارچگی اطلاعات را برآورده نمی کند، از نسخه پشتیبان استفاده می شود.

    بلوک گروه سیلندر شامل تعداد i-node های مشخص شده در لیست i-node برای آن گروه سیلندر و تعداد بلوک های داده ای است که با آن i-node مرتبط هستند. اندازه بلوک یک گروه سیلندر به اندازه سیستم فایل بستگی دارد. برای بهبود کارایی، سیستم فایل ufs سعی می کند i-node و بلوک های داده را در یک گروه سیلندر قرار دهد.

    لیست i-nodes (ilist) حاوی لیستی از i-nodes مربوط به فایل های سیستم فایل داده شده است. حداکثر تعدادفایل هایی که می توانند در سیستم فایل ایجاد شوند با تعداد i-node های موجود تعیین می شود. i-node اطلاعات توصیف فایل را ذخیره می کند: حالت های دسترسی به فایل، زمان ایجاد و آخرین اصلاح، شناسه کاربری و شناسه گروه سازنده فایل، شرح ساختار بلوک فایل و غیره.

    بلوک های داده - این قسمت از سیستم فایل، داده های واقعی فایل ها را ذخیره می کند. در مورد سیستم فایل ufs، تمام بلوک های داده یک فایل سعی می کنند در یک گروه سیلندر قرار گیرند. اندازه بلوک داده زمانی تعیین می شود که سیستم فایل با دستور mkfs فرمت شود و می توان آن را روی 512، 1024، 2048، 4096 یا 8192 بایت تنظیم کرد.

فایل سیستم های قابل نصب

فایل‌های هر فایل سیستمی تنها پس از نصب آن سیستم فایل در دسترس می‌شوند. فایل های موجود در یک سیستم فایل "نمونت نشده" برای سیستم عامل قابل مشاهده نیستند.

فراخوانی سیستم mount برای نصب فایل سیستم استفاده می شود. نصب فایل سیستم به معنای زیر است. درخت دایرکتوری ها و فایل های موجود در زمان نصب باید یک گره برگ داشته باشد - یک دایرکتوری خالی (در اصطلاح یونیکس، چنین دایرکتوری که برای نصب سیستم فایل استفاده می شود، نقطه مونت دایرکتوری - نقطه mount نامیده می شود). هر فایل سیستمی یک دایرکتوری ریشه دارد. در طول اجرای فراخوانی سیستم mount، دایرکتوری ریشه سیستم فایل در حال نصب با دایرکتوری - نقطه اتصال ترکیب می شود، که منجر به یک سلسله مراتب جدید با نام کامل دایرکتوری ها و فایل ها می شود.

یک سیستم فایل نصب شده را می توان بعداً با استفاده از فراخوانی سیستم umount از سلسله مراتب مشترک جدا کرد. اجرای موفقیت آمیز این فراخوانی سیستم مستلزم آن است که سیستم فایل در حال جدا شدن در حال حاضر در حال استفاده نباشد (یعنی هیچ فایلی از این سیستم فایل باز نشده است). فایل سیستم ریشه همیشه مانت است و مشمول فراخوانی سیستم umount نیست.

همانطور که در بالا اشاره کردم، یک فایل سیستم جداگانه معمولاً روی یک درایو منطقی قرار دارد، یعنی. روی یک پارتیشن دیسک فیزیکی هیچ تماس سیستمی خاصی برای مقداردهی اولیه سیستم فایل پشتیبانی نمی شود. یک سیستم فایل جدید بر روی یک دیسک فرمت شده با استفاده از ابزار mkfs (فرمان) تشکیل می شود. سیستم فایل جدید ایجاد شده به حالتی راه اندازی می شود که فقط یک دایرکتوری ریشه خالی داشته باشد. دستور mkfs با نوشتن مستقیم داده های مناسب روی دیسک مقدار دهی اولیه را انجام می دهد.

رابط سیستم فایل

هسته یونیکس از چندین فراخوانی سیستم برای کار با فایل ها پشتیبانی می کند. از جمله مهمترین آنها باز کردن، خلق کردن، خواندن، نوشتن، جستجو کردن و بستن هستند.

توجه به این نکته ضروری است که اگرچه در زیرسیستم مدیریت فایل یک فایل معمولی به عنوان مجموعه ای از بلوک های حافظه خارجی نمایش داده می شود، اما به کاربران ارائه می شود که فایل به صورت یک دنباله خطی از بایت ها نمایش داده می شود. این نمایش به شما امکان می دهد از انتزاع فایل هنگام کار در آن استفاده کنید دستگاه های خارجی، هنگام سازماندهی تعاملات بین فرآیندی و غیره.

یک فایل در فراخوانی های سیستمی که دسترسی واقعی به داده ها را فراهم می کند توسط توصیفگر آن (مقدار صحیح) شناسایی می شود. توصیفگر فایل توسط فراخوانی سیستم باز (فایل باز) و ایجاد (ایجاد فایل) صادر می شود. پارامتر اصلی عملیات باز کردن و ایجاد فایل، نام کامل یا نسبی فایل است. علاوه بر این، هنگام باز کردن یک فایل، حالت باز کردن نیز نشان داده می شود (فقط خواندن، فقط نوشتن، نوشتن و خواندن، و غیره) و مشخصه ای که امکان دسترسی به فایل را تعیین می کند:

باز کردن (مسیر، offlag [,حالت])

یکی از پرچم هایی که می تواند در پارامتر offlag شرکت کند، پرچم O_CREAT است که وجود آن نشان دهنده نیاز به ایجاد یک فایل است در صورتی که هنگام اجرای فراخوانی سیستم باز، فایل با نام داده شدهوجود ندارد (پارامتر mode تنها در صورت وجود این پرچم معنادار است). با این حال، به دلایل تاریخی و برای اطمینان از سازگاری با نسخه های قبلیسیستم عامل یونیکس به طور جداگانه از فراخوانی سیستم creat پشتیبانی می کند که تقریباً همان عملکردها را انجام می دهد.

از یک فایل باز می توان برای خواندن و نوشتن دنباله های بایت استفاده کرد. دو تماس سیستمی برای این کار پشتیبانی می شود:

خواندن (fd، بافر، شمارش) و نوشتن (fd، بافر، شمارش)

در اینجا، fd یک توصیفگر فایل است (به دست آمده از یک فراخوانی سیستمی باز یا ایجاد قبلی)، بافر یک نشانگر آرایه کاراکتر است و تعداد بایت هایی است که باید از فایل خوانده یا روی آن نوشته شود. مقدار تابع خواندن یا نوشتن یک عدد صحیح است که در صورت موفقیت‌آمیز بودن عملیات برابر با مقدار count، در صورت رسیدن به انتهای فایل صفر و در صورت بروز خطا منفی است.

هر فایل باز یک موقعیت فعلی دارد. بلافاصله پس از باز کردن فایل در اولین بایت قرار می گیرد. به عبارت دیگر، اگر بلافاصله پس از باز کردن یک فایل، یک فراخوانی سیستمی خواندن (یا نوشتن) برقرار شود، اولین بایت های شمارش محتوای فایل خوانده می شود (یا نوشته می شود) (البته فقط در صورتی که فایل با موفقیت خوانده می شود. در واقع شامل حداقل تعداد بایت است). پس از اجرای فراخوانی سیستمی خواندن (یا نوشتن)، نشانگر خواندن/نوشتن فایل روی count+1 و غیره تنظیم می‌شود.

چنین سبک کاری کاملاً متوالی در بسیاری از موارد کافی به نظر می رسد، اما اغلب لازم است که یک فایل را از یک موقعیت دلخواه خوانده یا تغییر دهید (به عنوان مثال، چگونه می توانید آرایه های فهرست شده مستقیماً از داده ها را در یک فایل بدون چنین چیزی ذخیره کنید. فرصت؟). برای قرار دادن صریح یک فایل، از تماس سیستمی استفاده کنید

lseek (fd، افست، مبدا)

مانند قبل، در اینجا fd یک توصیف کننده فایل از یک فایل قبلا باز شده است. پارامتر offset، افست نسبی اشاره گر خواندن/نوشتن را مشخص می کند، و پارامتر مبدا مشخص می کند که افست از کدام موقعیت باید اعمال شود. سه مقدار ممکن برای پارامتر مبدا وجود دارد. مقدار 0 نشان می دهد که مقدار افست باید از ابتدای فایل به عنوان یک افست در نظر گرفته شود. مقدار 1 به این معنی است که مقدار آفست یک افست از موقعیت فعلی فایل است. در نهایت، مقدار 2 نشان می دهد که افست نسبت به انتهای فایل است. توجه داشته باشید که نوع داده پارامتر افست طولانی int است. این بدان معناست که اولاً می توان افست های طولانی مدت را مشخص کرد و ثانیاً افست ها می توانند مثبت یا منفی باشند.

برای مثال پس از اجرای فراخوانی سیستم

اشاره گر خواندن/نوشتن فایل مربوطه روی ابتدای (بایت اول) فایل تنظیم می شود. تماس سیستمی

دستورات فایل سیستم استاندارد یونیکس .... شکل 1.2. ساختاردایرکتوری های سیستم عامل لینوکسدایرکتوری اصلی فایل سیستم هایسیستم عامل لینوکسدایرکتوری ریشه است...

  • نصب اتاق عمل سیستم های لینوکس

    چکیده >> انفورماتیک

    روش های کنترلی قدرتمند و انعطاف پذیر فایل سیستم های لینوکسیا لینوکسسیستم عامل های مشابه در بسیاری از ... یک درخت ساختاردایرکتوری ها و این ساختارممکن است چندین بخش را شامل شود. چه زمانی فایل سیستمنصب شده...

  • برترین مقالات مرتبط