Synology NAS が故障した場合、PC を使用してデータを復旧するにはどうすればよいですか?

Synology NAS が故障した場合、PC を使用してデータを復旧するにはどうすればよいですか?

記事のいくつかは英語から機械翻訳されており、不正確な箇所や文法の間違いを含む場合があります。

目的

この記事では、Synology NAS が故障した場合に PC 上のデータを復元する方法を案内します。

注:

  • ドライブを新しい NAS に移行した後、ボリュームを再度マウントできない場合があります。

環境

適用対象:

  • DSM バージョン 6.2.x 以降
  • Btrfs または ext4 ファイルシステムを使用するボリューム
  • Ubuntu バージョン 18.04 (ubuntu-18.04-desktop-amd64.isoこちらからダウンロード)

適用対象外:

  • 読み書き SSD キャッシュを使用するボリューム

解決策

PC を使用してデータを復元する

  1. PC にドライブをインストールするための十分なドライブスロットがあることを確認してください。
  2. Synology NAS からドライブを取り外し、PC にインストールします。RAID または SHR 構成の場合、すべてのドライブ (ホットスペアドライブを除く) を同時に PC にインストールする必要があります。
  3. このチュートリアルに従って Ubuntu 環境を準備します。
  4. 左側のバーでファイルに移動し、ホームを選択します。
  5. 右クリックして新しいフォルダを選択し、データにアクセスするためのマウントポイントとして 1 つ以上のフォルダを作成します。1
  6. 新しいフォルダを右クリックし、プロパティをクリックします。親フォルダのフォルダ名は ${mount_point} です。
    • 例: 親フォルダが /home/ubuntu/ で、フォルダ名が Test の場合、マウントポイントは /home/ubuntu/Test/ になります。
  7. 左下隅のアプリケーションを表示に移動 >検索するには入力...
  8. 検索バーに端末を入力し、端末を選択します。
  9. root 権限を取得するために次のコマンドを入力します。
    sudo -i
  10. RAID 管理ツールである mdadmlvm2 をインストールするために次のコマンドを入力します。 lvm2 がインストールされていないと vgchange は動作しません。
    apt-get update
    apt-get install -y mdadm lvm2
  11. Synology NAS から取り外したすべてのドライブをアセンブルするために次のコマンドを入力します。結果は Synology NAS のストレージプール構成によって異なる場合があります。
    mdadm -AsfR && vgchange -ay
  12. ${device_path} の情報を取得するために次のコマンドを入力します。
    cat /proc/mdstat
    lvs
    pvs/vgs/lvs の出力に従って、デバイスパスは次のとおりです:
    ${device_path}
    No lvs output
    /dev/${md}2
    With lvs output
    /dev/${VG}/${LV}3

    以下は、RAID およびボリュームタイプに対応する md status のサンプルです:

    デバイスパス
    単一ボリュームのクラシック RAID
    cat /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
    デバイスパス
    単一ボリュームの SHR
    cat /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>

    lvs
    root@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/SHR
    cat /proc/mdstat

    Personalities : [raid1]

    md3 : active raid1 sdc3[0] sdd3[1]

    73328704 blocks super 1.2 [2/2] [UU]

    unused devices:<none>

    lvs
    root@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
  13. すべてのドライブを読み取り専用としてマウントしてデータにアクセスするために次のコマンドを入力します。ステップ 12 の RAID およびボリュームタイプに従ってデバイスパスを ${device_path} に、ステップ 6 で作成したマウントポイントを ${mount_point} に入力します。データはマウントポイントの下に配置されます。
    mount ${device_path} ${mount_point} -o ro
  14. ファイル > ホーム >ステップ 5 で作成したフォルダ内のデータを確認します。
  15. 暗号化されたボリュームおよび共有フォルダの場合:

上記の手順でデータを復元できない場合は、他の方法で修復を試みないでください。データにさらに損傷を与える可能性があります。最後の手段として、地元のデータ救助会社の助けを求めてください。データの回収が保証されないことをご了承ください。

PC で暗号化されたボリュームをマウントする

暗号化されたボリュームのリカバリキーを持っていることを確認してください。次の手順は、リカバリキーが正しい場合にのみ機能します。

  1. ターミナルで、次のコマンドを入力して cryptsetup をインストールします。
    apt-get install cryptsetup
  2. 次のコマンドを入力してリカバリキーをデコードします。 ${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
  3. 次のコマンドを入力してリカバリキーが正しいかどうかをテストします。 ${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
  4. リカバリキーが正しいかどうかを確認します:
    • 正しいキー:
      Key slot 1 unlocked.
      Command successful.
    • 間違ったキー:
      No key available with this passphrase.
      Command failed with code -2 (no permission or bad passphrase).
      正しいキーを見つけて、前のステップに戻って再度デコードします。
  5. デコードされたリカバリキーを使用して暗号化されたボリュームを復号するために、次のコマンドを入力します。
    cryptsetup open --allow-discards /dev/vgX/volume_Y cryptvol_Y -S 1 -d ${base64_decode_output_path}
  6. 次のコマンドを入力して、すべてのドライブを読み取り専用としてマウントし、データにアクセスします。 ${device_path} をデバイスパス /dev/mapper/cryptvol_Y に置き換え、 ${mount_point}ステップ 6 で作成したマウントポイントに置き換えます。データはマウントポイントの下に配置されます。
    mount ${device_path} ${mount_point} -o ro
  7. データを復元するにはステップ 14 を参照してください。

暗号化された共有フォルダを PC にマウントする

暗号化した共有フォルダの暗号化キーを持っていることを確認してください。次の手順は、暗号化キーが正しい場合にのみ機能します。

  1. 端末で、以下のコマンドを入力して root 権限を取得します。
    sudo -i
  2. 以下のコマンドを入力して universe repo を有効にし、 ecryptfs-utils をインストールします。
    apt-get-repository universe
    apt-get update
    apt-get install ecryptfs-utils
  3. 以下のコマンドを入力して、暗号化キーの FNEK(ファイル名暗号化キー)値を取得します。
    ecryptfs-add-passphrase --fnek
    1. プロンプトが表示されたら、暗号化キーを Passphrase フィールドに入力します。
    2. 次のような出力が表示されます:
      Inserted auth tok with sig [79d78a9afb5ebc95] into the user session keyring
      Inserted auth tok with sig [e4e4e8a3ca7d5d54] into the user session keyring
      二つ目の角括弧内の値が FNEK 値です。この値をメモしておいてください。次のステップで必要になります。
  4. cd コマンドを使用して、前のセクションのステップ 6 で作成したマウントポイントに移動します。
    cd ${mount_point}
    • 例: マウントポイント ${mount_point}/home/ubuntu/Test/ の場合、入力するコマンドは次のようになります: cd /home/ubuntu/Test/
  5. 暗号化された共有フォルダのマウントポイントとして一時フォルダを作成します。 mkdir コマンドを使用して新しいフォルダを作成します。
    mkdir folder_name
    上記のコマンドで、 folder_name をフォルダに付けたい名前に置き換えます。
  6. 次のコマンドを入力して暗号化された共有フォルダをマウントします。
    mount -t ecryptfs folder_name
    前のステップで作成した一時フォルダの名前に folder_name を置き換えてください。マウントを完了するには、追加の入力が必要です。以下の指示に従ってください:
    1. Passphrase :暗号化キーを入力します。
    2. Select cipher1 を入力してaesを暗号化方式として選択します。
    3. Select key bytes2 を入力して32をキーのバイト数として選択します。
    4. Enable plaintext passthroughn を入力してこのオプションを無効にします。
    5. Enable filename encryptiony を入力してこのオプションを有効にします。
    6. Filename Encryption Key (FNEK) Signatureステップ 3 から FNEK 値を入力します。
    7. 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.
      警告メッセージは単なるリマインダーです。暗号化キーが正しいことを確認した場合、この警告を無視して続行できます。
    8. Would you like to proceed with the mounty を入力してマウントを続行することに同意します。
    9. Would you like to append sig … in order to avoid this warning in the futuren を入力して続行します。
    10. マウントが成功すると、次のような出力が表示されます:
      Mounted eCryptfs

注:

  1. マウントポイントは 1 つのボリュームに相当します。複数のボリュームを復元する必要がある場合は、ボリュームの数と同じ数のフォルダーを作成してください。
  2. md (アレイ) の数は cat /proc/mdstat の結果にリストされます。
  3. syno_vg_reserved_area は無視できます。volume_x の数はボリュームの数と同じです。
目的
環境
解決策
PC を使用してデータを復元する
PC で暗号化されたボリュームをマウントする
暗号化された共有フォルダを PC にマウントする