کوچکترین واحد سازماندهی که FreeBSD برای پیدا کردن یک فایل استفاده می کند نام آن فایل است. نام فایلها به حروف کوچک و بزرگ حساس است یعنی readme.txt و README.TXT دو فایل مجزا هستند. FreeBSD از پسوندها برای مشخص کردن نوع فایل استفاده نمیکند. پسوندها معمولاً یک کلمه سه یا چهار حرفی هستند که در انتهای نام فایل بعد از یک . (نقطه) ظاهر می شوند. مثلاً در بعضی از سیستمعاملها، اگر فایلی به .txt ختم شود، آن فایل به عنوان یک فایل متنی درنظر گرفته می شود. اما در FreeBSD این طور نیست.
فایلها در داخل دایرکتوریها (یا به فارسی فهرستها) ذخیره می شوند. یک دایرکتوری ممکن است دربرگیرنده هیچ فایلی نباشد؛ یا همچنین ممکن است دربرگیرنده صدها فایل باشد. همچنین یک دایرکتوری می تواند دربرگیرنده دایرکتوریهای دیگری هم باشد. به دایرکتوری که در داخل یک دایرکتوری دیگر قرار گرفته باشد subdirectory یا زیرفهرست می گویند. این قابلیت به شما اجازه میدهد تا یک سلسله مراتب از دایرکتوریها را ایجاد کنید. این کار سازماندهی فایلهایتان را آسان تر می کند.
برای دسترسی به یک فایل ، ابتدا نام دایرکتوری که فایل مورد نظر در آن قرار دارد، سپس یک علامت / و بعد از آن نام دیگر دایرکتوری ها(در صورت نیاز) و در آخر نام فایل مورد نظر میآید (این در مورد دایرکتوری ها هم صدق می کند). اگر دایرکتوری به نام foo داشته باشید، که دربرگیرنده دایرکتوری دیگری به نام bar باشد و آنهم دربرگیرنده فایلی به نام readme.txt باشد، نام کامل فایل یا مسیر دسترسی به فایل مورد نظر به این صورت است: /readme.txt
دایرکتوری ها و فایل ها در داخل فایلسیستمها ذخیره می شوند. هر فایلسیستم، فقط یک دایرکتوری به نام root دارد که این دایرکتوری دربرگیرنده تمام فایل ها و دایرکتوری های موجود در آن فایلسیستم است. می توان گفت که فایلسیستمها مفهوم خیلی جدیدی نیستند، آنها فقط یک دایرکتوری خیلی بزرگ هستند که تمام دیگر فایل ها و دایرکتوری ها را دربر میگیرند. دایرکتوری root توسط علامت / مشخص می شود.
یک فایلسیستم می تواند دربرگیرنده فایلسیستمهای دیگر باشد. به فایلسیستمی که دربرگیرنده تمام فایلسیستمهای دیگر باشد، فایلسیستم ریشه یا root می گویند. به این صورت که هر فایلسیستم، در یک جایی از فایلسیستم ریشه سوار (mount) خواهد شد. مهم نیست که شما چند دیسک داشته باشید، همه چیز آن گونه است که انگار فقط یک دیسک دارید. در ادامه با ذکر مثال هایی این مطلب را روشن میکنیم.
فرض کنید که سه فایلسیستم به نام های A، B و C دارید. هر فایلسیستم یک دایرکتوری root دارد که دربرگیرنده دو دایرکتوری دیگر به نام های A1 و A2 (به طور مشابه B1، B2 و C1، C2) است.
A را ریشه فایلسیستم مینامند. اگر از دستور ls برای دیدن محتویات A استفاده کنید، دو زیردایرکتوری به نام های A1 و A2 خواهید دید. شکل زیر این موضوع را مشخص می کند:
یک فایلسیستم می تواند در یک دایرکتوری موجود در یک فایلسیستم دیگر سوار شود. فرض کنید که فایلسیستم B را در دایرکتوری A1 سوار کردهاید. دایرکتوری A1 جانشین دایرکتوری ریشه B می شود. شکل زیر این موضوع را روشنتر می کند.
هر فایلی که در دایرکتوری های B1 و B2 قرار داشته باشد، می تواند از طریق مسیر /A1/B1 یا /A1/B2 مورد رجوع قرار گیرد.
تا زمانی که فایلسیستم B را در /A1 سوار کرده ایم، تمام فایل هایی که از قبل در /A1 قرار داشتهاند به طور موقت غیرقابل دسترس هستند. وقتی که فایلسیستم B را پیاده (unmount) کردیم، این فایلها مجدداً قابل دسترسی هستند. اگر B را در /A2 سوار کنیم، دیاگرام به صورت زیر خواهد بود:
و مسیرها به صورت /A2/B1 یا /A2/B2 خواهد بود. به همین صورت می توانیم فایلسیستم C را در دایرکتوری B1 سوار کنیم.به این صورت:
یا همچنین C می تواند مستقیماً در A و در دایرکتوری A1 سوار شود. به این صورت:
این امکان وجود دارد تا به جای اینکه چند فایلسیستم داشته و آنها را در داخل یکدیگر سوار کنیم، یک فایلسیستم بزرگ داشته باشیم. این کار خوبیها و بدیهایی دارد.
مزایای داشتن چند فایلسیستم:
- فایلسیستمهای مختلف را میتوانید با گزینههای مختلفی سوار (mount) کنید. مثلاً فایلسیستم ریشه را به صورت فقط-خواندنی سوار کنید تا به فایل های سیستمی اشتباهاً آسیب نرسانید. همچنین فایلسیستمهایی را که باید توسط کاربران قابل نوشتن باشند (مانند /home) را از دیگر فایلسیستمها جدا کنید یا همچنین آنها را با گزینه nosuid سوار کنید. این گزینه بیت های suid/guid را بر روی فایل های اجراییِ موجود در آن فایلسیستم بی اثر می کند و اجازه نمی دهد تا فایل های اجرایی با مجوز suid/guid اجرا شوند که این امر باعث بالا رفتن امنیت می شود.
- اگر فقط یک فایلسیستم داشته باشید، در صورتی که آن فایلسیستم آسیب ببیند، آن آسیب به کل سیستم سرایت خواهد کرد و آن را از کار خواهد انداخت. اما اگر چندین فایلسیستم داشته باشید و یکی از آنها آسیب دید، دیگر فایلسیستمها در امان خواهند بود و کل سیستم از کار نخواهد افتاد.
مزایای داشتن فقط یک فایلسیستم:
فایلسیستم ها انداز ثابتی دارند. فرض کنید که در هنگام نصب FreeBSD یک فایلسیستم ایجاد کرده و اندازه مشخصی را برای آن درنظر گرفتهاید. در صورتی که بخواهید بعداً پارتیشن را بزرگتر کنید، درخواهید یافت که این کار به همین سادگیها هم قابل انجام نیست و باید از اطلاعات خود پشتیبان گرفته و فایلسیستم را با اندازه جدید ایجاد کرده و دوباره پشتیبان خود را بازیابی کنید.
فایلسیستمها در پارتیشنها قرار می گیرند. کلمه پارتیشن در اینجا مترادف با آن چیزی نیست که در دیگر سیستمعاملها مثل MS-DOS به آن اطلاق می شود. هر پارتیشن توسط یک حرف از a تا f شناسایی می شود. هر پارتیشن فقط می تواند دربرگیرنده یک فایلسیستم باشد. این حرف به این معنی است که معمولاً فایلسیستمها یا توسط mount point شان (جایی که سوار شدهاند) یا همچنین توسط حروفی که به پارتیشن دربرگیرنده آنها اختصاص داده شده مورد رجوع قرار می گیرند.
FreeBSD همچنین از فضای دیسک برای عمل swap هم استفاده میکند. فضای swap قابلیت حافظه مجازی را برای FreeBSD فراهم می کند. این امر کامپیوتر شما را قادر میسازد تا از حافظه RAM بیشتری نسبت به آنچه که واقعاً دارد استفاده کند. وقتی که شما برنامههای زیادی را اجرا کردید و حافظه RAM پر شد، FreeBSD آن قسمت از اطلاعات را که استفاده نمی شوند را به فضای swap منتقل کرده تا فضای RAM خالی شود و فضای کافی برای پروسه های جدید فراهم گردد. این اطلاعات دوباره در هنگام نیاز به حافظه RAM برگردانده می شوند(این کار با قرار دادن یکسری اطلاعات دیگر در فضای swap میسر می شود)
نام پارتیشن | کاربرد |
---|---|
a | این پارتیشن معمولاً دربرگیرنده فایلسیستم root (ریشه) است. |
b | معمولاً دربرگیرنده فضای swap است. |
c | نشاندهنده کل فضای slice ای است که پارتیشنها در آن قرار دارند. این مورد به برنامههایی که احتیاج به کار کردن بر روی کل slice دارند کمک می کند. یعنی هر برنامهای که با این پارتیشن کار کند، در حقیقت بر روی کل slice کار کرده است. معمولاً شما نباید در این پارتیشن فایلسیستمی ایجاد کنید. |
d | این پارتیشن قبلاً معنی خاصی داشت ولی اکنون شما میتوانید از آن به عنوان یک پارتیشن عادی استفاده کنید. |
هر پارتیشنی که-دربرگیرنده-یک-فایلسیستم است، در چیزی قرار می گیرد که FreeBSD به آن slice می گوید. Slice همان چیزی است که دیگر سیستمعاملها به آن پارتیشن می گویند.
Slice ها از شماره ۱ تا ۴ نامگذاری میشوند. Slice ها در جایی از دیسک به نام slice table ذخیره میشوند. در بعضی از سیستمعامل ها به جای slice table از لغت partition table استفاده می شود.
برای دسترسی به یک slice، ابتدا نام دستگاهی که slice در آن قرار دارد، سپس حرف s و بعد از آن شماره slice مورد نظر میآید که این شماره از ۱ شروع می شود. بنابراین da0s1 به معنی اولین slice از اوین دیسک سخت SCSI است. به صورت فیزیکی هر دیسک فقط چهار slice میتواند داشته باشد. البته شمامیتوانید slice های منطقی را در داخل slice های فیزیکی داشته باشید. این slice های توسعه یافته از شماره ۵ شروع می شوند. پس ad0s5 اولین slice منطقی در اولین دیسک سخت IDE است.
البته حالت دیگری هم وجود دارد که می توانید هیچ sliceای ایجاد نکنید و مستقیماً پارتیشنها را ایجاد کنید. به این حالت dangerously dedicated mode می گویند. این پارتیشنها با حروف a تا h شماره گذاری می شوند. این حروف به انتهای نام دستگاه ضمیمه میشوند. بنابراین da0a اولین پارتیشن از اولین دیسک da است. ad1s3e هم پنجمین پارتیشن از سومین slice از دومین دیسک IDE است.
در نهایت slice ها در دیسکها قرار میگیرند. به هر دیسک یک نام اختصاص مییابد که این نام بسته به نوع دیسک (کنترلر) دارد. برخلاف sliceها که از ۱ شمارهگذاری می شدند، دیسکها از ۰ شماره گذاری می شوند.
دیسکها بر اساس کنترلرشان به این صورت نامگذاری میشوند:
کد | معنی |
---|---|
ad | دیسک های ATAPI (IDE) |
da | دیسک SCSI |
acd | سیدی-درایو IDE |
cd | سیدی-درایو SCSI |
fd | درایو فلاپی |
وقتی که قصد دستیابی به یک پارتیشن را دارید، باید slice مورد نظر را هم مشخص کنید. همچنین برای دستیابی به یک slice باید دیسک مورد نظر را مشخص کنید. بنابراین برای دستیابی به یک پارتیشن باید ابتدا نام دیسک، s، شماره slice، و بعد پارتیشن مورد نظر را مشخص کنید.
در نتیجه برای نصب FreeBSD شما باید دیسک خود را به slice ها تقسیم کنید. سپس پارتیشن های خود را در درون sliceها ایجاد کنید و بعد باید فایلسیستم ها را در پارتیشن ها ایجاد کرده و تصمیم بگیرید که آنها را در کجا سوار کنید.
ad0s1a: به معنی اولین پارتیشن (a) از اولین slice (s1) از اولین دیسک سخت IDE (ad0) است.
da1s2e: به معنی پنجمین پارتیشن (e) از دومین slice (s2) از دومین دیسک SCSI (da1) است.
دیاگرام زیر اولین دیسکسخت IDE که به سیستم متصل شده را از دید FreeBSD نشان میدهد. فرض کنید که دیسک ۴ گیگابایت ظرفیت دارد و از دو تا slice دو گیگابایتی تشکیل شده. اولین slice یک پارتیشن MS-DOS است که در این سیستم عامل با C: شناخته میشود و دومین slice هم برای نصب FreeBSD است. در این مثال برای نصب FreeBSD سه پارتیشن برای اطلاعات و یک پارتیشن برای swap درنظر گرفته شده. این سه پارتیشن هر کدام دربرگیرنده یک فایلسیستم هستند. پارتیشن a برای فایل سیستم ریشه، e برای /var و f برای /usr درنظر گرفته شدهاند. همان طور که میبینید پارتیشن c به کل slice اشاره میکند.