【誤報】Ubuntu 24.04 LTSと外付けHDDの相性問題を解決
ユニットコム製 外付けHDDケースUNI-RAID35U3-BLACKとUbuntu 24.04 LTSの相性問題を解決したので共有
解決できてなかった(´;ω;`)
課題
Ubuntu 24.04 LTSで運用しているファイルサーバにて、USB接続の外付けHDDに100GB程度のデータを書き込むと、接続が切れてマウントが外れる問題が発生
dmesg
を確認すると、カーネルから下記のようなエラーが大量に出力されていた。
EXT4-fs warning (device sdb): ... error -5 reading directory block
rclone: attempt to access beyond end of device
ハードウェア構成
項目 | 仕様 |
---|---|
CPU | Intel N100 |
RAM | DDR4 16GB |
OS | Ubuntu Server 24.04.3 LTS |
外付けHDDケース | UNI-RAID35U3-BLACK(RAID1) |
HDD | TOSHIBA DT02ABA600(6TB) x2 |
結論
UAS (USB Attached SCSI) ドライバを無効化することで解決
gemini先生に聞いたら一発で解決した。
検索の時代は終わったのかもしれないと思う、今日この頃。
原因
エラーログから、問題はアプリケーションやファイルシステム (EXT4) ではなく、より下層のUSB接続とドライバにあると判断
高負荷なデータ書き込みによって、Ubuntu標準の高速なuas
ドライバと、外付けHDDケースに搭載されているUSB-SATA変換コントローラーとの間で相性問題が発生。
これによりOSとHDD間の通信が不安定になり、I/Oエラー (error -5
) を誘発。最終的にOSがデバイスを正常に認識できなくなり (attempt to access beyond end of device
)、マウントが外れていたと考えられる。
対処法
特定のデバイスに対してuas
ドライバを無効化し、より互換性の高い従来のusb-storage
ドライバで動作するように設定を変更する。
-
HDDのIDを確認
lsusb
コマンドで、問題のHDDのベンダーIDとプロダクトID (xxxx:yyyy
の形式) を特定する。例: Bus 002 Device 003: ID 152d:0578 JMicron Technology Corp.
-
UASを無効化する設定ファイルを作成
/etc/modprobe.d/
に設定ファイルを作成する。ファイル名は任意(例:blacklist-uas.conf
)。sudo nano /etc/modprobe.d/blacklist-uas.conf
-
設定を記述 ファイル内に下記を記述し保存する。
xxxx:yyyy
の部分はステップ1で確認したIDに書き換える。末尾の:u
がUASを無効にするフラグ。options usb-storage quirks=xxxx:yyyy:u
-
設定を反映して再起動 initramfsを更新してから再起動する。Bash
sudo update-initramfs -u sudo reboot
筆者の環境では、上記対応により外付けHDDのマウントが外れることはなくなった。