blog.monophile.net

コンピュータに関するメモ。

著者

山本一彰(Takaaki Yamamoto)

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 2015年にコンビネータ論理を基に計算完備な計算手法 "論理珠算"を開発し、 それを含む体系である"算道"を構成した。 その成果により、2016年に 第19回 文化庁メディア芸術祭 アート部門 新人賞 (文部科学大臣賞) を受賞。 現在はSRE(サイト信頼性エンジニア)として生計をたててている。

投稿

Linuxの起動ディスクのファイルシステムを Ext4 から Btrfsへ移行する

概要

ルートファイルシステムを Ext4 で構成したシステムを Btrfs に移行したくなったので移行してみた。 環境は Ubuntu16.04。

想定環境

/dev/sdx 移行元とは別のLinuxシステムでの作業とする。 (USBとかからLiveイメージを起動するとか。)

  • /dev/sda: 移行元ディスク
    • /dev/sda1: 移行元システム(Ubuntu 16.04, ext4)
  • /dev/sdb: 移行先ディスク
    • /dev/sdb1: 移行元システム(Ubuntu 16.04, ext4)
    • /dev/sdb2: 移行元システム(スワップ)
  • /dev/sdx: 移行作業を行う独立したLinuxシステム

移行先ディスク sdb のパーティションを切って btrfs でフォーマット

例として、/dev/sdb の90%を btrfs として使い、残りをスワップとして使う。 btrfs内ではswapfileを使うことはできないので、 スワップを必要とする場合は初期のパーティションの時点で作成しなければならない。

sda1, sdb1をマウントしてシステムを同期する

それぞれのファイルシステムをマウントするところを作って、マウントする。

fstabを設定する

blkidコマンドでUUIDを確認する。

確認したUUIDを元に /mnt/sdb/etc/fstab を以下のように設定する。 btrfsのオプションはcompress=lzoのみ有効にした。

UUID=87a9e63a-0b71-4334-b364-cb0a5905dd73 / btrfs defaults,compress=lzo,subvol=/ 0 0
UUID=7688196b-9b9d-4091-adf1-5990d49923ad none swap sw 0 0

GRUBの設定

/mnt/sdb/etc/grub.d/00_header から、↓の2行のうち、一つを消す。

もしくは /etc/default/grub に↓を追記する。

移行先ファイルシステムへchrootする

sdbへGRUBをインストールする

chrootをしないでも↓で良いかもしれない。

GRUBをインストールする際に↓のようなエラーが出る場合がある。

grub-install: warning: Attempting to install GRUB to a disk with multiple partition labels. This is not supported yet..
grub-install: error: filesystem `btrfs' doesn't support blocklists.

その場合はwipefs↓をする。

再起動

上記までで設定は終わりで、BIOSから起動ディスクを/dev/sdbに切り替えることによって、 移行先のbtrfsのファイルシステムから起動がはじまるはず。

refs