LoginSignup
1
1

More than 5 years have passed since last update.

Proxmox VEのZFS Rootをバックアップしgummibootからブートする

Last updated at Posted at 2016-05-12

はじめに

Proxmox VEはZFSにインストールできますが、システムをバックアップしようとするとZFSストレージプール(zpool)の名前が衝突してしまいます。GRUBをもう一つインストールすればいいはずですが、この際gummibootというUEFI用のシンプルなブートローダーを使ってみます。

gummibootのセットアップ

新しいUSBメモリーを一つ用意してそこにセットアップしていきます。

EFI System partitionパーティションを作成

dev='/dev/<sdX>' &&
sgdisk -Z $dev && #既存のGPTとMBRを消去
sgdisk -o $dev && #GPT(パーティションテーブル)を作成
sgdisk -n 1::+512M -t 1:ef00 $dev && #第1パーティションにEFI System partitionを作成
sgdisk -p $dev && #GPTを確認
sgdisk -i 1 $dev #第1パーティションを確認

パーティションをフォーマット

dev='/dev/<sdX>' &&
mkfs.vfat -F32 "${dev}1"

gummibootのインストール

apt-get install gummiboot

ブートローダーを作成

dev='/dev/<sdX>' &&
esp='/mnt/boot' &&
mkdir $esp &&
mount "${dev}1" $esp &&
gummiboot install --path $esp &&
cp '/boot/initrd.img-4.4.6-1-pve' "$esp/initrd.img-4.4.6-1-pve" &&
cp '/boot/vmlinuz-4.4.6-1-pve' "$esp/vmlinuz-4.4.6-1-pve"

ブートローダーを設定

$esp/loader/loader.confを作成

default pve
timeout 5
editor 0

$esp/loader/entries/pve.confを作成

title          Proxmox Virtual Environment
linux          /vmlinuz-4.4.6-1-pve
initrd         /initrd.img-4.4.6-1-pve
options        root=ZFS=rpool/ROOT/pve-1 rw boot=zfs quiet rootdelay=2

マウントを恒久化

vi /etc/fstab

下記の行を追加
PARTUUID=<partuuid> $esp vfat defaults,noatime,nofail 0 2

確認

これで既存のProxmox VEをgummibootからブートすることができるはずです。Proxmox VEではZFS RootのブートはBIOSブートしか対応していませんが、gummibootによってUEFIブートができるようになります。

ZFS Rootをバックアップ

さきほどのUSBメモリーにバックアップしていきます。

ZFS用のパーティションを作成

dev='/dev/<sdX>' &&
sgdisk -n 2:: -t 2:bf01 -c 2:'zfs' $dev && #第2パーティションにSolaris /usr & Mac ZFSを作成

この後、再起動が必要になるかもしれません。

ZFSストレージプールを作成

zpoolname1='rpool' &&
zpoolname2='rpool2' &&
partuuid='<partuuid>' &&
zpool create -o ashift=12 $zpoolname2 "/dev/disk/by-partuuid/$partuuid" &&
zfs set compression=lz4 $zpoolname2 &&
zfs set atime=off $zpoolname2 &&
zfs set sync=standard $zpoolname2

ZFSを作成

zpoolname2='rpool2' &&
zfs create $zpoolname2/ROOT &&
zfs create -V 1G -b 4K -o primarycache=metadata -o sync=always -o com.sun:auto-snapshot=false $zpoolname2/swap &&

スワップは通常2GBのところ1GBにしてありますが、お好みで変更してください。

ZFSをコピー

zpoolname1='rpool' &&
zpoolname2='rpool2' &&
zfs snapshot $zpoolname1/ROOT/pve-1@temp &&
zfs send     $zpoolname1/ROOT/pve-1@temp | zfs recv $zpoolname2/ROOT/pve-1 &&
zfs destroy  $zpoolname1/ROOT/pve-1@temp &&
zfs destroy  $zpoolname2/ROOT/pve-1@temp

ZFSのマウントポイントを設定

zpoolname2='rpool2' &&
zpool export $zpoolname2 &&
zpool import -d /dev/disk/by-partuuid -R /mnt/$zpoolname2 $zpoolname2 &&
zfs set mountpoint=/ $zpoolname2/ROOT/pve-1 &&
zfs set mountpoint=/$zpoolname2 $zpoolname2

スワップをフォーマット

zpoolname2='rpool2' &&
mkswap /dev/zvol/$zpoolname2/swap

スワップのプール名を修正

vi /mnt/$zpoolname2/etc/fstab

下記の行を$zpoolname1から$zpoolname2に修正する
/dev/zvol/$zpoolname2/swap none swap sw 0 0

$esp/loader/entries/pve2.confを作成

title          Proxmox Virtual Environment 2
linux          /vmlinuz-4.4.6-1-pve
initrd         /initrd.img-4.4.6-1-pve
options        root=ZFS=$zpoolname2/ROOT/pve-1 rw boot=zfs quiet rootdelay=2

再起動後、ブート時にProxmox Virtual Environment 2を選べばバックアップした方からブートするはずです。

後始末

この後、gummibootをアンインストールして、/etc/initramfs/post-update.d//zz-update-gummibootを手動で削除しないとカーネルのアップデートに支障を来すかもしれません。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1