Synology DS-218+ の HDD を 4TB から8TB に取り替えました。ホットスワップで取り替えましたがトラブルなく終了し、改めて DS-218+ を選択して良かったと感じています。外した HDD 3台の余生はこれから考えますが、今後のトラブルに備えて HDD の中身を Windows10 PC から取り出す方法を確立しておきたいと考えて、将来の自分のために手順を残しておきます。
- 元の HDD の構成
- Synology DS218+ 内部の HDD の接続状態
- USB HDD を使用できるか事前調査
- 仮想マシンの準備
- USB HDD を仮想マシンに path through で接続する
- Synology DS218+ から取り外した HDD のデータを取り出す方法
- おまけ : Virtualbox でホスト側Windows10 に接続した Bluetooth ドングルを使用する
- 総まとめ
元の HDD の構成
Synology DS-218+ の HDD を取り替えた際の記事はこちらです。
この時に取り外した HDD は、
のように使用していました。
どちらの HDD も、3年間、問題なく動作してくれました。途中で (よくある) 掃除機の電源が必要で電源断…なんて事も数度ありましたが、再起動すればちゃんと使えていました。
btrfs も ext4 も、どちらの filesystem も Windows10 のみでは取り出せないのは分かっていますので、仮想マシンを使用して Linux で取り出します。
以下、1 の HDD を「HDD_A」、2 の HDD を「HDD_B」で表記します。
Synology DS218+ 内部の HDD の接続状態
Synology DS218+ 内部で、どのように HDD が接続されているか、簡単に調べてみました。Synology DS218+ の sshd を一時的に有効にして調べています。以下は、HDD を更新後の状態です。
root@NAS:~# cat /proc/mdstat Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] md3 : active raid1 sdb6[1] sda6[0] 3906998912 blocks super 1.2 [2/2] [UU] md2 : active raid1 sdb5[3] sda5[2] 3902187456 blocks super 1.2 [2/2] [UU] md1 : active raid1 sdb2[1] sda2[0] 2097088 blocks [2/2] [UU] md0 : active raid1 sdb1[1] sda1[0] 2490176 blocks [2/2] [UU] unused devices: <none>
mdadm で設定した RAID1 が md0 から md3 まで存在しています。md2 と md3 が実際の data が入っている領域でしょう。二つに分かれているのは、Hot Swap して容量を2倍にしている為に、増やした領域が sd[ab]6 になっていると思われます。
md2 と md3 は lvm2 を使用して、論理ボリュームを構成しています。
root@NAS:~# pvdisplay --- Physical volume --- PV Name /dev/md2 VG Name vg1000 PV Size 3.63 TiB / not usable 1.94 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 952682 Free PE 0 Allocated PE 952682 PV UUID V4H9tZ-P9fc-AMR7-Yici-duOc-Zfsz-hpCq54 --- Physical volume --- PV Name /dev/md3 VG Name vg1000 PV Size 3.64 TiB / not usable 640.00 KiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 953857 Free PE 0 Allocated PE 953857 PV UUID ltB6zu-0nU9-pcte-TUCe-0lEG-Dg2O-IDDtvn root@NAS:~# vgdisplay --- Volume group --- VG Name vg1000 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 7.27 TiB PE Size 4.00 MiB Total PE 1906539 Alloc PE / Size 1906539 / 7.27 TiB Free PE / Size 0 / 0 VG UUID UHJl8V-8soh-fb5a-GBcZ-ePpO-3urG-6BUHsM root@NAS:~# lvdisplay --- Logical volume --- LV Path /dev/vg1000/lv LV Name lv VG Name vg1000 LV UUID xs9J1A-0UWv-bukC-hrSq-E4A6-YyaM-CXzIJJ LV Write Access read/write LV Creation host, time , LV Status available # open 1 LV Size 7.27 TiB Current LE 1906539 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 512 Block device 252:0
PV (Physical Volume) 2つ /dev/md2, /dev/md3 を VG (Volume Group) vg1000 で一纏めにして、LV (Logical Volume) lv で全体を使用するようにしています。
root@iw_home:~# mount /dev/md0 on / type ext4 (rw,relatime,barrier,data=ordered) …略… /dev/mapper/vg1000-lv on /volume1 type btrfs (rw,relatime,synoacl,space_cache=v2,auto_reclaim_space,metadata_ratio=50,subvolid=257,subvol=/@syno) …略… /dev/sdq1 on /volumeUSB1/usbshare type ext4 (rw,relatime,nodelalloc,synoacl,data=ordered)
/dev/md0 が root filesystem、/dev/vg1000/lv が /volume1 に btrfs で mount、/dev/sdq1 が USB HDD で /volumeUSB1/usbshare に mount されている事が分かります。
USB HDD を使用できるか事前調査
HDD を USB で Windows10 に接続して仮想マシンで mount する計画です。まずは、USB 接続の HDD を仮想マシンで path through で接続できるかどうか、事前に調べてみました。
Windows Subsystem for Linux 2 (WSL2)
WSL2 は Windows Insider Program の Dev channel では USB HDD を mount できるようですが、21H2 の Windows10 ではまだできませんでした。
wsl コマンドの mount オプションがありません。こちらは WSL2 が更新されるまで待つしかありません。
以下妄想:
Microsoft は、Linux の機能を細分化して Windows に取り込むのを狙っているのかもしれませんね。GUI 対応で Linux にしかないアプリの取込、filesystem で btrfs 等の取込、等々。WSL に最適化された、より細分化された軽量仮想マシンが出てきたら、Windows で Linux の一部分をパーツとして使う事になるのかも。
Hyper-V、Virtualbox
Hyper-V と Virtualbox は、過去に path through 接続した SSD に Linux を install した事がありました。
hiro20180901.hatenablog.com
hiro20180901.hatenablog.com
USB 接続ですので、Windows10 に接続した状態がどのように仮想マシンに見えるようになるか分かりませんが、path through 接続できる可能性は高いと思います。
Virtualbox では、以前に購入した Bluetooth ドングルが使えましたので、おそらく接続できるだろうと期待しています。Virtualbox でBluetooth ドングルを使う方法については末尾におまけとして記載します。
仮想マシンの準備
Hyper-V と Virtualbox の2種類の仮想マシンはイチから作成しました。どちらもそれほど時間を取らずに install できるのは便利です。
Hyper-V には Ubuntu 20.04.3 LTS を、Virtualbox には debian 11.2.0 をインストールしました。
distribution を別にした理由は、kernel の設定や USB の扱いに違いがあるだろうという推測から、distribution の違いを確認した方が良さそうだと考えたからです。(結局、これが当たってしまいましたが後述します)
それぞれの仮想マシンへの Linux の install 方法については、下記の過去記事を参照ください。
hiro20180901.hatenablog.com
hiro20180901.hatenablog.com
Hyper-V は第二世代(UEFI)で、Virtualbox は UEFI 有効で内蔵SSD に path through で作成しました。
以下、install 時にちょっと躓いた箇所をメモとして残しておきます。
debian 一般ユーザーで sudo を使えるようにする
Ubuntu は install 直後から sudo が使えますが、debian では su で root に切り替える必要があります。debian でも sudo が使えるように、group 'sudo' に一般ユーザー username を追加します。
# adduser username sudo
Hyper-V + Ubuntu の解像度を変更する
Hyper-V + Ubuntu の画面解像度が設定から変更できませんでした。hyperv_vb (frame buffer) 起動時の解像度を変更する方法が簡単でした。
Hyper-VでUbuntuを動かす際の解像度設定 - Qiita
Virtualbox は Guest Additions CD image を入れたら変更できます。menu から 「デバイス」->「Guest Additions CD イメージの挿入」を選択します。debian だと CD は noexec でmount されて script が実行できないので、再 mount が必要でした。
$ df Filesystem 1K-blocks Used Available Use% Mounted on udev 4044520 0 4044520 0% /dev tmpfs 813496 1212 812284 1% /run /dev/sda2 120983240 7409356 107382064 7% / tmpfs 4067480 0 4067480 0% /dev/shm tmpfs 5120 4 5116 1% /run/lock /dev/sda1 523244 3484 519760 1% /boot/efi tmpfs 813496 176 813320 1% /run/user/1000 /dev/sr0 59672 59672 0 100% /media/cdrom0 $ sudo mount -o remount,ro,exec /media/cdrom0 $ sudo /media/cdrom0/VBoxLinuxAdditions.run Verifying archive integrity... All good. Uncompressing VirtualBox 6.1.30 Guest Additions for Linux........ VirtualBox Guest Additions installer Removing installed version 6.1.30 of VirtualBox Guest Additions... Copying additional installer modules ... Installing additional modules ... VirtualBox Guest Additions: Starting. VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel modules. This may take a while. VirtualBox Guest Additions: To build modules for other installed kernels, run VirtualBox Guest Additions: /sbin/rcvboxadd quicksetup <version> VirtualBox Guest Additions: or VirtualBox Guest Additions: /sbin/rcvboxadd quicksetup all VirtualBox Guest Additions: Kernel headers not found for target kernel 5.10.0-10-amd64. Please install them and execute /sbin/rcvboxadd setup VirtualBox Guest Additions: Running kernel modules will not be replaced until the system is restarted
仮想マシンを再起動すれば、画面の解像度が変更できるようになりました。
仮想マシンに Windows10 の ssh から接続する
実行内容をメモするのに便利なので、各仮想マシンに Windows10 から ssh で接続しました。それぞれの仮想マシンに openssh-server を install します。
$ sudo apt install openssh-server
Hyper-V 仮想マシンに ssh で接続する
Hyper-V は Default Swich (内部ネットワーク) を使用すれば、ホスト側から ssh で接続できました。
Hyper-V マネージャーの起動画面:
仮想マシンのネットワークアダプタ:
仮想スイッチマネージャー:
PowerShell: (一部省略)
PS> ssh username@172.19.48.139 username@172.19.48.139's password: Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.11.0-43-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 0 updates can be applied immediately. Your Hardware Enablement Stack (HWE) is supported until April 2025. Last login: Sat Dec 25 11:16:44 2021 from 172.19.48.1 username@Virtual-Machine:~$
Windows10 は 192.168.x.x、Hyper-V 仮想マシンは 172.19.48.x と、ネットワークは別になっていますが routing がちゃんと設定されています。別の物理マシンがないので確認できませんが、Hyper-V 仮想マシンには Windows10 以外は接続できないハズです。外部から接続したい場合には、新しく外部ネットワークの switch を作って接続すれば、下記の Virtualbox と同様に使用できます。
Virtualbox 仮想マシンに ssh で接続する
Virtualbox 側は初期設定の NAT ではもちろんダメで、ブリッジアダプターをホスト側のアダプタに割り当てる必要がありました。
Virtualbox マネージャー:
仮想マシンのネットワークアダプタ : 割り当てを「ブリッジアダプター」にして、名前をホスト側のネットワークアダプタを選択する。
PowerShell: (一部省略)
PS> ssh username@192.168.x.xx username@192.168.x.xx's password: Linux debian 5.10.0-10-amd64 #1 SMP Debian 5.10.84-1 (2021-12-08) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. You have new mail. Last login: Sat Dec 25 09:45:36 2021 from 192.168.0.13 username@debian:~$
ブリッジアダプターの場合には、ホスト側の Windows10 と同じネットワークに繋がっている状態になり、IP address も 192.168.x.xx で同一のネットワークになるので、同じ LAN に接続されている物理マシンからも見えるハズです。
ググると、Virtualbox では二つのネットワークアダプタを使って、片方を NAT、もう片方をホストオンリーに設定すれば、Hyper-V と同じような使い方ができるハズなのですが、debian + GNOME の環境では複数のネットワークアダプタを有効にできない (排他になる) ようなので、深く追求するのはやめておきました。
2022.01.01 追記 : CLI ですが有効に出来ました。
Windows10 の WSL2 と Hyper-V と Virtualbox を相互に通信できるようにする設定 - hiroの長い冒険日記
まとめ
以上までの設定が終われば、二つの仮想マシンで
の両方が可能です。
WSL2 の ssh から各仮想マシンに接続しようとやってみましたが、どうしてもうまくいかず断念しました。素直に Windows10 標準の ssh をPowerShell から使用します。仮想マシン同士 (WSL2、Hyper-V、Virtualbox) の通信をどのようにして確立させるかについては、別の機会に調べてみます。
2022.01.01 追記 : WSL2 と Hyper-V と Virtualbox の各仮想マシン間で通信を確立できました。
Windows10 の WSL2 と Hyper-V と Virtualbox を相互に通信できるようにする設定 - hiroの長い冒険日記
USB HDD を仮想マシンに path through で接続する
Hyper-V も Virtualbox も、どちらも USB HDD を仮想マシンに path through で接続できます。手順が若干異なりますので、一つずつ項目を分けて説明します。
USB HDD を Windows10 に接続する
先日購入した SATA -> USB 変換器を使用して、HDD を Windows10 に USB で接続します。
Windows10 のディスクの管理(ハードディスク パーティションの作成とフォーマット)からは下の画面のように認識されます。
HDD_A (内蔵されていたHDD):
- ディスク5が USB で接続した HDD_A になります。
- パーティションが3つに分かれていて、恐らくですが root と swap とメイン領域に分かれていると思います。
- 今回は root や swap には必要な data は入っていないので、ディスク5のパーティション3に注目して作業すれば良いと思います。
HDD_B (外付HDD) :
- ディスク5 が USB で接続した HDD_B になります。
- パーティションは一つのみです。
どちらも「ディスクの管理」から操作できる状態になりました。
USB HDD を仮想マシンから使用する【Hyper-V編】
Hyper-V 仮想マシンから USB HDD を使用するには、
という流れになります。Hyper-V は該当 HDD をオフラインにすれば path through 接続可能になります。
以下、HDD_B を使用した手順を示します。
HDD をオフラインにする
下部の ディスク5のオンライン部分を右クリックして、メニューから「オフライン」を選択します。
そうすると表示が「オフライン」に変わります。
これで、ディスク5は Windows10 の管理下から外れました。
Hyper-V 仮想マシンへ HDD を接続する
次に、オフラインにしたディスク5を Hyper-V 仮想マシンに接続します。仮想マシンの設定から、SCSI コントローラー(第2世代の場合)を選択、ハードドライブを追加します。
追加されたハードドライブを選択し、物理ハードディスクの中からオフラインにしたディスク5を選択し、適用します。
これで、仮想マシンに USB HDD が path through 接続されました。
Hyper-V 仮想マシンで認識された device の調べ方
最近の GNOME では、ext4 や iso9660 等の Filesystem の場合は、認識されただけで mount までしてくれて、「ファイル」アプリから参照出来たりして便利です。
念の為、どの device として認識されたかどうかを調べておきます。
$ sudo dmesg | lv …略… [35823.953784] sd 0:0:0:2: [sdb] Synchronizing SCSI cache [35823.955373] sd 0:0:0:2: [sdb] Synchronize Cache(10) failed: Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK [35878.056397] scsi 0:0:0:2: Direct-Access Asm 225 0 PQ: 0 ANSI: 6 [35878.059500] sd 0:0:0:2: Attached scsi generic sg2 type 0 [35878.060460] sd 0:0:0:2: [sdb] 7814037168 512-byte logical blocks: (4.00 TB/3.64 TiB) [35878.060463] sd 0:0:0:2: [sdb] 4096-byte physical blocks [35878.060768] sd 0:0:0:2: [sdb] Write Protect is off [35878.060771] sd 0:0:0:2: [sdb] Mode Sense: 0f 00 00 00 [35878.061440] sd 0:0:0:2: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [35878.061443] sd 0:0:0:2: [sdb] Optimal transfer size 33553920 bytes not a multiple of physical block size (4096 bytes) [35878.068395] sdb: sdb1 [35878.094571] sd 0:0:0:2: [sdb] Attached SCSI disk [35888.235827] EXT4-fs (sdb1): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none. …略…
今の環境では /dev/sdb として認識したようです。HDD_A の場合には複数のパーティションがあります。HDD_B の場合は sdb1 のみです。
USB HDD を仮想マシンから使用する【Virtualbox編】
Virtualbox は USB に関しては Hyper-V よりも簡単で、USB 機器の接続を物理マシンから仮想マシンに切り替えるだけで認識できます。
Windows10 ディスクの管理はオフラインにする必要はなく、そのままで OK です。メニューの USB から該当ディスクを Virtualbox に接続すると、ディスクの管理から見えなくなります。代わりに、Virtualbox 側から見えるようになります。
HDD_A を使用して手順を説明します。
USB に HDD_A を接続した直後のディスクの管理 (ハードディスク パーティションの作成とフォーマット)の画面です。ディスク5 はオンラインで、パーティションが3つ存在しています。
Virtualbox (debian + GNOME) のメニューから、デバイス -> USB -> Asm 225 (これが HDD_A) を選択します。これだけで、USB HDD が Virtualbox に接続されます。
Virtualbox に USB HDD を接続すると、ディスクの管理からはディスク5が見えなくなります。
HDD_A はパーティションが3つありますので、/dev/sdb1、/dev/sdb2、/dev/sdb5 の3つが認識されています。
$ sudo dmesg | lv …略… [ 6691.637760] usb 2-1: new SuperSpeed Gen 1 USB device number 4 using xhci_hcd [ 6691.660672] usb 2-1: New USB device found, idVendor=174c, idProduct=1153, bcdDevice= 0.00 [ 6691.660675] usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1 [ 6691.660676] usb 2-1: Product: 225 [ 6691.660676] usb 2-1: Manufacturer: Asm [ 6691.660677] usb 2-1: SerialNumber: 12345678960D [ 6691.667661] usb 2-1: USB controller 0000:00:0c.0 does not support streams, which are required by the UAS driver. [ 6691.667663] usb 2-1: Please try an other USB controller if you wish to use UAS. [ 6691.667664] usb-storage 2-1:1.0: USB Mass Storage device detected [ 6691.668782] scsi host3: usb-storage 2-1:1.0 [ 6692.701494] scsi 3:0:0:0: Direct-Access Asm 225 0 PQ: 0 ANSI: 6 [ 6692.702794] sd 3:0:0:0: Attached scsi generic sg2 type 0 [ 6692.705028] sd 3:0:0:0: [sdb] Very big device. Trying to use READ CAPACITY(16). [ 6692.706377] sd 3:0:0:0: [sdb] 7814037168 512-byte logical blocks: (4.00 TB/3.64 TiB) [ 6692.706379] sd 3:0:0:0: [sdb] 4096-byte physical blocks [ 6692.709247] sd 3:0:0:0: [sdb] Write Protect is off [ 6692.709248] sd 3:0:0:0: [sdb] Mode Sense: 43 00 00 00 [ 6692.712940] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 6692.799855] sdb: sdb1 sdb2 sdb5 [ 6692.832228] sd 3:0:0:0: [sdb] Attached SCSI disk [ 6693.123393] md/raid1:md2: active with 1 out of 2 mirrors [ 6693.123403] md2: detected capacity change from 0 to 3995839954944 …略…
ここまでくれば、後は Virtualbox 仮想マシンの Linux で扱えます。
まとめ
Hyper-V も Virtualbox も、どちらも path through で HDD_A、HDD_B を接続する事ができました。後は接続した HDD をどのようにして扱うかになります。
Synology DS218+ から取り外した HDD のデータを取り出す方法
ここからが今回のメインテーマです。内蔵していた HDD_A と USB で外付していた HDD_B に分けて説明します。
HDD_A (内蔵されていたHDD) の認識方法 【debian 11 編】
HDD_A の場合は Linux で認識できるようになってから、もう一手間必要です。Linux の mdadm と lvm2 を使用することで認識できます。
大まかな手順としては以下の通りです。
- 必要な software を入れる (mdadm, lvm2)
- mount する
これで見えるようになります。debian 11 では mdadm と lvm2 の設定は自動的に行われるので、mount するだけです。
必要な software の install
mdadm と lvm2 を install します。
$ sudo apt install mdadm lvm2
mount する
$ sudo mount /dev/vg1000/lv /mnt $ mount | grep vg1000 /dev/mapper/vg1000-lv on /mnt type btrfs (rw,relatime,space_cache=v2,subvolid=257,subvol=/@syno) $ ls /mnt ls: cannot access '/mnt/@img_bkp_cache': Input/output error ls: cannot access '/mnt/@sharesnap': Input/output error ls: cannot access '/mnt/docker': Input/output error ls: cannot access '/mnt/ActiveBackupforBusiness': Input/output error @ActiveBackup @appstore @eaDir @synoelasticd.core music @S2S @autoupdate @img_bkp_cache @synologydrive photo @SynoFinder-etc-volume @builtin-dyn-myd.core.gz @pkg-SynologyMom.core.gz @synoreport.core video @SynoFinder-log @cloudsync @secret@ @tmp @SynologyApplicationService @database @sharesnap ActiveBackupforBusiness @SynologyDriveShareSync @docker @synoaic_debug_d.core.gz docker @USBCopy @download @synoaic_monitor.core.gz homes
一部読み取る事のできない folder はありますが、homes や photo、video 等は読み込む事ができますので、非常時のデータの復旧には十分かと思います。
取り外し方
umount して、LV を inactivate、md を stop してから USB を取り外します。
$ sudo umount /mnt $ sudo vgchange -an 0 logical volume(s) in volume group "vg1000" now active $ sudo mdadm --stop /dev/md2 mdadm: stopped /dev/md2 $ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] unused devices: <none>
cat /proc/mdstat から表示が消えたら USB HDD を切り離してOKです。
手動で raid の構築、有効化 (参考)
debian11 では自動で raid が構築されますが、手動で実行する場合には、取り外しの逆の手順を実行します。
$ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] unused devices: <none> $ sudo mdadm --assemble /dev/md2 /dev/sdb5 mdadm: /dev/md2 has been started with 1 drive (out of 2). $ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md2 : active (auto-read-only) raid1 sdb5[1] 3902187456 blocks super 1.2 [2/1] [_U] unused devices: <none> $ sudo lvscan inactive '/dev/vg1000/lv' [3.63 TiB] inherit # ACTIVE なら次行は行う必要ありません $ sudo vgchange -ay 1 logical volume(s) in volume group "vg1000" now active $ sudo lvscan ACTIVE '/dev/vg1000/lv' [3.63 TiB] inherit $ sudo mount /dev/vg1000/lv /mnt
HDD_A (内蔵されていたHDD) の認識方法【Ubuntu編、失敗 -> 成功】
残念ながら、Hyper-V でも Virtualbox でも、Ubuntu では前記の debian11 と同じ方法では認識できませんでした。Ubuntu 21.10 や、更に Fedora35 でも試してみましたが認識できません。今の所、認識できたのは debian11 だけです。
原因を探してみましたが、結局分かりません。違いを探してみると、mdadm で raid1 を assemble する段階で認識している容量が異なります。
debian 11 の場合 :
$ uname -a Linux debian 5.10.0-10-amd64 #1 SMP Debian 5.10.84-1 (2021-12-08) x86_64 GNU/Linux $ sudo dmesg | grep md [ 7376.477479] md/raid1:md2: active with 1 out of 2 mirrors [ 7376.477491] md2: detected capacity change from 0 to 3995839954944
Ubuntu の場合 :
$ uname -a Linux vbUbuntu 5.13.0-22-generic #22-Ubuntu SMP Fri Nov 5 13:21:36 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux $ sudo dmesg | grep md [ 9118.096737] md/raid1:md127: active with 1 out of 2 mirrors [ 9118.096761] md127: detected capacity change from 0 to 7804374912
mdadm の source の Assemble.c に当たっているパッチが違うかと思い確認しましたが、Ubuntu でも同じでした。という事で、原因追及は断念しました。(kernel module の方かもしれません)
2022.01.02 追記:
ro で mount すればよかったようです。
Synology NASが故障したときにPCでデータを復元する方法 - Synology ナレッジセンター
$ sudo mount /dev/vg1000/lv /mnt -o ro
これでちゃんと mount できました。
まとめ
結果として、HDD_A は
- mdadm、lvm2 を install する
- debian 11 では path through で HDD を接続すると、raid と lvm2 の設定は自動で行われる。後は mount するだけ。一部読み取れない folder があるので、手動で mount する必要あり。
- Ubuntu (20.04.3 LTS、21.10) や Fedora 35 では mount できなかった。mdadm で raid を構成する際に認識する容量に違いがあるので、これが原因と考えられるが追及できなかった。
- 2022.01.02 追記 Ubuntu (20.04.3 LTS、21.10) でも mount に ro option を付ける事で mount できました。
HDD_B (外付HDD) の認識方法
全領域が一つの ext4 になっている HDD_B は、Hyper-V/Virtualbox の debian/Ubuntu のどちらでも読み取る事ができました。差し込むだけで認識できます。
以下、Virtualbox + debian で説明しますが、Hyper-V + Ubuntu でも USB HDD の接続方法以外は同様です。
接続直後の状態
/dev/sdb1 として認識されて、/media 以下に mount までされています。
mount :
$ mount | grep sdb /dev/sdb1 on /media/username/1.42.6-23824 type ext4 (rw,nosuid,nodev,relatime,errors=remount-ro,uhelper=udisks2)
dmesg :
$ sudo dmesg | lv …略… [ 35.276750] usb 2-1: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd [ 35.307157] usb 2-1: New USB device found, idVendor=174c, idProduct=1153, bcdDevice= 0.00 [ 35.307159] usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1 [ 35.307160] usb 2-1: Product: 225 [ 35.307161] usb 2-1: Manufacturer: Asm [ 35.307161] usb 2-1: SerialNumber: 12345678960D [ 35.368857] usb 2-1: USB controller 0000:00:0c.0 does not support streams, which are required by the UAS driver. [ 35.368859] usb 2-1: Please try an other USB controller if you wish to use UAS. [ 35.368860] usb-storage 2-1:1.0: USB Mass Storage device detected [ 35.373027] scsi host3: usb-storage 2-1:1.0 [ 35.374295] usbcore: registered new interface driver usb-storage [ 35.388613] usbcore: registered new interface driver uas [ 36.381113] scsi 3:0:0:0: Direct-Access Asm 225 0 PQ: 0 ANSI: 6 [ 36.381626] sd 3:0:0:0: Attached scsi generic sg2 type 0 [ 36.386148] sd 3:0:0:0: [sdb] Very big device. Trying to use READ CAPACITY(16). [ 36.387609] sd 3:0:0:0: [sdb] 7814037168 512-byte logical blocks: (4.00 TB/3.64 TiB) [ 36.387610] sd 3:0:0:0: [sdb] 4096-byte physical blocks [ 36.391273] sd 3:0:0:0: [sdb] Write Protect is off [ 36.391276] sd 3:0:0:0: [sdb] Mode Sense: 43 00 00 00 [ 36.394039] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 36.444102] sdb: sdb1 [ 36.668652] sd 3:0:0:0: [sdb] Attached SCSI disk [ 37.173131] EXT4-fs (sdb1): recovery complete [ 37.196257] EXT4-fs (sdb1): mounted filesystem with ordered data mode. Opts: errors=remount-ro …略…
中身を gnome のファイルアプリで見たのが下の画面です。
mount した directory 直下: 拡張子hbk の folder が、Hyper Backup で backup された data 一式が入っている folder です。私の場合は2種類あります。
NNNNN.hbk folder の中 : 拡張子 bkpi の file が backup の内容が記録されている file です。
この状態では、Hyper Backup で backup されたままの状態ですので、中身を確認する事は出来ません。
Synology Hyper Backup Explorer の Linux 版を使用して中身を確認する
そこで、Hyper Backup Explorer の Linux 版を使用して、中身を取り出します。
仮想マシンの中で Web Browser を起動し上記サイトを開きます。ダウンロードセンターから製品カテゴリ「NAS」と製品名「DS218+」を選択して、デスクトップユーティリティーの中から Hyper Backup Explorer の「ダウンロード」を選択し、Ubuntu & Fedora 用を選択すると、圧縮された file が download されます。
このファイルを展開して、中に含まれている HyperBackupExplorer を実行します。展開は gnome のアーカイブマネージャーを使用しても良いですし、コマンドラインで実行するなら以下の方法です。
$ mkdir hbe $ cd hbe/ $ tar xf ../ダウンロード/HyperBackupExplorer-3.0.0-0149-linux.tar.bz2 . $ ./HyperBackupExplorer
Hyper Backup Explorer の起動画面 : 左側のローカルバックアップを閲覧を選択します。
拡張子 bkpi のファイルを選択します。
実際に backup されている folder が表示されます。下部の矢印や左下のカレンダーから、backup された日付を選択する事も出来ます。
folder や file を選択して右クリックすると、指定した folder に copy されます。
このようにして、Hyper Backup Explorer を使用すれば、世代管理された backup data から必要な file/folder を取り出す事ができます。
Windows10 の Hyper Backup Explorer からデータを抜き出すには
できれば Windows10 から Hyper Backup の data を取り出せれば、もっと簡単に済ませられると思います。
詳細な手順は省きますが、以下のやり方で Windows10 の Hyper Backup Explorer からデータを抜き出せました。
- 仮想マシン側に samba を install する
- /etc/samba/smb.conf を編集する。最後に以下を追加。
[share] path = /media writeable = no guest ok = no guest only = no
- /media を chmod 755 に変更する
- samba を再起動
- Windows10 の Hyper Backup Explorer を起動する
- ローカルバックアップの選択で "\\192.168.x.xx\" と仮想マシンの IP address を指定する
- "share" フォルダが見つかったら、中から拡張子 bkpi のファイルを選択する。
これ以降は Linux 版の説明と同じです。
おまけ : Virtualbox でホスト側Windows10 に接続した Bluetooth ドングルを使用する
以前に Windows10 用に Bluetooth USB ドングルを購入しました。
hiro20180901.hatenablog.com
この時に Amazon リンク切れとなっていた商品が復活していました。
この Bluetooth USB ドングルは、Realtek chip を採用していて、Linux でも稼働実績があるのが特徴です。
この Bluetooth USB ドングルを、 Virtualbox で使ってみました。
先ずは、Windows10 のデバイスマネージャーで、ベンダーID、プロダクトID、リビジョンを調べます。
ベンダーID | プロダクトID | リビジョン |
---|---|---|
08DA | 8771 | 0200 |
次に、Virtualbox のデバイスメニューの USB からデバイスにカーソルを合わせると、ベンダーID 等が表示されるので、その項目を選択します。
認識されると、dmesg に記録が出力されます。
dmesg :
[15628.427509] usb 1-2: new full-speed USB device number 3 using xhci_hcd [15628.799220] usb 1-2: New USB device found, idVendor=0bda, idProduct=8771, bcdDevice= 2.00 [15628.799222] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [15628.799223] usb 1-2: Product: Bluetooth Radio [15628.799224] usb 1-2: Manufacturer: Realtek [15628.799224] usb 1-2: SerialNumber: 00E04C239987 [15628.847670] cryptd: max_cpu_qlen set to 1000 [15628.944040] alg: No test for fips(ansi_cprng) (fips_ansi_cprng) [15629.012782] Bluetooth: Core ver 2.22 [15629.012860] NET: Registered protocol family 31 [15629.012861] Bluetooth: HCI device and connection manager initialized [15629.012864] Bluetooth: HCI socket layer initialized [15629.012866] Bluetooth: L2CAP socket layer initialized [15629.012869] Bluetooth: SCO socket layer initialized [15629.030776] usbcore: registered new interface driver btusb [15629.034827] Bluetooth: hci0: RTL: examining hci_ver=09 hci_rev=d899 lmp_ver=09 lmp_subver=64cd [15629.034829] Bluetooth: hci0: RTL: unknown IC info, lmp subver 64cd, hci rev d899, hci ver 0009 [15629.034830] Bluetooth: hci0: RTL: assuming no firmware upload needed [15629.101707] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [15629.101709] Bluetooth: BNEP filters: protocol multicast [15629.101712] Bluetooth: BNEP socket layer initialized [15629.162735] NET: Registered protocol family 38 [15629.201226] Bluetooth: RFCOMM TTY layer initialized [15629.201230] Bluetooth: RFCOMM socket layer initialized [15629.201234] Bluetooth: RFCOMM ver 1.11
gnome の設定 -> Bluetooth から、Bluetooth keyboard が接続でき、入力できる事を確認しました。
総まとめ
- Synology DS218+ に USB HDD を外付で接続する時に exFAT や NTFS を選ぶ方も多いかと思いますが、Linux の filesystem (btrfs や ext4) を選んでも、それなりの知識があれば苦労なくデータを復旧する事ができました。Synology DS218+ の中では Linux が動作しており、Linux の filesystem を選択した方が個人的には素直な使い方ではないかと思います。
- Hyper-V と Virtualbox を比較すると、ディスクの管理から該当 HDD をオフラインにしなくても良い分、Virtualbox の方が簡単かと感じました。また、HDD 以外の USB 機器も (今回は Bluetooth ドングルを試しましたが) Linux 側が対応していれば使える可能性があります。実機と同じように USB 機器を試す場合には、Virtualbox の方が合っています。
- とはいえ、Hyper-V でも path through 接続した HDD は安定して扱えますので、使い方次第だと思います。
- debian 11 のみ、不完全ではありますが、内蔵の HDD_A の中身を見る事ができました。Ubuntu や追加で試した Fedora が読み込めなかった理由は不明です。何となく kernel (module?) が原因かなとは思っていますが、Synology DS218+ から取り外した HDD は debian 11 で読み込めるという事が分かったのは収穫でした。
- 2022.01.02 追記 Ubuntu でも mount に ro option を追加する事で読み込めました。
- 今回の調査で強く感じたのは、Hyper Backup でどこまで backup しておくか、という事です。内蔵の HDD は、debian 11 で読み込めたものの、一部読み込めない部分があり、完全ではありませんでした。Hyper Backup 側では読み込めない箇所はなく、世代管理もされていて過去に遡って取り出す事も可能ですので、必要なすべてのデータを Hyper Backup で記録しておく必要があると感じました。
以上、長くなりましたが、参考になれば幸いです。今回、課題として残った項目につきましては、時間を見つけて後日検証したいと考えています。
2022.01.02 追記 :
検証結果はこの日記に追記しました。
2022.01.01 追記 :
- WSL2 と Hyper-V と Virtualbox の各仮想マシン間で通信を確立する方法
- debian 11 で二つのネットワークアダプタを有効にする方法
について、別の日記にまとめました。
hiro20180901.hatenablog.com