پرش به محتویات

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 برای دستگاه‌های سنتی با MBR
  • gdisk برای دستگاه‌های GPT
  • parted برای کارهای پیشرفته‌تر (مثلاً تغییر اندازه پارتیشن‌ها)

نمونهٔ استفاده از 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 دوبار اطمینان حاصل کنید که دستگاه هدف صحیح است؛ نوشتن جدول پارتیشن روی دیسک اشتباه می‌تواند منجر به از بین رفتن کامل داده‌ها شود. پیشنهاد می‌شود قبل از اعمال تغییرات از جدول پارتیشن پشتیبان تهیه کنید:

# پشتیبان گرفتن از جدول پارتیشن با sfdisk
sudo sfdisk --dump /dev/sda > sda-partition-table.sfdisk
# برای GPT می‌توانید از sgdisk استفاده کنید:
sudo sgdisk --backup=table-backup.gpt /dev/sda

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.ext4 /dev/sda1
mke2fs 1.46.2 ( ... )
Creating filesystem with ...

هشدار

اجرای 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 /dev/sda6
# swapon /dev/sda6

نکته

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 پیچیده است؛ قبل از انجام تغییرات خطرناک، مستندات را بخوانید و پشتیبان بگیرید.

چک‌لیست عملی

  1. با lsblk دستگاه‌ها را شناسایی کنید.
  2. با fdisk / gdisk / parted پارتیشن‌های لازم را بسازید/ویرایش کنید.
  3. پارتیشن‌ها را با mkfs یا mkswap فرمت کنید.
  4. از blkid یا lsblk -o UUID برای به‌دست آوردن UUID استفاده کرده و در /etc/fstab برای mount ثابت قرار دهید.

نکته

پس از افزودن ورودی به /etc/fstab، آن را با sudo systemctl daemon-reload و سپس sudo mount -a تست کنید تا از صحیح بودن سینتکس و UUIDها مطمئن شوید. توجه کنید که mount -a ممکن است تمامی فایل‌سیستم‌های تعریف‌شده را mount کند؛ اگر نگران پیامدهای آن هستید، ابتدا فقط ورودی جدید را تست کنید یا از findmnt --verify استفاده کنید.


تمرین‌ها

  1. یک دیسک مجازی 4GiB بسازید و با fdisk دو پارتیشن ایجاد کنید: یکی ext4 با 3GiB و یکی swap با 1GiB.
  2. پارتیشن 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 به‌جای نام‌های دستگاه استفاده کنید تا از تغییر نام دستگاه‌ها جلوگیری شود