REGZA Z1/Z1Sの録画用HDD交換

# 故障の確認
東芝(Toshiba) ＲＥＧＺＡ Z1Sで外付けHDDに録画したコンテンツが「再生できません」と表示されたので、ああ6年も経っているしこれはディスク故障かなあと思い、まずはテレビ側で切り分け。
##動作テスト
[マニュアル](http://www.toshiba-living.jp/manual.pdf?no=78713&fw=1&pid=13347)の48ページに書いてある動作テストを実施。
結果は「録画」「録画中の再生」「録画中の早見早聞」3項目全てがNGとなったので、ディスク故障確定。
#復旧準備
故障したHDD以上のサイズのHDDを購入。
あとは、復旧に使うマシンが必要。REGZAのUSB外付けHDDのファイルシステムはxfsであり、WindowsやMacではまともな読み書きやUUIDの変更などができない。今回はCentOS6を入れたmacminiがあったのでそちらを使用。別にUbuntuでも何でもいいだろう。
##xfsprogsのインストール
CentOS6なのでxfsprogsをインストールしておく。

```shell-session
# yum install xfsprogs
```

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

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

```shell-session:/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を復旧用マシンに接続して同様にデバイス名を確かめる。

```shell-session:/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で実行。

```shell-session
# mkdir /mnt/olddisk
# mount /dev/sdb1 /mnt/olddisk
# mkdir /mnt/newdisk
# mount /dev/sdc1 /mnt/newdisk
```

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

```shell-session
# 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を確認。

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

若しくは以下。

```shell-session
# 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`でも修復できない物理エラーなのでちょっと焦った)。

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

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

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

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