{{tag>sysadmin linux drivers disque usb}}
====== Odroid XU4: anomalies sur les disques externes ======
Depuis sa mise en service, le NAS sur Odroid XU4Q ne se comporte pas normalement:
* Mauvaises performances: accès disque lents (~10Mo/s)
* Les journaux indiquent des erreurs d'entrées/sorties
Jan 28 15:58:23 odroid kernel: print_req_error: I/O error, dev sda, sector 4337186864
Jan 28 15:58:23 odroid kernel: md/raid1:md0: sda1: rescheduling sector 4336920624
Jan 28 15:58:23 odroid kernel: md/raid1:md0: redirecting sector 4336920624 to other mirror: sdb1
Jan 28 15:58:23 odroid kernel: md/raid1:md0: sda1: rescheduling sector 4336920800
Jan 28 15:58:23 odroid kernel: md/raid1:md0: redirecting sector 4336920800 to other mirror: sdb1
Jan 28 15:58:23 odroid kernel: md/raid1:md0: sda1: rescheduling sector 4336986424
Jan 28 15:58:23 odroid kernel: sd 0:0:0:0: [sda] tag#0 UNKNOWN(0x2003) Result: hostbyte=0x01 driverbyte=0x00
Jan 28 15:58:23 odroid kernel: sd 0:0:0:0: [sda] tag#0 CDB: opcode=0x88 88 00 00 00 00 01 02 84 38 70 00 00 00 70 00 00
Jan 28 15:58:23 odroid kernel: print_req_error: I/O error, dev sda, sector 4337186928
Jan 28 15:58:23 odroid kernel: md/raid1:md0: redirecting sector 4336986424 to other mirror: sdb1
Jan 28 15:58:23 odroid kernel: md/raid1:md0: sda1: rescheduling sector 4336920688
Jan 28 15:58:23 odroid kernel: sd 0:0:0:0: [sda] Synchronize Cache(10) failed: Result: hostbyte=0x01 driverbyte=0x00
Jan 28 15:58:23 odroid kernel: md/raid1:md0: redirecting sector 4336920688 to other mirror: sdb1
Jan 28 15:58:24 odroid kernel: blk_partition_remap: fail for partition 1
Cependant les tests SMART sur le disque n'ont pas rapporté d'erreurs:
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 102 -
# 2 Short offline Completed without error 00% 51 -
pas d'erreurs voir désactivation du pilote **UAS**
===== RAID =====
Après redémarrage le volume RAID n'est pas correctement reconstruit, il est dans un état dégradé. Un des deux disques n'est pas utilisé. les logs indiquent:
Jun 08 18:29:09 odroid kernel: md: kicking non-fresh sda1 from array!
Jun 08 18:29:09 odroid kernel: md/raid1:md0: active with 1 out of 2 mirrors
Jun 08 18:29:09 odroid kernel: md0: detected capacity change from 0 to 4000649838592
cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb1[1]
3906884608 blocks super 1.2 [2/1] [_U]
bitmap: 3/30 pages [12KB], 65536KB chunk
Le superbloc est pourtant bien reconnu:
mdadm --examine /dev/sda1
Les informations détaillées du cluster md0
mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu May 21 11:23:47 2020
Raid Level : raid1
Array Size : 3906884608 (3725.90 GiB 4000.65 GB)
Used Dev Size : 3906884608 (3725.90 GiB 4000.65 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Mon Jun 8 18:29:11 2020
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Consistency Policy : bitmap
Name : odroid:0 (local to host odroid)
UUID : 347185f5:3d61e963:83e024b8:a7ef05b0
Events : 29975
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 17 1 active sync /dev/sdb1
Ici es dernières lignes indiquent que l'un des périphériques a été retirer (removed).
La lecture du superbloc sur le
Cela peut se produire après une défaut d'alimentation. On peut re-introduire le disque:
mdadm /dev/md0 --re-add /dev/sda1
Après validation, le disque RAID est à nouvea
cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
3906884608 blocks super 1.2 [2/2] [UU]
bitmap: 3/30 pages [12KB], 65536KB chunk
unused devices:
Désactiver le groupe de volume
vgchange --activate n vgdata
Arrêter le volume RAID:
mdadm --stop /dev/md0
Les pilotes UAS peuvent mal réagir avec certaines puces USB3.
vérifier s'il sont chargés
lsmod | grep uas
uas 20480 0
usb_storage 49152 1 uas
scsi_mod 135168 4 sd_mod,usb_storage,uas,sg
C'est le cas ici, on determine l'ID des disques pour blacklister le pilote pour ces périphériques:
lsusb
Bus 006 Device 002: ID 0bda:8153 Realtek Semiconductor Corp.
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 004: ID 0480:b207 Toshiba America Inc
Bus 004 Device 005: ID 0480:b207 Toshiba America Inc
Bus 004 Device 002: ID 05e3:0616 Genesys Logic, Inc. hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Ici les disques usb Toshiba ont pour ID **0480:b207**.
echo "options usb-storage quirks=0480:b207:u" > /etc/modprobe.d/blacklist_uas_0480.conf
update-initramfs -u
reboot
Après redémarrage les logs doivent indiquer que le pilote UAS est blacklisté pour les périphériques
journalctl -k | grep -i quirks
Jan 28 15:58:19 odroid kernel: usb-storage 4-1.1:1.0: Quirks match for vid 0480 pid b207: 12000000
Dernières modifications:
options usb-storage quirks=0480:b207:tj
===== Références =====
* https://unix.stackexchange.com/questions/239782/connection-problem-with-usb3-external-storage-on-linux-uas-driver-problem
* https://github.com/hardkernel/linux/commit/c18781b1ef56a800572e8342488504e4e818013a
* https://forum.odroid.com/viewtopic.php?t=17349