Table des matières

, , , ,

Odroid XU4: anomalies sur les disques externes

Depuis sa mise en service, le NAS sur Odroid XU4Q ne se comporte pas normalement:

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: <none>

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