TrueNASのZFSファイルシステムからのデータサルベージ

概要

TrueNASを崩したあとにHDDのみある場合にZFSファイルシステムからデータをサルベージしたときの備忘録

Ubuntu をインストール

ZFSを簡単にマウントするため、仮想環境にUbuntuをインストールして、ZFSユーティリティをインストールする。

root@ubuntu:~# apt install --yes zfsutils-linux

zfsutils-linux は、ZFS ユーティリティを提供するパッケージです。

  • zpool: ZFS プールを作成、管理するユーティリティ
  • zfs: ZFS ボリューム、スナップショット、メタデータを管理するユーティリティ
  • zfs-mount: ZFS ボリュームをマウントするユーティリティ

HDDを接続

USBのケースにHDDをいれ、仮想マシンにマウントする。

Ubuntuで認識されたことを確認する。

root@ubuntu:~# fdisk -l
~~~~~

Device       Start         End     Sectors  Size Type
/dev/sdb1      128     4194304     4194177    2G Linux swap
/dev/sdb2  4194432 15628053134 15623858703  7.3T Solaris /usr & Apple ZFS

ZFS Pool をマウントする

まず、Pool名が不明なのでZFS プールをインポートを試します。

root@ubuntu:~# zpool import
   pool: DataStore-001
     id: 14948082992506273991
  state: UNAVAIL
status: The pool was last accessed by another system.
 action: The pool cannot be imported due to damaged devices or data.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-EY
 config:

        DataStore-001                           UNAVAIL  missing device
          XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX  ONLINE
        logs
          YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY  UNAVAIL
          ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ  UNAVAIL

state: UNAVAIL と表示されているので、インポートに失敗しています。
action メッセージから、プールは破損したデバイスまたはデータのためにインポートできていません。
config セクションから、プールは DataStore-001 という名前で、2 つのデバイスで構成されています。デバイス XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX は ONLINE 状態ですが、デバイス YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY と ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZは UNAVAIL 状態です。(ログを別ディスクとしていたため。)

欠落しているデバイス YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY と ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZを復旧するか、交換する必要がありますが、デバイスは存在しないので、下記のコマンドで強制的にインポートし、メンテナンスモードで起動します。

root@ubuntu:~# zpool import -f DataStore-001 -m

ZFS プールのステータスを表示します。
HEALTH は DEGRADED 状態でプールが冗長性を失っていることを示します。

root@ubuntu:~# zpool list
NAME            SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
DataStore-001  7.27T  3.45T  3.82T        -         -     1%    47%  1.00x  DEGRADED  -

本来であればデバイスの復旧を行うべきですが、今回はデータのサルベージのみなのでデータの退避をおこないます。

root@ubuntu:~# zpool status
  pool: DataStore-001
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J
  scan: scrub repaired 0B in 06:03:51 with 0 errors on Sat Oct  7 21:03:53 2023
config:

        NAME                                    STATE     READ WRITE CKSUM
        DataStore-001                           DEGRADED     0     0     0
          XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX  ONLINE       0     0     0
        logs
          YYYYYYYYYYYYYYYYYYYY                  UNAVAIL      0     0     0  was /dev/disk/by-partuuid/YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY
          ZZZZZZZZZZZZZZZZZZZZ                  UNAVAIL      0     0     0  was /dev/disk/by-partuuid/ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ

SAMBAで退避先をマウントする

ファイル共有している別サーバをマウントする。

mkdir /samba_mount
mount -t cifs -o username='usernaem',password='password' //SAMBA/Share /samba_mount

コピー

cp -pr /DataStore-001/* /samba_mount/.

コメント

タイトルとURLをコピーしました