部屋を掃除したら漫画が沢山出てきたので書く日記

漫画とか合唱とかUNIXとかLinuxとかについて書く日記です。

REGZA Z1の録画用HDD交換をやってみました

はじめに

自宅の液晶テレビ(東芝 REGZA 42Z1)に番組録画用に接続して8年ほど使用しているUSBハードディスク(HDD)から異音(高周波音)がするようになったのを受けて交換したので作業内容を以下の通り記します。

方針

  • 交換元HDD内の番組データは交換先HDDでも視聴できるようにすべて移動(コピー)させる(抽選に当って子供が出演したNHK Eテレの番組録画データなど、大事な番組データが色々あるので消したくない)。
  • 予約設定しているテレビ番組の連ドラ録画予約に影響が出ないようにする(家族からクレームが来るので)。
  • テレビの仕様上録画できる番組数は500個までという事もあり交換元HDDの容量(2TB)を超過しそうな事態はこれまで起きていないが、せっかくだからより大きいサイズ(3TB)のHDDに交換する。
  • HDDのファイルシステム(xfs)を操作できるOSとしてUbuntuVirtualBox仮想マシンで構築、Ubuntu上でデータのコピーを行う(Ubuntuインストールできる物理マシンが用意できなかったため)。
  • コピーはrsyncにて実施し、中断して再開しても差分のみコピーされるようにして作業時間の効率化を図る。

作業環境

作業用パソコン

機種名:Intel NUC NUC6i5SYH
OS:Windows10 ver1809
VirtualBoxのバージョン:5.2.26
Ubuntuのバージョン:18.10

交換元HDD

機種名:IODATA HDCR-U2.0EK
容量:2TB

交換先HDD

機種名:ELECOM SGD-NZ030UBK
容量:3TB

テレビ

機種名:東芝 REGZA 42Z1

1. 実施手順

事前準備

1-1. 交換元HDDをテレビから取り外す

テレビのリモコンから以下の通り実施し、取り外してもOK的な表示が出たらテレビから取り外す。

設定メニュー -> レグザリンク設定 -> USBハードディスク設定 -> 機器の取りはずし
1-2. 交換先HDDをテレビに接続して初期化

USB端子に接続すると「新しいUSBハードディスクを検出しました~」というメッセージが出るので「はい」を選択し、初期化を開始する。終了したら手順1-1.と同様手順で取り外す。

1-3. VirtualBoxUbuntu仮想マシンをインストール

Ubuntu japanese teamのサイトからISOファイルをダウンロードしてインストール実施。詳細は割愛します。
起動したらインターネットアクセスと、WindowsからのSSHアクセスができるよう、良い感じに設定しておく。

1-4. VirtualBoxマネージャー起動

アイコンをダブルクリックするなどして起動させる。

1-5. HDD(交換元、交換先)をPCに接続する

Windows上で「HDDを使用できるようにフォーマットしますか」的なポップアップが出力されるが、ここでは何もしない。

1-6. VirtualBoxマネージャーでのUSBデバイス登録

VirtualBoxマネージャー画面にてUbuntu仮想マシンを選択し、

設定 -> USB

と画面を遷移させる。設定画面にて以下の通り選択。

「USBコントローラを有効化」をチェック
USB3.0コントローラーを選択
USBデバイスフィルター右側の、追加ボタンをクリック

表示される、「I-O DATA Device~」とか「Seagete~」などのUSB HDDを示すデバイスを選択してOKボタンを押下。以下のような画面になる。

f:id:bata64:20190219024853p:plain

ちなみに表示されるUSBデバイスのうち「Intel Corp.」というのを選択して仮想マシンを起動するとUSBマウスもキーボードも一切操作が出来なくなったので、選択しない事。

こちらで実施した際にはこのタイミングでWindows側にてUSB HDDの接続がキャンセルされた(デバイス取り外しの警告音が鳴り、タスクバーのアイコン表示が消える)。
Ubuntu仮想マシンを起動し、USB HDDが認識、マウントされていることを確認する。

以下は実行例。sdc1が交換元HDDで、sdb1が交換先HDD。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            975M     0  975M   0% /dev
tmpfs           200M  1.4M  198M   1% /run
/dev/sda1        49G  7.4G   40G  16% /
tmpfs           997M     0  997M   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           997M     0  997M   0% /sys/fs/cgroup
/dev/loop0      3.8M  3.8M     0 100% /snap/gnome-system-monitor/57
/dev/loop1      2.3M  2.3M     0 100% /snap/gnome-calculator/238
/dev/loop3       15M   15M     0 100% /snap/gnome-logs/45
/dev/loop2      141M  141M     0 100% /snap/gnome-3-26-1604/74
/dev/loop5       88M   88M     0 100% /snap/core/5662
/dev/loop4       43M   43M     0 100% /snap/gtk-common-themes/701
/dev/loop6       35M   35M     0 100% /snap/gtk-common-themes/1122
/dev/loop7      2.3M  2.3M     0 100% /snap/gnome-calculator/260
/dev/loop8       91M   91M     0 100% /snap/core/6405
/dev/loop9       13M   13M     0 100% /snap/gnome-characters/139
/dev/loop10     141M  141M     0 100% /snap/gnome-3-26-1604/78
tmpfs           200M   32K  200M   1% /run/user/1000
/dev/sdb1       2.8T  599G  2.2T  22% /media/bata64/1e5c0ba9-7a1a-4cfc-8eda-e4623e9e34d9
/dev/sdc1       1.9T  1.7T  196G  90% /media/bata64/3fd2e960-80de-4715-b7d0-c87580404cd5

その後、Windows側に表示される「HDDを使用できるようにフォーマットしますか」的なポップアップをキャンセルで閉じる。「はい」を選ぶとNTFSでのフォーマットが始まってしまうかも?

2. データコピー

2-1. rsyncでコピー実行

sdc1からsdb1へのデータコピーを、アーカイブモードで実行。

$ sudo rsync -av /media/bata64/3fd2e960-80de-4715-b7d0-c87580404cd5/ /media/bata64/1e5c0ba9-7a1a-4cfc-8eda-e4623e9e34d9/

パスワードを入力したらコピーが開始される。

[sudo] bata64 のパスワード:
sending incremental file list
./
.toshiba_dir_info_e89d87b805d3
.toshiba_serieslist_e89d87b805d3
.toshiba_size_info_e89d87b805d3
M000020160730192951e89d87b805d3.dtv
M000020160730192951e89d87b805d3.dtv.chap
:
:

別ウィンドウにてUbuntuにアクセスし、iostatでデータ転送状況を確認する。毎秒だとわかりづらいので1分(60秒)間隔で確認すると、sdcのreadとsdbのwriteがだいたい26MB/secで推移している事がわかる。

$ iostat -xk 60 sdb sdc
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.14    0.00    3.51   41.26    0.00   50.09

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sdb              0.07   26.10      0.15  26313.78     0.00     0.08   0.00   0.32   16.00  327.07   8.60     2.25  1008.19   6.71  17.55
sdc            409.72    0.07  26219.07      0.43     0.00     0.02   0.00  20.00    6.35   77.00   3.51    63.99     6.38   2.43  99.65

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.83    0.00    3.71   41.62    0.00   49.84

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sdb              0.00   26.53      0.00  27012.49     0.00     0.02   0.00   0.06    0.00  294.18   7.87     0.00  1018.06   6.65  17.65
sdc            402.55    0.03  25750.73      0.03     0.00     0.00   0.00   0.00    6.48  182.00   3.47    63.97     0.75   2.47  99.37

あとは完了まで放っておく。
なお、交換元HDDのディスク使用量が約1.7TB、転送スループットが毎秒27MBとして、perlを電卓代わりにして所要時間を計算してみる。転送完了には19時間くらいかかる見通し。

$ perl -le 'print ((1.7*1024*1024)/26/60/60)'
19.0446495726496
2-2. rsyncのコピー中断と再開

rsyncを実行しているウィンドウにてCtrl+C(Controlキー押しながらC押下)すれば中断できる。録画予約している番組の開始時間が迫っていたり、HDD内の番組が見たいと家族に言われるなどしてテレビに再接続する必要がある場合は中断する(実際、3回くらい中断した)。
Ubuntuをシャットダウンし、Windows側に表示される「HDDを使用できるようにフォーマットしますか」的なポップアップをすべてキャンセル選択したあと交換元HDDをパソコンから抜去、テレビに接続すればこれまで通りに使用できる。

再開する場合はテレビからのHDD取り外しして「1-4. VirtualBoxマネージャー起動」を再度実施、rsyncを実施すると転送完了していないファイルのコピーから再開されるので、コピーを初めからやり直さなくても済む*1

rsyncが終わったら、ファイルサイズ、タイムスタンプ、パーミッション、ファイル数がコピー元と先で一致しているかを確認する。

2-3. コピー結果の確認

終わった後、結果を確認

確認用一時ファイル作成

$ cd /tmp
$ ls -la /media/bata64/1e5c0ba9-7a1a-4cfc-8eda-e4623e9e34d9 > ./in.txt
$ ls -la /media/bata64/3fd2e960-80de-4715-b7d0-c87580404cd5 > ./out.txt

ファイル数を比較。移行元も先も、1944個なのでOK。

$ wc -l *.txt
  1944 in.txt
  1944 out.txt
  3888 合計

ls -la実行結果の差分を比較。総ファイルサイズと親ディレクトリのサイズが異なるが、サイズが異なるHDDの物理的な差(プラッタとか)だと思ってみなかったことにする。
ディレクトリ以下のファイルについては差分が無いので、OK!

$ diff -u in.txt out.txt
--- in.txt      2019-02-18 07:38:14.286398769 +0900
+++ out.txt     2019-02-18 07:38:30.682665698 +0900
@@ -1,5 +1,5 @@
-合計 1748541044
-drwxr-xr-x  4 root root      106496  2月 17 10:00 .
+合計 1748580632
+drwxr-xr-x  4 root root      114688  2月 17 10:00 .
 drwxr-x---+ 4 root root        4096  2月 17 22:07 ..
 drwx------  2 root root          20  2月 23  2016 .M000020130908080004e89d87b805d3
 -rw-r--r--  1 root root      272976  2月 17 20:23 .toshiba_dir_info_e89d87b805d3

3. UUIDの変更

3-1. xfs関連ユーティリティをインストール

Ubuntuのコンソールにて以下を実行。なおxfsprogsのインストールは先に実施しても構わない。

$ sudo apt install xfsprogs
3-2. UUID確認
$ sudo blkid
/dev/loop0: TYPE="squashfs"
/dev/loop1: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
/dev/loop3: TYPE="squashfs"
/dev/loop4: TYPE="squashfs"
/dev/loop5: TYPE="squashfs"
/dev/loop6: TYPE="squashfs"
/dev/loop7: TYPE="squashfs"
/dev/sda1: UUID="5a156a42-a6a9-4349-a871-562ba486c38f" TYPE="ext4" PARTUUID="5f616464-01"
/dev/sdb1: UUID="1e5c0ba9-7a1a-4cfc-XXXX-e4623e9e34d9" TYPE="xfs" PARTLABEL="primary" PARTUUID="160f362a-431c-4501-9327-8716833491ef"
/dev/sdc1: UUID="3fd2e960-80de-4715-YYYY-c87580404cd5" TYPE="xfs" PARTLABEL="primary" PARTUUID="d9709f86-e580-4805-88cc-2c8d521637d8"
/dev/loop8: TYPE="squashfs"
/dev/loop9: TYPE="squashfs"
/dev/loop10: TYPE="squashfs"

sdb1のUUIDは「1e5c0ba9-7a1a-4cfc-XXXX-e4623e9e34d9」
sdc1のUUIDは「3fd2e960-80de-4715-YYYY-c87580404cd5」

であることがわかる。
中断と再開を繰り返していると交換元と交換先のHDDのどちらを先に差したかわからなくなるので念のため確認。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            975M     0  975M   0% /dev
tmpfs           200M  1.4M  198M   1% /run
/dev/sda1        49G  7.4G   40G  16% /
tmpfs           997M     0  997M   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           997M     0  997M   0% /sys/fs/cgroup
/dev/loop0       35M   35M     0 100% /snap/gtk-common-themes/1122
/dev/loop1       13M   13M     0 100% /snap/gnome-characters/139
/dev/loop2      141M  141M     0 100% /snap/gnome-3-26-1604/74
/dev/loop3      3.8M  3.8M     0 100% /snap/gnome-system-monitor/57
/dev/loop4       88M   88M     0 100% /snap/core/5662
/dev/loop5      141M  141M     0 100% /snap/gnome-3-26-1604/78
/dev/loop6      2.3M  2.3M     0 100% /snap/gnome-calculator/260
/dev/loop7       43M   43M     0 100% /snap/gtk-common-themes/701
/dev/loop8       91M   91M     0 100% /snap/core/6405
/dev/loop9       15M   15M     0 100% /snap/gnome-logs/45
/dev/loop10     2.3M  2.3M     0 100% /snap/gnome-calculator/238
tmpfs           200M   32K  200M   1% /run/user/1000
/dev/sdc1       1.9T  1.7T  196G  90% /media/bata64/3fd2e960-80de-4715-b7d0-c87580404cd5
/dev/sdb1       2.8T  1.7T  1.2T  60% /media/bata64/1e5c0ba9-7a1a-4cfc-8eda-e4623e9e34d9

よって、3TBの交換先HDD「sdb」のUUIDを、2TBの交換元HDD「sdc」のUUID「3fd2e960-80de-4715-YYYY-c87580404cd5」に変更する。

3-3. アンマウント

アンマウントしないとUUID変更できなかったので、アンマウントする。

$ sudo umount /media/bata/1e5c0ba9-7a1a-4cfc-8eda-e4623e9e34d9
3-4. UUID変更

以下を実行

$ sudo xfs_admin -U 3fd2e960-80de-4715-YYYY-c87580404cd5 /dev/sdb1


※アンマウントしないと以下の通りエラー

xfs_admin: /dev/sdb1 contains a mounted filesystem

fatal error -- couldn't initialize XFS library

※アンマウントしてから再試行すると、以下の通り成功

$ sudo xfs_admin -U 3fd2e960-80de-4715-YYYY-c87580404cd5 /dev/sdb1
Clearing log and setting UUID
writing all SBs
new UUID = 3fd2e960-80de-4715-YYYY-c87580404cd5

確認すると以下の通りUUIDが変更されている事がわかる。

$ sudo xfs_admin -u /dev/sdb1
UUID = 3fd2e960-80de-4715-YYYY-c87580404cd5

4. HDDの交換

4-1. 交換先HDDをテレビに接続

パソコンからHDDを取り外して交換先HDDをテレビに接続する。
交換元HDDとして認識されたら成功です。

*1:rsyncにPオプションかつけた方がより効率良いのかもしれないが未検証。こことかを参考に、キミの目で確かめてほしい(攻略本的なノリ)。