102.1 - طراحی پارتیشنبندی هارد دیسک¶
اهداف یادگیری¶
در این فصل با موارد زیر آشنا میشوید:
- تخصیص فایلسیستمها و فضای swap به پارتیشنها یا دیسکهای جداگانه
- طراحی پارتیشنبندی متناسب با کاربرد سیستم
- اطمینان از سازگاری پارتیشن
/bootبا معماری سختافزار برای بوت - آشنایی با ویژگیهای پایهای LVM
کلیدواژهها¶
/ (root), /var, /home, /boot, EFI System Partition (ESP), swap, mount points, partitions, fdisk, parted, gparted, LVM
پارتیشنها¶
در دنیای لینوکس، دستگاهها در /dev/ تعریف میشوند و برای انواع مختلف دیسکها، قراردادهای نامگذاری مختلفی وجود دارد:
- PATA (منسوخ):
/dev/hdc - SATA (Serial ATA) و دیسکهای SCSI:
/dev/sda - SD/emmc و دستگاههای bare NAND/NOR:
/dev/mmcblk0و پارتیشنهای آنها به عنوان/dev/mmcblk0p0در دسترس هستند - درایوهای NVME:
/dev/nvme0و پارتیشنهای آنها به عنوان/dev/nvme0n1
شما باید دیسکها را پارتیشنبندی کنید، یعنی قسمتهای کوچکتری روی یک دیسک بزرگ ایجاد کنید. اینها بخشهای خودکفا روی درایو اصلی هستند. OS اینها را به عنوان دیسکهای مستقل میبیند. ما آنها را به عنوان:
/dev/sda1(اولین پارتیشن اولین دیسک SCSI)/dev/hdb3(پارتیشن سوم روی دومین دیسک)
شناسایی میکنیم.
سیستمهای BIOS از MBR استفاده میکردند و میتوانستند تا 4 پارتیشن روی هر دیسک داشته باشند، اگرچه به جای ایجاد 4 پارتیشن Primary، میتوانستید یک پارتیشن Extended ایجاد کنید و پارتیشنهای Logical بیشتری داخل آن تعریف کنید.
نکته
یک پارتیشن Extended در عمل یک کانتینر برای پارتیشنهای منطقی است و خود بهتنهایی داده ذخیره نمیکند؛ این موضوع در درک نامگذاری پارتیشنها و ساختار آنها مهم است.
بنابراین:
/dev/sda3پارتیشن Primary سوم روی اولین دیسک است/dev/sdb5اولین پارتیشن Logical روی دومین دیسک است/dev/sda7پارتیشن Logical سوم اولین دیسک فیزیکی است
سیستمهای UEFI از GUID Partition Table (GPT) استفاده میکنند که 128 پارتیشن روی هر دستگاه پشتیبانی میکند.
نکته
اگر یک پارتیشن extended روی سیستم BIOS تعریف کنید، شمارهٔ اولین پارتیشن منطقیی درون آن از /dev/sdx5 شروع میشود (پارتیشنهای Primary شمارههای 1–4 را اشغال میکنند).
سیستمهای لینوکس میتوانند این پارتیشنها را روی مسیرهای مختلف mount کنند. مثلاً میتوانید یک دیسک جداگانه با یک پارتیشن بزرگ برای /home خود داشته باشید و دیگری برای /var/logs/.
fdisk¶
# 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
parted¶
jadi@funlife:~$ 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
هشدار
در برخی نسخهها، parted بهطور پیشفرض رفتار متفاوتی در برابر GPT دارد؛ هنگام کار با دیسکهای GPT از ابزار مناسب (gdisk) یا گزینههای صحیح parted استفاده کنید و قبل از اعمال تغییرات، از دادهها پشتیبان بگیرید.
gparted¶
یک ابزار گرافیکی برای مدیریت دیسکها و پارتیشنها.
LVM¶
در بسیاری موارد، نیاز به تغییر اندازه پارتیشنها یا حتی نصب دیسکهای جدید و اضافه کردن آنها به نقاط mount فعلی دارید؛ افزایش اندازه کل. LVM برای این طراحی شده است.
LVM به شما کمک میکند یک پارتیشن از دیسکهای مختلف ایجاد کنید و فضا را اضافه یا حذف کنید. مفاهیم اصلی عبارتند از:
- Physical Volume (PV): یک درایو کامل یا یک پارتیشن. بهتر است پارتیشنها را تعریف کنید و از دیسکهای کامل - بدون پارتیشنبندی - استفاده نکنید.
- Volume Groups (VG): مجموعه یک یا چند PV. OS vg را به عنوان یک دیسک بزرگ میبیند. PVها در یک VG میتوانند اندازههای مختلف داشته باشند یا حتی روی دیسکهای فیزیکی مختلف باشند.
- Logical Volumes (LV): OS lvها را به عنوان پارتیشنها میبیند. میتوانید یک LV را با OS خود فرمت کنید و استفاده کنید.
طراحی چیدمان هارد دیسک¶
چیدمان دیسک و تخصیص پارتیشنها به دایرکتوریها بسته به کاربرد شما دارد. ابتدا، swap و boot را بحث خواهیم کرد و سپس سه مورد مختلف را خواهیم دید.
swap¶
Swap در لینوکس مانند حافظه توسعهیافته کار میکند. Kernel حافظه را به این پارتیشن/فایل page میکند. کافی است یک پارتیشن را با فایلسیستم swap فرمت کنید و آن را در /etc/fstab تعریف کنید (این را بعداً در ماژول 104 خواهید دید).
نکته
فرمول واحدی برای اندازهی swap وجود ندارد؛ بسته به نیاز (مثلاً hibernation، میزان RAM، نوع بار کاری) میتوان از قواعد مختلفی استفاده کرد (مثلاً "RAM + 2" یا "دو برابر RAM" در نمونههای قدیمی). همیشه بر اساس نیاز سیستم تصمیمگیری کنید.
/boot¶
پارتیشن /boot فایلهای بوتلودر را نگه میدارد. در سیستمهای BIOS، باید روی دیسک اول باشد و حداکثر 2TB اندازه داشته باشد. در سیستمهای UEFI، EFI System Partition (ESP) باید FAT32 باشد و معمولاً 512MB است.
سناریوهای مختلف¶
سناریوی 1: سرور وب¶
برای یک سرور وب، /var باید بزرگ باشد زیرا لاگها و فایلهای وبسایت در آنجا هستند. /home میتواند کوچک باشد.
سناریوی 2: دسکتاپ¶
برای دسکتاپ، /home باید بزرگ باشد زیرا فایلهای کاربر در آنجا هستند. /var میتواند کوچکتر باشد.
سناریوی 3: سرور دیتابیس¶
برای سرور دیتابیس، /var/lib/mysql یا مشابه باید روی یک پارتیشن جداگانه باشد برای پشتیبانگیری آسان.
EFI System Partition (ESP)¶
در سیستمهای UEFI، ESP یک پارتیشن FAT32 است که فایلهای بوت را نگه میدارد. معمولاً /boot/efi mount میشود.
نکات نهایی¶
- همیشه از پارتیشنبندی استفاده کنید، حتی اگر یک دیسک داشته باشید.
- از LVM برای انعطافپذیری استفاده کنید.
- پشتیبانگیری قبل از تغییر پارتیشنها.
- از ابزارهای گرافیکی مانند gparted برای راحتی استفاده کنید.
نکات کلیدی برای آزمون
- تفاوت MBR و GPT و محدودیت ۴ پارتیشن در MBR
- نامگذاری دستگاهها:
/dev/sda,/dev/nvme0n1,/dev/mmcblk0p1 - کاربردهای رایج پارتیشنها:
/boot,/home,/varو اهمیت جدا کردن/varدر سرور - مفاهیم LVM: PV, VG, LV
- موارد احتیاط هنگام تغییر پارتیشن: همیشه پشتیبانگیری انجام دهید