104 1 create partitions and filesystems
# 104.1 - ایجاد پارتیشنها و فایلسیستمها
## اهداف یادگیری
در این فصل با موارد زیر آشنا میشوید:
- پیکربندی جدول پارتیشنهای **MBR** و **GPT**
- استفاده از ابزارهایی مانند `fdisk`, `gdisk`, `parted` برای ساخت و ویرایش پارتیشن
- ایجاد فایلسیستمها با `mkfs` (ext2/ext3/ext4, XFS, VFAT, exFAT) و ایجاد فضای swap با `mkswap`
- آشنایی با ویژگیهای پایهای **Btrfs** (multi-device، فشردهسازی و subvolumes)
## کلیدواژهها
`fdisk`, `gdisk`, `parted`, `mkfs`, `mkswap`, `lsblk`, `blkid`, `UUID`, `btrfs`
---
## دستگاههای بلوکی (Block devices)
دستگاه بلوکی نوعی رسانه ذخیرهسازی غیر فرّار است که میتوان دادهها را به صورت بلوکهای مستقل روی آن خواند/نوشت؛ مانند هارددیسکها، درایوهای USB و CD-ROM.
برای فهرست کردن دستگاههای بلوکی از `lsblk` استفاده کنید:
```bash
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
sda1 8:1 0 512M 0 part /boot/efi
sda2 8:2 0 18.5G 0 part /
sda3 8:3 0 976M 0 part [SWAP]
علامتی مانند b در خروجی ls -l /dev نشان میدهد که دستگاه از نوع بلوکی است.
ویرایش جدول پارتیشن¶
سه ابزار رایج برای ویرایش جدول پارتیشن وجود دارد:
fdiskبرای دستگاههای سنتی با MBRgdiskبرای دستگاههای GPTpartedبرای کارهای پیشرفتهتر (مثلاً تغییر اندازه پارتیشنها)
نمونهٔ استفاده از fdisk -l برای نشان دادن جدول پارتیشن:
# fdisk -l /dev/sdb
Disk /dev/sdb: 20 GiB, ...
Disklabel type: gpt
Device Start End Sectors Size Type
/dev/sdb1 2048 1050623 1048576 512M EFI System
/dev/sdb2 1050624 39942143 38891520 18.5G Linux filesystem
/dev/sdb3 39942144 41940991 1998848 976M Linux swap
در حالت تعاملی fdisk، دستور m منوی کمک را نمایش میدهد و n برای ایجاد پارتیشن جدید استفاده میشود. در پایان تغییرات باید w را اجرا کنید تا جدول روی دیسک نوشته شود.
هشدار
قبل از اجرای w دوبار اطمینان حاصل کنید که دستگاه هدف صحیح است؛ نوشتن جدول پارتیشن روی دیسک اشتباه میتواند منجر به از بین رفتن کامل دادهها شود. پیشنهاد میشود قبل از اعمال تغییرات از جدول پارتیشن پشتیبان تهیه کنید:
gdisk مشابه fdisk است اما برای GPT مناسب است و امکاناتی مانند پشتیبانگیری از GPT را دارد. parted نیز برای تغییر اندازه پارتیشنها مناسب است و در برخی شرایط برای کار روی دیسکهای بزرگتر (GPT) راحتتر است.
نکته
اگر از محیط گرافیکی استفاده میکنید، ابزار gparted رابط گرافیکی خوبی دارد، اما آشنایی با ابزارهای متنی (fdisk, gdisk, parted) برای مدیریت سرورها ضروری است.
ساخت فایلسیستمها¶
پس از ایجاد پارتیشن، باید آن را فرمت کنید تا قابل استفاده شود. برای این کار از mkfs و یا فرامین خاص هر فایلسیستم استفاده میشود:
| نوع | ابزار نمونه |
|---|---|
| ext2/ext3/ext4 | mkfs.ext4, mke2fs |
| XFS | mkfs.xfs |
| VFAT (FAT32) | mkfs.vfat |
| exFAT | mkfs.exfat |
| swap | mkswap و سپس swapon |
مثال فرمت یک پارتیشن به ext4:
هشدار
اجرای mkfs پارتیشن را فرمت میکند و تمام دادههای روی آن را پاک میکند. حتماً دوباره بررسی کنید که دستگاه مورد نظر (مثلاً /dev/sda1) صحیح است و اگر پارتیشن mounted است، آن را ابتدا با sudo umount /dev/sda1 unmount کنید.
نکته
برای بررسی اینکه آیا پارتیشن قبلاً محتوایی داشته یا امضاهای فایلسیستم روی آن موجود است، از sudo file -s /dev/sda1 یا sudo blkid /dev/sda1 استفاده کنید. اگر میخواهید امضاهای قدیمی را حذف کنید از sudo wipefs -n /dev/sda1 برای مشاهده و sudo wipefs -a /dev/sda1 برای پاکسازی استفاده کنید (با احتیاط).
برای ایجاد swap:
نکته
mkswap دادههای روی پارتیشن را بازنویسی میکند؛ قبل از استفاده مطمئن شوید که پارتیشن صحیح انتخاب شده است. برای غیرفعال کردن swap پیشین قبل از تغییر از sudo swapoff -a یا sudo swapoff /dev/sda6 استفاده کنید.
در سیستمهای مدرن بهجای نامهای دستگاهی متغیر (/dev/sdb1) معمولاً از UUID یا LABEL استفاده میشود تا عدم قطعیت در هنگام وصل/جدا شدن دیسکها برطرف شود:
# blkid /dev/sda1
/dev/sda1: UUID="63625ecd-..." TYPE="ext4" PARTUUID="..."
# lsblk -o NAME,UUID,MOUNTPOINT
معرفی فایلسیستمهای مهم¶
- ext4: نسخهٔ فعلی و رایج، پشتیبانی از فایلها و فایلسیستمهای بزرگ
- XFS: مناسب برای بارهای کاری بزرگ و فایلسرورها، journaling
- VFAT / exFAT: مناسب برای تبادل داده با سیستمهای دیگر (مثل Windows)
- btrfs: فایلسیستم مدرن با ویژگیهایی مانند multi-device، subvolumes، و فشردهسازی
نکته
برخی توزیعها ابزارهای xfsprogs یا btrfs-progs را به صورت پیشفرض نصب ندارند — در صورت نیاز آنها را نصب کنید.
هشدار
در مورد فایلسیستمهای خاص چند نکته مهم وجود دارد:
- XFS معمولاً قابل کوچکشدن نیست؛ قبل از ایجاد و تغییر سایز پارتیشنها برنامهریزی کنید.
- عملیات بر روی فایلسیستمهای چنددستگاهی یا ساختارهای subvolume در Btrfs پیچیده است؛ قبل از انجام تغییرات خطرناک، مستندات را بخوانید و پشتیبان بگیرید.
چکلیست عملی¶
- با
lsblkدستگاهها را شناسایی کنید. - با
fdisk/gdisk/partedپارتیشنهای لازم را بسازید/ویرایش کنید. - پارتیشنها را با
mkfsیاmkswapفرمت کنید. - از
blkidیاlsblk -o UUIDبرای بهدست آوردن UUID استفاده کرده و در/etc/fstabبرای mount ثابت قرار دهید.
نکته
پس از افزودن ورودی به /etc/fstab، آن را با sudo systemctl daemon-reload و سپس sudo mount -a تست کنید تا از صحیح بودن سینتکس و UUIDها مطمئن شوید. توجه کنید که mount -a ممکن است تمامی فایلسیستمهای تعریفشده را mount کند؛ اگر نگران پیامدهای آن هستید، ابتدا فقط ورودی جدید را تست کنید یا از findmnt --verify استفاده کنید.
تمرینها¶
- یک دیسک مجازی 4GiB بسازید و با
fdiskدو پارتیشن ایجاد کنید: یکی ext4 با 3GiB و یکی swap با 1GiB. - پارتیشن ext4 را فرمت کرده، UUID آن را پیدا کنید و با استفاده از UUID آن را در
/etc/fstabبهصورت خودکار mount کنید.
خلاصه¶
در این فصل چگونگی ایجاد و مدیریت پارتیشنها و فایلسیستمها را آموختیم؛ ابزارهای مهم شامل fdisk, gdisk, parted, mkfs, mkswap, lsblk و blkid هستند. دانستن تفاوت میان MBR و GPT و استفاده از UUID برای mount پایدار از مهارتهای کلیدی است.
نکات کلیدی برای آزمون
- تفاوت MBR و GPT و محدودیتهای MBR (حداکثر 4 پارتیشن اصلی)
- ابزارهای پارتیشنبندی:
fdisk(MBR),gdisk(GPT),parted(تغییر اندازه و مدیریت پیشرفته) - فرمت کردن پارتیشنها با
mkfs(ext4, xfs, vfat, exfat) و ایجاد swap باmkswap/swapon - استفاده از
lsblkوblkidبرای یافتن دستگاهها و UUIDها و ثبت آنها در/etc/fstab - نکته عملی: از UUID بهجای نامهای دستگاه استفاده کنید تا از تغییر نام دستگاهها جلوگیری شود