バックアップとレストア
1.概要
この稿では主にデータを維持したままシステム領域だけをクリーンインストールする際に必要となる情報を記載しています。
foltia ANIME LOCKERでは大半の設定をデータベースの中に保持しているために、ディスクに障害が発生したり、システムに障害が発生して初期化したり、別のマシンに移動したりする場合にはデータベースとメディアファイルをバックアップ&レストアするだけで比較的容易に復旧することが可能となっています。
不具合ドライブの交換だけしたい場合には、ハードディスクデュプリケーターなどの機器を利用して複製を取ったものと交換するのが手軽です。
2.各構成ごとの操作
一番操作が手軽なのはシステムドライブと録画領域のドライブが完全に別のドライブで構成されている環境です。
つぎに、システムドライブに録画領域パーティションが含まれつつも複数ドライブで構成されている環境です。
単独のドライブでシステム領域と録画領域が確保されている場合には、一時作業領域を増設する必要があるため手数が多くなります。
3.操作上の要点
1.IPアドレス情報
固定IPアドレス設定で運用中の場合には、データベースダンプ前に一度DHCP取得に変更し、再インストール後に設定管理メニューで固定IPアドレスに再設定する手順がおすすめです。
2.ディスクマウント情報
ディスクマウント情報は/etc/fstabに格納されています。全く同じパーテーション構成でご利用頂く場合には再設定等は不要です。セットアップウィザードで設定されるものをご利用下さい。
3.データベース
foltia ANIME LOCKERでは、再起動時、ファームウェアアップデート時に自動的に/home/foltia/php/mita/ディレクトリにfoltia-DB-Dump.dat.MP4というファイル名でデータベースのダンプを行っています。詳しくはpg_dumpの項で説明します。(ゴミ箱を管理コマンドで削除できるように拡張子にMP4とついていますが実際のフォーマットはMP4動画ではありません)
(また、移行元のデータベースディレクトリ(Ver.4までは/var/lib/pgsql/data、Ver.5以降は/var/opt/rh/rh-postgresql95/lib/pgsql/data)を丸ごとアーカイブして、移行先でPostgreSQLを一旦停止して、展開して、パーミッションを確認後PostgreSQLを起動しても、実際のところうまく移行できる可能性は高いです。こちらは手間が少なく済みますがベンダが保証している方法ではないために失敗する可能性も考えられます。そのためディレクトリ上書きで作業を行い、正常に動作しなかったならpg_restoreで復旧させるという方法も試してみる価値はあると思われます。原則としてはpg_dumpでバックアップしたものをpg_restoreで戻して下さい。)
また、foltia ANIME LOCKERでは基本的にデータベースの互換性は同じバージョン間のみとなっています。例外的に3.0.6,3.0.7,3.9.9間と、4.0.0,4.0.1,4.0.2間でもある程度の互換性はありますが出来る限り採取したバージョンと同じものを用いてください。異なるバージョンのデータベースをレストアした場合は手作業でバージョンナンバーを変更する必要があります。
4.操作
具体的な操作は次の例のように行います。ディスク操作を伴なうため操作に失敗するとデータが失われる場合があります。慎重に作業してください。またお客様のご利用環境と実行例の環境が異なる可能性がございます。その場合はご利用環境に合わせて読み替えください。
(予備として)メディアファイルのバックアップ
念のために/home/foltia/php/tv/の配下に配置されているメディアファイルのバックアップをとっておくことをおすすめいたします。
パーティションとLVMの操作
起動ドライブをシステム領域単独の状態にします。起動ディスクと録画領域が別々のドライブ上で構成されている場合はこの手順はスキップできます。起動ディスク上に録画領域のパーティションがある場合にはpvmoveで領域上のデータを移動し、/dev/sda4を空の状態にしてVG tankから取り外しPVを削除します。単独ドライブ構成の場合には作業ドライブを追加して、同様の作業でpvmoveしてVG tankから取り外します。(ディスク操作を誤るとデータを失う場合あります。十分に調査して慎重に操作してください)
【実行例】
・現在の状態を表示
[root@foltia ~]# pvscan PV /dev/sda4 VG tank lvm2 [146.96 GiB / 0 free] Total: 1 [146.96 GiB] / in use: 1 [146.96 GiB] / in no VG: 0 [0 ] [root@foltia ~]# vgscan Reading all physical volumes. This may take a while... Found volume group "tank" using metadata type lvm2 [root@foltia ~]# lvscan ACTIVE '/dev/tank/tv' [146.96 GiB] inherit [root@foltia ~]#
・作業用一時ドライブを追加
一度電源をオフにして/dev/sdaと同サイズのドライブを新規追加します。
追加ドライブのほうが大きいと容量が足りなくなり書き戻せなくなる場合があります。
適切なサイズがない場合はパーティションを切って調整してください。
下記の実行例では追加ドライブは/dev/sdbで認識されています。
[root@foltia ~]# fdisk -l Disk /dev/sda: 171.8 GB, 171798691840 bytes 255 heads, 63 sectors/track, 20886 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xa08f5c01 Device Boot Start End Blocks Id System /dev/sda1 * 1 41 327680 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 41 941 7222272 83 Linux Partition 2 does not end on cylinder boundary. /dev/sda3 1033 1702 5373740 82 Linux swap / Solaris /dev/sda4 1702 20887 154100848 8e Linux LVM Disk /dev/sdb: 171.8 GB, 171798691840 bytes 255 heads, 63 sectors/track, 20886 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/mapper/tank-tv: 157.8 GB, 157798105088 bytes 255 heads, 63 sectors/track, 19184 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
・新ドライブをPVとして作成
[root@foltia ~]# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created
・新たに作成されたPVをVG tankに追加
[root@foltia ~]# vgextend tank /dev/sdb Volume group "tank" successfully extended
・追加された状態のVGを確認
[root@foltia ~]# pvscan PV /dev/sda4 VG tank lvm2 [146.96 GiB / 0 free] PV /dev/sdb VG tank lvm2 [160.00 GiB / 160.00 GiB free] Total: 2 [306.96 GiB] / in use: 2 [306.96 GiB] / in no VG: 0 [0 ]
・削除準備のため/dev/sda4からデータ(エクステント)を移動して空にする
pvmoveには容量次第で長時間を要します。
[root@foltia ~]# pvmove /dev/sda4 /dev/sdb /dev/sda4: Moved: 0.0% /dev/sda4: Moved: 0.1% [中略] /dev/sda4: Moved: 99.6% /dev/sda4: Moved: 99.7% /dev/sda4: Moved: 99.8% /dev/sda4: Moved: 99.9% /dev/sda4: Moved: 100.0%
・/dev/sda4をVG tankから削除
[root@foltia ~]# pvscan PV /dev/sda4 VG tank lvm2 [146.96 GiB / 146.96 GiB free] PV /dev/sdb VG tank lvm2 [160.00 GiB / 13.04 GiB free] Total: 2 [306.96 GiB] / in use: 2 [306.96 GiB] / in no VG: 0 [0 ] [root@foltia ~]# vgreduce tank /dev/sda4 Removed "/dev/sda4" from volume group "tank" [root@foltia ~]# pvscan PV /dev/sdb VG tank lvm2 [160.00 GiB / 13.04 GiB free] PV /dev/sda4 lvm2 [146.96 GiB] Total: 2 [306.96 GiB] / in use: 1 [160.00 GiB] / in no VG: 1 [146.96 GiB]
・/dev/sda4の削除
[root@foltia ~]# pvremove /dev/sda4 Labels on physical volume "/dev/sda4" successfully wiped [root@foltia ~]# pvscan PV /dev/sdb VG tank lvm2 [160.00 GiB / 13.04 GiB free] Total: 1 [160.00 GiB] / in use: 1 [160.00 GiB] / in no VG: 0 [0 ]
dhcpモードに変更
固定IPモードで利用していたら、一旦DHCPモードに変更します。
データベースダンプと採取
foltia ANIME LOCKERでは、再起動時、ファームウェアアップデート時に自動的に/home/foltia/php/mita/ディレクトリにfoltia-DB-Dump.dat.MP4というファイル名でデータベースのダンプを行っています。
手動で採取する場合には、foltiaユーザで次のようなコマンドでダンプを行なって下さい。
pg_dump -Fc foltia > /home/foltia/php/tv/mita/foltia-DB-Dump.dat.MP4
コマンドの詳細につきましてはこちらの公式ドキュメントをご参照下さい。
pg_dump
http://www.postgresql.jp/document/8.4/html/app-pgdump.html
以下のコマンドでディレクトリの内容をアーカイブすることが可能です。
Ver4までのコマンド
# service postgresql stop Stopping postgresql service: [ OK ] # cd /var/lib/pgsql/ # tar cvJf /home/foltia/php/tv/mita/databasedir.tar.xz ./data/
Ver5以降のコマンド
# service rh-postgresql95-postgresql stop Stopping rh-postgresql95-postgresql service: [ OK ] # cd /var/opt/rh/rh-postgresql95/lib/pgsql/ # tar cvJf /home/foltia/php/tv/mita/databasedir.tar.xz ./data/
電源オフ
安全のために録画領域ドライブを取り外し
新規クリーンインストール
起動ドライブだけをつないだ状態で通常の手順で新規クリーンインストールを行います。パーティション情報等は全て初期化されます。PVを削除したために「□パーテーション情報を明示的に消す」の項目が自動検出されません。明示的にオンにしてパーティションを一旦削除してください。
セットアップウィザード実行
通常の手順でセットアップウィザードを完了させます。AmazonCloudDrive完全統合機能[unlimited movie works]を利用していた場合にはここで新規セットアップを行います。セットアップ時に同名のディレクトリがすでに存在していた場合には古い方をリネームして新規ディレクトリをセットアップします。後ほどの手順で入れ替えます。
インストーラが作成したLV tvとVG tankを削除
【実行例】
・LVMをアンマウント
[root@foltia ~]# umount /home/foltia/php/tv/ [root@foltia ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 6.7G 4.0G 2.4G 64% / tmpfs 1.5G 0 1.5G 0% /dev/shm /dev/sda1 302M 28M 259M 10% /boot
・LV tvを削除
[root@foltia ~]# lvscan ACTIVE '/dev/tank/tv' [146.96 GiB] inherit [root@foltia ~]# lvremove /dev/tank/tv Do you really want to remove active logical volume tv? [y/n]: y Logical volume "tv" successfully removed
・VG tankを削除
[root@foltia ~]# vgscan Reading all physical volumes. This may take a while... Found volume group "tank" using metadata type lvm2 [root@foltia ~]# vgremove tank Volume group "tank" successfully removed
・PV /dev/sda4を削除
[root@foltia ~]# pvremove /dev/sda4
・/etc/fstabから/dev/tank/tvをコメントアウト
コメントアウトしない場合次の起動時にマウントに失敗して起動に失敗します。
その場合は別の起動メディアを利用してパーティションをマウントし再度編集する必要が発生します。
電源オフ
録画領域ドライブの再接続
LVMとパーティション操作
/dev/sda4をVG tankに追加し、LV tvを拡張し、ファイルシステムを拡張します。採用する構成に応じて適切に操作してください。
【実行例】
・PV作成
[root@foltia ~]# pvcreate /dev/sda4 Physical volume "/dev/sda4" successfully created
・作成したPVをVG tankに追加
[root@foltia ~]# vgextend tank /dev/sda4 Volume group "tank" successfully extended
・構成確認
[root@foltia ~]# pvscan PV /dev/sdb VG tank lvm2 [50.00 GiB / 13.04 GiB free] PV /dev/sda4 VG tank lvm2 [16.96 GiB / 16.96 GiB free] Total: 2 [66.96 GiB] / in use: 2 [66.96 GiB] / in no VG: 0 [0 ] [root@foltia ~]# vgscan Reading all physical volumes. This may take a while... Found volume group "tank" using metadata type lvm2 [root@foltia ~]# lvscan inactive '/dev/tank/tv' [36.96 GiB] inherit
・LVをACTIVE化
[root@foltia ~]# lvchange -ay /dev/tank/tv [root@foltia ~]# lvscan ACTIVE '/dev/tank/tv' [36.96 GiB] inherit
・PV /dev/sdbの内容(エクステント)をPV /dev/sda4に移動
[root@foltia ~]# pvmove /dev/sdb /dev/sda4 /dev/sdb: Moved: 0.0% /dev/sdb: Moved: 0.1% [中略] /dev/sdb: Moved: 99.6% /dev/sdb: Moved: 99.7% /dev/sdb: Moved: 99.8% /dev/sdb: Moved: 99.9% /dev/sdb: Moved: 100.0%
【失敗例】PV /dev/sdbの使用容量が大きく/dev/sda4に移動できないケース
この場合はPV /dev/sdbに用いたドライブを取り外すことができません。
[root@foltia ~]# pvmove /dev/sdb Insufficient free space: 9462 extents needed, but only 4342 available Unable to allocate mirror extents for pvmove0. Failed to convert pvmove LV to mirrored [root@foltia ~]# pvdisplay --- Physical volume --- PV Name /dev/sdb VG Name tank PV Size 50.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 12799 Free PE 3337 Allocated PE 9462 PV UUID vP0w45-PgXC-6H7j-8rZT-dbpN-Qk1p-gOK5mv --- Physical volume --- PV Name /dev/sda4 VG Name tank PV Size 16.96 GiB / not usable 1.11 MiB Allocatable yes PE Size 4.00 MiB Total PE 4342 Free PE 4342 Allocated PE 0 PV UUID JX2L5y-rwmR-Mg6D-xkXW-TzJ6-ReWK-Go19Ci
・録画領域をマウント
[root@foltia ~]# mount /dev/tank/tv /home/foltia/php/tv [root@foltia ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 6.7G 4.0G 2.4G 63% / tmpfs 1.5G 0 1.5G 0% /dev/shm /dev/sda1 302M 28M 259M 10% /boot /dev/mapper/tank-tv 12G 75M 12G 1% /home/foltia/php/tv
・/etc/fstabのコメントアウトを解除して有効に
データベースレストア
アーカイブしたディレクトリイメージをそのまま展開します。
【実行例】
Ver4までのコマンド
# service postgresql stop Stopping postgresql service: [ OK ] # cd /var/lib/pgsql/ # mv data data.old # tar xvJf /home/foltia/php/tv/mita/databasedir.tar.xz # service postgresql start Starting postgresql service: [ OK ]
Ver5以降のコマンド
# service rh-postgresql95-postgresql stop Stopping rh-postgresql95-postgresql service: [ OK ] # cd /var/opt/rh/rh-postgresql95/lib/pgsql/ # mv data data.old # tar xvJf /home/foltia/php/tv/mita/databasedir.tar.xz # service rh-postgresql95-postgresql start Starting rh-postgresql95-postgresql service: [ OK ]
上記ディレクトリの復元が正常に動作しない場合には、「データベースダンプと採取」の項目で採取したデータベースダンプ用いて再インストール後にセットアップウィザードが完了して初期動作が完了した段階でpg_restoreでデータベースをレストアして下さい。
dropdb foltia
createdb -T template0 foltia
pg_restore -Fc -C -d foltia ./foltia-DB-Dump.dat.MP4
コマンドの詳細につきましてはこちらの公式ドキュメントをご参照下さい。
pg_restore
http://www.postgresql.jp/document/8.4/html/app-pgrestore.html
ACD連携設定
ACDを利用している場合はここでマウントディレクトリの設定を変更します。
ACDセットアップ時に同名のディレクトリがすでに存在していた場合には古い方をリネームして新規ディレクトリをセットアップしています。そのためリネームされた旧ディレクトリをマウントできるディレクトリ名に戻します。
具体的な手順は、foltia ANIME LOCKERを一旦シャットダウンし、その間にACDのクライアントやWebUIを使いディレクトリ名を変更し、foltia ANIMELOCKERを起動し、マウントが確認できたら次の手順に進みます。
併せて「foltia ANIME LOCKER オンラインマニュアル:AmazonCloudDrive完全統合機能[unlimited movie works]」もご参考ください。
(画面サムネイル、画面キャプチャ、CM認識情報、MPEG2 drop情報はACD上にコピーはされておりませんので失われます。維持が必要な場合は完全なバックアップ採取をご検討ください)
DLNA構造再構築
DLNAサーバを停止してDLNAディレクトリ再構築とDLNAサーバデータ再構築を行います。ファイル数によっては数十分から数時間かかる場合があります。
【実行例】
# service minidlna stop Stopping minidlna : [ OK ] # rm -rf /var/cache/minidlna/files.db # /usr/bin/sudo -u foltia /home/foltia/perl/makedlnastructure.pl REBUILD # service minidlna start Starting minidlna : [ OK ] #
固定IPアドレスモードに変更
再起動して動作確認
5.資料
LVMの操作については下記の資料が参考となります。
「Red Hat Enterprise Linux 6 論理ボリュームマネージャの管理」