TL;DR Обходной путь (за счет скорости)
Я обнаружил, что если подключить USB 3.2 от корпуса к USB 2.0 хабу или USB 3.0 хабу, подключенному к ноде Proxmox, всё работает как ожидалось. Я успешно могу стирать диски и создавать/удалять ZFS пулы за секунды вместо того, чтобы ждать минуты, прежде чем всё в конечном итоге завершится ошибкой. Для моих задач скорости USB 3.0 вполне достаточны, пока не будет лучше поддерживаться USB 3.2, поэтому я пока что так и делаю и отредактирую этот пост, если столкнусь с проблемами.
Предисловие
1) Это не в первую очередь запрос помощи, но если у вас есть волшебное решение, поделитесь им.
2) По состоянию на 14 августа 2024 года эта проблема не решена (но есть возможное обходное решение).
3) Если это хоть кому-нибудь поможет, я почувствую легкий ветерок облегчения, который прошепчет мне, что последние два дня моей жизни не были полностью потрачены впустую.
Краткое описание
Я столкнулся с проблемами при работе с корпусом Sabrent USB 3.2, и публикую свои усилия, чтобы, возможно, это поможет более умному, чем я, человеку решить проблемы в будущем. Я (пока что) не верю, что "USB просто сломан для внешних корпусов навсегда", но я принимаю, что он сломан в моём конкретном случае. Этот пост - попытка быть небольшой частью будущего решения и, надеюсь, сэкономить время другим людям, которые сталкиваются с подобными проблемами.
Корпус
Это 5-байковый корпус Sabrent без лотка с фронтальной загрузкой с "USB 3.2" и чипсетом "ASMedia Technology Inc. ASM235CM", который поддерживает UAS.
Опыт
1) При попытке стереть диск в корпусе он часто либо пытается очень долго, либо я получаю следующее в GUI Proxmox Task viewer: Например: Код: стирание блочного устройства /dev/sda
dd: fdatasync failed for '/dev/sda': Input/output error
dd: fsync failed for '/dev/sda': No such device
200+0 records in
200+0 records out
TASK ERROR: error wiping '/dev/sda': 209715200 bytes (210 MB, 200 MiB) copied, 154.918 s, 1.4 MB/s
2) Иногда имена дисков и серийные номера отображались корректно, иногда отображалась информация о чипсете вместо дисков.
4) При попытке создать ZFS пул я ждал бесконечно, и ничего не происходило, пока не возникала "коммуникационная ошибка" в области "Диски" GUI Proxmox.
5) Общая нестабильность и пропадающие диски.
Более глубокий анализ, поиск ошибок
Запустив эту команду в оболочке ноды Proxmox для повышения детализации: Код: echo 'module usbcore +p' > /sys/kernel/debug/dynamic_debug/control, я использовал GUI Proxmox для "стирания" диска в корпусе. Затем я использовал эту команду в оболочке, чтобы посмотреть, что я могу увидеть. Код: dmesg | grep -i usb
Я получил длинный список таких строк: Код: [ 822.432562] usb 2-1.3.1: reset SuperSpeed Plus Gen 2x1 USB device number 7 using xhci_hcd
Одну из этих строк: Код: [ 822.884480] usb usb2-port1: link state change
Несколько строк: Код: [ 822.906286] usb usb2-port1: Wait for inactive link disconnect detect
Одну из этих строк: Код: [ 822.994324] usb usb2-port1: do warm reset, port only
Несколько строк: Код: [ 823.046330] usb usb2-port1: not warm reset yet, waiting 50ms
Много строк: Код: [ 823.110990] usb 2-1.3-port1: cannot reset (err = -71)
[ 823.110993] usb 2-1.3-port1: not enabled, trying reset again...
И наконец, принятие судьбы. Код: [ 823.358308] usb usb2-port1: status 02c0, change 0041, 10.0 Gb/s
[ 823.358314] usb 2-1: USB disconnect, device number 5
[ 823.358316] usb 2-1.3: USB disconnect, device number 6
[ 823.358317] usb 2-1.3.1: USB disconnect, device number 7
[ 823.358318] usb 2-1.3.1: unregistering device
[ 823.358319] usb 2-1.3.1: unregistering interface 2-1.3.1:1.0
[ 823.443358] usb 2-1.3.1: usb_disable_device nuking all URBs
[ 823.443770] usb 2-1.3: unregistering device
[ 823.443772] usb 2-1.3: unregistering interface 2-1.3:1.0
[ 823.443940] usb 2-1.3: usb_disable_device nuking all URBs
[ 823.444319] usb 2-1: unregistering device
[ 823.444321] usb 2-1: unregistering interface 2-1:1.0
[ 823.444498] usb 2-1: usb_disable_device nuking all URBs
Полезные команды оболочки
Проверить драйверы: Код: lsmod | grep usb
Искать ошибки USB: Код: dmesg | grep -i usb
Определить диск: Код: lsblk
Найти vendorID и Product ID для чипсета: Код: lsusb
Попытки
1) Разные диски: Я попробовал 6 разных SATA дисков, чтобы сузить проблему до аппаратной проблемы корпуса/драйвера, а не проблемы с неисправным диском.
2) Разные кабели и разные USB порты: Я попробовал кабель USB-C to USB-C и кабель USB-C to USB-A, используя разные USB порты на компьютере. Никакое изменение не помогло.
4) Отключение UAS с помощью quirk: Я нашёл vendorID и Product ID для чипсета (в моём случае, "ASMedia Technology Inc. ASM235CM") с помощью этой команды: Код: lsusb
Отключил UAS для устройства (в моём случае, vendorID : productID был "174c:55aa") с помощью этой команды: Код: echo "options usb-storage quirks=vendorID:productID:u" | sudo tee /etc/modprobe.d/uas-blacklist.conf
Обновил initramfs: Код: sudo update-initramfs -u
Перезагрузил ноду.
Вывод
1) Мои проблемы не решены.
2) Проблемы, с которыми я сталкиваюсь с этим корпусом, не решены. Я буду продолжать ходить в терапии для первой, но было бы здорово, если бы какой-нибудь будущий умный человек решил проблемы USB для всех навсегда и тем самым решил мои проблемы с этим корпусом.
Я обнаружил, что если подключить USB 3.2 от корпуса к USB 2.0 хабу или USB 3.0 хабу, подключенному к ноде Proxmox, всё работает как ожидалось. Я успешно могу стирать диски и создавать/удалять ZFS пулы за секунды вместо того, чтобы ждать минуты, прежде чем всё в конечном итоге завершится ошибкой. Для моих задач скорости USB 3.0 вполне достаточны, пока не будет лучше поддерживаться USB 3.2, поэтому я пока что так и делаю и отредактирую этот пост, если столкнусь с проблемами.
Предисловие
1) Это не в первую очередь запрос помощи, но если у вас есть волшебное решение, поделитесь им.
2) По состоянию на 14 августа 2024 года эта проблема не решена (но есть возможное обходное решение).
3) Если это хоть кому-нибудь поможет, я почувствую легкий ветерок облегчения, который прошепчет мне, что последние два дня моей жизни не были полностью потрачены впустую.
Краткое описание
Я столкнулся с проблемами при работе с корпусом Sabrent USB 3.2, и публикую свои усилия, чтобы, возможно, это поможет более умному, чем я, человеку решить проблемы в будущем. Я (пока что) не верю, что "USB просто сломан для внешних корпусов навсегда", но я принимаю, что он сломан в моём конкретном случае. Этот пост - попытка быть небольшой частью будущего решения и, надеюсь, сэкономить время другим людям, которые сталкиваются с подобными проблемами.
Корпус
Это 5-байковый корпус Sabrent без лотка с фронтальной загрузкой с "USB 3.2" и чипсетом "ASMedia Technology Inc. ASM235CM", который поддерживает UAS.
Опыт
1) При попытке стереть диск в корпусе он часто либо пытается очень долго, либо я получаю следующее в GUI Proxmox Task viewer: Например: Код: стирание блочного устройства /dev/sda
dd: fdatasync failed for '/dev/sda': Input/output error
dd: fsync failed for '/dev/sda': No such device
200+0 records in
200+0 records out
TASK ERROR: error wiping '/dev/sda': 209715200 bytes (210 MB, 200 MiB) copied, 154.918 s, 1.4 MB/s
2) Иногда имена дисков и серийные номера отображались корректно, иногда отображалась информация о чипсете вместо дисков.
4) При попытке создать ZFS пул я ждал бесконечно, и ничего не происходило, пока не возникала "коммуникационная ошибка" в области "Диски" GUI Proxmox.
5) Общая нестабильность и пропадающие диски.
Более глубокий анализ, поиск ошибок
Запустив эту команду в оболочке ноды Proxmox для повышения детализации: Код: echo 'module usbcore +p' > /sys/kernel/debug/dynamic_debug/control, я использовал GUI Proxmox для "стирания" диска в корпусе. Затем я использовал эту команду в оболочке, чтобы посмотреть, что я могу увидеть. Код: dmesg | grep -i usb
Я получил длинный список таких строк: Код: [ 822.432562] usb 2-1.3.1: reset SuperSpeed Plus Gen 2x1 USB device number 7 using xhci_hcd
Одну из этих строк: Код: [ 822.884480] usb usb2-port1: link state change
Несколько строк: Код: [ 822.906286] usb usb2-port1: Wait for inactive link disconnect detect
Одну из этих строк: Код: [ 822.994324] usb usb2-port1: do warm reset, port only
Несколько строк: Код: [ 823.046330] usb usb2-port1: not warm reset yet, waiting 50ms
Много строк: Код: [ 823.110990] usb 2-1.3-port1: cannot reset (err = -71)
[ 823.110993] usb 2-1.3-port1: not enabled, trying reset again...
И наконец, принятие судьбы. Код: [ 823.358308] usb usb2-port1: status 02c0, change 0041, 10.0 Gb/s
[ 823.358314] usb 2-1: USB disconnect, device number 5
[ 823.358316] usb 2-1.3: USB disconnect, device number 6
[ 823.358317] usb 2-1.3.1: USB disconnect, device number 7
[ 823.358318] usb 2-1.3.1: unregistering device
[ 823.358319] usb 2-1.3.1: unregistering interface 2-1.3.1:1.0
[ 823.443358] usb 2-1.3.1: usb_disable_device nuking all URBs
[ 823.443770] usb 2-1.3: unregistering device
[ 823.443772] usb 2-1.3: unregistering interface 2-1.3:1.0
[ 823.443940] usb 2-1.3: usb_disable_device nuking all URBs
[ 823.444319] usb 2-1: unregistering device
[ 823.444321] usb 2-1: unregistering interface 2-1:1.0
[ 823.444498] usb 2-1: usb_disable_device nuking all URBs
Полезные команды оболочки
Проверить драйверы: Код: lsmod | grep usb
Искать ошибки USB: Код: dmesg | grep -i usb
Определить диск: Код: lsblk
Найти vendorID и Product ID для чипсета: Код: lsusb
Попытки
1) Разные диски: Я попробовал 6 разных SATA дисков, чтобы сузить проблему до аппаратной проблемы корпуса/драйвера, а не проблемы с неисправным диском.
2) Разные кабели и разные USB порты: Я попробовал кабель USB-C to USB-C и кабель USB-C to USB-A, используя разные USB порты на компьютере. Никакое изменение не помогло.
4) Отключение UAS с помощью quirk: Я нашёл vendorID и Product ID для чипсета (в моём случае, "ASMedia Technology Inc. ASM235CM") с помощью этой команды: Код: lsusb
Отключил UAS для устройства (в моём случае, vendorID : productID был "174c:55aa") с помощью этой команды: Код: echo "options usb-storage quirks=vendorID:productID:u" | sudo tee /etc/modprobe.d/uas-blacklist.conf
Обновил initramfs: Код: sudo update-initramfs -u
Перезагрузил ноду.
Вывод
1) Мои проблемы не решены.
2) Проблемы, с которыми я сталкиваюсь с этим корпусом, не решены. Я буду продолжать ходить в терапии для первой, но было бы здорово, если бы какой-нибудь будущий умный человек решил проблемы USB для всех навсегда и тем самым решил мои проблемы с этим корпусом.
