GMOクラウドのS3互換オブジェクトストレージを使う。

どこでもドア(ゆびつめ注意)

※写真と本文は関係ありません。


GMOクラウドのVPSとパブリッククラウド(ALTUS)を利用中。

内部のVPSとパブリッククラウドからだと転送量かからないし、S3互換なのでs3fs、s3cmd、cyberduckなんかが使える。(内部から使うときはエンドポイントをGMOクラウドの内側エンドポイントを設定する。通信料無料。)

バックアップ用にストレージを消費するのももったいないので、VPSなどのバックアップで使おうと思ったのですが、いろいろ制限があったので書いておく。

普通にs3fsでマウントしてrdiff-backupでバックアップしたかったけど…(よく使うパターン。世代管理したい&何も考えずに差分バックアップ出来る。ちょう便利!)

/etc をバックアップするとこんな感じでエラー

[foo@hogee-01-2015 test]# rdiff-backup /etc/ /mnt/s3fs/test21222/
Warning: hard linking not supported by filesystem at /mnt/s3fs/test21222/rdiff-backup-data

『hard linking not supported by filesystem』と言われる、rdiff-backup って 『hard link』使ってるんだ…

ならばとrsyncでバックアップ(S3内に0-6というディレクトリ作成して毎日バックアップ)しようとすると…

rsync: rename "/mnt/s3fs/rsync-backup/0/home/mie-mie/public_test/templates_c/.%%EE^EED^EED7C342%%index.html.php.uJtrYL" -> "mie-mie/public_test/templates_c/%%EE^EED^EED7C342%%index.html.php": No such file or directory (2)
rsync: rename "/mnt/s3fs/rsync-backup/0/home/mie-mie/public_test/templates_c/.%%E2^E2E^E2E15ECE%%layout_C.inc.php.WIfN7s" -> "mie-mie/public_test/templates_c/%%E2^E2E^E2E15ECE%%layout_C.inc.php": No such file or directory (2)

/home をrsyncしようとするとエラー。バックアップ先にはphp.logだけ。templates_cはphpのsmartyのキャッシュファイル。
原因は『使用できるObject名(=ファイル名)に制限がある』のでコピーできない。(%,^)

無理矢理ファイルコピーしたら、そのファイルどころかのそのファイルの入ったフォルダも消せななくなりました!\(^o^)/

使えないファイル名はこのあたりに。
オブジェクトキーとメタデータ – Amazon Simple Storage Service

どんなファイル名でファイルを作られるか制御できないので、不採用で…。

他にはオブジェクトストレージ内のファイルの移動はできない。
s3fsの制限だとおもう。ディレクトリに見えるけどオブジェクトなのでまあそうだよなぁ。。

[foo@hogee-01-2015 scripts]# cd /mnt/s3fs/afio/5/ # /mnt/s3fs は s3fsマウントしたディレクトリ。
[foo@hogee-01-2015 5]# ls
tree flower
[foo@hogee-01-2015 5]# mv tree fish
mv: cannot move `tree' to `fish': サポートされていない操作です

最終的には、afioでバックアップファイルをローカルに作成後、オブジェクトストレージにコピー。(テープバックアップみたいに、バックアップを直接オブジェクトに書き込むととても時間がかかる…)
使用量をケチるために週単位で差分バックアップ。
cronで月曜日にバックアップファイルを週単位で削除する。
みたいな感じで運用。

バックアップから戻すことはほとんどないのでまあこれでしばらく試してみる。

※2015/08/25追記
afioでバックアップファイルをオブジェクトストレージにコピー(移動)するところで、(長時間コピーした挙句)高確率でエラーとなるのでオブジェクトストレージ使うのやめました。(rdiff-backupで社内のストレージサーバにバックアップする運用に変更)
rdiff-backup偉大だ…。小さいファイル置き場ならエラーにならないのかなー。