リモートコンピュータをARM SBCのUSBハードドライブにバックアップするためにrsyncを実行しています。この問題は、uas_eh_device_reset_handler
次の理由で高いI / O負荷を引き起こすUAS + USB 3.0 + rsyncに関連していると思います/var/log/messages
。
sd 0:0:0:0: [sda] tag#1 data cmplt err -32 uas-tag 2 inflight:
sd 0:0:0:0: [sda] tag#1 CDB: opcode=0x28 28 00 38 80 0a 68 00 00 a0 00
sd 0:0:0:0: [sda] tag#0 data cmplt err -32 uas-tag 1 inflight: CMD
sd 0:0:0:0: [sda] tag#0 CDB: opcode=0x2a 2a 00 57 50 28 78 00 03 00 00
sd 0:0:0:0: [sda] tag#1 uas_eh_abort_handler 0 uas-tag 2 inflight: CMD
sd 0:0:0:0: [sda] tag#1 CDB: opcode=0x28 28 00 38 80 0a 68 00 00 a0 00
sd 0:0:0:0: [sda] tag#2 uas_eh_abort_handler 0 uas-tag 3 inflight: CMD
sd 0:0:0:0: [sda] tag#2 CDB: opcode=0x2a 2a 00 19 47 7f 20 00 00 90 00
sd 0:0:0:0: [sda] tag#0 uas_eh_abort_handler 0 uas-tag 1 inflight: CMD
sd 0:0:0:0: [sda] tag#0 CDB: opcode=0x2a 2a 00 57 50 28 78 00 03 00 00
scsi host0: uas_eh_device_reset_handler start
usb 5-1: reset high-speed USB device number 2 using ehci-platform
scsi host0: uas_eh_device_reset_handler success
sd 0:0:0:0: [sda] tag#0 UNKNOWN(0x2003) Result: hostbyte=0x00 driverbyte=0x08
sd 0:0:0:0: [sda] tag#0 Sense Key : 0x2 [current]
sd 0:0:0:0: [sda] tag#0 ASC=0x3a ASCQ=0x0
sd 0:0:0:0: [sda] tag#0 CDB: opcode=0x2a 2a 00 57 50 28 78 00 03 00 00
sd 0:0:0:0: [sda] tag#1 UNKNOWN(0x2003) Result: hostbyte=0x00 driverbyte=0x08
sd 0:0:0:0: [sda] tag#1 Sense Key : 0x2 [current]
sd 0:0:0:0: [sda] tag#1 ASC=0x3a ASCQ=0x0
sd 0:0:0:0: [sda] tag#1 CDB: opcode=0x2a 2a 00 19 47 7f 20 00 00 90 00
EXT4-fs warning (device sda1): ext4_end_bio:323: I/O error 10 writing to inode 13001563 (offset 0 size 73728 starting block 53014518)
このSBCにはUSB 3ポートはありませんが、まだUASを使用してハードドライブを取り付けます。 ~によるとこの、一部のHDケースチップでUASが壊れています。。これ提供される解決策はUASを無効にすることです。、しかし、:
1-ドローンを完全にブラックリストに載せると私が得るものblacklist uas
:/etc/modprobe.d/blacklist-uas.conf
lsusb -t
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=, 480M
調べるClass=Mass Storage, Driver=, 480M
=>システムにドライブを処理する他の方法がロードされていないようです。
2- 特定のUSBデバイスに対してUASを無効にする場合、投稿でおすすめのとおり、まだドローンをロード中です。:
echo options usb-storage quirks=174c:55aa:u | tee /etc/modprobe.d/blacklist-uas.conf
update-initramfs -u
reboot
(...)
dmesg | grep sda
[ 2.488105] sd 0:0:0:0: [sda] 2930277168 512-byte logical blocks: (1.50 TB/1.36 TiB)
[ 2.488584] sd 0:0:0:0: [sda] Write Protect is off
[ 2.488592] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[ 2.489335] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 2.539288] sda: sda1
[ 2.543875] sd 0:0:0:0: [sda] Attached SCSI disk
[ 6.898109] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: errors=remount-ro,data=ordered
lsusb | grep ASMedia
Bus 005 Device 002: ID 174c:55aa ASMedia Technology Inc. ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge
lsusb -t
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=uas, 480M
私は何が間違っていましたか? UASを無効にしてシステムにHDを使用させ続ける別の方法はありますか?options usb-storage quirks=174c:55aa:u
UASが無効になっていないのはなぜですか?
ありがとうございます。
いくつかのメモ:
4.14.18-sunxi64
オペレーティングシステム:armbianのDebian GNU / Linux 9.4(拡張)カーネル- シングルボードコンピュータ:NanoPi NEO2
ベストアンサー1
@ABの貴重な助けを借りて、この問題をうまく解決しました。彼が言ったように、私のカーネル(おそらくすべてのarmbian SBCカーネル)はモジュールとしてロードされずにusb_storage
組み込まれています。
この場合、次のように表示される起動オプションを変更する必要があります/proc/cmdline
。
root=UUID=b58.... rootfstype=ext4 console=tty1 console=ttyS0,115200 panic=10 consoleblank=0 loglevel=1 ubootpart=096d26e5-01 usb-storage.quirks=0x2537:0x1066:u,0x2537:0x1068:u cgroup_enable=memory swapaccount=1
いよいよusb-storage.quirks=0x2537:0x1066:u,0x2537:0x1068:u
設定が完了しました。このファイルを直接編集することはできません。アンビアでこのオプションはファイルに保存されます/boot/armbianEnv.txt
。
verbosity=1
console=both
overlay_prefix=sun50i-h5
overlays=usbhost1 usbhost2
rootdev=UUID=b58048d3-ca7b-4ea6-9812-95d403fddadd
rootfstype=ext4
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
だから最後の行にデバイスを追加して、,174c:55aa:u
次のようにしました。
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u,174c:55aa:u
再起動しupdate-initramfs -u
て再起動した場合に備えて、USB HDはusb-store
代わりに次のものを使用しますuas
。
lsusb -t
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M
ここでわかるように、uas
デバイスは正しくブラックリストに追加されました。
dmesg | grep "usb 5-1"
[ 2.308569] usb 5-1: new high-speed USB device number 2 using ehci-platform
[ 2.467087] usb 5-1: New USB device found, idVendor=174c, idProduct=55aa
[ 2.467106] usb 5-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[ 2.467117] usb 5-1: Product: ASM1153E
[ 2.467127] usb 5-1: Manufacturer: Inateck
[ 2.467137] usb 5-1: SerialNumber: 12345678910E
[ 2.468297] usb 5-1: UAS is blacklisted for this device, using usb-storage instead