آشنایی با ساختار هارد دیسک در لینوکس

هارد دیسک در لینوکس

طراحی ساختار هارد دیسک در لینوکس به نحوه تقسیم‌بندی فضای ذخیره‌سازی و پارتیشن‌بندی آن برای استفاده سیستم عامل و داده‌ها اشاره دارد. این فرآیند شامل پیکربندی پارتیشن‌ها، نوع سیستم فایل، مدیریت حجم‌ها و تعیین اندازه پارتیشن‌ها است تا سیستم بتواند بهینه عمل کند.

مراحل طراحی ساختار هارد دیسک در لینوکس

شناسایی هارد دیسک در لینوکس: قبل از شروع به پارتیشن‌بندی، باید دیسک‌های موجود در سیستم شناسایی شوند. این کار با استفاده از دستور fdisk یا lsblk انجام می‌شود. مثال:

sudo fdisk -l
sudo lsblk

پارتیشن‌بندی هارد دیسک در لینوکس: در این مرحله، دیسک به بخش‌های مختلف (پارتیشن‌ها) تقسیم می‌شود که هر بخش به یکی از کاربردهای خاص مانند نصب سیستم‌عامل، داده‌ها یا فضای swap اختصاص می‌یابد. برای پارتیشن‌بندی از ابزارهایی مانند fdisk، parted یا gparted استفاده می‌شود. مثال کار با fdisk:

sudo fdisk /dev/sda

انواع پارتیشن‌های قابل استفاده در هارد دیسک در لینوکس

در ساختار هارد دیسک در لینوکس، چندین نوع پارتیشن برای استفاده وجود دارد که هر یک کاربرد خاصی دارند. در ادامه به انواع اصلی پارتیشن‌ها در هارد دیسک‌های لینوکسی اشاره می‌کنیم:

پارتیشن اولیه (Primary Partition): هر دیسک می‌تواند حداکثر چهار پارتیشن اولیه داشته باشد. این پارتیشن‌ها به‌طور مستقیم می‌توانند داده‌ها یا سیستم‌عامل را ذخیره کنند. اگر تعداد پارتیشن‌های بیشتری نیاز باشد، معمولاً یک پارتیشن توسعه‌یافته یا Extended ایجاد می‌شود.

پارتیشن توسعه‌یافته (Extended Partition): پارتیشن توسعه‌یافته یا Extended برای ایجاد پارتیشن‌های منطقی استفاده می‌شود. هر دیسک می‌تواند حداکثر یک پارتیشن توسعه‌یافته داشته باشد. این پارتیشن به خودی خود قابل استفاده نیست، اما می‌توان در آن پارتیشن‌های منطقی ایجاد کرد.

پارتیشن منطقی (Logical Partition): پارتیشن‌های منطقی در داخل یک پارتیشن توسعه‌یافته قرار می‌گیرند. می‌توان تعداد بیشتری پارتیشن منطقی (بیش از ۴ عدد) در یک دیسک ایجاد کرد. برای کاربردهایی مانند ذخیره داده‌ها یا نصب سیستم‌عامل می‌توان از این پارتیشن‌ها استفاده کرد.

پارتیشن Swap (Swap Partition): پارتیشن swap به عنوان فضای مجازی حافظه (RAM) در سیستم استفاده می‌شود. هنگامی که حافظه RAM سیستم پر شود، داده‌ها به فضای swap منتقل می‌شوند. حجم پارتیشن swap معمولاً برابر یا کمی بیشتر از حجم RAM سیستم است.

پارتیشن Boot (/boot Partition): این پارتیشن شامل فایل‌های بوت لودر (مانند GRUB) و هسته (Kernel) سیستم عامل است. این پارتیشن معمولاً اندازه‌ای کوچک دارد (حدود 500 مگابایت) و در برخی سیستم‌ها جداگانه تعریف می‌شود تا فرایند بوت آسان‌تر و پایدارتر باشد.

پارتیشن Root (/ Partition): پارتیشن root جایی است که تمام فایل‌ها و دایرکتوری‌های سیستم در آن قرار می‌گیرد. این پارتیشن مهم‌ترین پارتیشن سیستم است و مسیر / را نشان می‌دهد. معمولاً حجم بیشتری به این پارتیشن اختصاص داده می‌شود، چرا که شامل سیستم عامل، برنامه‌ها و داده‌های مهم است.

پارتیشن Home (/home Partition): پارتیشن home برای ذخیره‌سازی فایل‌ها و تنظیمات شخصی کاربران استفاده می‌شود. داشتن یک پارتیشن جداگانه برای /home به مدیریت بهتر و امنیت داده‌های کاربر کمک می‌کند.

پارتیشن EFI (EFI System Partition): این پارتیشن برای سیستم‌هایی که از UEFI (Unified Extensible Firmware Interface) استفاده می‌کنند، لازم است. در سیستم‌های EFI، این پارتیشن به‌عنوان محل ذخیره بوت لودر و داده‌های لازم برای بوت سیستم استفاده می‌شود.
مثالا برای مشاهده پارتیشن‌های فعلی روی دیسک خود، می‌توانید از دستور زیر استفاده کنید:

sudo fdisk -l

انواع فایل سیستم‌های هارد دیسک در لینوکس

سیستم فایل چیست؟

سیستم فایل (File System) روشی است که سیستم‌عامل برای سازماندهی، ذخیره‌سازی و دسترسی به داده‌ها روی دیسک‌ها و دیگر دستگاه‌های ذخیره‌سازی استفاده می‌کند.

به عبارت دیگر، سیستم فایل یک ساختار و قوانینی فراهم می‌کند که به سیستم‌عامل و کاربران اجازه می‌دهد فایل‌ها و دایرکتوری‌ها را به‌طور منطقی و سازماندهی‌شده مدیریت کنند. هر سیستم‌فایل روش‌های متفاوتی برای مدیریت فضا، امنیت، کنترل دسترسی و بازیابی اطلاعات دارد.

انواع سیستم فایل‌های قابل استفاده هارد دیسک در لینوکس

ساختار هارد دیسک در لینوکس از چندین نوع سیستم فایل پشتیبانی می‌شود. برخی از رایج‌ترین سیستم‌فایل‌های مورد استفاده در لینوکس عبارت‌اند از:

ext4 (Fourth Extended File System):
این سیستم فایل نسخه چهارم از خانواده ext است که بسیار پایدار و محبوب است. ویژگی‌های پیشرفته‌ای مانند مدیریت بهتر فضای دیسک و بازیابی سریع‌تر در هنگام خرابی سیستم دارد. اکثر توزیع‌های لینوکس به صورت پیش‌فرض از ext4 استفاده می‌کنند.
ویژگی‌های خاص سیستم فایل ext4:
پشتیبانی از فایل‌های بزرگ تا 16 ترابایت.
ژورنالینگ (Journaled) برای جلوگیری از از دست رفتن داده‌ها در صورت بروز خطا.

XFS:
XFS یک سیستم فایل با کارایی بالا است که به‌ویژه برای حجم‌های بزرگ داده و سیستم‌هایی که نیاز به پردازش زیاد دارند (مانند سرورها) مناسب است. اغلب در سرورهای سازمانی و سیستم‌هایی با نیاز به حجم بالای ذخیره‌سازی استفاده می‌شود.
ویژگی‌های خاص فایل سیستم XFS:
پشتیبانی از مدیریت پویا و حجم‌های بالا.
سریع و موثر در مدیریت ورودی/خروجی (I/O).

btrfs (B-tree File System):
btrfs به عنوان یک سیستم فایل پیشرفته با هدف پشتیبانی از امکاناتی مانند مدیریت حجم‌ها، snapshot، و RAID طراحی شده است. برای سیستم‌های بزرگ یا محیط‌هایی که نیاز به snapshot و مدیریت بهتر فضای دیسک دارند مناسب است.
ویژگی‌های خاص فایل سیستم btrfs:
پشتیبانی از snapshot (برای ذخیره‌سازی وضعیت سیستم در نقاط مختلف زمانی).
قابلیت‌های خودترمیمی و پشتیبانی از دیسک‌های RAID.

FAT32 (File Allocation Table):
FAT32 یک سیستم فایل قدیمی و سازگار که توسط بسیاری از سیستم‌عامل‌ها پشتیبانی می‌شود. بیشتر در دستگاه‌های ذخیره‌سازی متحرک (مانند USB) و کارت‌های حافظه استفاده می‌شود.
ویژگی‌های خاص فایل سیستم FAT32:
محدودیت اندازه فایل (حداکثر 4 گیگابایت).
قابلیت سازگاری با اکثر سیستم‌عامل‌ها (Windows, MacOS, Linux).

exFAT (Extended File Allocation Table):
exFAT یک سیستم فایل بهینه‌سازی‌شده برای دستگاه‌های ذخیره‌سازی فلش است که محدودیت‌های FAT32 را ندارد. در دستگاه‌های فلش USB و کارت‌های SD استفاده می‌شود که نیاز به انتقال فایل‌های بزرگ دارند.
ویژگی‌های خاص فایل سیستم exFAT:
بدون محدودیت در اندازه فایل‌ها.
سریع‌تر از FAT32 و سازگار با اکثر سیستم‌ها.

NTFS (New Technology File System):
NTFS سیستم فایل پیش‌فرض برای سیستم‌های ویندوز است، اما لینوکس نیز از آن پشتیبانی می‌کند. از این فایل سیستم برای دسترسی به درایوهای ویندوزی استفاده می‌شود.
ویژگی‌های خاص فایل سیستم NTFS:
پشتیبانی از فایل‌ها و پارتیشن‌های بسیار بزرگ.
قابلیت‌های امنیتی پیشرفته‌تر نسبت به FAT32.

swap:
این سیستم فایل به طور خاص برای استفاده به عنوان فضای حافظه مجازی در لینوکس طراحی شده است. از این نوع فایل سیستم برای ایجاد فضای swap روی دیسک به عنوان مکمل حافظه RAM استفاده می‌شود.
ویژگی‌های خاص فایل سیستم swap:
ذخیره‌سازی داده‌های موقت هنگامی که حافظه RAM پر شود.

ISO9660:
فایل سیستم ISO9660 سیستم فایل استاندارد برای دیسک‌های CD و DVD است. از این نوع فایل سیستم برای خواندن یا نوشتن داده‌ها روی دیسک‌های نوری استفاده می‌شود.
ویژگی‌های خاص فایل سیستم ISO9660:
سازگاری با انواع سیستم‌عامل‌ها.

برای مشاهده نوع سیستم فایل و پارتیشن‌های موجود روی سیستم، می‌توانید از دستور زیر استفاده کنید:

df -T

این دستور نوع سیستم فایل‌های هر پارتیشن را نمایش می‌دهد.

سیستم فایل‌ها بخش حیاتی از نحوه مدیریت داده‌ها در سیستم‌عامل هستند. انتخاب مناسب سیستم فایل بسته به نیازهای شما، مانند حجم داده‌ها، عملکرد و پشتیبانی از ویژگی‌های خاص مانند snapshot یا RAID، اهمیت دارد.

انواع فایل سیستم مورد نیاز برای نصب سیستم عامل لینوکس

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

پارتیشن ریشه (Root) /
این پارتیشن شامل فایل‌های اصلی سیستم‌عامل و همه دایرکتوری‌ها و فایل‌های سیستمی است. دایرکتوری‌هایی مانند /bin، /etc، /usr، /lib و سایر دایرکتوری‌های ضروری در آن قرار دارند.
بسته به نیاز سیستم، حداقل 20 گیگابایت توصیه می‌شود، اما برای سیستم‌های دسکتاپ و سرورهای بزرگ ممکن است نیاز به فضای بیشتری باشد.

پارتیشن swap
این پارتیشن برای فضای swap یا حافظه مجازی استفاده می‌شود. در صورت پر شدن حافظه RAM، سیستم از این پارتیشن به‌عنوان حافظه کمکی استفاده می‌کند. Swap همچنین هنگام استفاده از قابلیت Hibernate (تعلیق سیستم) به کار می‌رود.
اندازه پیشنهادی این پارتیشن بستگی به مقدار RAM سیستم دارد. به‌طور کلی، اندازه swap برابر با مقدار RAM یا دو برابر آن است، اما این بستگی به نیازهای سیستم دارد. برای سیستم‌هایی با بیش از 8 گیگابایت RAM، معمولاً اندازه swap به‌اندازه RAM یا کمی بیشتر کافی است.

پارتیشن /boot
این پارتیشن شامل فایل‌های ضروری برای بوت شدن سیستم است، مانند کرنل (Kernel) و فایل‌های پیکربندی بوت لودر (Bootloader). داشتن یک پارتیشن جداگانه برای /boot اختیاری است اما می‌تواند مدیریت آن را آسان‌تر کند.
اندازه پیشنهادی این پارتیشن معمولاً بین 500 مگابایت تا 1 گیگابایت کافی است.
پارتیشن‌های اضافی (اختیاری)

پارتیشن /home
کاربرد: پارتیشن /home شامل فایل‌های شخصی کاربران است. اگر می‌خواهید داده‌های کاربران مانند اسناد، عکس‌ها و پیکربندی‌ها جدا از سیستم‌عامل ذخیره شوند، ایجاد پارتیشن جداگانه برای /home توصیه می‌شود.
اندازه پیشنهادی: بسته به تعداد کاربران و حجم داده‌های مورد نیاز، می‌تواند از چند گیگابایت تا چند ترابایت باشد.

پارتیشن /var
کاربرد پارتیشن /var برای ذخیره فایل‌های متغیر (Variable) مانند فایل‌های لاگ، پایگاه داده‌ها، و فایل‌های موقت که اندازه آن‌ها تغییر می‌کند استفاده می‌شود است. در سیستم‌های سرور که داده‌های زیادی روی /var نوشته می‌شود (مانند وب‌سرور، دیتابیس)، داشتن یک پارتیشن جداگانه برای /var مفید است.
اندازه پیشنهادی این پارتیشن بسته به نوع استفاده، معمولاً از 2 گیگابایت تا 10 گیگابایت کافی است.

پارتیشن /tmp
کاربرد دایرکتوری /tmp برای ذخیره فایل‌های موقتی که توسط برنامه‌ها تولید می‌شوند است. برخی سیستم‌ها ممکن است پارتیشن جداگانه برای آن در نظر بگیرند تا از پر شدن سیستم‌فایل اصلی جلوگیری شود.
اندازه پیشنهادی برای این پارتیشن بین 1 تا 2 گیگابایت است.

دستورات ساخت سیستم فایل و مونت پارتیشن

دستور ساخت سیستم فایل ext4:

sudo mkfs.ext4 /dev/sda1

ایجاد فضای Swap: فضای swap برای استفاده در زمان‌هایی که حافظه اصلی (RAM) پر شده باشد، به کار می‌رود. ایجاد یک پارتیشن swap یا استفاده از فایل swap رایج است. مثال ساخت پارتیشن swap:

sudo mkswap /dev/sda2
sudo swapon /dev/sda2

نصب سیستم فایل‌ها و مونت کردن پارتیشن‌ها: پس از پارتیشن‌بندی و فرمت کردن پارتیشن‌ها، نیاز است که آنها در مسیرهای مختلف سیستم فایل (مانند /home، /var، /boot، و غیره) مونت شوند. مثال مونت کردن پارتیشن:

sudo mount /dev/sda1 /mnt

مراحل اضافه کردن و پارتیشن بندی یک هارد دیسک در لینوکس

برای استفاده از یک هارد دیسک جدید در سیستم لینوکس، ابتدا باید هارد را شناسایی، پارتیشن‌بندی، فرمت و سپس به سیستم متصل (mount) کنید. مراحل این کار به همراه دستورات مربوطه به شرح زیر است:

شناسایی هارد دیسک جدید
برای اینکه ببینید هارد دیسک جدید در سیستم شناسایی شده است یا خیر، از دستور زیر استفاده کنید:

lsblk

این دستور لیستی از دیسک‌ها و پارتیشن‌های موجود در سیستم را نمایش می‌دهد. نام هارد دیسک معمولاً به صورت sdX (مثلاً sdb یا sdc) نمایش داده می‌شود. همچنین می‌توانید از دستور زیر برای مشاهده جزئیات بیشتری استفاده کنید:

fdisk -l

پارتیشن‌بندی دیسک با استفاده از fdisk
برای پارتیشن‌بندی یک هارد دیسک جدید از ابزار fdisk استفاده می‌کنید. فرض کنید هارد دیسک جدید به‌عنوان /dev/sdb شناسایی شده است. برای شروع پارتیشن‌بندی دستور زیر را وارد کنید:

sudo fdisk /dev/sdb

در اینجا، تعدادی از دستورات مهم fdisk را مشاهده می‌کنید:

n : ایجاد یک پارتیشن جدید (new partition)
p : نمایش جدول پارتیشن‌های فعلی (print partition table)
d : حذف پارتیشن‌ها (delete partition)
w : نوشتن تغییرات و خروج (write changes)
q : خروج بدون ذخیره تغییرات (quit)
برای ایجاد یک پارتیشن جدید مراحل زیر را دنبال کنید:

پس از ورود به fdisk، کلید n را برای ایجاد یک پارتیشن جدید بزنید.
سپس نوع پارتیشن (اولیه یا توسعه یافته) و شماره پارتیشن را انتخاب کنید.
اندازه پارتیشن را مشخص کنید (برای استفاده از کل فضای موجود فقط کلید Enter را بزنید).
با زدن w تغییرات را ذخیره کرده و از برنامه خارج شوید.

فرمت کردن پارتیشن
بعد از پارتیشن‌بندی هارد دیسک در لینوکس، نیاز به فرمت آن پارتیشن‌ها دارید. فرض کنید پارتیشن جدیدی به نام /dev/sdb1 ساخته شده است. برای فرمت کردن این پارتیشن، می‌توانید از یکی از فرمت‌های رایج مانند ext4 استفاده کنید:

sudo mkfs.ext4 /dev/sdb1

در اینجا از سیستم فایل ext4 استفاده می‌کنیم، اما بسته به نیاز شما می‌توانید از فرمت‌های دیگر مثل xfs یا btrfs استفاده کنید.

اتصال (Mount) پارتیشن به سیستم
حالا که پارتیشن فرمت شده است، باید آن را به سیستم متصل کنید. ابتدا دایرکتوری موردنظر برای اتصال را ایجاد کنید (مثلاً /mnt/mydisk):

sudo mkdir /mnt/mydisk

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

sudo mount /dev/sdb1 /mnt/mydisk

افزودن به فایل /etc/fstab برای اتصال دائمی
برای اینکه پارتیشن در هر بار بوت به صورت خودکار متصل شود، باید آن را به فایل /etc/fstab اضافه کنید. ابتدا UUID پارتیشن را پیدا کنید:

sudo blkid /dev/sdb1

سپس با استفاده از یک ویرایشگر متن فایل /etc/fstab را باز کنید و ورودی زیر را به آن اضافه کنید:

UUID=your-partition-uuid /mnt/mydisk ext4 defaults 0 2

به جای your-partition-uuid، UUID پارتیشن را که از دستور blkid گرفتید وارد کنید.

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

df -h

این دستور اطلاعات مربوط به فضای دیسک را نمایش می‌دهد و نشان می‌دهد که آیا پارتیشن به درستی متصل شده است یا نه.

بخاطر داشته بایشد اگر می‌خواهید پارتیشن را از سیستم جدا کنید، از دستور umount استفاده کنید:

sudo umount /mnt/mydisk

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