web-dev-qa-db-ja.com

Linux(exfat-Fuse)はGPT4TB外部exFATディスクから読み取ることができません

私は4TBの外部WDREDを持っています。これは、Windows10マシンでexFATディスクとしてフォーマットされました。元のWindows10マシンと2017macbook pro(High Sierra)の両方からファイルを読み取るのに問題はありません。

私が使用しているLinuxマシン(Ubuntu 16.10 x64 + Slackware 14.2)のいずれでも、システムはディスクを読み取り可能またはマウント可能として検出しません。紛らわしいことに、LinuxマシンのディスクをexFATとして消去してフォーマットすると、Windows 10マシンもMacBookもそれを読み取ることができませんが、両方のLinuxデバイスは読み取ることができます。これは私にexfat-Fuseの実装が不完全であると疑うように導きます...確かに私は確信するのに十分なことを知りませんが。

[補足として、私はmacbook proからexFATとして消去+フォーマットしましたが、Windows10マシンは引き続き読み取り/書き込みを行うことができました。 Linuxマシンはできませんでした。]

これが私がこれまでに調査したものです:

Sudo lsblk

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
sdj      8:144  0   3.7T  0 disk 
├─sdj1   8:145  0   6.4G  0 part 
└─sdj2   8:146  0   7.3G  0 part 

Lsblkが検出するガベージファイルシステムのサイズに注意してください。ボリュームは、4TBすべてにまたがる1つのexFATパーティションのみでフォーマットされています。

parted -l /dev/sdj

Error: /dev/sdj: unrecognised disk label
Model: WDC WD40 EZRZ-00GXCB0 (scsi)                                       
Disk /dev/sdj: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: unknown
Disk Flags: 

partedは少なくとも、私たちが何を扱っているのかわからないと言うのに十分正直です。モデルを正しく検出しました。WDred4tbです。

fdisk -l /dev/sdj

Disk /dev/sdj: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x3258a7ab

Device     Boot Start       End   Sectors   Size Id Type
/dev/sdj1           1     76805     76805  37.5M ee GPT
/dev/sdj2       77056 976754431 976677376 465.7G  7 HPFS/NTFS/exFAT

Fdiskの出力は、ほぼ正しいので興味深いものです。 1つのパーティションをGPTメタデータとしてマップします。もう1つは、ID(0x07 == Microsoft data )を正しく検出しますが、サイズが間違っています。パーティションは4TBであり、465.7GBではありません。

Windowsから4TBのテストコンテンツを書き込んで、パーティションが実際に4 TBにまたがっていることを確認し、macbookproからすべてのコンテンツを再度正常に読み取りました。

検出されたデバイスのいずれかをマウントしようとしても機能しません。

Sudo mount.exfat-Fuse -d /dev/sdj1 /mnt/foobar

Fuse exfat 1.2.4
ERROR: exFAT file system is not found.

Sudo mount.exfat-Fuse -d /dev/sdj2 /mnt/foobar

Fuse exfat 1.2.4
ERROR: exFAT file system is not found.

デバッグモードでも、exfat-Fuseは有用な出力を出力しません。 ソースを見る 、スーパーブロックを読み取った直後の非常に早い段階で失敗します。

16進ダンプを使用してデバイス上の最初の1MBのデータを確認したところ、明らかなゴミがなく、正常に見えます。 (ペーストビン: https://Pastebin.com/BVLWW3kf

私が試すべき追加のデバッグ手順はありますか?ここで何が起こっているかについて何かアイデアはありますか?

編集:

gdiskを使用すると、ドライブにハイブリッドMBR + GPTがあるように見えます。ただし、gdiskはGPTを無効として検出します。

Sudo gdisk /dev/sdj
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: hybrid
  BSD: not present
  APM: not present
  GPT: not present

***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************
1
Afforess

問題は、ディスクが4kのネイティブセクターサイズのディスクであるかのようにパーティション化されていることです。 GPTは4096バイトから始まります。これは512eドライブであるため、ディスクの512バイトから開始することになっています。何らかの理由で、Windowsがドライブを4knとして誤って検出していると思います。

3
psusi