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

104.2 - حفظ یکپارچگی فایل‌سیستم‌ها

اهداف یادگیری

در این درس با موارد زیر آشنا می‌شوید:

  • بررسی و تأیید سلامت فایل‌سیستم‌ها
  • پایش فضای دیسک و تعداد inodeها
  • تعمیر مشکلات سادهٔ فایل‌سیستم

کلیدواژه‌ها

du, df, fsck, e2fsck, mke2fs, tune2fs, xfs_repair, xfs_fsr, xfs_db, blkid, lsblk


اندازه‌گیری مصرف فضا و اینودها (du & df)

برای فهمیدن میزان استفاده از فضای دیسک و تعداد inode‌ باقی‌مانده از df و du استفاده کنید.

مثال df با نمایش نوع فایل‌سیستم و اعداد خوانا:

$ df -TH
Filesystem        Type      Size  Used Avail Use% Mounted on
/dev/sda2         ext4       23G   15G  7.7G  65% /

برای دیدن وضعیت inodeها:

$ df -i
Filesystem          Inodes  IUsed    IFree IUse% Mounted on
/dev/sda2          1531904 458616  1073288   30% /

du برای دیدن میزان استفادهٔ هر دایرکتوری است؛ سوئیچ‌های مفید: -h, -H, -c, --max-depth و -s.


بررسی و تعمیر فایل‌سیستم (fsck و e2fsck)

ابزار کلی برای بررسی و تعمیر فایل‌سیستم‌ها fsck است؛ این فرمان نقش front-end برای ابزارهای مخصوص هر نوع فایل‌سیستم را دارد (مثلاً e2fsck برای ext⅔/4, fsck.vfat برای fat/vfat).

نمونهٔ خطا و راهنمایی (در صورت خراب بودن superblock):

$ fsck /dev/sdb
ext2fs_open2: Bad magic number in super-block
fsck.ext2: Superblock invalid, trying backup blocks...

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

e2fsck -b 8193 /dev/sdb

هشدار

هرگز fsck را روی فایل‌سیستمِ mounted اجرا نکنید — این کار می‌تواند سبب خرابی بیشتر داده‌ها شود. ابتدا پارتیشن را unmount کنید یا از live/rescue environment استفاده کنید.

نکته

برای بررسی بدون اعمال تغییرات از fsck -N (dry-run) استفاده کنید تا ببینید چه عملیاتی قرار است انجام شود و از گزینه -n یا -y هنگام اجرا با دقت استفاده شود.


e2fsck، mke2fs و tune2fs (ext family)

e2fsck مخصوص خانوادهٔ ext است؛ به‌طور کلی نباید روی فایل‌سیستم mounted اجرا شود مگر با -n.

گزینه‌های مفید: - -n : فقط گزارش (no changes) - -y : پاسخ مثبت خودکار به همهٔ سوالات - -p : تعمیر اتوماتیک اگر امن باشد

mke2fs برای ساخت فایل‌سیستم ext است و tune2fs برای نمایش و تنظیم پارامترها؛ مثال نمایش تنظیمات:

$ sudo tune2fs -l /dev/sda2
Filesystem UUID:          1651a94e-... 
Filesystem state:         clean
Mount count:              32
Maximum mount count:      -1
Last checked:             Mon Dec  1 10:21:42 2014
Check interval:           0 (<none>)

ابزارهای XFS

برای XFS از ابزارهای xfs_info, xfs_repair, xfs_fsr, xfs_admin و xfs_db استفاده می‌شود. توجه کنید که xfs_repair باید بر روی فایل‌سیستم unmounted اجرا شود.

نکته

بعضی توزیع‌ها پکیج‌های xfsprogs را به‌صورت پیش‌فرض ندارند — برای استفاده از ابزارهای XFS آنها را نصب کنید.


سوپر‌بلاک‌ها و پشتیبان‌ها

سوپر‌بلاک شامل متادیتای اصلی فایل‌سیستم است و معمولاً در چند مکان پشتیبان‌گیری می‌شود. لیست مکان‌های سوپر‌بلاک را می‌توان با mke2fs -n /dev/sdX مشاهده کرد.


چک‌لیست عملی

  1. با lsblk و blkid دستگاه و UUIDها را شناسایی کنید.
  2. اگر باید فایل‌سیستمی را بررسی کنید، ابتدا آن را unmount کنید (یا در محیط live بوت کنید).
  3. با fsck -N جراحی مورد انتظار را پیش‌نمایش کنید، سپس fsck یا e2fsck را اجرا کنید.
  4. برای XFS از xfs_repair (فایل‌سیستم باید unmounted باشد) و برای defragment از xfs_fsr استفاده کنید.
  5. پس از تعمیر، با tune2fs -l و mount وضعیت را بررسی کنید؛ تغییرات را در /etc/fstab با UUID ثبت کنید.

تمرین‌ها

  1. با df -i بررسی کنید که آیا فایل‌سیستم ریشه inode‌اش پر نشده است یا خیر.
  2. یک پارتیشن ext تست بسازید (با فایل loop یا دیسک مجازی)، با mke2fs بسازید، سپس tune2fs -l و e2fsck -n را روی آن اجرا کنید.

خلاصه

در این درس یاد گرفتیم چگونه مصرف فضا و inodeها را بررسی کنیم، فایل‌سیستم‌ها را با fsck/e2fsck بررسی و تعمیر کنیم، و ابزارهای مخصوص XFS و ext را بشناسیم. همیشه قبل از اقدام به تعمیر از خاموش بودن mount و داشتن پشتیبان اطمینان حاصل کنید.

نکات کلیدی برای آزمون

  • تفاوت du و df و کاربرد پرکاربرد df -i برای مشاهدهٔ inodeها
  • fsck به عنوان front-end و e2fsck برای ext⅔/4؛ استفاده از -A در بوت/فایل fstab و -N برای پیش‌نمایش
  • هرگز fsck را روی فایل‌سیستم mounted اجرا نکنید؛ از umount یا rescue/live استفاده کنید
  • روش استفاده از superblockهای پشتیبان (e2fsck -b <block>) هنگام خراب شدن superblock
  • ابزارهای XFS: xfs_info, xfs_repair (unmounted), xfs_fsr برای یکپارچه‌سازی
  • tune2fs -l اطلاعات مهمی (mount count, last checked, check interval) را نمایش می‌دهد