« LinuxのHDDをWSLで読む方法 | トップページ | 6000時間のHDDが死んできた件 »

ReadyNASのHDDをWSLで読むには

いやはや、WSL2で、NASのHDDを読む話です。
ReadyNAS では、HDDは2Tの赤を1つしか装着しておらず、設定画面では、X-RAID2(非冗長)になっていました。これを安直にマウントしようとすると、当然ながら、うまくいきません。パーテションは3つあるので、それぞれ指定してもext3とか4とか指定してもだめです。
PS C:\Windows\System32> wmic diskdrive list brief
Caption                                 DeviceID            Model                                   Partitions  Size    
WDC WD20 EFRX-68AX9N0 USB Device        \\.\PHYSICALDRIVE7  WDC WD20 EFRX-68AX9N0 USB Device        3           2000396321280

PS C:\Windows\System32> wsl --mount \\.\PHYSICALDRIVE7
ディスクがアタッチされましたが、マウントできませんでした: No such device。
詳細については、WSL2 内で 'dmesg' を実行してください。
ディスクをデタッチするには、'wsl.exe --unmount \\.\PHYSICALDRIVE7' を実行します。
PS C:\Windows\System32> wsl.exe --unmount \\.\PHYSICALDRIVE7
この操作を正しく終了しました。
PS C:\Windows\System32>
そこで、一旦丸ごとマウントして覗いてみると、sddが1,2,3のパーテーションになっています。 全体はgptで、それぞれは、typeがlinux_raid_memberになってます。一番大きい3が実体なので、mdadmでexamineしてみると、raid1になってます。HDDは一つしかないけど、X-RAID2(非冗長)は、空のミラーリングになっているようです。UUIDとかそのまま載せてますが、これを見ても何もしようがないのでどうということはないでしょう。なお、WSLを入れただけではmdadmとかがないかもしれません。その場合はaptすればよいです。
PS C:\Windows\System32> wsl --mount \\.\PHYSICALDRIVE7 --bare
この操作を正しく終了しました。

PS C:\Windows\System32> wsl -u root
Welcome to Ubuntu 20.04.5 LTS (GNU/Linux 6.6.87.2-microsoft-standard-WSL2 x86_64)

root@nori-HP8300:/mnt/c/Windows/System32# ls /dev/sd*
/dev/sda  /dev/sdb  /dev/sdc  /dev/sdd  /dev/sdd1  /dev/sdd2  /dev/sdd3  /dev/sde

root@nori-HP8300:/mnt/c/Windows/System32# blkid /dev/sdd
/dev/sdd: PTUUID="046d41ca-4d0f-4e46-9b6c-228b4f8cf227" PTTYPE="gpt"

root@nori-HP8300:/mnt/c/Windows/System32# blkid /dev/sdd1
/dev/sdd1: UUID="077e9afb-9683-32bd-6d8a-546d2bc7c239" UUID_SUB="d948cb09-7cb4-be3e-8990-d6fcc933a33d" LABEL="2CB05DBEE3CF:0" TYPE="linux_raid_member" PARTUUID="0f87f2d2-cc6e-48e6-b153-11c05771327c"

root@nori-HP8300:/mnt/c/Windows/System32# blkid /dev/sdd2
/dev/sdd2: UUID="20e439b0-b0f7-a6d7-007b-4d3ce830018f" UUID_SUB="6b75120f-f600-a95b-4207-69839e7a7a30" LABEL="2CB05DBEE3CF:1" TYPE="linux_raid_member" PARTUUID="3a1f1282-bc5f-4178-8ee0-9a3ab866650c"

root@nori-HP8300:/mnt/c/Windows/System32# blkid /dev/sdd3
/dev/sdd3: UUID="5db9d148-b5a5-1091-2f23-2842841c6736" UUID_SUB="524b9866-7208-7d3f-2975-87ba9760b79b" LABEL="2CB05DBEE3CF:2" TYPE="linux_raid_member" PARTUUID="d289ba94-ba84-4ef5-a788-c3d911b40ace"

root@nori-HP8300:/mnt/c/Windows/System32# mdadm --examine /dev/sdd3
/dev/sdd3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 5db9d148:b5a51091:2f232842:841c6736
           Name : 2CB05DBEE3CF:2
  Creation Time : Tue Jan 15 09:11:48 2013
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 3897585777 sectors (1858.51 GiB 1995.56 GB)
     Array Size : 1948792752 KiB (1858.51 GiB 1995.56 GB)
  Used Dev Size : 3897585504 sectors (1858.51 GiB 1995.56 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
   Unused Space : before=1968 sectors, after=273 sectors
          State : clean
    Device UUID : 524b9866:72087d3f:297587ba:9760b79b

    Update Time : Tue Aug 26 12:48:08 2025
       Checksum : 3e667126 - correct
         Events : 7124570

   Device Role : Active device 0
   Array State : A. ('A' == active, '.' == missing, 'R' == replacing)
そうなると、mdadmでraidを構成しないといけません。とりあえずリードオンリーで行きます。 すると、/md0の中に論理ボリューム LVM2_member があることがわかります。
root@nori-HP8300:/mnt/c/Windows/System32# mdadm --assemble --force --readonly /dev/md0 /dev/sdd3
mdadm: /dev/md0 has been started with 1 drive (out of 2).

root@nori-HP8300:/mnt/c/Windows/System32# cat /proc/mdstat
Personalities : [raid1]
md0 : active (read-only) raid1 sdd3[0]
      1948792752 blocks super 1.2 [2/1] [U_]
unused devices: 

root@nori-HP8300:/mnt/c/Windows/System32# blkid /dev/md0
/dev/md0: UUID="xtZPbu-UDGI-eaA6-NYCs-i6L5-7hWm-DTQYPl" TYPE="LVM2_member"

root@nori-HP8300:/mnt/c/Windows/System32# lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
sda       8:0    0 388.4M  1 disk
sdb       8:16   0   186M  1 disk
sdc       8:32   0     2G  0 disk  [SWAP]
sdd       8:48   0   1.8T  0 disk
├─sdd1    8:49   0     4G  0 part
├─sdd2    8:50   0   512M  0 part
└─sdd3    8:51   0   1.8T  0 part
  └─md0   9:0    0   1.8T  1 raid1
sde       8:64   0     1T  0 disk  /snap
                                   /mnt/wslg/distro
                                   /
以下、いろいろやってみてうまくいったのを載せます。c-cと言うのがターゲットです。 landisk3と言うのを作っておいてそこにマウントします。いけました。
root@nori-HP8300:/mnt/c/Windows/System32# vgchange -a y
  WARNING: PV /dev/md0 in VG c is using an old PV header, modify the VG to update.
  1 logical volume(s) in volume group "c" now active

root@nori-HP8300:/mnt/c/Windows/System32# dmsetup table
c-c: 0 3876585472 linear 9:0 7680

root@nori-HP8300:/mnt/c/Windows/System32# mkdir /mnt/landisk3
root@nori-HP8300:/mnt/c/Windows/System32# mount -o ro /dev/c/c /mnt/landisk3
見えましたねぇ。ここに、Qwatchからftpされた動画が入っております。 この状態で、Windows側のファイルマネージャからちゃんと同じものが見えております。copyし放題です。
root@nori-HP8300:/mnt/c/Windows/System32# cd /mnt/landisk3
root@nori-HP8300:/mnt/landisk3# ls
aquota.group  aquota.user  backup  home  lost+found  media  otenki-ftp
root@nori-HP8300:/mnt/landisk3# cd otenki-ftp
root@nori-HP8300:/mnt/landisk3/otenki-ftp# ls
2015  AA09  MADO  OTENKI4  Qwatch  diamond1.jpg  encorded  size.txt
root@nori-HP8300:/mnt/landisk3/otenki-ftp# cd OTENKI4
root@nori-HP8300:/mnt/landisk3/otenki-ftp/OTENKI4# ls
FTP_OTENKI4_1128.txt  record_202311191903  record_202404100510  record_202408291851  record_202504042159
Thumbs.db             record_202311250517  record_202404120814  record_202409010520  record_202504072020
record_202212271717   record_202311280322  record_202404141843  record_202409120524  record_202504101918
record_202301172225   record_202312031109  record_202404162253  record_202409171830  record_202504130518
そして終わり方ですが、なんでエラーになるんだろうと思っていたら、マウントしている先にいるとだめなんですね。当然か。なのでまずcd /します。英語の言い回しがややこしいですが、0個がnow active すなわち全部activeではなくなりましたということのようです。水銀0使用とおなじですね。
root@nori-HP8300:/mnt/landisk3/otenki-ftp/OTENKI4# umount /mnt/landisk3
umount: /mnt/landisk3: target is busy.

root@nori-HP8300:/mnt/landisk3/otenki-ftp/OTENKI4# cd /
root@nori-HP8300:/# umount /mnt/landisk3

root@nori-HP8300:/# lvchange -a n /dev/c/c
  WARNING: PV /dev/md0 in VG c is using an old PV header, modify the VG to update.
root@nori-HP8300:/# vgchange -a n c
  WARNING: PV /dev/md0 in VG c is using an old PV header, modify the VG to update.
  0 logical volume(s) in volume group "c" now active
これでようやくraidが解放できます。そしてパワーシェルに戻ってアンマウントですが、なんでエラーなんだと悩んでいたら、linux側ではumount、パワーシェルでは、unmount と、一文字違うのね。ややこしい。
root@nori-HP8300:/# mdadm --stop /dev/md0
mdadm: stopped /dev/md0

root@nori-HP8300:/mnt/landisk3# exit
logout

PS C:\Windows\System32> wsl --umount \\.\PHYSICALDRIVE7
無効なコマンド ライン引数: --umount
サポートされている引数の一覧を取得するには、'wsl.exe --help' を使用してください。
PS C:\Windows\System32> wsl  --unmount
この操作を正しく終了しました。
PS C:\Windows\System32>
というわけで、ReadyNASのX-RAID2のHDDがWin10のWSL2で読めました。えらい長くなってしまいました。備忘録でした。

| |

« LinuxのHDDをWSLで読む方法 | トップページ | 6000時間のHDDが死んできた件 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« LinuxのHDDをWSLで読む方法 | トップページ | 6000時間のHDDが死んできた件 »