Ubuntu 8.04 を LVM 有効にしてインストールする
Ubuntu の Desktop 版インストーラではデフォルトで LVM を使ってインストールすることができません。
Alternate 版を使えば LVM を使ってインストールできるんですが,テキストモードでインストールするのは嫌だとか,日本語ローカライズド版でインストールしたい,ということであれば下記の手順でやることになります。
- Live CD として立ち上げる
- Live CD 環境に lvm2 をインストールする
- Live CD 環境で LVM を切る
- Live CD 環境で LVM 上にファイルシステムを作成する
- Live CD 環境からインストーラを立ち上げてインストールする
- インストールされた環境に
chroot
して lvm2 をインストールする
結果的に http://www.debuntu.org/how-to-install-ubuntu-over-lvm-filesystem に沿ってやることになりました。リンク先の説明では fdisk コマンドでパーティショニングしてますが,代わりに GParted で行いました。
lvm2 (LVM サポートパッケージ)をインストールする
ネットワークにつながった環境であれば下記のようにして lvm2 をインストールします*1。
まず各種パッケージ情報を取得しておきます(yum update
みたいなもの?)。
ubuntu@ubuntu:~$ sudo apt-get update
次に lvm2 パッケージをインストールします。
ubuntu@ubuntu:~$ sudo apt-get install lvm2
このままでも LVM の操作はそこそこできるのですが,LVM ボリュームをマウントするには Device Mapper が有効になっていないといけません(インストーラからもみえませんし lvcreate
もできません)。ですので Device Mapper のカーネルモジュールを読み込みます。
ubuntu@ubuntu:~$ sudo modprobe dm-mod
これで Live CD 環境で LVM が使えるようになりました。
パーティションを切る
今回のディスクの切り方の方針は以下の通りです。
「システム管理」から「パーティションエディタ(GParted)」を立ち上げます。
空き容量(全体)の先頭に /boot
用 ext3 パーティションを設定します。
次に残りを LVM 用に確保します。といってもこの GParted では LVM としての指定はできないので,領域として確保するだけです。
- 「ファイルシステム」として「未フォーマット」を選択
最後に「編集」メニューの「すべての操作を適用」を選択(ツールバーから選択してもいいです)してパーティションテーブルをディスクに書き込みます。
パーティションエディタを終了し,/dev/sda
の様子を見てみます。
ubuntu@ubuntu:~$ ls /dev/sda* /dev/sda /dev/sda1 /dev/sda2
LVM の設定を行う
ここからは残念ながら?コマンドラインインタフェースを使用して作業することになります。
LVM の概要や操作方法については Pantora Networks » LVMを使ってみよう! を参照してください。
/dev/sda2
を Physical Volume として作成します。
ubuntu@ubuntu:~$ sudo pvcreate /dev/sda2 Physical volume "/dev/sda2" successfully created
Volume Group を作成します。名前はなんでもいいのですが,ここでは vgmain という名前にしました。
ubuntu@ubuntu:~$ sudo vgcreate vgmain /dev/sda2 Volume group "vgmain" successfully created
swap 用と root パーティション用に Logical Volume を作成します。
ubuntu@ubuntu:~$ sudo lvcreate -L 1G -n lv_swap vgmain Logical volume "lv_swap" created ubuntu@ubuntu:~$ sudo lvcreate -L 4G -n lv_root vgmain Logical volume "lv_root" created
作成した Logical Volume を見てみます。
ubuntu@ubuntu:~$ sudo lvdisplay -C LV VG Attr LSize Origin Snap% Move Log Copy% lv_root vgmain -wi-a- 4.00G lv_swap vgmain -wi-a- 1.00G
root 用に 4GB,swap 用に 1GB の Logical Volume を作成しました。
ファイルシステムを作成する
本来であればこのままインストーラに進んでいいはずなのですが,インストーラの partitioner が Logical Volume を whole disk として認識してしまい,ディスクラベルを作成するよう言われてしまいます。そのまま進んでしまうと途中で止まってしまうので,あらかじめコマンドラインでファイルシステムを作成しておきます(そうするとインストーラも正しく認識してくれます)。
これまで作成した Logical Volume は Device Mapper のおかげで仮想ボリュームとして認識されています。たとえば Volume Group: vgmain の Logical Volume: lv_swap は /dev/vgmain/lv_swap
のようにアクセスすることができます。また,/dev/mapper/vgmain-lv_swap
でもアクセスすることができます。
swap 用ボリュームを swap 領域として初期化します。
ubuntu@ubuntu:~$ sudo mkswap -L swap /dev/vgmain/lv_swap Setting up swapspace version 1, size = 1073737 kB LABEL=swap, UUID=7c013409-a4cb-487b-b917-4cd516217f5c
root 用ボリュームを今回は XFS でフォーマットします。
ubuntu@ubuntu:~$ sudo mkfs.xfs -f /dev/vgmain/lv_root meta-data=/dev/vgmain/lv_root isize=256 agcount=8, agsize=131072 blks = sectsz=512 attr=0 data = bsize=4096 blocks=1048576, imaxpct=25 = sunit=0 swidth=0 blks, unwritten=1 naming =version 2 bsize=4096 log =internal log bsize=4096 blocks=2560, version=1 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0
インストーラを立ち上げる
あとはデスクトップのアイコンからインストーラを立ち上げて,普通にインストールします。
ただし「ディスクの準備」のところは「手動」にしてください。
今回の例では,下記のように既存パーティションが見えています。
/dev/mapper/vgmain-lv_root
/dev/mapper/vgmain-lv_root
xfs
/dev/mapper/vgmain-lv_swap
/dev/mapper/vgmain-lv_swap
swap
/dev/sda
/dev/sda1
ext3/dev/sda2
swap 以外の各パーティションについて「パーティションを編集」を行って,適宜マウントポイントを指定していってください。
インストールされた環境に lvm2 をインストールする
インストーラが完了して再起動させてしまうと,インストール後の環境では LVM が有効になっていないために起動途中で止まってしまいます。ですので,再起動はかけずに再びコマンドラインからインストールされた環境に lvm2 をインストールします。
まずは(アンマウントされている)インストールされた環境をマウントします。インストーラがマウントポイントとして /target
というディレクトリを掘っているのでそれを再利用させてもらいます。
ubuntu@ubuntu:~$ sudo mount /dev/mapper/vgmain-lv_root /target ubuntu@ubuntu:~$ sudo mount /dev/sda1 /target/boot
もちろん Volume の切り方が違う場合は適宜読み直してください。
次に /target
に chroot して lvm2 をインストールします。インストールされた環境の apt-cache にはパッケージ情報がないので apt-get update
するのを忘れずに。
ubuntu@ubuntu:~$ sudo chroot /target root@ubuntu:/# apt-get update root@ubuntu:/# apt-get install lvm2
あとは再起動すれば LVM on な環境が無事立ち上がります。
おまけ
lvm2 をインストールするのを忘れて再起動すると,えんえんオレンジのバーがいったりきたりしたあとに,
BusyBox v1.1.3 (Debian 1:1.1.3-5ubuntu12) Built-in shell (ash) Enter 'help' for a list of built-in commands. (initramfs)
のように緊急コンソールが立ち上がります。grub コンソールじゃなくて BusyBox なんですね。へぇー。
この様になってしまった場合,再度インストーラ CD を Live CD として立ち上げて lvm2 をインストールしたりする必要があります。面倒なので詳細は略します。
*1:ネットワークにつながっていない場合,USB メモリ等で lvm2 パッケージをコピーしてインストールしてください。後々のために dmsetup パッケージも取得しておくのがよいかと。