アクトインディ開発者ブログ

子供とお出かけ情報「いこーよ」を運営する、アクトインディ株式会社の開発者ブログです

もうバックアップ壊れませんように

こんにちは、tahara です。

2つのハードディスクで RAID0 になっている外付けハードディスク2台で バックアップ用の Btrfs のファイルシステムを作っていました。

ある日2台ある外付けハードディスクのうち1台の AC アダプタが外れてしまいました。 そして Btrfs 復旧できませんでした。

Btrfs は全く悪くないのですが、RAID0 をやめて4台のハードディスクで ZFS の RAIDZ2 でファイルシステムを作り直しました。

お手がる zfs-fuse を使います。

sudo apt-get install zfs-fuse
sudo modprobe fuse

ディスクは /dev/disk/by-id の下の名前で指定するのがいいとのことです。

ls -l /dev/disk/by-id
lrwxrwxrwx 1 root root  9  8月 12 15:40 usb-BUFFALO_HD-WLU3_R1_1_000001070C58-0:0 -> ../../sdf
lrwxrwxrwx 1 root root  9  8月 12 15:40 usb-BUFFALO_HD-WLU3_R1_1_00000107800D-0:0 -> ../../sdh
lrwxrwxrwx 1 root root  9  8月 12 15:40 usb-BUFFALO_HD-WLU3_R1_2_000001070C58-0:1 -> ../../sdg
lrwxrwxrwx 1 root root  9  8月 12 15:40 usb-BUFFALO_HD-WLU3_R1_2_00000107800D-0:1 -> ../../sdi

RAIDZ2 を作ります。

sudo zpool create tank raidz2 \
 /dev/disk/by-id/usb-BUFFALO_HD-WLU3_R1_1_000001070C58-0:0 \
 /dev/disk/by-id/usb-BUFFALO_HD-WLU3_R1_1_00000107800D-0:0 \
 /dev/disk/by-id/usb-BUFFALO_HD-WLU3_R1_2_000001070C58-0:1 \
 /dev/disk/by-id/usb-BUFFALO_HD-WLU3_R1_2_00000107800D-0:1

gzip 圧縮指定でファイルシステムを作り、マウントします。 /etc/fstab とか書かなくていいんですね。

sudo zfs create -o compress=gzip tank/backup
sudo zfs set mountpoint=/backup tank/backup

これで日々 rsync してスナップショットです。

sudo crontab -e

0  8 * * * /sbin/zfs snapshot tank/backup@`date +%Y%m%d`

Zfs 簡単でいいです。