LPIC-1Linux

آموزش Lpic 1 لینوکس: طراحی لی آوت هارد دیسک (Design hard disk layout)

Design hard disk layout

در این بخش از آموزش Lpic1 می خواهیم به آموزش و معرفی ساختار و طراحی لی آوت هارد دیسک بپردازیم که شامل پارتیش بندی، فایل سیستم، Swap ، mount points و LVM می باشد پس با ما در ادامه همراه باشید.

لینوکس نیز مانند تمام سیستم عامل ها دارای چندین فایل می باشد که این فایل ها در دایرکتوری های مختلف پخش شده است که تمام دارکتوری ها از یک نقطه به نام ( / ) یا root شروع شده است. (آشنایی و معرفی فایل سیستم در لینوکس)

ساختار فایل سیستم لینوکس - طراحی لی آوت هارد دیسک
ساختار فایل سیستم لینوکس – طراحی لی آوت هارد دیسک

Unix directories

Directory Description
bin محل قرار گیری دستور های اصلی لینوکس
boot فایل های اولیه ای که برای بوت شدن لینوکس لازم است
dev Device files
etc بیشتر کانفیگ ها در این دایرکتری ذخیره می شود
home دایرکتوری شخصی هر یوزر در این بخش ذخیره می شود
lib محل ذخیره تمام لایبرری های نرف افزارها و ماژول های کرنل
media این دایرکتوری معمولا برای سخت افزار های اضافه شده مانند usb و cdrom و … استفاده می‌شود
mnt این دایرکتوری برای mount کردن درایوهایی که موقت هستن استفاده میشود مانند NFS
opt معمولا برنامه ای Third Party که جزء اصلی لینوکس نیستن وجود دارد مانند اوراکل
root دایرکتوری root نیر Home directory یوزر روت است
sbin در واقع system binaries است جایگاه اصلی فایل ها و نرم افزار های سیستمی است
srv این دایرکتوری که serve directory است برای نگهداری فایل های قابل سرو توسط سرویس ها استفاده می‌شود. برای نمونه یک ftp سرور رو درنظر بگیرید که نیاز داره برای سرو یک سری فایل.
tmp فایل های موقت در آن ذخیره می شود (Temporary files)
usr این دایرکتوری در برگیرنده برنامه های کاربردی کاربران می‌باشد که در خود لینوکس نیست و بعدا اضافه شده است
var شامل تمامی اطلاعات متغییر می‌باشد، برای نمونه تمامی لاگ فایل ها که ممکن است در لحظه تغییر کنند و یا هر فایلی که ممکن است تغییر کند در این دایرکتوری جای دارد

mount به معنی اتصال و mount point به معنی نقطه اتصال است. عمل mount به معنی اتصال یک پارتیشن یا یک دایرکتوری بر روی یک دایرکتوری دیگر است. اگر تا به حال لینوکس را بصورت گرافیکی نصب کرده باشید، دیده اید که اول باید هارد را پارتیشن بندی کنید. نام هاردها با توجه به نوع و تعداد هارد بصورت hdX و sdX است.

hd معرف هاردهای IDE و sd مخفف هاردهای SATA می باشد. X بیانگر تعداد هارد های متصل به سیستم است که با یک حرف نشان داده می شود. بطور مثال اگر سه هارد ساتا دارید پس سه Device به نام های sda و sdb و sdc خواهید داشت.

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

  1. sudo fdisk /dev/sda
  2. p

با دستور بالا تمام پارتیشن ها و اطلاعات آن را به ما نمایش می دهد.

# fdisk /dev/sda
Welcome to fdisk (util-linux 2.25.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sda: 298.1 GiB, 320072933376 bytes, 625142448 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000beca1

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1  *         2048  43094015  43091968  20.6G 83 Linux
/dev/sda2        43094016  92078390  48984375  23.4G 83 Linux
/dev/sda3        92080126 625141759 533061634 254.2G  5 Extended
/dev/sda5        92080128 107702271  15622144   7.5G 82 Linux swap / Solaris
/dev/sda6       107704320 625141759 517437440 246.8G 83 Linux

رکورد راه انداز اصلی (Master Boot Record/MBR) اولین سکتور(Sector) از دیسک سخت رایانه است که اطلاعات پارتیشن‌ها روی آن قرار دارد و فرآیند راه اندازی رایانه از روی آن آغاز می‌شود.

مفهوم MBR اولین بار در سال 1983 با PC DOS2 معرفی شد. MBR اطلاعات چگونگی تقسیم‌بندی منطقی یک حافظه شامل فایل سیستم‌ها را نگهداری می‌کند. در کنار آن MBR شامل کدهای اجرائی که تابع راه انداز سیستم‌های عامل نصب شده‌است نیز می‌شود.

کل کدهای MBR فقط 512 بایت می‌باشد که به صورت قراردادی، در اولین سکتور از حافظه (که معمولاً سکتور شماره 0 خوانده می‌شود) قرار می‌گیرد. با توجه به این که یک سکتور معمولاً دارای 512 بایت حافظه ذخیره سازی است، با قرار گرفتن MBR به صورت کامل پر می‌شود.

در طراحی لی آوت هارد دیسک
MBR یا (Master Boot Record) در طراحی لی آوت هارد دیسک

MBR وظیفه دارد تا اطلاعات مربوط به پارتیشن‌های اولیه را در خود نگه داشته و با تشخیص پارتیشن فعال و با استفاده از دستور موجود در اولین سکتور آن پارتیشن، هسته سیستم عامل را بر روی RAM قرار داده و اجرا کند. از آن جایی که 512 بایت فضای بسیار کوچکی برای نوشتن یک برنامه است، MBR تنها این دو وظیفه را بر عهده دارد.

در روش MBR بالاترین میزان پشتبانی از یک هارد دیسک 2 ترابایت می باشد. در نتیجه اگر میزان هارد دیسک شما بیشتر از 2 ترابایت باشد میزان باقیمانده بلااستفاده خواهد بود.

استاندارد MBR تنها از 4 پارتیشن اولیه پشتیبانی می‌کند و در صورت نیاز به تعداد بیشتر لازم است که یکی از پارتیشن‌های خود را تحت عنوان extended partition بسازید و پارتیشن‌های منطقی خود را در داخل آن ایجاد نمایید. در لینوکس پارتیشن extended از شماره 5 شروع می شود به عنوان مثال sda5

GParted - طراحی لی آوت هارد دیسک
GParted – طراحی لی آوت هارد دیسک

برای این که دیگر مشکلات MBR وجود نداشته باشد مفهوم جدیدی به نام GPT را معرفی کردن. GPT استاندارد جدیدی است که به تدریج جای MBR را می‌گیرد. این سیستم محدودیت‌های MBR را ندارد و درایوهای شما می‌توانند به مراتب بزرگ‌تر باشند و محدودیت ظرفیت آنها نیز به سیستم عامل و سیستم پرونده یا فایل سیستم آنها بستگی دارد.

با استفاده از استاندارد GPT می‌توان تعداد نامحدودی پارتیشن را ایجاد نمود و محدودیتی که در اینجا با آن روبرو خواهید بود سیستم عامل شماست و دیگر نیازی به ایجاد پارتیشن از نوع Extended نخواهید داشت.

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

اما در سیستم MBR هیج راهی برای تشخیص اینکه به داده‌های سیستم آسیب رسیده است یا خیر وجود ندارد و تنها در زمان بوت شدن سیستم متوجه می‌شوید که سیستم با مشکل روبروست و پارتیشن‌های درایو شما ناپدید شده‌اند.

دستور parted که یک ابزار قدیمی است و ممکن از در تمام لینوکس ها نصب نباشد هم مانند fdisk عمل می کند.

sudo parted /dev/sda p
Model: ATA ST320LT000-9VL14 (scsi)
Disk /dev/sda: 320GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  22.1GB  22.1GB  primary   ext4            boot
 2      22.1GB  47.1GB  25.1GB  primary   ext4
 3      47.1GB  320GB   273GB   extended
 5      47.1GB  55.1GB  7999MB  logical   linux-swap(v1)
 6      55.1GB  320GB   265GB   logical

ابزار GParted یک ابزار گرافیکی در لینوکس است که به راحتی میتوان هر نوع تغییر را در پارتیشن بندی و فرمت هارد ها در لینوکس انجام داد.

ابزار GParted طراحی لی آوت هارد دیسک
ابزار GParted طراحی لی آوت هارد دیسک

LVM چیست؟

شما فکر کنید یک هارد 500 گیگ دارید و این هارد به مرور پر می شود حالا راه حل چیست؟ آیا حتما باید هارد عوض شود و یک هارد بزرگ تر را جای آن قرار دهیم؟ جواب خیر است!

LVM به معنی Logical Volume Management می باشد، به صورت خلاصه LVM بین سیستم عامل و هارد ها قرار می گیرد و تمام هارد های ما را به صورت یک هارد مجازی واحد به سیستم عامل معرفی می کند.

Logical Volume Manager LVM - طراحی لی آوت هارد دیسک
Logical Volume Manager LVM – طراحی لی آوت هارد دیسک

معمولا LVM را برای اهداف زیر استفاده می کنند:

  • مدیریت فضای بسیار زیاد هارد دیسک ، مدیریت اضافه کردن و حذف فضا به هارد دیسک
  • به راحتی بعد از پارتیشن بندی دیسک و فایل سیستم می توان فضای فایل سیستم را کم و یا زیاد کرد
  • می توان از Logical Volume که ساخته می شود بکآپ گرفت (با Snapshots گرفتن از LV)

در LVM سه اصلاح زیر بسیار کاربردی و البته قسمت های بنیادی LVM را تشکیل می دهتد:

Physical Volume یا PV

واحد ذخیره سازی فیزیکی LVM یک دستگاه بلوک (block device) مثل پارتیشن و یا کل دیسک است، که دیسک را برای استفاده از LVM باید به حجم فیزیکی (Physical Volume) مقدار دهی اولیه شود.

Volume Group یا VG

در این مکانیرم physical volume هایی که ساخته شد را در یک گروه با هم ترکیب می شوند. با استفاده از Volume Group می توانیم حجم خیلی زیادی از هارد دیسک ها (می توان با تعداد زیادی از هارد دیسک یک Volume Group ساخت) را پارتیشن بندی کرد.

Logical Volume یا LV

در Volume Group با استفاده از Logical Volume می توان پارتیشن بندی منطقی انجام دهیم و با انجام Mount به دایرکتوری ها می توان به هر دایرکتوری یک فضا هارد دیسک با استفاده از LV اختصاص دهیم.

LV های به 3 شکل وجود دارند:

Linear Volume : می توان از چند تا (PV (physical Volume یک LV ساخت.

Linear Volume - طراحی لی آوت هارد دیسک
Linear Volume – طراحی لی آوت هارد دیسک

Striped Logical Volume : وقتی داده ای در LVM Logical Volume نوشته می شود ، لایه فایل سیستم داده ها را در PV با ساختاری ذخیره می کند. با استفاده از Striped LV می توان روش نوشتن داده ها در PV کنترل کرد این روش در انبوه ای از خواندن و نوشتن خیلی کاربرد دارد. خواندن و نوشتن در این روش به صورت موازی انجام می شود.

Striped Logical Volume - طراحی لی آوت هارد دیسک
Striped Logical Volume – طراحی لی آوت هارد دیسک

Mirrored Logical Volume : در این روش یک کپی از فایلی که باید بر روی یک PV ذخیره شود بر روی PV دیگری نیز ذخیره می شود و در هنگام از کار افتادن یک PV ،LVM به صورت Linear Volume دسترسی به PV بک آپ را داراست.

Mirrored Logical Volume - طراحی لی آوت هارد دیسک
Mirrored Logical Volume – طراحی لی آوت هارد دیسک

به غیر از 3 نوع از LV هایی که در بالا نام برده شد (که پر کاربردیترین آن ها بودند) 4 نوع دیگری وجود دارند که عبارت اند از

  1. RAID LV
  2. Thin Volume
  3. Snapshot Thinly-Provisioned
  4. Snapshot Volume

حال با تمام این حرف ها که زدیم بعد از این که هارد 500 ما پر شد می توانیم در صورت استفاده از LVM یک هارد جدید به عنوان PV به ساختار اضافه کنیم و آن را عضو VG کنیم و سپس به LVM می گوییم ساختار LV را برای سیستم عامل بروز کن تا فضای در دسترس سیستم عامل افزایش پیدا کند.

فضای swap چیست؟

اگر تاکنون در لینوکس لیست پارتیشن ها را دیده باشید، حتما پارتیشن swap نظر شما را جلب کرده است. swap چیست؟ چه نیازی به وجود swap هست؟ مقدار swap چقدر باید باشد؟

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

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

برای حل این مشکل دو راه وجود دارد:

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

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

فضای swap را می توان به دو صورت پارتیشن و فایل تعریف کرد. توصیه می شود فضای swap را به صورت پارتیشن تعریف کنید، چون در صورتی که فضای swap به صورت فایل تعریف شود تکه تکه شدن (fragmentation) فایل سرعت و بهره وری عملیات swap را پایین می آورد.

سیستم عامل چگونه از فضای swap استفاده می کند؟

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

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

اما استفاده از فضای swap معایبی هم دارد. زمان دسترسی حافظه اصلی در حد نانو ثانیه است، در حالی که زمان دسترسی در هارد دیسک ها در حد میلی ثانیه می باشد. این بدین معنی است که سرعت هارد دیسک دهها هزار برابر کندتر از حافظه اصلی است در نتیجه استفاده از فضای swap به جای حافظه اصلی به معنی کندتر شدن سیستم است.

حال اگر مقدار حافظه اصلی کامپیوتر خیلی کم باشد، تمام وقت و قدرت پردازش سیستم به انتقال page ها بین فضای swap و حافظه اصلی تلف می شود در این حالت تنها گزینه اضافه کردن حافظه اصلی می باشد.

اندازه فضای swap چقدر باید باشد؟

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

سوال اصلی این است که چه مقدار برای فضای swap اختصاص دهیم؟ سیستم عامل های مبتنی بر یونیکس قدیمی تر (مثل Sun OS یا Ultrix) فضای swap دو یا سه برابر حافظه اصلی نیاز داشتند. اما سیستم عامل های جدیدتر (مثل لینوکس) به این مقدار فضای swap نیاز ندارند، هرچند اگر شما برای سیستم تنظیم کنید، سیستم می تواند از این مقدار نیز استفاده کنند. امروزه به دلیل افزایش حجم فاضی رم توصیه می شود فضای swap دو برابر رم باشد ولی بیشتر از 8 گیگ نشود.

 

Shares:

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *