INDEX
  • このページのTOPへ
  • ホームへ戻る

バックアップとレストア

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 論理ボリュームマネージャの管理」

  • このページのTOPへ
  • ホームへ戻る
foltia ANIME LOCKER