В июне прошлого года мы проверяли Ryzen Embedded SBC с Windows 10, и внешний жесткий диск, который мы обычно используем для проверки, имел всевозможные проблемы, включая очень медленную скорость и/или остановку передачи, но без сообщений об ошибках.
На прошлой неделе мы попытались еще раз, установить Ubuntu 20.04 на тот же Ryzen Embedded SBC, и с внешним жестким диском снова возникли проблемы, поэтому просто предположим, что есть некоторые проблемы несовместимости оборудования – SBC и диска, и возможно будет исправить ошибки или найти альтернативное решение.
Иногда это действительно проблема оборудования, когда на диске слишком много поврежденных блоков, и если это так, и диск все еще находится на гарантии, вы можете вернуть его и получить новый (или отремонтированный) диск бесплатно. Но этот диск работал с нашим ноутбуком со скоростью около 100 МБ/с.
У нас закончились идеи, и тут numero53 не прокомментировал, что у него похожие проблемы со многими адаптерами USB-SATA, и хитрость заключалась в том, что отключение UAS (USB Attached SCSI), могло бы улучшить производительность. О аналогичной проблеме сообщили и пользователи Raspberry Pi и ODROID. Обычно сообщения об ошибках выглядят следующим образом:
1 2 3 4 5 6 |
Jun 16 04:59:18 feynman kernel: sd 1:0:0:0: [sdb] tag#29 uas_eh_abort_handler 0 uas-tag 30 inflight: CMD IN Jun 16 04:59:18 feynman kernel: sd 1:0:0:0: [sdb] tag#29 CDB: opcode=0x88 88 00 00 00 00 01 5c 00 13 f8 00 00 00 08 00 00 Jun 16 04:59:18 feynman kernel: sd 1:0:0:0: [sdb] tag#28 uas_eh_abort_handler 0 uas-tag 29 inflight: CMD IN Jun 16 04:59:18 feynman kernel: sd 1:0:0:0: [sdb] tag#28 CDB: opcode=0x88 88 00 00 00 00 01 5c 00 13 f0 00 00 00 08 00 00 Jun 16 04:59:18 feynman kernel: sd 1:0:0:0: [sdb] tag#27 uas_eh_abort_handler 0 uas-tag 28 inflight: CMD IN Jun 16 04:59:18 feynman kernel: sd 1:0:0:0: [sdb] tag#27 CDB: opcode=0x88 88 00 00 00 00 01 5c 00 13 e8 00 00 00 08 00 00 |
У нас не было таких сообщений, но мы все равно пытались отключить UAS на этом конкретном диске. у нас не было уверенности в том, что это сработает. Во-первых, нам нужно найти USB VID / PID для адаптера:
1 2 |
lsusb | grep Seagate Bus 002 Device 004: ID 0bc2:2312 Seagate RSS LLC |
Теперь мы можем создать файл для внесения диска/адаптера в черный список, чтобы предотвратить загрузку модуля UAS для этого диска:
1 2 |
echo options usb-storage quirks=0bc2:2312:u | sudo tee /etc/modprobe.d/blacklist_uas_0bc2.conf sudo update-initramfs -u |
После перезагрузки мы видим, что диск попал в черный список:
1 2 3 4 |
dmesg | grep -i uas [ 0.425573] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 1.975254] usbcore: registered new interface driver uas [ 2.271540] usb 2-2.4: UAS is blacklisted for this device, using usb-storage instead |
Посмотрим, решило ли это нашу проблему, запустив тест iozone:
1 2 3 4 5 6 7 8 |
iozone -e -I -a -s 1000M -r 1024k -r 16384k -i 0 -i 2 random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 1024000 1024 90423 91456 2724687 78287 1024000 16384 91281 98600 1916998 92524 iozone test complete. |
Нам удалось записать файл размером 1 ГБ со скоростью около 90+ МБ/с. Вполне нормально на этом диске. Проблема исправлена! Показатели чтения ~ 2 ГБ/с явно зависят от кеша …
Очевидно, это довольно распространенная проблема с USB-накопителями Seagate (VID: 0x0bc2) и Western Digital (VID: 0x1058), и Томас Кайзер несколько лет назад просто внес в черный список все такие накопители по умолчанию.
Итак, мы нашли обходной путь в Linux / Ubuntu. Но как насчет Windows 10, раз уж у нас такая же проблема. Мы не могли найти очевидного решения. В папке %WinDir%\System32\drivers
есть файл uaspstor.sys, который является драйвером USB Attached SCSI (UAS) для Windows 10. Но он не используется непосредственно нашим накопителем.
Мы полагаем, что можно попробовать переместить/переименовать файлы драйверов, пока проблема не будет решена, но это не идеальное решение, поскольку другие диски, которые действительно правильно работают с UAS, также будут затронуты. Мы поискали способы занести в черный список UAS для определенных драйверов в Windows 10, как мы сделали в Linux, но, похоже, никакого решения нет. Если вы знаете как решить проблему, делитесь.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.