
별도의 m.2 nvme 스토리지 장치에 Ubuntu 20.04 및 Windows 10이 포함된 듀얼 부팅 시스템. NTFS로 설정된 외장 하드 드라이브(14TB)가 있습니다. 두 운영 체제 모두에서 디스크에 쓸 수 있습니다. 그러나 Windows 10에서 HD의 파일을 열 때 Ubuntu 20.04를 사용하여 해당 파일을 생성하면 파일이 손상되는 경우가 많습니다. 예를 들어:
D:\my\path> type myfile.mrc.tlt
The file or directory is corrupted and unreadable.
두 개의 외장 하드 드라이브(하나는 Seagate, 다른 하나는 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 파티션에 액세스하면 문제가 발생하기 시작합니다. 그럼 윈도우 문제인가요? ntfs-3g FUSE 드라이버가 Windows 드라이버와 비교하여 잘못된 방식으로 무언가를 해석하여 비호환성을 초래할 가능성이 있는 것 같습니다.
이 문제가 극히 드물다는 점이 흥미롭습니다.(journalctl에서 정확한 오류가 있는 게시물 몇 개를 찾았습니다. 하나는 2008년의 게시물이고 다른 하나는 RAID와의 이상한 상호 작용에 대한 게시물입니다.). 이는 이러한 문제를 일으키는 특별한 구성이 있음을 암시할 수 있으며 그것이 무엇인지 알아내는 것이 매우 흥미로울 수 있기 때문에 주의해야 할 사항입니다. 그러나 나는 그것을 독자들에게 연습으로 남겨두겠습니다.
해결 방법 측면에서 시도해 볼 수 있는 것은 다음과 같습니다.
새로운 ntfs를 사용해 보세요삼커널 드라이버(사용중인 ntfs-3g와 반대),Linux 5.15부터 Paragon Software가 커널에 기여했습니다.. 아직 제거되지 않은 이전 읽기 전용 ntfs 커널 드라이버와 혼동하지 마십시오. 5.15 이상의 Linux 커널 버전으로 업데이트해야 합니다. 22.04에서는 5.15가 기본적으로 사용되는 것 같습니다.(그리고 20.04에 오래된 소프트웨어를 사용하면 많은 최적화와 기능을 놓치게 되므로 20.04 → 22.04로 업그레이드하는 것이 좋습니다.).
즉석에서 파일 관리자가 기본적으로 ntfs3을 사용하도록 만드는 방법을 모르지만 예를 들어
/etc/fstab
ntfs3 드라이버를 사용하는 항목을 추가할 수 있습니다.이는 문제 해결에 도움이 될 수도 있고 그렇지 않을 수도 있습니다. 하지만 그렇지 않다면 이는 순전히 귀하의 Windows 시스템의 결함이라고 97% 확신합니다.(희귀성에 대한 내 요점도 참조하십시오). 제가 확신할 수 있는 이유는 Paragon Software가 오랫동안 파일 시스템 드라이버를 판매해 온 오래된 회사이고 원래 Windows 드라이버와의 비호환성을 해결하기에 충분한 전문 지식과 실제 경험을 갖고 있었기 때문입니다.
특히 NTFS를 사용하여 파일을 공유하는 경우 다음을 고려할 수도 있습니다.
- 대신 UDF 파일 시스템을 사용합니다. Windows와 Linux 모두에서 지원됩니다.
- exfat를 사용합니다.5.7부터 SAMSUNG은 exfat용 드라이버를 추가했습니다., 그리고 그들은또한 출시
exfatprogs
이므로 적절한 지원이 이루어집니다.
추신: 이상적으로는 최신 ntfs-3g를 사용해 본 후 문제가 여전히 재현 가능하면 버그를 보고하십시오. 하지만 실제로는 ntfs-3g 문제라는 점을 개발자에게 설득해야 할 수도 있습니다. ntfs3 드라이버가 제대로 작동한다면 이는 문제가 ntfs-3g 드라이버에 있다는 암묵적인 증거일 수 있습니다.