網頁

2009年5月17日 星期日

Ubuntu 成功由 ext3 轉換至 ext4

升級 Ubuntu 9.04 後可以使用 ext4,且 ext4 的效能也比 ext3 佳。愛嚐鮮的我自然想試試:
只限 Ubuntu 9.04 的用戶,Fedora 10 的處理方式不同,之後再說明。

先確認 e2fsprogs version ≥ 1.41; grub version ≥ 0.97

建立新的檔案系統最單純
# mke2fs -t ext4 /dev/DEV 或
# mkfs.ext4 /dev/DEV

使用新的 ext4 檔案系統
# mount -t ext4 /dev/DEV /wherever
或是加在您的 /etc/fstab 中
/dev/DEV /wherever ext4 relatime,errors=remount-ro 0 1

與開機無關的非系統檔案系統要由 ext3 改成 ext4 很簡單:
由 ext2 升級成 ext3
# tune2fs -j /dev/DEV

由 ext3 升級成 ext4,之後就無法以 ext3 mount
# tune2fs -O extents,uninit_bg,dir_index /dev/DEV

執行 e2fsck 或 fsck.ext4 完成檔案系統修改
# e2fsck -fD /dev/DEV


那使用中的系統檔案系統,/boot 還可以 umount 再升級,但 / 或是 /usr 一開機就 mount 要如何升級呢?

確認要修改的檔案系統為何?如本例中的 root device (/) 為 /dev/sda4
# df -h

檔案系統 大小 已用 可用 已用% 掛載點
/dev/sda4 10G 5.5G 4.1G 58% /


我要修改使用中的 root volume (/dev/sda4)
# tune2fs -O extents,uninit_bg,dir_index /dev/sda4
tune2fs 1.41.4 (27-Jan-2009)

Please run e2fsck on the filesystem.


修改 /etc/fstab,將 ext3 改成 ext4
# /etc/fstab: static file system information.
## proc
/proc proc defaults 0 0
UUID=af2c2831-709e-4594-893e-62a3b40346f5 / ext4 relatime,errors=remount-ro 0 1
UUID=01e55776-967b-443a-a5ae-f95896b2b1eb none swap sw 0 0


你可能想直接 fsck.ext4 完成升級,但對未 umount 的檔案系統直接 fsck 可能造成檔案系統損壞…,我想沒人願意這麼做!當然要選 No,但要如何處理呢?
# fsck.ext4 -fD /dev/sda4 或 e2fsck -fD /dev/sda4
e2fsck 1.41.4 (27-Jan-2009)
/dev/sda4 is mounted.

WARNING!!! Running e2fsck on a mounted filesystem may cause SEVERE filesystem damage.
Do you really want to continue (y/n)? no

check aborted.

# init 1
進入 singel user mode 就會出現 recovery menu 選 fsck,之後全選 yes 即可。

重要!
雖我並未進行以下步驟就成功 reboot 且 系統中 /boot 也放在 / 中,也是 ext4 中…
但若您的系統中有重要資料,還是建議您小心點,以下步驟在 reboot 前要先檢查一下。
另外,Fedora 用戶,在處理上有些不同,請別這樣就 reboot 不然不能開機的機會很大!

1 檢查檔案系統的 UUID,並確認 /etc/fstab 及 /boot/grub/menu.lst 中 UUID 是否一致。
# blkid /dev/DEV
UUID=xxxx / ext4 relatime,errors=remount-ro 0 1

有時需要再 grub-install 一次確保 boot loader grub 可以正確載入。
2 確認 grub 是否正確設定及安裝
# grub-install /dev/DEV –root-directory=/your-root-dir –recheck
(再 recovery mode 的人可以選 install grub 還是 grub 就可以)
此外,有文章建議在 grub.conf 中 kernel 項的最後加上 rootfstype=ext4 不過個人發現並不需要。

待完成檢查及修改後,再 reboot 就可以使用 ext4。我的 grub 也沒有問題,可以正確開機。

參考:
# Ext4 Howto
# Upgrade Ubuntu 8.10 to Ubuntu 9.04 and ext3 to ext4 in 10 Minutes
# 无损转换ext3到ext4,with Ubuntu Jaunty 9.04

沒有留言: