۱۳۸۷ دی ۱۲, پنجشنبه

مهاجرت به Ext4

همونطور که احتمالا میدونید لینوس به عنوان هدیه کریسمس، کرنل ۲.۶.۲۸ رو منتشر کرد. در بین امکانات جدید اضافه شده، پایدار شدن فایل سیستم سازگار با قبل و جانشین Ext3، یعنی Ext4 برای ما کاربران معمولی شاید مهمترین اتفاق باشه.

از مهمترین خصوصیات Ext4 میشه به فایل‌سیستم/فایلهای بزرگتر، تخصیص متاخر (delayed allocation)، تطبیق سریعتر فایل‌سیستم (faster fsck)، قابلیت تخصیص چند بلوکی (multiblock allocation) و ... اشاره کرد.

روزی (در واقع شبی) که من لپ‌تاپم رو خریدم و اومدم خونه که جنتو روش نصب کنم، دو تا اشتباه بزرگ (باور کنید به‌خاطر خواب‌آلودگی بود!) کردم:
  • home رو جدا نکردم
  • درایوها رو Ext3 فرمت کردم (XFS رو ترجیح میدادم)
بعد از انتشار کرنل جدید، تصمیم گرفتم که هر دوی این اشتباهات رو جبران کنم (fsck های طولانی روی لپ‌تاپ واقعا اعصاب خورد کنه)، اگر که شما هم این اشتباهات رو انجام دادید و می‌خواهید که جبران کنید، شاید بد نباشه که بدونید من چجوری این کار رو انجام دادم:
اول از همه شما مطمئنا باید کرنل خودتون رو به ۲.۶.۲۸ ارتقا بدید (هر چند که پشتیبانی از Ext4 در کرنل‌های قدیمی‌تر هم وجود دارد، اما Ext4 در ۲.۶.۲۸ پایدار شد).

علاوه بر اینکه باید Ext4 رو در کرنل جدید فعال کنید، باید CONFIG_LSF رو هم فعال کنید، هر چند که در حالت عادی روی هارددرایو یک لپ‌‌تاپ به چنین چیزی احتیاج ندارید، اما چون پشتیبانی از فایلهای بزرگ یک خصیصه مهم در Ext4 هست، فعال نبودنش باعث میشه که نتونید درایو رو mount کنید.

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

شما به یک نسخه جدید (مثلا ۱.۴۱.۳) از e2fsprogs برای فرمت کردن به Ext4 احتیاج دارید.

mkfs.ext4 /dev/XXX

(XXX رو با اسم درایو جدیدی که ساختید عوض کنید)

یک شاخه جدید بسازید و درایو جدید رو اونجا mount کنید:

mkdir /mnt/new-home
mount -t ext4 /dev/XXX /mnt/new-home

حالا وقتشه که بریم در حالت تک‌کاربر و محتویات home قبلی رو منتقل کنیم به درایو جدید:

init 1
cd /home
cp -ax * /mnt/new-home
cd /
mv /home /home.old
mount /dev/XXX /home

حالا با زدن Ctrl-D از حالت تک‌کاربر خارج بشید و ... تموم شد!

برای اینکه بعد از هر ریبوت مجبور نباشید home رو mount کنید، این خط رو به فایل fstab اضافه کنید:

/dev/XXX /home ext4 defaults 0 2

اگر همه چیز مرتب بود، می‌تونید با خیال راحت home.old/ رو پاک کنید.

اگر از نتیجه راضی هستید، میتونید / رو هم به Ext4 تبدیل کنید، اما یادتون نره که چنین کاری رو با boot/ نکنید، چون هیچ نسخه منتشرشده‌ایی از GRUB وجود نداره که از Ext4 پشتیبانی کنه‌ (هرچند که اگر هم که وجود داشت، دلیلی برای اینکار وجود نداره، چون هیچ چیز عایدتون نخواهد شد!)

۱ نظر: