Hatena::ブログ(Diary)

青空を探す、旅の記録。 Twitter

カケラの樹

2015/10/29 Thu

BDへの安全なバックアップ方法。

| 21:33

というのを契機にしてバックアップ方法を再考してたんですが、堅牢BD書き出し方法を考えたので書き留めます。

要求

構成

上記の要求を踏まえ、このような構成ディスク作成することにしました。

  1. ファイルEXT4フォーマットイメージに格納(a)
  2. イメージはLUKSにて暗号
  3. イメージBDに書き出す際、エラー訂正情報付与する

依存

  • cryptsetup
  • dvdisaster
  • mdadm

作成手順

EXT4ディスクイメージ作成
cd /tmp
dd if=/dev/zero bs=1M count=3500 of=disk.img.0
dd if=/dev/zero bs=1M count=3500 of=disk.img.1
dd if=/dev/zero bs=1M count=3500 of=disk.img.2
dd if=/dev/zero bs=1M count=3500 of=disk.img.3
dd if=/dev/zero bs=1M count=3500 of=disk.img.4

sudo losetup /dev/loop0 disk.img.0
sudo losetup /dev/loop1 disk.img.1
sudo losetup /dev/loop2 disk.img.2
sudo losetup /dev/loop3 disk.img.3
sudo losetup /dev/loop4 disk.img.4

sudo mdadm --create /dev/md/md0 -l linear -n 5 /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3 /dev/loop4
sudo cryptsetup luksFormat /dev/md/md0
sudo cryptsetup luksOpen /dev/md/md0 disk
sudo mkfs.ext4 /dev/mapper/disk
mkdir mount
sudo mount /dev/mapper/disk mount
sudo chown USERNAME mount

単一rawイメージではなく複数イメージをRAID0で束ねているのは、ISO9660フォーマット仕様上4GB以上のファイルを格納できないため。単一イメージにしてしまうとファイル分割の必要がある。

ディスクイメージファイルを投入

/tmp/mountに書き出したいファイルコピーする

ISOイメージ作成
sudo umount mount
sudo cryptsetup luksClose disk
sudo mdadm --stop /dev/md/md0
sudo losetup -d /dev/loop0
sudo losetup -d /dev/loop1
sudo losetup -d /dev/loop2
sudo losetup -d /dev/loop3
sudo losetup -d /dev/loop4
mkisofs -L -R -o disk.iso -V DISKNAME disk.img.*
dvdisaster -c -i disk.iso -mRS02 -n BD

上記のパラメータだと、30%ほどの冗長性が確保できる。あとは作成したISOイメージBD-Rに書き出せばよい。

マウント方法
sudo losetup /dev/loop0 /path/to/disk.img.0
sudo losetup /dev/loop1 /path/to/disk.img.1
sudo losetup /dev/loop1 /path/to/disk.img.2
sudo losetup /dev/loop1 /path/to/disk.img.3
sudo losetup /dev/loop1 /path/to/disk.img.4
sudo mdadm --assemble --force /dev/md/md0 /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3 /dev/loop4
sudo cryptsetup luksOpen /dev/md/md0 disk
mkdir /tmp/mount
sudo mount /dev/mapper/disk /tmp/mount
トラックバック - http://d.hatena.ne.jp/yune_kotomi/20151029/1446122022