Synology NAS が故障した場合、PC を使用してデータを復旧するにはどうすればよいですか?
Synology NAS が故障した場合、PC を使用してデータを復旧するにはどうすればよいですか?
記事のいくつかは英語から機械翻訳されており、不正確な箇所や文法の間違いを含む場合があります。
環境
適用対象:
- DSM バージョン 6.2.x 以降
- Btrfs または ext4 ファイルシステムを使用するボリューム
- Ubuntu バージョン 18.04 (ubuntu-18.04-desktop-amd64.iso をこちらからダウンロード)
適用対象外:
- 読み書き SSD キャッシュを使用するボリューム
解決策
PC を使用してデータを復元する
- PC にドライブをインストールするための十分なドライブスロットがあることを確認してください。
- Synology NAS からドライブを取り外し、PC にインストールします。RAID または SHR 構成の場合、すべてのドライブ (ホットスペアドライブを除く) を同時に PC にインストールする必要があります。
- このチュートリアルに従って Ubuntu 環境を準備します。
- 左側のバーでファイルに移動し、ホームを選択します。
- 右クリックして新しいフォルダを選択し、データにアクセスするためのマウントポイントとして 1 つ以上のフォルダを作成します。1
- 新しいフォルダを右クリックし、プロパティをクリックします。親フォルダのフォルダ名は
${mount_point}
です。- 例: 親フォルダが
/home/ubuntu/
で、フォルダ名がTest
の場合、マウントポイントは/home/ubuntu/Test/
になります。
- 例: 親フォルダが
- 左下隅のアプリケーションを表示に移動 >検索するには入力...。
- 検索バーに端末を入力し、端末を選択します。
- root 権限を取得するために次のコマンドを入力します。
sudo -i
- RAID 管理ツールである
mdadm
とlvm2
をインストールするために次のコマンドを入力します。lvm2
がインストールされていないとvgchange
は動作しません。apt-get update
apt-get install -y mdadm lvm2 - Synology NAS から取り外したすべてのドライブをアセンブルするために次のコマンドを入力します。結果は Synology NAS のストレージプール構成によって異なる場合があります。
mdadm -AsfR && vgchange -ay
${device_path}
の情報を取得するために次のコマンドを入力します。cat /proc/mdstat
lvspvs/vgs/lvs
の出力に従って、デバイスパスは次のとおりです:以下は、RAID およびボリュームタイプに対応する
md status
のサンプルです:デバイスパス単一ボリュームのクラシック RAIDcat /proc/mdstat
root@ubuntu:~# cat /proc/mdstat
Personalities : [raid1]
md4: active raid1 sdc3[0]
73328704 blocks super 1.2 [1/1] [U]
unused devices:<none>
lvs出力なし${device_path}
/dev/md4
デバイスパス単一ボリュームの SHRcat /proc/mdstat
root@ubuntu:~# cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sda5[0]
73319616 blocks super 1.2 [1/1] [U]
unused devices:<none>
lvsroot@ubuntu:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv vg1000 -wi-a----- 69.92g
${device_path}
/dev/vg1000/lv
デバイスパス複数ボリュームのクラシック RAID/SHRcat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sdc3[0] sdd3[1]
73328704 blocks super 1.2 [2/2] [UU]
unused devices:<none>
lvsroot@ubuntu:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy% Sync Convert
syno_vg_reserved_area vg1 -wi-a----- 12.00m
volume_1 vg1 -wi-a----- 30.00g
volume_3 vg1 -wi-a----- 30.00g
${device_path}
/dev/vg1/volume_1
/dev/vg1/volume_3- すべてのドライブを読み取り専用としてマウントしてデータにアクセスするために次のコマンドを入力します。ステップ 12 の RAID およびボリュームタイプに従ってデバイスパスを
${device_path}
に、ステップ 6 で作成したマウントポイントを${mount_point}
に入力します。データはマウントポイントの下に配置されます。mount ${device_path} ${mount_point} -o ro
- ファイル > ホーム >ステップ 5 で作成したフォルダ内のデータを確認します。
- 暗号化されたボリュームおよび共有フォルダの場合:
上記の手順でデータを復元できない場合は、他の方法で修復を試みないでください。データにさらに損傷を与える可能性があります。最後の手段として、地元のデータ救助会社の助けを求めてください。データの回収が保証されないことをご了承ください。
PC で暗号化されたボリュームをマウントする
暗号化されたボリュームのリカバリキーを持っていることを確認してください。次の手順は、リカバリキーが正しい場合にのみ機能します。
- ターミナルで、次のコマンドを入力して
cryptsetup
をインストールします。apt-get install cryptsetup
- 次のコマンドを入力してリカバリキーをデコードします。
${your_recovery_key_path}
をリカバリキーの場所に置き換え、${base64_decode_output_path}
を希望する出力ファイル名と場所に置き換えます。base64 --decode ${your_recovery_key_path} > ${base64_decode_output_path}
- 例: リカバリキーが
/mnt/volume1.rkey
にあり、出力ファイルをdecode_output
という名前で/mnt
に保存したい場合、入力するコマンドは次のようになります:base64 --decode /mnt/volume1.rkey > /mnt/decode_output
- 例: リカバリキーが
- 次のコマンドを入力してリカバリキーが正しいかどうかをテストします。
${base64_decode_output_path}
を出力ファイル名と場所に置き換えます。cryptsetup open --test-passphrase /dev/vgX/volume_Y -S 1 -d ${base64_decode_output_path} -v
- 例: 出力ファイル名が
decode_output
で/mnt
に保存されている場合、入力するコマンドは次のようになります:cryptsetup open --test-passphrase /dev/vgX/volume_Y -S 1 -d /mnt/decode_output -v
- 例: 出力ファイル名が
- リカバリキーが正しいかどうかを確認します:
- 正しいキー:
Key slot 1 unlocked.
Command successful. - 間違ったキー:
正しいキーを見つけて、前のステップに戻って再度デコードします。
No key available with this passphrase.
Command failed with code -2 (no permission or bad passphrase).
- 正しいキー:
- デコードされたリカバリキーを使用して暗号化されたボリュームを復号するために、次のコマンドを入力します。
cryptsetup open --allow-discards /dev/vgX/volume_Y cryptvol_Y -S 1 -d ${base64_decode_output_path}
- 次のコマンドを入力して、すべてのドライブを読み取り専用としてマウントし、データにアクセスします。
${device_path}
をデバイスパス/dev/mapper/cryptvol_Y
に置き換え、${mount_point}
をステップ 6 で作成したマウントポイントに置き換えます。データはマウントポイントの下に配置されます。mount ${device_path} ${mount_point} -o ro
- データを復元するにはステップ 14 を参照してください。
暗号化された共有フォルダを PC にマウントする
暗号化した共有フォルダの暗号化キーを持っていることを確認してください。次の手順は、暗号化キーが正しい場合にのみ機能します。
- 端末で、以下のコマンドを入力して root 権限を取得します。
sudo -i
- 以下のコマンドを入力して
universe repo
を有効にし、ecryptfs-utils
をインストールします。apt-get-repository universe
apt-get update
apt-get install ecryptfs-utils - 以下のコマンドを入力して、暗号化キーの FNEK(ファイル名暗号化キー)値を取得します。
ecryptfs-add-passphrase --fnek
- プロンプトが表示されたら、暗号化キーを
Passphrase
フィールドに入力します。 - 次のような出力が表示されます:
二つ目の角括弧内の値が FNEK 値です。この値をメモしておいてください。次のステップで必要になります。
Inserted auth tok with sig [79d78a9afb5ebc95] into the user session keyring
Inserted auth tok with sig [e4e4e8a3ca7d5d54] into the user session keyring
- プロンプトが表示されたら、暗号化キーを
cd
コマンドを使用して、前のセクションのステップ 6 で作成したマウントポイントに移動します。cd ${mount_point}
- 例: マウントポイント
${mount_point}
が/home/ubuntu/Test/
の場合、入力するコマンドは次のようになります:cd /home/ubuntu/Test/
。
- 例: マウントポイント
- 暗号化された共有フォルダのマウントポイントとして一時フォルダを作成します。
mkdir
コマンドを使用して新しいフォルダを作成します。上記のコマンドで、mkdir folder_name
folder_name
をフォルダに付けたい名前に置き換えます。 - 次のコマンドを入力して暗号化された共有フォルダをマウントします。
前のステップで作成した一時フォルダの名前に
mount -t ecryptfs folder_name
folder_name
を置き換えてください。マウントを完了するには、追加の入力が必要です。以下の指示に従ってください:Passphrase
:暗号化キーを入力します。Select cipher
:1
を入力してaesを暗号化方式として選択します。Select key bytes
:2
を入力して32をキーのバイト数として選択します。Enable plaintext passthrough
:n
を入力してこのオプションを無効にします。Enable filename encryption
:y
を入力してこのオプションを有効にします。Filename Encryption Key (FNEK) Signature
: ステップ 3 から FNEK 値を入力します。- FNEK 値を入力すると、次のような出力が表示されます:
警告メッセージは単なるリマインダーです。暗号化キーが正しいことを確認した場合、この警告を無視して続行できます。
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_fnek_sig=e4e4e8a3ca7d5d54
ecryptfs_key_bytes=32
ecryptfs_cipher=aes
ecryptfs_sig=79d78a9afb5ebc95
WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt], it looks like you have never mounted with this key before. This could mean that you have typed your passphrase wrong. Would you like to proceed with the mount
:y
を入力してマウントを続行することに同意します。Would you like to append sig … in order to avoid this warning in the future
:n
を入力して続行します。- マウントが成功すると、次のような出力が表示されます:
Mounted eCryptfs