Viele USB 3.0 Festplatten oder SSDs werden inzwischen als USB Attached Storage (UAS) im System eingebunden. Dies führt jedoch bei manchen Geräten zu Problemen, wobei beispielsweise die Verbindung zum USB-Gerät mittendrin verloren geht und auch nicht automatisch wiederhergestellt wird. Manche Geräte werden im UAS-Modus auch erst gar nicht richtig erkannt.
In diesem Beitrag beschreibe ich eine mögliche Lösung das Problem.
Was ist UAS?
USB Attached Storage ist ein Kommunikationsprotokoll zur Anbindung von Massenspeichern über USB und wurde mit USB 3.0 eingeführt.
Es soll besonders schnelle Datenübertragungen zwischen dem Speichermedium (z.B. einer SSD) und dem jeweiligen System ermöglichen.
Im UAS-Modus werden u.a. die Steuerkommandos der SATA oder SCSI-Schnittstellen der Geräte direkt über die USB-Schnittstelle geleitet, was eine bessere/direktere Kommunikation mit dem Speichermedium ermöglicht.
Fehlerbild
Wie oben bereits erwähnt, kommt es im UAS-Modus jedoch auch öfters zu Problemen und Fehlern auf dem USB-System. Dies hat Verbindungsabbrüche des jeweiligen Gerätes, oder sogar Restes des gesamten USB zur Folge.
In meinem Fall handelt es sich um eine externe WD My Passport SSD mit 4 Tb Speicherplatz.
Die SSD ist als Speicher für TV-Aufnahmen in einem Proxmox-System eingebunden und mit einer zfs-Partition formatiert.
Besonders bei intensiven gleichzeitigen Lese- und Schreibzugriffen hatte ich immer mal wieder scheinbar zufällige Verbindungsabbrüche dieser SSD. Dabei verschwand die SSD komplett aus dem System und ließ sich erst durch einen Neustart des kompletten Systems wiederbeleben.
Im Log wurden dabei die folgenden Zeilen aufgezeichnet:
1 | 10:45:50 pve kernel: usb 3-2: USB disconnect, device number 2 |
Prüfen, ob UAS verwendet wird
Zuerst einmal sollte geprüft werden, ob das Gerät überhaupt im UAS-Modus angesprochen wird.
Dies erfolgt ganz einfach mittels lsusb -t
, was uns alle angeschlossen USB-Geräte auflistet.
1 | lsusb -t |
Steht hier für das Gerät Driver=uas
, so wird aktuell der UAS-Modus genutzt.
Bei Driver=usb-storage
hingegen ist UAS nicht aktiv.
Deaktivieren des UAS-Modus
Zur Lösung des Problems deaktivieren wir den UAS-Modus für dieses Gerät, wodurch es im herkömmlichen Bulk-Only Transport (BOT) Modus angesteuert wird, was in der Regel deutlich zuverlässiger funktioniert.
Hinweis
Wie oben bereits erwähnt, soll der UAS-Modus teils deutlich schnellere Übertragungsgeschwindigkeiten ermöglichen als der BOT-Modus. Ich habe in meinem Fall in beiden Modi einen Test der Schreib-/Lesegeschwindigkeit meiner SSD gemacht und konnte dabei keinen nennenswerten Unterschied feststellen.
Ermitteln der USB Geräte-ID
Zunächst benötigen wir die genaue Geräte-ID des Speichergerätes. Diese ermitteln wir per lsusb
, dieses Mal ohne Parameter.
1 | lsusb |
In diesem Beispiel hat die SSD also die ID 1058:264f
.
USB-Storage Optionen anpassen
Um für dieses Gerät nun den UAS-Modus zu deaktivieren, muss dem Kernel-Modul usb-storage
ein sogenannter quirk
als Option mitgegeben werden.
Hierfür erstellen wir die Datei /etc/modprobe.d/disable-uas.conf
mit folgendem Inhalt:
1 | options usb-storage quirks=1058:264f:u |
Hierbei ist 1058:264f
die oben ermittelte Geräte-ID und u
das Flag, welches dem Kernel-Modul sagt UAS nicht zu verwenden.
Anschließend müssen noch das initramfs
neu generieren, damit die gesetzte Option beim Booten des Systems aktiv wird:
1 | sudo update-initramfs -u |
Abschließend noch ein Neustart des Systems:
1 | sudo reboot |
Nun sollte UAS deaktiviert sein, was wie oben unter Prüfen, ob UAS verwendet wird beschrieben, überprüft werden kann.
Fazit
Mit dieser kleinen Änderung läuft meine SSD nun bereits einige Zeit äußerst zuverlässig und ohne Aussetzer.
Nachteile konnte ich bislang keine feststellen. Sogar die Übertagungsgeschwindigkeit ist unverändert.