【誤報】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 blockrclone: 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のマウントが外れることはなくなった。