[Ubuntu][btrfs] Ubuntu 13.10環境でファイルシステムをext4からbtrfsに変換する方法。

Ubuntu
How To Convert An ext3/ext4 Root File System To btrfs On Ubuntu 12.10
How To Convert An ext3/ext4 Root File System To btrfs On Ubuntu 12.10 ext3 and ext4 file systems can be converted to btr...
Btrfs - Wikipedia

ZFSの影響を受けて作られたというファイルシステム、btrfsですがSSDへの最適化などの機能も含まれていることから少し使いたくなったので、現環境のext4から変換してみることにしました。

検証環境:

lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:  Ubuntu 13.10
Release:    13.10
Codename:  saucy

Linux diana 3.13.6 #1 SMP Sat Mar 8 19:09:36 JST 2014 x86_64 x86_64 x86_64 GNU/Linux

手順

手順は以下のとおり。

1. 必要なパッケージを導入しておく。

apt-get install btrfs-tools

2. Ubuntu 13.10のLiveモードではうまくいかなかったので、Ubuntu 12.04.4のメディアを使用しLiveモードで起動する。

3. 該当のファイルシステムのチェックを行う。(デバイスは適宜環境に合わせて読み替えてください)

fsck -f /dev/sda1

4. 変換ツールを実行する。

btrfs-convert /dev/sda1
creating btrfs metadata.
creating ext2fs image file.
cleaning up system chunk.
conversion complete.

5. 変換ができたら、システム関連のディレクトリをマウントする。

mount /dev/sda1 /mnt
for fs in proc sys dev dev/pts; do mount --bind /$fs /mnt/$fs; done
chroot /mnt

6. デバイスのUUIDを取得する。

blkid /dev/sda1
/dev/sda1: UUID="63accb30-95b9-4268-ae1e-6d0ad3ef3a9d" UUID_SUB="d9521f58-91e5-44a7-a52e-9cfb0b3056ca" TYPE="btrfs"

7. /etc/fstabを編集する。

# / was on /dev/sda1 during installation
#UUID=ad50ef37-797d-44ea-a8fa-ae61abe4d00f /               ext4    errors=remount-ro 0       1
UUID=63accb30-95b9-4268-ae1e-6d0ad3ef3a9d /               btrfs   defaults 0       1
# swap was on /dev/sda5 during installation
UUID=4dc578f3-c65c-4013-b643-72e70455b21b none            swap    sw              0       0

8. grubのアップデートを実行する。

update-grub
grub-install /dev/sda

9. chrootを終了する。

10. 再起動を実施する。

11. 変換前のファイルシステムイメージが残っていることを確認する。

ls -l /ext2_saved/

必要がなければ以下のコマンドを実行し、イメージを削除する。

btrfs subvolume delete /ext2_saved

マウントオプションについては

もし、SSDを使用しているようであれば、以下を参考にマウントオプションを変更してみるのがいいかもしれません。

私の環境の場合は以下の様な感じになっています。

UUID=5ff6bc7a-6ac0-422a-aa72-bbd7bfe5ff2f /      btrfs   noatime,compress=lzo,space_cache,ssd,ssd_spread,inode_cache 0   1
POINT

  • compress=lzo: ファイルシステムに対して圧縮をかけるか。実施した場合パフォーマンスの向上が見込める場合があります。
  • space_cache: 速くブロックグループのキャッシュを作るために、ディスク上の空き領域のデータを格納する。
  • ssd: SSD最適化された動作の一部をオンにします
  • ssd_spread: 大きな空き領域を一括で割り当てることでパフォーマンスの向上を図るらしい。
  • inode_cache: 空きinode番号のキャッシュを有効にします。
余談ですが

btrfsってバターエフエスって読むことを初めて知りました。

この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
いつか、そのとき、あの場所で。rev.2
タイトルとURLをコピーしました