読者です 読者をやめる 読者になる 読者になる

mondoでlive filesystemバックアップとリストア

conoha旧サービス最小構成のVPSにplexmediaserverを入れ、acd_cliでぶる下げたamazon driveをplex cloudで連携させてみたところ、動画や音楽を非常に楽しめる環境ができあがった。特に音楽系では、巨大flacなファイルまでスルスルとストリーミングするので、うれしくなって500Gほどamazonへ放り込んだところ、VPSを見ると1.5G程度ディスク容量が減っているのに気づいた。

いろいろ調べてみると、
/var/lib/plexmediaserver/Library/Application Support/Plex Media Server
配下にジャケ写画像などのファイルがcacheされるのだそうだ。

動画ファイルもガンガン放り込んだりしており、そのサムネイル画像などもcacheされていくので、今後どんどん肥大化していくこいつを何とかしなければならなくなった。
現況、基本構成(20G/80G)で使っていたので、全容量20Gのうち残りが5Gほどしか無く困った。どこか空きがという事で同じくamazonへと思ったが、plex supportを見るとサーバが(どう考えても)不安定になりそうなので、これは断念。

そこで、mondorescueを使って現環境をそのまま新しいVPSへ移行と考え、実行してみるとうまくいかない。あれこれ試行錯誤を繰り返しつつも一向にラチがあかない時にフッと残りの80Gをマウントしたほうが手っ取り早いのでは・・・と、ここに行き着く。

 

<結論>

基本構成(20G/80G)について、mondorescueをいじくり回していたおかげで、fdisk -lを実行して、全くの勘違いであった事にようやく気づく。残りの80Gは、/dev/vdbにext4で存在しており、これを、新たに作った/dataディレクトリにマウントして80Gを確保。ここに問題のcacheを含むApplication Supportをコピーし、/var/libのほうへシンボリックリンクをおき完了。あーあ。ってな感じで終了。。。

 

だが、いずれはお世話になりそうなmondorescue。ちゃんとリストアできるのか否かの検証のため、以下をメモ。

 

<バックアップ>

肝は、テンポラリーファイルやスクラッチファイルなどバックアップに関係する場所から除外する事だった。コマンドはCUIで、

mondoarchive -Oi -s 10000m -d /data/backup -T /data/backup -S /data/backup -E "/data/backup|/home/plex/acd3|/home/fedora/acd" -p conoha-`date +%Y%m%d`

とした。
サービスなど何も停止せずにバックアップしたが、いろいろ試した中でリストアが最もうまくいった。

 

<リストア>

とりあえず、/dev/vdbで80Gをマウントできた事で、cache肥大の件は解決したので、試しにconohaの旧サービスでVPSを追加し、そこへ試してみた。

オートでリストアすると、正常に終了。ディスクを排出して、exitすると難なく起動。とりあえず、rootでログインしてシェルからfdisk -lでチェックすると、/dev/vda1と/dev/vda2の両方にブートフラグがたっていた。なので、vda2のほうはこれを外す。
ざっと見た目良好だったが、/dataにデータがリストアされておらずスッカラカン。という事で、/etc/fstabを見ると、/dataにマウントする/dev/vdbはちゃんとアサインされている。。。

 

うーん、、、という事で、試しにinteractiveモードで再試行。

まず、Editing mountlistに何故か、/dev/vda2がlvmで表示されている。これを、/dev/vdbで、Mountpointを/data、Formatをext4、Sizeを0に修正。

次に「Do you want to erase and partition your hard drives?」と聞いてくるので、「Yes」。とするが、Configurering LVMで失敗し、「Re-edit the mountlist」と聞いてくる。なら、って事で、Re-edit the mountlistのところで、<cancel>を選びシェルにし、chrootする。ここで、fdisk -lしてみると、/dev/vda2が無いようだ。なので、
fdisk /dev/vdaで、nで、あとは、returnし続け新しくパーティション/dev/vda2を作り、tで8eのLinux LVMにする。さらに、aで、/dev/vda1をブータブルにし、wで保存。

exitでchrootを抜けると再びmondorescueが起動。boot:でinteractiveとし、mountlistsで/dev/vda2の所を同じ修正をして<OK>。先ほどパーティション操作はしたので、erase and partitionのところは<cancel>。すると今度はConfigureing LVMが成功し、各パーティションのフォーマットするかどうか聞いてくるので、<Yes>。

ようやく「Restoring from archives」で<Yes>でデータのリストアを開始。

 で。「Initialize the boot loader?」で<Yes>。initrdをre-generateせよ、とのAlertにすべて<Yes>。chrootされているシェルで、とりあえずブートローダーの再インストール。

grub2-mkconfig -o /boot/grub2/grub.cfg
し、
grub2-install /dev/vda
で、Installation finished. No error reported.

次に、dracutコマンドを使って、initramfsの再構成をおこなう。
cd /boot
ls -l vmlinuz*
で、ブートしたいカーネルを確認し(うちの場合)、
mv initfamfs-3.17.8-200.fc20.x86_64.img initfamfs-3.17.8-200.fc20.x86_64.img.oldと退避させ、
dracut initfamfs-3.17.8-200.fc20.x86_64.img 3.17.8-200.fc20.x86_64

exitでchrootされたシェルを抜け、再びGUI。あとは、ひたすら、Yesで、control-x。

すると、「GRUB is now installed correctly」で、<OK>。ラベルとか聞いてくるが、これも<Yes>で、<OK>。

Excution run ended; result=0という事で、isoを排出して、exitでリブート。

で。ブートするが、何故か、no such deviceでデバイスが無いよ。とのエラーを吐く。とりあえず、rootでログイン。

df -lすると、今度は、/dev/vdbがちゃんと/dataにマウントされており、かつ中身も正常にリストアされている。

fdisk -lすると、/dev/vda1にのみブータブルフラグがたっており、/dev/vda2も指定どおり。

grub2でのno such deviceが不気味だが、何となくほぼリストアできた実感。