はじめに
外付けSSDやWindowsと共用しているNTFSパーティションをUbuntuに接続した際、
Error mounting /dev/sdd1 at /media/yt/SSD-PG-C_D: wrong fs type, bad option, bad superblock on /dev/sdd1, missing codepage or helper program, or other error
といったエラーに遭遇することがあります。本記事は、実際にこのエラーに直面した際の調査から復旧、再発防止策までを手順付きで整理したメモです。Qiita読者が同じ状況に陥ったとき、落ち着いて1つずつ確認できるリファレンスとしてご活用ください。
⚠️ 注意: 修復作業はファイルシステムのメタデータを書き換えます。重要なデータは可能な限り別メディアへバックアップしてから実行してください。
想定環境
- OS: Ubuntu 24.04 LTS (Waylandセッション)
- ディスク構成:
/dev/sdd1に NTFS (ラベル:SSD-PG-C/D, 容量約1.9TB) - マウント先:
/media/yt/SSD-PG-C_D - sudo権限を持つユーザー
他のディストリビューションでも基本的な流れは同じですが、ログ表示やパッケージ名が異なる場合があります。
症状と初期確認
- GUIから外付けドライブを開こうとするとエラーダイアログが表示される。
-
lsblkでファイルシステムを確認すると、対象パーティションはntfsと認識されているがマウントポイントが空。 -
dmesgにはvolume is dirty and "force" flag is not set!といった警告が出力されている。
まずはターミナルで以下を実行し、どのデバイスに問題があるか把握します。
lsblk -f
該当パーティションが /dev/sdd1 であることがわかったら、続いてカーネルログを確認します。
sudo dmesg | tail -n 30
ntfs3(sdd1): volume is dirty と表示されている場合、Windows側のシャットダウンや安全な取り外しが行われず、NTFSのダーティビットが立っている可能性が高いです。この状態ではLinux標準の ntfs3 ドライバーがマウントを拒否します。
原因: ダーティビットと$MFTMirrの不整合
今回のケースでは、さらに ntfsfix 実行時に $MFTMirr does not match $MFT (record 3) というメッセージが出力されました。これはマスターファイルテーブル(MFT)とそのバックアップがずれている状態を示しています。Windowsの chkdsk でも修復できますが、Linuxしか手元にないときは ntfsfix が頼りになります。
手順1: ntfsfixでファイルシステムを修復
まず、誤ってマウントされたままになっていないか確認したうえで ntfsfix を実行します。
sudo ntfsfix /dev/sdd1
実行例:
Mounting volume... $MFTMirr does not match $MFT (record 3).
FAILED
Attempting to correct errors...
Processing $MFT and $MFTMirr...
Reading $MFT... OK
Reading $MFTMirr... OK
Comparing $MFTMirr to $MFT... FAILED
Correcting differences in $MFTMirr record 3...OK
...
NTFS partition /dev/sdd1 was processed successfully.
ntfsfix はダーティビットをクリアし、ジャーナルを空にしたうえでMFTの整合性をチェックします。完了メッセージが表示されたら次のステップへ進みます。
🔍 補足
ntfsfixは簡易的な修復ツールです。問題が解消しない場合は、Windowsマシンで公式のchkdsk /fを実行するのが最も確実です。
手順2: マウントポイントを整える
マウント先ディレクトリが存在しないまたは権限が不適切な場合に備え、事前に作成しておきます。
sudo mkdir -p /media/yt/SSD-PG-C_D
手順3: ntfs-3gで再マウント
Linuxカーネルの ntfs3 ドライバーは厳格にダーティビットをチェックするため、修復直後に再試行しても拒否されることがあります。その場合はユーザー空間ドライバー ntfs-3g でマウントするとスムーズでした。
sudo mount -t ntfs-3g /dev/sdd1 /media/yt/SSD-PG-C_D
正常にマウントできたかどうかは次のコマンドで確認します。
mount | grep sdd1
ls -lah /media/yt/SSD-PG-C_D | head
fuseblk タイプでマウントされ、ファイル一覧が表示されれば成功です。
手順4: 仕上げのチェック
最終的にディスク容量が取得できるかを確認しておくと安心です。
df -h /media/yt/SSD-PG-C_D
期待される出力例:
Filesystem Size Used Avail Use% Mounted on
/dev/sdd1 1.9T 651G 1.2T 35% /media/yt/SSD-PG-C_D
再発防止のためにできること
- Windowsで完全シャットダウン: 「高速スタートアップ」を無効にしておくと、ハイバネーション情報が残らず安全です。
- 取り外し時は安全な取り出しを実行: USBストレージを抜く前に必ず「安全な取り出し」を行いましょう。
-
起動時に自動マウントするなら
fstabをntfs-3gに設定:-
/etc/fstabにntfs-3gを指定すると、次回以降も同じドライバーでマウントされます。 - UID/GIDやマウントオプションも合わせて設定しておくとアクセス権トラブルを避けられます。
-
-
定期的にWindows側で
chkdsk /fを実行: 長期的にはWindowsのネイティブツールでの整合性チェックが安心です。
トラブルシューティングQ&A
| 症状 | 確認ポイント | 対処案 |
|---|---|---|
ntfsfix でエラーが解消しない |
$LogFile が壊れている可能性 |
Windowsで chkdsk /f を実行し、バックアップからの復元を検討 |
mount: unknown filesystem type 'ntfs' |
ntfs-3g パッケージが未導入 |
sudo apt install ntfs-3g で導入 |
read-only でしかマウントされない |
ntfsfix の後もダーティビットが残っている |
再度 ntfsfix を実行 or Windowsで完全シャットダウン |
| 毎回マウントポイントの権限がrootになる | FUSEのオプション不足 |
/etc/fstab に uid=1000,gid=1000 などを追加 |
コマンドチートシート
# デバイス一覧とファイルシステム
lsblk -f
# カーネルログの末尾を確認
sudo dmesg | tail -n 30
# NTFSパーティションの修復
sudo ntfsfix /dev/sdd1
# マウントポイント作成
sudo mkdir -p /media/yt/SSD-PG-C_D
# ntfs-3gでマウント
sudo mount -t ntfs-3g /dev/sdd1 /media/yt/SSD-PG-C_D
# マウント確認・ディスク使用量
mount | grep sdd1
ls -lah /media/yt/SSD-PG-C_D | head
df -h /media/yt/SSD-PG-C_D
# アンマウント
sudo umount /media/yt/SSD-PG-C_D
まとめ
-
volume is dirtyエラーの正体はNTFSのダーティビットやMFT不整合。 - Linuxだけで復旧したい場合は
ntfsfixが第一歩。 - 修復後は
ntfs-3gドライバーでのマウントが確実。 - 再発防止にはWindows側での完全シャットダウンと定期的な
chkdskが有効。
この記事が、同じトラブルに遭遇した際に冷静に対処できる助けになれば幸いです。質問や補足があればコメントでぜひお知らせください!