28654 posts 295 follows 404 followers
こんなんですが.motcha.techの管理人
インターネット老人会所属
du -m でメガバイト単位のファイルサイズが分かるので、どれがデータ入りのDBフォルダか確認しておきましょう。df -hで鯖全体の空き容量は見えます。DBは相当大規模鯖でもない限り、きっとVPSの中で何個かはコピーが持てる程度のサイズに収まっているでしょう。もし仮に空き容量が不足している時は、現行のコンテナを上げっぱなしでdocker system pruneすると、使ってない無駄なイメージを破棄するのでよいでしょう。
フォルダ単位でcpやmvをしていると、ディレクトリの森で迷子になります。リネームも行うので、どれが何だったやらサッパリわからなくなることもあります。というか、僕はなりました。そんなこんなで貴重な元データを、中身になんにもない同名フォルダで上書きしたわけです。
オリジナルのデータは別ディレクトリに退避させておき、作業時にはオリジナルのコピーを/path/to/mastodon配下に置きましょう。それでコンテナをあげ直して、正常動作を確認するまではオリジナルデータは大切にするべきです。それさえあれば、何度でもやり直しは効きますから。
細かい手順はググればQiitaが出てきますが、一つだけ助言を。DBがそれほど巨大ではない限り、コピーしてきたオリジナルデータは元データとして作業完了まで触らない様にしましょう。コピーのコピーを、実際の作業に使うんです。
コンテナ永続化のポイントは、既存コンテナを完全に潰すことです。このタイミングまでにデータの退避をきちんと確認しましょう。具体的には?元データのフォルダと容量を比較したり、パーミッションを見ておいたり、なんならスクリーンショットも撮っちゃいましょう。最近のWindowsならWin+Prtscrでピクチャフォルダに勝手に画像を作ってくれます。一個一個進めながら撮っておきましょう。
DBがぶっ飛んだのでもう辞めるね!バイバーイ!ヽ(•̀ω•́ )ゝ
みたいなコメントが表示されるページに何度も何度も配送を試みる俺達のサーバー、可哀想じゃん…(あとほんの少しとはいえリソースの無駄)
まぁ、ホントのところは…全く別の環境(自宅のパソコンとか)で非永続化コンテナを建てて移行手順を確認しておくのが理想的です。僕はこれを面倒くさがってやらなかったのでDB消えました。
最悪のシチュエーション(非永続化→永続化移行失敗)でも、コンテナが潰れたらチャンスと捉えましょう。喪うものは何もありません。永続化が上手くいくまで色々試しましょう。上手くいけば、少しの辛抱でまたマトモなサーバーとして周りには認識されます。まぁ、サムってこんな奴だよな、というのが周りに知れ渡ってしまえばいいので。
もちろん、周りのサーバーに多少迷惑がかかってもまぁいいか〜ってな具合で消えていったインスタンスはごまんとあります。ありますが、鯖缶たちはちょっとした呻き声と共にSidekiqの再試行ページを開いたりしています…
今のところ、一度建ててしまったマストドンサーバーを綺麗に、かつ簡単に引退させる方法は…ないように思います。Web公開サーバーの中でも、分散システムの一角に参加してしまった以上…それなりにやっていく責任はあるという話です。
バックアップを取らずに非永続化コンテナを潰すのも全く同様にダメです。本当に自分のサーバーからは全てが消えてなくなりますが、周りのサーバーはあなたのコンテナの中にある貴重なデータが消えたことはわかりませんし、あなたのサーバーにいる人を都合よく忘れることもしません。覚えている以上、フォロー関係のあったあなたのサーバー内にいるアカウントに向けて通信を試みます。当然失敗するので、周りのサーバーは何度も何度も配送にチャレンジします。これが俗にいう「Sidekiqに屍が〜」って奴です。
この状態に陥ると、トゥート配送がマトモに機能するようになるまで1週間近くおかしな状態が続きます。可能なかぎり避けたいシチュエーションです。僕は完全にやらかしましたが。
具体的に言うと、アカウントが消し飛ぶので「○○さんに俺のサーバーのトゥートを届けてくれや」と外のサーバーが言ってきても、外見サムの中身ジョン状態だと渡すべき相手の○○さんの情報が無いわけです。で、そんな奴いねぇよ出直してこいってなことでトゥートが届かなくなります。
そんなこんなで、非永続化コンテナからデータを抜き出す作業は不可逆的なコンテナの破壊を必ず伴います。無論、戻せなければ同じホストの上であっても「別の」マストドンが動くことになります。こうなると登録してもらったアカウント情報も消え失せるし、周りのサーバーからは「昨日までサムだったのに、今日話し掛けたら見た目はサムだけど中身はジョンだぜ」みたいなちぐはぐなことになり、非常に残念な目に逢います。
逆に言えば、永続化さえ済んでいれば、コンテナを何度潰してもなんの問題もありません。むしろ、そういう運用がアップデートの激しいマストドンでは向いているでしょう。