いやはや、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で読めました。えらい長くなってしまいました。備忘録でした。
最近のコメント