OpenStack GrizzlyではブロックストレージをSwiftにバックアップする機能が追加されました。使ってみたくてマニュアルをあさっても、OpenStack Block Storage Service Administration Guideにあるcinder-backupがたぶんそうだろう、というくらいしかわからなかったので、DevStackで使ってみました。DevStackなので、ストレージドライバはLVMです。
前提として当たり前ですが、Swiftに保存するためSwiftを有効にして、DevStackを起動します。http://devstack.org/localrc.htmlを参考に、Swiftを有効にしてください。
ブロックストレージをSwiftにバックアップする機能はcinder-backupサービスが提供しますので、別ウィンドウでcinder-backupを起動します。
$ /usr/local/bin/cinder-backup
2013-05-11 21:31:59 INFO [cinder.service] Starting 1 workers
2013-05-11 21:31:59 INFO [cinder.service] Started child 20987
2013-05-11 21:31:59 AUDIT [cinder.service] Starting cinder-backup node (version 2013.1.2)
2013-05-11 21:31:59 DEBUG [cinder.utils] Running cmd (subprocess): sudo cinder-rootwrap /etc/cinder/rootwrap.conf vgs --noheadings -o name
2013-05-11 21:31:59 INFO [cinder.backup.manager] Cleaning up incomplete backup operations
2013-05-11 21:31:59 DEBUG [cinder.utils] backend <module 'cinder.db.sqlalchemy.api' from '/opt/stack/cinder/cinder/db/sqlalchemy/api.pyc'>
2013-05-11 21:31:59 INFO [cinder.openstack.common.rpc.common] Connected to AMQP server on localhost:5672
2013-05-11 21:31:59 DEBUG [cinder.service] Creating Consumer connection for Service cinder-backup
それではcinder-backupを使ってみます。
rcファイルを読み込みます。
$ source accrc/demo/demo
1GBのボリュームを作ります。
$ cinder create --display-name test 1
+---------------------+--------------------------------------+
| Property | Value |
+---------------------+--------------------------------------+
| attachments | [] |
| availability_zone | nova |
| bootable | false |
| created_at | 2013-05-11T12:33:39.811753 |
| display_description | None |
| display_name | test |
| id | 4bab444e-8b6e-4085-8a38-21057aa99de5 |
| metadata | {} |
| size | 1 |
| snapshot_id | None |
| source_volid | None |
| status | creating |
| volume_type | None |
+---------------------+--------------------------------------+
正常に作成されたことを確認します。
$ cinder list
+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
| ID | Status | Display Name | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
| 4bab444e-8b6e-4085-8a38-21057aa99de5 | available | test | 1 | None | false | |
+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
作成したボリュームをバックアップします。
$ cinder backup-create --display-name backup_test 4bab444e-8b6e-4085-8a38-21057aa99de5
$
バックアップを実行しても何も表示されませんが、cinder-backupサービスを起動したウィンドウに大量のログが表示されます。create_backup finished.とあれば成功のようです。
2013-05-11 21:36:48 INFO [cinder.backup.manager] create_backup finished. backup: 1df94d11-7e92-4e2f-b4f6-d0b1f87b0670
バックアップが作成できたことを確認します。
$ cinder backup-list
+--------------------------------------+--------------------------------------+-----------+-------------+------+--------------+---------------+
| ID | Volume ID | Status | Name | Size | Object Count | Container |
+--------------------------------------+--------------------------------------+-----------+-------------+------+--------------+---------------+
| 1df94d11-7e92-4e2f-b4f6-d0b1f87b0670 | 4bab444e-8b6e-4085-8a38-21057aa99de5 | available | backup_test | 1 | 22 | volumebackups |
+--------------------------------------+--------------------------------------+-----------+-------------+------+--------------+---------------+
$ cinder backup-show 1df94d11-7e92-4e2f-b4f6-d0b1f87b0670
+-------------------+--------------------------------------+
| Property | Value |
+-------------------+--------------------------------------+
| availability_zone | nova |
| container | volumebackups |
| created_at | 2013-05-11T12:36:15.000000 |
| description | None |
| fail_reason | None |
| id | 1df94d11-7e92-4e2f-b4f6-d0b1f87b0670 |
| name | backup_test |
| object_count | 22 |
| size | 1 |
| status | available |
| volume_id | 4bab444e-8b6e-4085-8a38-21057aa99de5 |
+-------------------+--------------------------------------+
Swiftに保存されたことを確認します。
$ swift list
volumebackups
$ swift list volumebackups
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00001
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00002
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00003
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00004
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00005
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00006
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00007
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00008
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00009
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00010
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00011
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00012
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00013
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00014
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00015
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00016
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00017
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00018
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00019
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00020
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670-00021
volume_4bab444e-8b6e-4085-8a38-21057aa99de5/20130511123621/az_nova_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670_metadata
確かに保存されたようです。
リストアします。ヘルプをみてみます。
$ cinder help backup-restore
usage: cinder backup-restore [--volume-id <volume-id>] <backup>
Restore a backup.
Positional arguments:
<backup> ID of the backup to restore.
Optional arguments:
--volume-id <volume-id>
Optional ID of the volume to restore to.
ヘルプをみると、リストアするのと、新しくボリュームを作るのと、2つあるようです。
まずは–volume-id なしでやります。
$ cinder backup-restore 1df94d11-7e92-4e2f-b4f6-d0b1f87b0670
$
リストアを実行しても何も表示されませんが、cinder-backupサービスを起動したウィンドウにrestore_backup finishedとあれば成功のようです。
2013-05-11 21:54:16 INFO [cinder.backup.manager] restore_backup finished, backup: 1df94d11-7e92-4e2f-b4f6-d0b1f87b0670 restored to volume: 1c9df004-4eda-4023-b92f-59017532a9a7
ボリュームが増えたことを確認します。
$ cinder list
+--------------------------------------+-----------+-----------------------------------------------------+------+-------------+----------+-------------+
| ID | Status | Display Name | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+-----------+-----------------------------------------------------+------+-------------+----------+-------------+
| 1c9df004-4eda-4023-b92f-59017532a9a7 | available | restore_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670 | 1 | None | false | |
| 4bab444e-8b6e-4085-8a38-21057aa99de5 | available | test | 1 | None | false | |
+--------------------------------------+-----------+-----------------------------------------------------+------+-------------+----------+-------------+
もうひとつボリュームが増えたようです。バックアップはあいかわらず存在しています。
$ cinder backup-list
+--------------------------------------+--------------------------------------+-----------+-------------+------+--------------+---------------+
| ID | Volume ID | Status | Name | Size | Object Count | Container |
+--------------------------------------+--------------------------------------+-----------+-------------+------+--------------+---------------+
| 1df94d11-7e92-4e2f-b4f6-d0b1f87b0670 | 4bab444e-8b6e-4085-8a38-21057aa99de5 | available | backup_test | 1 | 22 | volumebackups |
+--------------------------------------+--------------------------------------+-----------+-------------+------+--------------+---------------+
今度は最初に作ったボリュームにリストアしてみます。
$ cinder backup-restore --volume-id 4bab444e-8b6e-4085-8a38-21057aa99de5 1df94d11-7e92-4e2f-b4f6-d0b1f87b0670
やはりリストアを実行しても何も表示されませんが、cinder-backupサービスを起動したウィンドウにrestore_backup finished〜restored to volumeとあれば成功のようです。
2013-05-11 22:02:13 INFO [cinder.backup.manager] restore_backup finished, backup: 1df94d11-7e92-4e2f-b4f6-d0b1f87b0670 restored to volume: 4bab444e-8b6e-4085-8a38-21057aa99de5
ボリュームが正常であることを確認します。
$ cinder list
+--------------------------------------+-----------+-----------------------------------------------------+------+-------------+----------+-------------+
| ID | Status | Display Name | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+-----------+-----------------------------------------------------+------+-------------+----------+-------------+
| 1c9df004-4eda-4023-b92f-59017532a9a7 | available | restore_backup_1df94d11-7e92-4e2f-b4f6-d0b1f87b0670 | 1 | None | false | |
| 4bab444e-8b6e-4085-8a38-21057aa99de5 | available | test | 1 | None | false | |
+--------------------------------------+-----------+-----------------------------------------------------+------+-------------+----------+-------------+
ん〜リストアされたかわからないですね。。