این راهنما به شما کمک میکند تا با ساختار دیسک و پارتیشنها در FreeBSD آشنا شوید، تفاوتهای آن با لینوکس را درک کنید، فایل سیستمهای رایج را بشناسید و با ابزارهای پارتیشنبندی و مدیریت دیسک در FreeBSD کار کنید. در نهایت، یک سناریوی آزمایشی برای تمرین عملی ارائه خواهیم داد.
تفاوتهای ساختار دیسک و پارتیشن در
FreeBSD و لینوکس 🐧🆚🦁
قبل از شروع، خوب است بدانیم که FreeBSD و لینوکس در نحوه مدیریت دیسکها و پارتیشنها تفاوتهای ظریفی دارند که درک آنها به شما کمک میکند تا با دید بازتری عمل کنید.
- نامگذاری دستگاهها:
- FreeBSD: از نامگذاری مانند
ada0(برای دیسکهای ATA/SATA)،nvme0(برای NVMe SSD) وda0(برای دیسکهای SCSI/USB) استفاده میکند. پارتیشنها با اعداد بعد از نام دیسک مشخص میشوند، مثلاًada0s1برای پارتیشن اول دیسکada0. - لینوکس: معمولاً از نامگذاری مانند
sda(برای دیسکهای SATA)،nvme0n1(برای NVMe SSD) وsdb(برای دیسک دوم) استفاده میکند. پارتیشنها با اعداد بعد از نام دیسک مشخص میشوند، مثلاًsda1برای پارتیشن اول دیسکsda.
- FreeBSD: از نامگذاری مانند
- ساختار پارتیشنبندی:
- FreeBSD: از طرحبندی سنتی MBR (Master Boot Record) و GPT (GUID Partition Table) پشتیبانی میکند. همچنین، FreeBSD از مفهوم “Slice” (که در واقع یک پارتیشن اصلی است) و “Partition” (که زیرمجموعه Slice است) استفاده میکند. این ساختار کمی متفاوت از لینوکس است که مستقیماً پارتیشنها را در MBR یا GPT تعریف میکند.
- لینوکس: مستقیماً پارتیشنها را در MBR یا GPT تعریف میکند و نیازی به مفهوم “Slice” ندارد.
- فایل سیستمها:
- FreeBSD: فایل سیستم پیشفرض و قدرتمند UFS (Unix File System) را دارد که بسیار پایدار و قابل اعتماد است. همچنین از ZFS (Zettabyte File System) که یک فایل سیستم بسیار پیشرفته با قابلیتهای فراوان مانند مدیریت حجم، اسنپشات، و یکپارچگی داده است، به صورت گسترده پشتیبانی میکند.
- لینوکس: فایل سیستم پیشفرض معمولاً ext4 است و از فایل سیستمهای متنوع دیگری مانند XFS، Btrfs و ZFS (که البته در لینوکس نیاز به نصب ماژول جداگانه دارد) پشتیبانی میکند.
ساختار دیسک و پارتیشن در FreeBSD 🗄️
در FreeBSD، درک ساختار دیسک و پارتیشنها کلیدی است.
1. دیسکها (Disks)
دیسکها به صورت دستگاههایی در مسیر /dev نمایش داده میشوند. رایجترین نامگذاریها عبارتند از:
adaX: دیسکهای ATA/SATA (مثلاًada0،ada1)nvmeX: دیسکهای NVMe SSD (مثلاًnvme0،nvme1)daX: دیسکهای SCSI، USB یا کارت حافظه (مثلاًda0،da1)
2. Slice ها (Slices)
در طرحبندیهای قدیمیتر (مانند MBR)، دیسکها به بخشهای اصلی به نام “Slice” تقسیم میشوند. هر دیسک میتواند تا 4 Slice اصلی داشته باشد. این Slice ها معمولاً با s بعد از نام دیسک و سپس یک عدد مشخص میشوند.
ada0s1: اولین Slice از دیسکada0ada0s2: دومین Slice از دیسکada0- …
ada0s4: چهارمین Slice از دیسکada0
اگر از پارتیشنهای “Extended” در MBR استفاده شود، میتوان Slice های بیشتری داشت که به صورت منطقی تعریف میشوند.
3. پارتیشنها (Partitions)
هر Slice میتواند به پارتیشنهای کوچکتری تقسیم شود. این پارتیشنها نیز با حرف s و سپس یک عدد بعد از نام Slice مشخص میشوند.
ada0s1a: اولین پارتیشن در Slice اول دیسکada0ada0s1b: دومین پارتیشن در Slice اول دیسکada0- …
ada0s1h: هشتمین پارتیشن در Slice اول دیسکada0
نکته مهم: در طرحبندی GPT، مفهوم Slice کمتر کاربرد دارد و مستقیماً پارتیشنها تعریف میشوند، که شبیه به لینوکس است. اما همچنان نامگذاری دستگاهها (مثل ada0p1 برای پارتیشن اول در GPT) رایج است.
4. فایل سیستمها در FreeBSD 🌲
FreeBSD از چندین فایل سیستم پشتیبانی میکند که هر کدام ویژگیهای خاص خود را دارند:
- UFS (Unix File System):
- ویژگیها: پایدار، قابل اعتماد، سریع، پشتیبانی از Jounaling (برای بازیابی سریعتر پس از قطعی برق).
- کاربرد: فایل سیستم سنتی و پرکاربرد در FreeBSD برای پارتیشنهای سیستم،
/homeو سایر بخشها.
- ZFS (Zettabyte File System):
- ویژگیها: بسیار پیشرفته، قابلیتهای مدیریت حجم (Volume Management)، اسنپشات (Snapshot)، کلونینگ (Cloning)، فشردهسازی (Compression)، بررسی یکپارچگی داده (Data Integrity) و RAID-Z.
- کاربرد: ایدهآل برای سرورها، ذخیرهسازیهای بزرگ، و مواردی که نیاز به قابلیتهای پیشرفته مدیریت داده و اطمینان بالا دارند. ZFS میتواند کل سیستم عامل را در خود جای دهد.
- ** lainnya:** FreeBSD از فایل سیستمهای دیگری مانند FAT32 (برای سازگاری با ویندوز) و NTFS نیز پشتیبانی میکند، اما UFS و ZFS گزینههای اصلی برای سیستم عامل هستند.
ابزارهای پارتیشنبندی و مدیریت دیسک در FreeBSD 🛠️
FreeBSD ابزارهای قدرتمندی برای مدیریت دیسک و پارتیشنها ارائه میدهد:
1. gpart (GPT Partitioning Tool)
این ابزار اصلی و مدرن برای مدیریت پارتیشنها در FreeBSD است و از طرحبندیهای MBR و GPT پشتیبانی میکند.
- مشاهده پارتیشنها: bash
sudo gpart show
# یا برای دیسک خاص:
sudo gpart show ada0
این دستور ساختار پارتیشنبندی دیسک را به صورت گرافیکی نمایش میدهد.
ایجاد پارتیشن:
bash
# ایجاد پارتیشن GPT روی دیسک ada0
sudo gpart create -s gpt ada0
# ایجاد پارتیشن UFS روی دیسک ada0، پارتیشن اول (p1)
sudo gpart add -t freebsd-ufs -l uservol -a 4k ada0
# ایجاد پارتیشن ZFS روی دیسک ada0، پارتیشن دوم (p2)
sudo gpart add -t freebsd-zfs -l zfsdata ada0
-s gpt: طرحبندی GPT را مشخص میکند.-t type: نوع پارتیشن را مشخص میکند (مثلاًfreebsd-ufs,freebsd-zfs,freebsd-swap).-l label: یک برچسب (Label) برای پارتیشن تعریف میکند که کار با آن را آسانتر میکند.-a 4k: Alignment را روی 4 کیلوبایت تنظیم میکند که برای عملکرد بهتر دیسکهای مدرن توصیه میشود.
حذف پارتیشن:
bash
# حذف پارتیشن دوم (p2) از دیسک ada0 sudo gpart delete -i 2 ada0-i index: شماره ایندکس پارتیشنی که میخواهید حذف کنید.
2. bsdlabel (BSD Disklabel Editor)
این ابزار برای ویرایش دیسکلیبلهای قدیمیتر BSD (که هنوز در UFS استفاده میشود) به کار میرود. gpart جایگزین مدرن آن است، اما ممکن است در سیستمهای قدیمیتر یا برای کارهای خاص همچنان کاربرد داشته باشد.
3. newfs (Create UFS File System)
برای فرمت کردن یک پارتیشن با فایل سیستم UFS استفاده میشود.
bash
# فرمت کردن پارتیشن ada0p1 با فایل سیستم UFS
sudo newfs /dev/ada0p1
4. zpool و zfs (ZFS Management Tools)
این ابزارها برای مدیریت فایل سیستم ZFS استفاده میشوند.
- ایجاد Pool ZFS: bash
# ایجاد یک Pool ZFS به نام zroot با استفاده از پارتیشن ada0p2
sudo zpool create zroot /dev/ada0p2
ایجاد Dataset در ZFS:
bash
# ایجاد یک Dataset جدید به نام data در Pool zroot sudo zfs create zroot/data
5. mount و umount
برای اتصال (Mount) و جدا کردن (Unmount) فایل سیستمها به کار میروند.
bash
# اتصال فایل سیستم UFS پارتیشن ada0p1 به مسیر /mnt/mydata
sudo mount /dev/ada0p1 /mnt/mydata
# جدا کردن فایل سیستم
sudo umount /mnt/mydata
سناریوی آزمایشی: پارتیشنبندی یک دیسک جدید 🧪
فرض کنید یک دیسک جدید با نام ada1 به سیستم FreeBSD شما اضافه شده است و میخواهید آن را پارتیشنبندی کرده و برای ذخیرهسازی داده استفاده کنید. ما از gpart برای ایجاد پارتیشنها و newfs برای فرمت کردن با UFS استفاده میکنیم.
مراحل:
- شناسایی دیسک: ابتدا دیسک جدید را شناسایی کنید. معمولاً دیسکهای جدید با نامهای
adaXیاdaXظاهر میشوند. bash
sudo gpart show
فرض میکنیم دیسک جدید شما ada1 است. هشدار: مراحل بعدی دادههای روی دیسک را پاک میکنند. مطمئن شوید دیسک درست را انتخاب کردهاید!
ایجاد طرحبندی پارتیشن (GPT): بهتر است از طرحبندی مدرن GPT استفاده کنیم.
bash
sudo gpart create -s gpt ada1
با اجرای مجدد sudo gpart show ada1 باید ساختار خالی GPT را ببینید.
ایجاد پارتیشن برای دادهها: یک پارتیشن بزرگ برای دادهها ایجاد میکنیم. فرض میکنیم میخواهیم تمام فضای دیسک را به یک پارتیشن داده اختصاص دهیم.
bash
# ایجاد یک پارتیشن با نوع freebsd-ufs و برچسب 'mydata'
# -a 4k برای اطمینان از همترازی مناسب
sudo gpart add -t freebsd-ufs -l mydata -a 4k ada1
اکنون با sudo gpart show ada1 باید یک پارتیشن با نام ada1p1 ببینید.
فرمت کردن پارتیشن با UFS: پارتیشن جدید را با فایل سیستم UFS فرمت میکنیم.
bash
sudo newfs -U /dev/ada1p1
-U: فعال کردن Jounaling برای UFS.
ایجاد نقطه اتصال (Mount Point): یک دایرکتوری برای اتصال فایل سیستم ایجاد میکنیم.
bash
sudo mkdir /mnt/mydata
اتصال فایل سیستم (Mount): پارتیشن فرمت شده را به دایرکتوری ایجاد شده متصل میکنیم.
bash
sudo mount /dev/ada1p1 /mnt/mydata
تست و بررسی: حالا میتوانید به مسیر /mnt/mydata بروید و فایلها را در آن ذخیره کنید.
bash
cd /mnt/mydata
ls -la
# یک فایل تستی ایجاد کنید
echo "This is a test file." > test.txt
ls -la
تنظیم اتصال خودکار هنگام بوت (fstab): برای اینکه پارتیشن بعد از هر بار راهاندازی مجدد سیستم به صورت خودکار متصل شود، باید آن را به فایل /etc/fstab اضافه کنید. فایل /etc/fstab را با یک ویرایشگر متن باز کنید (مثلاً ee یا vi):
bash
sudo ee /etc/fstab
خط زیر را به انتهای فایل اضافه کنید:
/dev/ada1p1 /mnt/mydata ufs rw 2 2
/dev/ada1p1: دستگاه پارتیشن./mnt/mydata: نقطه اتصال.ufs: نوع فایل سیستم.rw: حالت خواندن و نوشتن (Read-Write).2 2: پارامترهای dump و fsck (معمولاً 2 برای هر دو).
نکته: استفاده از برچسب پارتیشن (-l mydata) در gpart add و سپس استفاده از LABEL=mydata در fstab روش مدرنتر و مقاومتری در برابر تغییر نام دستگاهها است. مثلاً خط fstab میتواند به این شکل باشد:
LABEL=mydata /mnt/mydata ufs rw 2 2
امیدوارم این راهنما برای شما مفید بوده باشد!
