共有 NTFS HD の問題 | Ubuntu 20.04 x Windows 10

共有 NTFS HD の問題 | Ubuntu 20.04 x Windows 10

別々の m.2 nvme ストレージ デバイスに Ubuntu 20.04 と Windows 10 を搭載したデュアル ブート マシン。外付けハード ドライブ (14 TB) を NTFS としてセットアップしています。どちらのオペレーティング システムでもディスクに書き込むことができます。ただし、Windows 10 で HD 上のファイルを開くと、Ubuntu 20.04 を使用してそれらのファイルを生成した場合、ファイルが破損していることがよくあります。例:

D:\my\path> type myfile.mrc.tlt
The file or directory is corrupted and unreadable.

この現象は 2 つの外付けハード ドライブ (1 つは Seagate、もう 1 つは WD) で発生しました。問題は Seagate ドライブにあると想定していました。しかし、WD ドライブでも再現しました。

ここからトラブルシューティングをどこから始めればよいかわかりません。

実行中にドライブをマウントすると、journalctl -f次のようになります。

Nov 05 17:12:21 axoneme udisksd[894]: Mounted /dev/sdd1 at /media/jared/Elements on behalf of uid 1000
Nov 05 17:12:21 axoneme dbus-daemon[1641]: [session uid=1000 pid=1641] Activating via systemd: service name='org.freedesktop.Tracker1' unit='tracker-store.service' requested by ':1.1' (uid=1000 pid=1637 comm="/usr/libexec/tracker-miner-fs " label="unconfined")
Nov 05 17:12:21 axoneme systemd[1629]: Starting Tracker metadata database store and lookup manager...
Nov 05 17:12:21 axoneme dbus-daemon[1641]: [session uid=1000 pid=1641] Activating service name='org.gnome.Shell.HotplugSniffer' requested by ':1.37' (uid=1000 pid=1860 comm="/usr/bin/gnome-shell " label="unconfined")
Nov 05 17:12:21 axoneme dbus-daemon[1641]: [session uid=1000 pid=1641] Successfully activated service 'org.gnome.Shell.HotplugSniffer'
Nov 05 17:12:21 axoneme dbus-daemon[1088]: [session uid=125 pid=1088] Successfully activated service 'org.freedesktop.Tracker1'
Nov 05 17:12:21 axoneme systemd[1072]: Started Tracker metadata database store and lookup manager.
Nov 05 17:12:21 axoneme dbus-daemon[1641]: [session uid=1000 pid=1641] Successfully activated service 'org.freedesktop.Tracker1'
Nov 05 17:12:21 axoneme systemd[1629]: Started Tracker metadata database store and lookup manager.
Nov 05 17:12:21 axoneme ntfs-3g[5491]: Trying to read non-allocated mft records (10255 > 9984): Illegal seek
Nov 05 17:12:21 axoneme ntfs-3g[5491]: Trying to read non-allocated mft records (10256 > 9984): Illegal seek
Nov 05 17:12:21 axoneme ntfs-3g[5491]: Trying to read non-allocated mft records (10164 > 9984): Illegal seek
Nov 05 17:12:21 axoneme ntfs-3g[5491]: Trying to read non-allocated mft records (10165 > 9984): Illegal seek
Nov 05 17:12:22 axoneme ntfs-3g[5491]: Trying to read non-allocated mft records (10009 > 9984): Illegal seek
Nov 05 17:12:22 axoneme ntfs-3g[5491]: Trying to read non-allocated mft records (10010 > 9984): Illegal seek
Nov 05 17:12:22 axoneme ntfs-3g[5491]: Trying to read non-allocated mft records (10030 > 9984): Illegal seek
Nov 05 17:12:22 axoneme ntfs-3g[5491]: Trying to read non-allocated mft records (10031 > 9984): Illegal seek

ls -lth同様に、 Ubuntu 20.04 で NTFS HD 上のディレクトリを実行すると、破損したディレクトリに次の内容が表示されます。

Nov 05 17:16:03 axoneme ntfs-3g[5491]: Trying to read non-allocated mft records (10294 > 9984): Illegal seek
Nov 05 17:16:03 axoneme ntfs-3g[5491]: Trying to read non-allocated mft records (10290 > 9984): Illegal seek
Nov 05 17:16:03 axoneme ntfs-3g[5491]: Trying to read non-allocated mft records (10360 > 9984): Illegal seek

答え1

コメントでの議論から、Windows が NTFS パーティションにアクセスすると問題が発生し始めることがわかりました。では、これは Windows の問題でしょうか? おそらくそのようですが、ntfs-3g FUSE ドライバーが Windows のものと比べて誤った方法で何かを解釈し、非互換性が生じる可能性があります。

この問題は非常にまれであるように思われるのは興味深いことです(journalctl からの正確なエラーに関する投稿をいくつか見つけました。1 つは 2008 年のもので、もう 1 つは RAID との奇妙な相互作用に関するものでした)これは注目すべき点です。なぜなら、これらの問題を引き起こす特別な設定がある可能性を示唆している可能性があり、それが何であるかを調べるのは非常に興味深いからです。しかし、これは読者の課題として残しておきます。

回避策としては、次の方法を試すことができます。

  1. 新しいntfsを試す3カーネルドライバー(使用している ntfs-3g とは対照的に)Linux 5.15以降、Paragon Softwareによってカーネルに寄与された. まだ削除されていない古い読み取り専用 ntfs カーネル ドライバーと混同しないでください。Linux カーネル バージョン 5.15 以降に更新する必要があります。22.04 では 5.15 がデフォルトで使用されているようです。(20.04 に古いソフトウェアをインストールすると、多くの最適化や機能が失われるため、20.04 → 22.04 にアップグレードすることをお勧めします)

    すぐには、ファイル マネージャーがデフォルトで ntfs3 を使用するようにする方法はわかりませんが、たとえば、/etc/fstabntfs3 ドライバーを使用するエントリを追加することはできます。

    これはあなたの問題を解決するかもしれないし、そうでないかもしれない。しかし、もし解決しない場合は、これはあなたのWindowsシステムの欠陥であると97%確信している。(希少性についての私の意見も参照してください)私が自信を持っている理由は、Paragon Software が長年ファイルシステム ドライバーを販売してきた老舗企業であり、元の Windows ドライバーとの非互換性を解決するのに十分な専門知識と実践経験を持っていると確信しているからです。

  2. 特にファイルを共有するために NTFS を使用している場合は、次のことも検討してください。

    1. 代わりに UDF ファイルシステムを使用します。これは Windows と Linux の両方でサポートされています。
    2. exfat を使用します。5.7以降、SAMSUNGはexfat用のドライバを追加しました、 そして彼らがもリリースexfatprogs、適切なサポートが実施されます。

PS: 理想的には、最新の ntfs-3g も試して、それでも問題が再現する場合は、バグを報告してください。ただし、開発者にそれが本当に ntfs-3g の問題であることを納得させる必要があるかもしれません。ntfs3 ドライバーが正常に動作する場合、それは問題が ntfs-3g ドライバーにあるという暗黙の証拠である可能性があります。

関連情報