データ復旧
Unraid サーバーを管理する際には、データ保護を理解することが重要です。Unraid は一般的なハードウェア障害に対して強力な保護を提供しますが、どのシステムもデータ損失を完全に防ぐことはできません。このセクションでは、データを保護するためのベストプラクティス、潜在的な問題の見極め方、問題発生時のデータ復旧について説明します。
効果的なデータ復旧は、定期的なバックアップ、積極的な監視、ドライブおよびアレイ構成の慎重な取り扱いを含む、堅実なデータ保護戦略から始まります。
バックアップ戦略の基本
Unraid はさまざまなハードウェア障害から保護を提供しますが、重要なデータの信頼できるバックアップを持つことは不可欠です。バックアップは、壊滅的な障害、ランサムウェア、または誤削除に対する最後の防衛線です。
- 重要なデータを評価する: 個人的な文書、写真、重要な動画など、置き換えのきかない、または必須のファイルを特定します。
- 複数のバックアップコピー: 3-2-1 ルールに従いましょう。少なくとも 3 つのコピーを 2 種類の異なるメディアに保存し、1 つはオフサイトまたはクラウドに保管します。これにより、火災や盗難などの物理的災害によるリスクを最小限に抑えられます。
- バックアップ頻度: データ損失の可能性を減らすために、定期的なバックアップをスケジュールします。
- ランサムウェア対策: 少なくとも 1 つのバックアップコピーは、オフラインまたはアクセス不能な状態にして、破損の可能性に備えます。
- バックアップツール: Unraid 7.0 以降では、起動デバイスと設定の自動バックアップをクラウドに行うために Unraid Connect を使用することを推奨します。ほかの一般的なバックアップソリューションには次のようなものがあります:
- Duplicati: 重複排除と暗号化を備え、クラウド、ローカル、USB、リモートの保存先に対応する、汎用性の高いオープンソースのバックアップツールです。
- rclone: クラウドストレージプロバイダの同期とバックアップのための堅牢なソリューションです。
- rsync: ローカルまたはリモートのバックアップに効率的な選択肢です。
- borgbackup: 重複排除され暗号化されたバックアップに関心のある上級ユーザー向けの選択肢です。
ユーザーは自分のリスク許容度とバックアップ要件を評価すべきですが、クラウド統合と自動化を活用することは、ほとんどの Unraid ユーザーにとって良い出発点です。
Unraid 7.0 以降では、Unraid Connect を有効にして、起動デバイスと設定をクラウドへ自動バックアップします。重要なファイルや共有については、Duplicati、rclone、または同様のツールを使用して、ローカル、リモート、またはクラウドの保存先へスケジュールバックアップを作成することを検討してください。バックアップが必要なときに確実に機能するよう、復元手順は必ずテストしてください。
- 通知を有効にする: Settings → Notifications で通知を設定し、システムの問題に関する即時アラートを受け取れるようにします。
- 専門家の助言を求める: 復旧手順に不安がある場合は、何かを行う前に Unraid フォーラム に相談してください。
- 定期的な健康チェック: ドライブの SMART データ を確認し、定期的にファイルシステムチェックを実行します。
ファイルシステムを修復する
これらの手順は、ファイルシステムが破損したデータドライブにのみ厳密に使用してください。パリティドライブ、ハードウェアの問題、または欠落しているドライブには適用しないでください。
- ファイルシステム修復ツールは、ファイルシステムまたはマウントのエラーがあるデータドライブやキャッシュドライブを修正するためだけのものです。
- パリティドライブにはファイルシステムがありません。パリティドライブで修復ツールを実行すると破損する可能性があり、元に戻せないデータ損失につながることがあります。
デバイス名: パスと記号
WebGUI を使用する場合、デバイスパスは自動的に管理されます。コマンドラインで修復する場合は、常に正しい パーティションパス を使用していることを確認してください:
| ラベル | 一般的なパス | 用途 | Parity は保護されていますか? |
|---|---|---|---|
| Disk 7 | /mnt/disk7 | Unraid マウントポイント | はい(array ディスクの場合) |
| Array パーティション | /dev/md7p1 | Unraid 管理デバイス | はい |
| 生のパーティション | /dev/sdj1 | 直接デバイスアクセス | いいえ |
- array ドライブでは、常に有効なparityを維持するために
/dev/mdXp1を使用してください。 - array 以外のドライブ(cache 専用デバイスなど)では、
/dev/sdj1のような直接のパーティションパスを使用してください。
適切な修復方法の選択
v6.0.0 以降のすべての Unraid バージョンは、WebGUI を通じて XFS および BTRFS のファイルシステム修復をサポートしています。
ほとんどのユーザーに推奨される方法は次のとおりです:
- WebGUI を開きます。
- Main タブに移動します。
- 該当する array または cache デバイスをクリックします。
- 画面の指示に従って、組み込みのファイルシステムチェックと修復を実行します。
コマンドラインを使う場合は、常に次の点に注意してください:
- array ドライブの正しい Unraid 管理パーティション(
/dev/mdXp1)を特定します。 - ファイルシステムに適した修復ツールを使用します:
- XFS:
xfs_repair - BTRFS:
btrfs check(--repairは必要時のみ慎重に検討し、実行前にバックアップを推奨します。scrubはチェックサム検証と冗長コピーからの修復が主な用途で、構造的なファイルシステム修復には使いません。)
- XFS:
WebGUI でドライブを確認および修復する
このセクションでは、Unraid の組み込みツールを使用して、データドライブ上のファイルシステム破損を診断し修復する方法を説明します。ファイルシステムの問題は、正常でないシャットダウン、電源障害、またはハードウェアの問題の後に発生することがありますが、Unraid は、根本的な問題を修正しながら parity 保護を維持する安全な修復方法を提供します。
テストの準備
| ファイルシステム | 起動モード | メンテナンスモードが必要? | 注記 |
|---|---|---|---|
| XFS | メンテナンスモード | はい | チェック/修復を行うには、Array をメンテナンスモードで起動する必要があります(ドライブはマウントされません)。 |
| BTRFS | 通常モード | いいえ | スクラブ/チェックを行うには、Array はメンテナンスモードではなく通常モードで起動する必要があります。 |
- 対象ドライブのファイルシステムを特定します: Main タブ → ドライブ名をクリック → File system type を確認します。
- Main 画面で、テストまたは修復するディスクをクリックします。
テストの実行
- ほとんどのファイルシステム(XFS など)の既定は読み取り専用チェック(変更なし)で、通常は
-n(変更しない)オプションを使用します。 (XFS でより詳細な出力が必要な場合は、-v(verbose)オプションを追加し、-nvにします。) - BTRFS では、
balance操作の代わりにscrubコマンドを使用します。 - Check をクリックして開始します。必要に応じて、進行状況を監視するために Refresh ボタンを使用します。
- 破損が見つからない場合は、テストと修復後 に進みます。
修復の実行
- XFS ドライブ用
- BTRFS ドライブとプール用
Unraid 7.0 以降では、XFS ファイルシステムの修復は WebGUI を通じて完全に自動化されています:
- CHECK ボタンをクリックします(オプションは入力しません)。
- 結果の確認:
- 破損は検出されませんでした: 「ファイルシステムの破損は検出されませんでした」と表示され、CHECK ボタンは残ります。
- 破損が検出されました: 「ファイルシステムの破損が検出されました」と表示され、FIX ボタンが表示されます。
- FIX をクリックすると、ファイルシステムが自動的に修復されます。
- 必要に応じて、ZERO LOG ボタンが表示される場合があります。
- 完了すると、「ファイルシステムが修復されました」と表示されます。
この自動化されたシステムにより、ユーザーが修復オプションを手動で入力する必要がなくなり、正しい修復手順が確実に実行されます。
- WebGUI で
btrfs scrubを使用して、特定のエラーをスキャンし修復します。 - 単一ドライブでは、scrub は一部のエラーを検出できても修復できない場合があります。その場合は、データを別の場所にコピーしてから、ディスクまたはプールを再フォーマットすることを検討してください。
テストと修復後
Maintenance Mode を使用した場合は、アレイを停止し、通常モードで再起動して操作を再開します。
- 修復およびチェック操作には、ファイルシステムのサイズと状態に応じて、30 分以上かかることがあります。
- 大規模な破損では、復旧されたファイルやフォルダーの断片を含む
lost+foundフォルダーが作成されることがあります。必要に応じてそれらを確認して復元し、完了後に削除してください。 - これは Windows で chkdsk や scandisk を実行し、
File0000.chkなどに名前が変更されたファイルを扱うのに似ています。lost+foundの内容を確認するときは時間をかけてください。
XFS のチェックと修復
- WebGUI でのチェックと修復
- コマンドラインで xfs_repair を実行
- WebGUI を XFS でフォーマットされた array ドライブに使用します。
- array を Maintenance Mode(アンマウント済み)で開始します。
- メインタブでディスクを選択し、ファイルシステム状態を確認 を開きます。
- 既定では、チェックは
-n(変更しない)を使用します。より詳細な出力が必要な場合は、-vを追加して-nvにします。 - 修復するには、修正を許可するために
-nフラグを削除します。
マウントできないディスク
以前は正常だったディスクがマウントできなくなった場合、通常はファイルシステムの破損を示しており、多くは正常でないシャットダウンや書き込み失敗が原因です。
復旧手順
以前は問題なく動作していたディスクが突然マウントできなくなると、データについて不安になるのは当然です。この種の問題は、正常でないシャットダウン、電源遮断、または書き込み操作の失敗の後に発生するファイルシステムの破損が原因であることがよくあります。最も重要なのは、WebGUI でフォーマットを求められてもドライブをフォーマットしないことです。フォーマットすると既存のデータはすべて消去され、復旧は困難、場合によっては不可能になります。
代わりに、まずファイルシステムの修復を試みるべきです。Unraid にはそのための組み込みツールがあり、正しい手順に従えば、最小限のリスクでデータへのアクセスを復元できることがよくあります。
手順は次のとおりです:
-
ファイルシステム修復セクション を確認します。このガイドでは、使用しているファイルシステムごとの手順を説明します。
-
XFS ファイルシステムを使用しているディスク(Unraid の多くの構成で既定)では、次を実行します:
xfs_repair -v /dev/mdXp1X を正しいディスク番号に置き換えてください。
-vフラグは詳細な進行状況を表示します。このコマンドは、指定したディスク上のファイルシステムをチェックし、修復を試みます。 -
BTRFS でフォーマットされたディスクでは、まず読み取り専用チェックを実行します:
btrfs check /dev/mdXp1X を正しいディスク番号に置き換えてください。修復モードは、絶対に必要な場合にのみ、リスクを理解したうえで使用してください:
btrfs check --repair /dev/mdXp1
--repair オプションは非常に危険で、さらなるデータ損失を引き起こす可能性があります。必ず最初にバックアップまたはディスクイメージを作成してください。ドキュメント を確認し、よく分からない場合は追加の助言を求めることを検討してください。
これらの修復を試しても問題が解決しない場合や、理解できないエラーに遭遇した場合は、いったん作業を止めて Unraid フォーラムで助けを求めるのが最善です。経験豊富なユーザーやモデレーターが次の手順を案内してくれますし、その先に進む前に別の意見を得ることは常に安全です。
アレイ構成の消失
%%array|アレイ%% の設定を失うと不安になりますが、データが消えたわけではありません。%%array|アレイ%% の設定ファイル(起動デバイス上の config/super.dat にあります)は、どのドライブがどのように割り当てられているか、またどれが %%parity|パリティ%% として機能するかを Unraid に伝えます。起動デバイスを紛失した場合や最近のバックアップがない場合でも、ドライブを慎重に再割り当てすることで %%array|アレイ%% を復旧できます。
このような状況に陥った場合は、次の手順に従ってください:
- WebGUI で、使用可能なすべてのドライブをデータドライブとして割り当てます。まだparity は割り当てないでください。
- array を開始します。以前 parity に使われていたドライブは、ファイルシステムがないため マウントできない と表示されます。
- これらのマウントできないドライブのシリアル番号を書き留めるかスクリーンショットを撮ります。これらが parity ドライブです。
- array を停止します。
- Tools → New Config に移動し、現在の割り当てを保持するオプションを選択します。
- 続行することを確認するチェックボックスをオンにして、Apply をクリックします。
- Main タブに戻り、記録したシリアル番号を使って parity ドライブを正しく割り当てます。
- array を開始し、正しい割り当てに基づいて parity を再構築します。
ddrescue を使ってデータを復旧する
通常の Unraid の復旧方法、たとえば ディスクの置き換え 手順が、複数のディスク障害や無効な %%parity|パリティ%% のために実行できない場合、ddrescue のような専用ツールを使うと、故障しつつあるドライブから可能な限り多くのデータを救出できます。
始める前に、データ復旧は繊細な作業であることを忘れないでください。可能であれば、常に障害が発生しているディスクのコピーから作業し、元のソースディスクには新しいデータを書き込まないでください。置き換えのきかないデータであれば、高度な復旧作業を自分で始める前に、専門の復旧サービスを検討してください。作業内容を記録し、時間をかけて進めてください。急ぐと恒久的なデータ損失のリスクが高まります。
ddrescue をインストールする推奨方法は、Nerd Tools プラグインを使用することです(これは 2022 年に非推奨の NerdPack に代わったものです)。
ddrescue を有効にするには:
- Unraid WebGUI の Apps タブから Nerd Tools をインストールします。
- Settings → Nerd Tools を開き、ddrescue を有効にします。
障害のあるディスクのクローン作成
正常な保存先ディスクが必要で、その容量は障害のあるソースディスクと少なくとも同じ大きさでなければなりません。処理中は、どちらのディスクもマウントされていないことを確認してください。開始前にデバイスの割り当てを必ず再確認してください。保存先を間違えると、そのディスクのデータが上書きされ、破壊されます。
ディスク全体をクローンするには、ターミナルまたは SSH セッションを開き、次のコマンドを実行します:
ddrescue -f /dev/sdX /dev/sdY /boot/ddrescue.log
- X をソースディスクの文字に、Y を保存先ディスクの文字に置き換えます。
/boot/ddrescue.logファイルは進行状況を記録し、処理が中断されても再開できるようにします。
parity を維持しながら array ディスクへ直接クローンしたい場合は、md# デバイスを使用し、array をメンテナンスモードで起動します:
ddrescue -f /dev/sdX1 /dev/md\# /boot/ddrescue.log
- X をソースディスクの文字に置き換えてください(パーティションであることを示す
1に注意してください)。 - # を保存先ディスクの番号に置き換えてください。
ddrescue を実行する前に、必ずデバイスの割り当てを確認してください。保存先を間違えると、そのディスク上のデータが完全に失われる可能性があります。
ddrescue の出力を読み解く
復旧処理中、ddrescue はリアルタイムの進行状況を表示します。
最初のパスで表示される内容の例は次のとおりです:
GNU ddrescue 1.27
ipos: 926889 MB, non-trimmed: 1695 kB, current rate: 95092 kB/s
opos: 926889 MB, non-scraped: 0 B, average rate: 79236 kB/s
non-tried: 1074 GB, bad-sector: 0 B, error rate: 0 B/s
rescued: 925804 MB, bad areas: 0, run time: 3h 14m 44s
pct rescued: 46.28%, read errors: 54, remaining time: 3h 18m
time since last successful read: 0s
Copying non-tried blocks... Pass 1 (forwards)
- ipos/opos: ソースディスクと保存先ディスクの現在の読み書き位置。
- rescued: 正常にコピーされたデータ量。
- bad areas/read errors: 発生した問題領域と読み取りエラーの数。
- pct rescued: これまでに復旧されたディスクの割合。
- remaining time: 完了までの推定時間。
- Copying non-tried blocks...: ddrescue はまだ試していないすべてのセクタを読み取る最初の試行を行っています。
最初のコピー後、ddrescue は複数回のパスを行い、場合によっては両方向からブロックを読み取ることで、問題セクタからのデータ復旧を試みます。この段階は、特にディスクが深刻に損傷している場合、はるかに長くかかることがあります。
この段階での出力例は次のとおりです:
GNU ddrescue 1.27
ipos: 17878 MB, non-trimmed: 0 B, current rate: 0 B/s
opos: 17878 MB, non-scraped: 362496 B, average rate: 74898 kB/s
non-tried: 0 B, bad-sector: 93696 B, error rate: 102 B/s
rescued: 2000 GB, bad areas: 101, run time: 7h 25m 8s
pct rescued: 99.99%, read errors: 260, remaining time: 25m
time since last successful read: 10s
Scraping failed blocks... (forwards)
- Scraping failed blocks...: ddrescue は読み取り不能なセクタの復旧を繰り返し試みています。
- bad areas/read errors: ddrescue がより多くの損傷を見つけるにつれてこれらの数値は増えることがありますが、目標は復旧不能なデータを最小限に抑えることです。
復旧したディスクのマウントと確認
ddrescue が完了したら、保存先ディスクのマウントを試せます。WebGUI で簡単にマウントするには、Unassigned Devices プラグイン を使用します。ディスクがマウントできない場合は、xfs_repair や btrfs check など、適切なファイルシステム修復ツールを実行します。ディスクがマウントできた場合でも、整合性を確認するためにファイルシステムチェックを実行することをお勧めします。
ファイルを復旧したら、array 上の安全な場所にコピーします。特にディスクに読み取り不能セクタが多かった場合は、一部のファイルが破損している可能性があることに注意してください。checksums(または組み込みのチェックサム機能を備えた BTRFS)を使用すると、損傷したファイルを特定するのに役立ちます。
チェックサムなしで破損ファイルを特定する
チェックサムがない場合でも、ddrescue の fill モードを使って、問題セクタの影響を受けたファイルを特定できます:
-
一意の文字列を含む一時ファイルを作成します:
printf "Unraid " > ~/fill.txt -
その文字列でクローンしたディスクの不良ブロックを埋めます:
ddrescue --fill-mode='-' ~/fill.txt /dev/sdY /boot/ddrescue.logY を保存先ディスクに置き換え、既存の ddrescue マップファイルを使用します。