sparse image での storage 保存
実験環境とかのストレージをイメージごと保存しておくときの作業用メモ
- 元ストレージの partition 情報の確認
- 保存先に sparse image のファイルを作成
- dd if=/dev/zero of=イメージファイル名 bs=512 seek=セクタ数 count=0
- bs=512 はセクタサイズ↑のセクタサイズ(まぁ、普通512)
- セクタ数は容量的に足りれば良いけど、どーせ sparse image なので元のストレージの総セクタ数かそれより大きくしときゃ良い
- dd if=/dev/zeor of=node00.img bs=512 seek=536871000 count=0 で256GB くらいの node00.img というイメージファイルができる
- ls -l node00.img と du -sh node00.img を見比べるとちゃんと spase になっているかどうか確認できる
- dd if=/dev/zero of=イメージファイル名 bs=512 seek=セクタ数 count=0
- sparse image file を loopback device に紐付け
- losetup -l
- 使っていない loopback device を確認(次で -f で探させるなら跳ばしても良い)
- losetup /dev/loopXX イメージファイル名
または
losetup -f イメージファイル名- losetup -l でデバイスとsparse image ファイルの対応を確認
- これで /dev/loopXX がストレージの block device に見える
- losetup -l
- ストレージの中身を全てコピー(使って無い…過去に一回使った…blockもコピー)
- ストレージの使っている部分をコピー(普通はこっち)
- dd if=元のデバイス of=/dev/loopXX bs=512 count=パーティション1の開始オフセット
- 一応、冒頭の(boot loader とか入っている?ところ)をコピー
- 別に要らないなら(後から必要なら入れるなら)これは跳ばして良い
- parted /dev/loopXX
parted> unit s
parted> mklabel gpt
parted> mkpart ... - ls /dev/loopXX* とかして、パーティションのデバイスができているか確認する。できてなければ losetup -d /dev/loopXX; losetup -P /dev/loopXX イメージファイル名 で再紐付け
- block レベルで移して良いパーティションは 4 の手順で dd でコピーする。但し、デバイス名をパーティション番号付きのにすること。データだけ移したいパーティションは次の dump/restore で複製
- ex) dd if=/dev/sdc1 of=/dev/loop10p1 bs=512
- sparse mode にするかどうかは、パーティションの使用率とかみて好みで
- mkfs.ext4 /dev/loopXpY でファイルシステム作成
- ex) mkfs.ext4 /dev/loop10p2
- mount /dev/loopXpY 適当なディレクトリ
- ex) mount /dev/loop10p2 /mnt
- 作成したファイルシステムをマウント
- dump -0 -f - 元のパーティションのデバイス | (cd マウント先; restore -r -f -)
- 必要に応じて ssh とかで転送してもよし(4 参照)
- dd if=元のデバイス of=/dev/loopXX bs=512 count=パーティション1の開始オフセット