CentOS
Toshiba
xfs

REGZA Z1/Z1Sの録画用HDD交換

故障の確認

東芝(Toshiba) REGZA Z1Sで外付けHDDに録画したコンテンツが「再生できません」と表示されたので、ああ6年も経っているしこれはディスク故障かなあと思い、まずはテレビ側で切り分け。

動作テスト

マニュアルの48ページに書いてある動作テストを実施。
結果は「録画」「録画中の再生」「録画中の早見早聞」3項目全てがNGとなったので、ディスク故障確定。

復旧準備

故障したHDD以上のサイズのHDDを購入。
あとは、復旧に使うマシンが必要。REGZAのUSB外付けHDDのファイルシステムはxfsであり、WindowsやMacではまともな読み書きやUUIDの変更などができない。今回はCentOS6を入れたmacminiがあったのでそちらを使用。別にUbuntuでも何でもいいだろう。

xfsprogsのインストール

CentOS6なのでxfsprogsをインストールしておく。

# yum install xfsprogs

復旧

新しいHDDの初期化。

まず古いHDDをテレビから外し、新しいHDDをテレビに接続する。
マニュアルに従って機器の登録を実施し初期化する。その後新しいHDDをテレビから外す。

復旧用マシンへの接続

まず古いHDDを復旧用マシンにUSBで接続するとsyslogにデバイスが表示されるので確認しておく。

/var/log/messages
Jul 25 18:48:55 macmini kernel: sd 6:0:0:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
Jul 25 18:48:55 macmini kernel: sd 6:0:0:0: [sdb] Write Protect is off
Jul 25 18:48:55 macmini kernel: sd 6:0:0:0: [sdb] Assuming drive cache: write through
Jul 25 18:48:55 macmini kernel: sd 6:0:0:0: [sdb] Assuming drive cache: write through
Jul 25 18:48:55 macmini kernel: sdb: sdb1
Jul 25 18:48:55 macmini kernel: sd 6:0:0:0: [sdb] Assuming drive cache: write through
Jul 25 18:48:55 macmini kernel: sd 6:0:0:0: [sdb] Attached SCSI disk

/dev/sdb1で認識されたことがわかる。

次に新しいHDDを復旧用マシンに接続して同様にデバイス名を確かめる。

/var/log/messages
Jul 25 19:00:43 macmini kernel: sd 7:0:0:0: [sdc] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
Jul 25 19:00:43 macmini kernel: sd 7:0:0:0: [sdc] 4096-byte physical blocks
Jul 25 19:00:43 macmini kernel: sd 7:0:0:0: [sdc] Write Protect is off
Jul 25 19:00:43 macmini kernel: sd 7:0:0:0: [sdc] Assuming drive cache: write through
Jul 25 19:00:43 macmini kernel: sd 7:0:0:0: [sdc] Very big device. Trying to use READ CAPACITY(16).
Jul 25 19:00:43 macmini kernel: sd 7:0:0:0: [sdc] Assuming drive cache: write through
Jul 25 19:00:43 macmini kernel: sdc: sdc1
Jul 25 19:00:43 macmini kernel: sd 7:0:0:0: [sdc] Very big device. Trying to use READ CAPACITY(16).
Jul 25 19:00:43 macmini kernel: sd 7:0:0:0: [sdc] Assuming drive cache: write through
Jul 25 19:00:43 macmini kernel: sd 7:0:0:0: [sdc] Attached SCSI disk

/dev/sdc1で認識されたことがわかる。

マウント

認識されたデバイスに対してマウントする。以下rootで実行。

# mkdir /mnt/olddisk
# mount /dev/sdb1 /mnt/olddisk
# mkdir /mnt/newdisk
# mount /dev/sdc1 /mnt/newdisk

コピー

.toshiba*.M* などのメタデータも含めて漏れなくコピーする。また、sticky bitも同じにする。

# cp -Rfv /mnt/olddisk/* /mnt/newdisk/ |& tee cp_20170724.log
# cp -Rfv /mnt/olddisk/.toshiba* /mnt/newdisk/ |& tee cp_20170724_t.log
# cp -Rfv /mnt/olddisk/.M* /mnt/newdisk/ |& tee cp_20170724_M.log
# chmod u+s /mnt/newdisk/*.dtv
# chmod g+s /mnt/newdisk/*.dtv
# chmod o+t /mnt/newdisk/*.dtv

当然だが、1行目のコマンドで時間がかかる。cpだと進捗がわかりづらくてドキドキするので、他のシェルから見て終了時間を推定するといいだろう。今回は約2TBのコピーに約28時間かかった。

UUIDの変更

新しいHDDのUUIDを古いHDDのUUIDに変更する。これでテレビから見ると同じHDDになる。
古いHDDのUUIDを確認。

# blkid
...
/dev/sdb1: UUID="b07bea3f-09f6-4551-XXXX-6ba73a23f53c" TYPE="xfs"
...

若しくは以下。

# ls -l /dev/disk/by-uuid/
...
lrwxrwxrwx. 1 root root 10  7月 27 06:30 2017 b07bea3f-09f6-4551-XXXX-6ba73a23f53c -> ../../sdb1
lrwxrwxrwx. 1 root root 10  7月 25 19:00 2017 e95a3e71-efc4-4377-YYYY-c3fdc04304f8 -> ../../sdc1
...

なお今回のディスクの故障っぷりではxfs_adminによる確認では以下のようにエラーになった(xfs_repairでも修復できない物理エラーなのでちょっと焦った)。

# xfs_admin -u /dev/sdb1
can't read superblock for AG 10
failed to read UUID from AG 10

古いHDDだけを取り外し、新しいHDDのUUIDを古いHDDのUUIDに変更する。

# xfs_admin -U b07bea3f-09f6-4551-XXXX-6ba73a23f53c /dev/sdc1

復旧確認

新しいHDDを復旧用マシンから取り外し、テレビに接続する。元通り!