[How-To] [14.04] [16.04] Błędy odczytu/zapisu zewnętrznego dysku twardego podłączonego przez USB

Awatar użytkownika
mario_7
Administrator
Administrator
Posty: 8594
Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 20.04
Środowisko graficzne: GNOME
Architektura: x86_64

[How-To] [14.04] [16.04] Błędy odczytu/zapisu zewnętrznego dysku twardego podłączonego przez USB

Post autor: mario_7 »

Jeśli po zamontowaniu zewnętrznego dysku twardego przez USB (np. takiego zwykłego w zewnętrznej obudowie) występują problemy z montowaniem, zapisem lub odczytem danych z partycji ext3 lub ext4, to najprawdopodobniej jest to bug w kernelu.

Przykładowe komunikaty błedów w dmesg:
dmesg pisze:[ 1680.340585] INFO: task pool:3387 blocked for more than 120 seconds.
[ 1680.340588] Not tainted 4.4.0-18-generic #34-Ubuntu
[ 1680.340589] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 1680.340590] pool D ffff8801e2c0bac8 0 3387 1 0x00000000
[ 1680.340593] ffff8801e2c0bac8 0000000000000286 ffff880226273700 ffff880220405280
[ 1680.340595] ffff8801e2c0c000 ffff88021cae9824 ffff880220405280 00000000ffffffff
[ 1680.340596] ffff88021cae9828 ffff8801e2c0bae0 ffffffff818202d5 ffff88021cae9820
[ 1680.340598] Call Trace:
[ 1680.340603] [<ffffffff818202d5>] schedule+0x35/0x80
[ 1680.340605] [<ffffffff8182057e>] schedule_preempt_disabled+0xe/0x10
[ 1680.340607] [<ffffffff818221b9>] __mutex_lock_slowpath+0xb9/0x130
[ 1680.340610] [<ffffffff8154f0ff>] ? kobj_lookup+0x10f/0x160
[ 1680.340611] [<ffffffff8182224f>] mutex_lock+0x1f/0x30
[ 1680.340614] [<ffffffff813cb571>] disk_block_events+0x31/0x80
[ 1680.340618] [<ffffffff81248767>] __blkdev_get+0x67/0x460
[ 1680.340620] [<ffffffff81248fcd>] blkdev_get+0x12d/0x340
[ 1680.340621] [<ffffffff812492b2>] blkdev_open+0x82/0xd0
[ 1680.340624] [<ffffffff8120a25f>] do_dentry_open+0x1ff/0x310
[ 1680.340625] [<ffffffff81249230>] ? blkdev_get_by_dev+0x50/0x50
[ 1680.340627] [<ffffffff8120b406>] vfs_open+0x56/0x60
[ 1680.340630] [<ffffffff8121a9b7>] path_openat+0x1b7/0x1360
[ 1680.340632] [<ffffffff810aae69>] ? ttwu_do_wakeup+0x19/0xe0
[ 1680.340634] [<ffffffff8121cd51>] do_filp_open+0x91/0x100
[ 1680.340637] [<ffffffff8122a5d6>] ? __alloc_fd+0x46/0x190
[ 1680.340639] [<ffffffff8120b7b8>] do_sys_open+0x138/0x2a0
[ 1680.340640] [<ffffffff8120b93e>] SyS_open+0x1e/0x20
[ 1680.340642] [<ffffffff818243b2>] entry_SYSCALL_64_fastpath+0x16/0x71
[ 1699.996665] sd 6:0:0:0: timing out command, waited 360s
[ 1699.996674] blk_update_request: I/O error, dev sdc, sector 1019480064
[ 1699.996682] Buffer I/O error on dev sdc3, logical block 114327552, lost sync page write
[ 1699.996690] blk_update_request: I/O error, dev sdc, sector 104859648
[ 1699.996703] Buffer I/O error on dev sdc3, logical block 0, lost sync page write
[ 1699.996710] JBD2: Error -5 detected when updating journal superblock for sdc3-8.
[ 1699.996712] EXT4-fs error (device sdc3): ext4_journal_check_start:56: Detected aborted journal
[ 1699.996715] EXT4-fs (sdc3): Remounting filesystem read-only
[ 1699.996717] EXT4-fs (sdc3): previous I/O error to superblock detected
[ 2060.042400] sd 6:0:0:0: timing out command, waited 360s
[ 2060.042406] blk_update_request: I/O error, dev sdc, sector 104859648
[ 2060.042409] Buffer I/O error on dev sdc3, logical block 0, lost sync page write
[ 2060.042430] EXT4-fs (sdc3): I/O error while writing superblock
[ 2060.042432] EXT4-fs error (device sdc3): ext4_journal_check_start:56: Detected aborted journal
[ 2060.042441] EXT4-fs error (device sdc3) in ext4_do_update_inode:4583: Journal has aborted
[ 2086.773435] usb 4-2: USB disconnect, device number 2
[ 2086.777659] blk_update_request: I/O error, dev sdc, sector 104859648
[ 2086.777662] Buffer I/O error on dev sdc3, logical block 0, lost sync page write
[ 2086.777673] EXT4-fs error (device sdc3) in ext4_evict_inode:241: Journal has aborted
[ 2086.777676] EXT4-fs (sdc3): previous I/O error to superblock detected
[ 2086.777682] blk_update_request: I/O error, dev sdc, sector 0
[ 2086.777691] sd 6:0:0:0: [sdc] tag#0 FAILED Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[ 2086.777694] sd 6:0:0:0: [sdc] tag#0 CDB: Read(10) 28 00 73 70 70 00 00 00 20 00
[ 2086.777696] blk_update_request: I/O error, dev sdc, sector 1936748544
[ 2086.782711] EXT4-fs (sdc3): previous I/O error to superblock detected
[ 2086.782725] EXT4-fs error (device sdc3): ext4_put_super:813: Couldn't clean up the journal
[ 2086.783681] sd 6:0:0:0: [sdc] Synchronizing SCSI cache
[ 2086.783701] sd 6:0:0:0: [sdc] Synchronize Cache(10) failed: Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[ 2086.813606] Buffer I/O error on dev sdc1, logical block 6324224, lost sync page write
[ 2086.813612] JBD2: Error -5 detected when updating journal superblock for sdc1-8.
[ 2086.813613] Aborting journal on device sdc1-8.
[ 2086.813615] Buffer I/O error on dev sdc1, logical block 6324224, lost sync page write
[ 2086.813616] JBD2: Error -5 detected when updating journal superblock for sdc1-8.
...
[ 2174.972765] sd 7:0:0:0: [sdc] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 2174.972769] sd 7:0:0:0: [sdc] tag#0 Sense Key : Medium Error [current]
[ 2174.972770] sd 7:0:0:0: [sdc] tag#0 Add. Sense: Unrecovered read error
[ 2174.972773] sd 7:0:0:0: [sdc] tag#0 CDB: Read(10) 28 00 20 41 0b b0 00 00 08 00
[ 2174.972774] blk_update_request: critical medium error, dev sdc, sector 541133744
Obejściem tego problemu jest przekazanie dodatkowego parametru do modułu usb-storage.

Najpierw należy zidentyfikować numery ID urządzenia USB z którym mamy problemy:

Kod: Zaznacz cały

lsusb
Przykładowy wynik takiego polecenia:
lsusb pisze:Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 004: ID 174c:5136 ASMedia Technology Inc. ASM1053 SATA 6Gb/s bridge
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 13d3:3394 IMC Networks Bluetooth
Bus 003 Device 005: ID 040b:2014 Weltrend Semiconductor
Bus 003 Device 002: ID 0930:6545 Toshiba Corp. Kingston DataTraveler 102/2.0 / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Wytłuściłem urządzenie, które w moim przypakdu było problematyczne.
Istotny jest numer występujący po słowie ID - składa się z dwóch członów rozdzielonych dwukropkiem (podkreśliłem go powyżej).

Teraz ten numer należy podać w poleceniu poniżej:

Kod: Zaznacz cały

echo -n quirks=<numer_urządzenia>:u | sudo tee /sys/module/usb_storage/parameters/quirks
W moim przypadku:

Kod: Zaznacz cały

echo -n quirks=174c:5136:u | sudo tee /sys/module/usb_storage/parameters/quirks
Teraz należy odłączyć i podłączyć urządzenie ponownie.

Jeśli przy montowaniu systemu plików w dmesg pojawiają się błędy, to należy wykonać fsck.

Powyższa metowa zadziała jednorazowo - do ponownego uruchomienia systemu.
Aby zachować ją na stałe - należy wykonać takie polecenie:

Kod: Zaznacz cały

echo "options usb-storage quirks=<numer_urządzenia>:u"  | sudo tee -a /etc/modprobe.d/usb-storage-quirks.conf
ODPOWIEDZ

Wróć do „Hardware-Inne”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 18 gości