LINUX.ORG.RU

Как правильно отключать USB диск?

 , ,


0

6

RHEL 9, Gnome, Samsung SSD T7 (SSD с USB интерфейсом).

Если отключаю через eject /dev/sda (как всегда делал), то в dmesg появляется кучка ошибок вида

[26929.854633] sd 0:0:0:0: [sda] Media removed, stopped polling
[26929.855329] sd 0:0:0:0: [sda] tag#16 device offline or changed
[26929.855331] blk_print_req_error: 4 callbacks suppressed
[26929.855332] I/O error, dev sda, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
[26929.855334] buffer_io_error: 3 callbacks suppressed
[26929.855335] Buffer I/O error on dev sda, logical block 0, async page read
[26929.855344] sd 0:0:0:0: [sda] tag#17 device offline or changed
[26929.855345] I/O error, dev sda, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
[26929.855346] Buffer I/O error on dev sda, logical block 0, async page read
[26929.855350] sd 0:0:0:0: [sda] tag#18 device offline or changed
[26929.855351] I/O error, dev sda, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
[26929.855352] Buffer I/O error on dev sda, logical block 0, async page read
[26929.855356] sd 0:0:0:0: [sda] tag#19 device offline or changed
[26929.855356] I/O error, dev sda, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
[26929.855357] Buffer I/O error on dev sda, logical block 0, async page read
[26929.855360] sd 0:0:0:0: [sda] tag#16 device offline or changed
[26929.855361] I/O error, dev sda, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
[26929.855361] Buffer I/O error on dev sda, logical block 0, async page read
[26929.855365] sd 0:0:0:0: [sda] tag#17 device offline or changed
[26929.855365] I/O error, dev sda, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
[26929.855366] Buffer I/O error on dev sda, logical block 0, async page read
[26929.855367]  sda: unable to read partition table
[26929.856799] sd 0:0:0:0: [sda] Media removed, stopped polling
[26929.857293] sd 0:0:0:0: [sda] tag#25 device offline or changed
[26929.857294] I/O error, dev sda, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
[26929.857296] Buffer I/O error on dev sda, logical block 0, async page read
[26929.857305] sd 0:0:0:0: [sda] tag#26 device offline or changed
[26929.857306] I/O error, dev sda, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
[26929.857307] Buffer I/O error on dev sda, logical block 0, async page read
[26929.857311] sd 0:0:0:0: [sda] tag#27 device offline or changed
[26929.857312] I/O error, dev sda, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
[26929.857313] Buffer I/O error on dev sda, logical block 0, async page read
[26929.857317] sd 0:0:0:0: [sda] tag#24 device offline or changed
[26929.857317] I/O error, dev sda, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
[26929.857318] Buffer I/O error on dev sda, logical block 0, async page read
[26929.857322] sd 0:0:0:0: [sda] tag#25 device offline or changed
[26929.857326] sd 0:0:0:0: [sda] tag#26 device offline or changed
[26929.857327]  sda: unable to read partition table
[26929.861414] sd 0:0:0:0: [sda] tag#3 device offline or changed
[26929.861426] sd 0:0:0:0: [sda] tag#0 device offline or changed

Это кажется не очень хорошо.

Если отключаю через кнопочку в гномском наутилусе, то тоже не всё идеально:

[26972.550912] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[26972.672905] sd 0:0:0:0: [sda] Synchronize Cache(10) failed: Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
[26972.690445] usb 2-1.3: USB disconnect, device number 5

Тех страшных ошибок вроде нет, но чего-то там всё равно фейлится.

Как отключать так, чтобы всё было хорошо? А то у меня на этом диске периодически exfat ругается на плохое размонтирование, и я грешу на неправильное отключение. Пока вроде ничего не терялось, но мало ли…

Перемещено hobbit из general

★★★★

Ответ на: комментарий от SerW

Нажал там Power Off, в логах то же, что и в случае с наутилусом:

[27369.907108] sd 0:0:0:0: [sda] Synchronize Cache(10) failed: Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
[27369.920523] usb 2-1.1: USB disconnect, device number 6

Если предварительно отмонтировать с консоли, результат не меняется.

vbr ★★★★
() автор топика
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от vbr

При подключении:

root@debian-9020:~# dmesg
[53698.276726] usb 4-6: new SuperSpeed USB device number 6 using xhci_hcd
[53698.297902] usb 4-6: New USB device found, idVendor=152d, idProduct=0583, bcdDevice= 2.04
[53698.297917] usb 4-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[53698.297923] usb 4-6: Product: USB to PCIE Bridge
[53698.297927] usb 4-6: Manufacturer: JMicron
[53698.297931] usb 4-6: SerialNumber: 0123456789ABCDEF
[53698.305848] scsi host4: uas
[53698.306329] scsi 4:0:0:0: Direct-Access     JMicron  Generic          0204 PQ: 0 ANSI: 6
[53698.308949] sd 4:0:0:0: Attached scsi generic sg1 type 0
[53699.862670] sd 4:0:0:0: [sdb] 1000215216 512-byte logical blocks: (512 GB/477 GiB)
[53699.862679] sd 4:0:0:0: [sdb] 4096-byte physical blocks
[53699.862842] sd 4:0:0:0: [sdb] Write Protect is off
[53699.862848] sd 4:0:0:0: [sdb] Mode Sense: 5f 00 00 08
[53699.863127] sd 4:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[53699.863134] sd 4:0:0:0: [sdb] Preferred minimum I/O size 4096 bytes
[53699.863138] sd 4:0:0:0: [sdb] Optimal transfer size 33553920 bytes not a multiple of preferred minimum block size (4096 bytes)
[53699.864846]  sdb: sdb1 sdb2
[53699.865059] sd 4:0:0:0: [sdb] Attached SCSI disk
root@debian-9020:~# 

После отключения:

root@debian-9020:~# dmesg
[53784.100700] sd 4:0:0:0: [sdb] Synchronizing SCSI cache
[53784.352825] sd 4:0:0:0: [sdb] Synchronize Cache(10) failed: Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
[53784.384648] usb 4-6: USB disconnect, device number 6
root@debian-9020:~# 

umount и eject – интересно, послежу за тредом :-)

SerW
()

кмк, оно просто, возможно, померает.
смарта мы не увидим, да?
И через гномовскую кнопку извлечения устройства - УМВР, без срача в логах.

etwrq ★★★★★
()
Ответ на: комментарий от d00fy

У меня так:

root@debian-9020:~# smartctl -x /dev/sdb
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.1.0-20-amd64] (local build)
Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       WDC PC SN720 SDAPNTW-512G-1014
Serial Number:                      1840E3800194
Firmware Version:                   10121000
PCI Vendor/Subsystem ID:            0x15b7
IEEE OUI Identifier:                0x001b44
Total NVM Capacity:                 512 110 190 592 [512 GB]
Unallocated NVM Capacity:           0
Controller ID:                      8215
NVMe Version:                       1.3
Number of Namespaces:               1
Namespace 1 Size/Capacity:          512 110 190 592 [512 GB]
Namespace 1 Formatted LBA Size:     512
Namespace 1 IEEE EUI-64:            001b44 8b446245b1
Local Time is:                      Mon Apr 15 23:30:25 2024 MSK
Firmware Updates (0x14):            2 Slots, no Reset required
Optional Admin Commands (0x0017):   Security Format Frmw_DL Self_Test
Optional NVM Commands (0x001f):     Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat
Log Page Attributes (0x02):         Cmd_Eff_Lg
Maximum Data Transfer Size:         128 Pages
Warning  Comp. Temp. Threshold:     80 Celsius
Critical Comp. Temp. Threshold:     85 Celsius
Namespace 1 Features (0x02):        NA_Fields

Supported Power States
St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
 0 +     5.50W       -        -    0  0  0  0        0       0
 1 +     3.50W       -        -    1  1  1  1        0       0
 2 +     3.00W       -        -    2  2  2  2        0       0
 3 -   0.0700W       -        -    3  3  3  3     4000   10000
 4 -   0.0025W       -        -    4  4  4  4     4000   45000

Supported LBA Sizes (NSID 0x1)
Id Fmt  Data  Metadt  Rel_Perf
 0 +     512       0         2
 1 -    4096       0         1

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        36 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    3%
Data Units Read:                    32 338 378 [16,5 TB]
Data Units Written:                 22 391 445 [11,4 TB]
Host Read Commands:                 353 187 340
Host Write Commands:                316 742 194
Controller Busy Time:               732
Power Cycles:                       1 559
Power On Hours:                     3 941
Unsafe Shutdowns:                   570
Media and Data Integrity Errors:    0
Error Information Log Entries:      0
Warning  Comp. Temperature Time:    1
Critical Comp. Temperature Time:    0

Error Information (NVMe Log 0x01, 16 of 256 entries)
No Errors Logged

root@debian-9020:~# 
SerW
()
Ответ на: комментарий от d00fy

Не работает смарт у меня. Да нормально всё с ним, новый почти.

smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.14.0-362.24.1.el9_3.x86_64] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               Samsung
Product:              PSSD T7 Shield
Revision:             0
Compliance:           SPC-4
User Capacity:        2,000,398,934,016 bytes [2.00 TB]
Logical block size:   512 bytes
LU is fully provisioned
Rotation Rate:        Solid State Device
Logical Unit id:      0x5000000000000001
Serial number:        X18430BT0SNRN6S
Device type:          disk
Local Time is:        Tue Apr 16 02:39:06 2024 +05
SMART support is:     Available - device has SMART capability.
SMART support is:     Enabled
Temperature Warning:  Disabled or Not Supported
Read Cache is:        Enabled
Writeback Cache is:   Enabled

=== START OF READ SMART DATA SECTION ===
SMART Health Status: OK
Current Drive Temperature:     0 C
Drive Trip Temperature:        0 C

Error Counter logging not supported

Device does not support Self Test logging
Device does not support Background scan results logging

vbr ★★★★
() автор топика

Я флешки обычно подключаю командой udisksctl mount, а отключаю udisksctl unmount, затем udisksctl power-off, после чего извлекаю. Для usb-ssd тоже должно подойти.

QsUPt7S ★★
()
Ответ на: комментарий от vbr

Не работает смарт у меня.

У команды smartctl есть опции (для usb коробочек), говорят помогают (там же).

(может быть smartctl нужен более свежий…)

greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 3)

Synchronize Cache(10) failed: Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK

Не знаю, насколько это нормально, но я такое регулярно наблюдаю при отключении USB устройств. Насколько я заметил, эти сообщения появляются не случайно. Некоторые устройства вызывают такие сообщения при отключении питания, и это происходит каждый раз. Некоторые — нет, и так тоже происходит каждый раз.

i-rinat ★★★★★
()
Ответ на: комментарий от vbr

Не надо ничего отключать. Если он смонтирован - надо размонтировать. Потом можешь выдёргивать провод из разъёма - это и есть «отключение питания». Чего делать нежелательно так это включёный (а так же ещё не остановившийся после обесточивания) диск двигать или хуже того трясти.

firkax ★★★★★
()
Ответ на: комментарий от urxvt

-y это парковка головок, отъехавших в парковочную область.
-Y это немедленная парковка головок. на некоторых моделях это заставляет головки немедленно припарковаться, не дожидаясь момента, когда они отъедут в парковочную область. я выполнил hdpatm -Y на работающем диске тосиба и услышал скрежет головок, опускающихся на крутящиеся блины. диск сдох.

teod0r ★★★★★
()
Ответ на: комментарий от teod0r

парковочную область

у hdd новее 15 лет, не парковочная область, а парковочная рампа

очень сомневаюсь, что hdparm как то может заставить головки упасть на пластины

yandrey ★★
()
Последнее исправление: yandrey (всего исправлений: 1)
Ответ на: комментарий от teod0r

Ничесе. Я думал, -y это состояние временного сна а -Y это уже состояние «Теперь питание компьютера можно отключить». По крайней мере, на такое man hdparm намекает.

urxvt ★★★★★
()
Ответ на: комментарий от sloan

Только что протыкал все порты, 2 USB-A, 2 USB-C. Вроде в одном тандерболт поддерживается. Выключал через Nautilus Safe Eject. Везде логи идентичные.

[51829.380466] sd 0:0:0:0: [sda] Synchronize Cache(10) failed: Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK

https://superuser.com/a/1732394 тут вроде в исходники ядра отвечающий залез и что-то там нашёл что это какие-то артефакты старого кода. У меня нет квалификации, чтобы понять этот ответ, но вроде звучит убедительно. Думаю дальше изучать этот вопрос смысла мало.

vbr ★★★★
() автор топика
Последнее исправление: vbr (всего исправлений: 2)
Ответ на: комментарий от teod0r

немедленно припарковаться, не дожидаясь момента, когда они отъедут в парковочную область

«Отъехать в парковочную область» это и есть «припарковаться». Кто там чего ждёт непонятно. Более того, в дисках новее 30 лет парковка автоматическая при обесточивании.

скрежет головок, опускающихся на крутящиеся блины

Такое может быть только если диск начнёт останавливать вращение не запарковав головки перед этим. Случиться может либо из-за совершенно дефективной прошивки, либо из-за заклинившего привода головок (в этом случае диск в любом случае уже не работоспособен).

На всякий случай: привода для поднятия/опускания головок нет, они поддерживаются воздушными потоками, наведёнными вращающимся диском и упасть могут только если снизятся обороты. Привод перемещения головок по дорожкам включает в себя механическую пружину, которая отводит их в парковку, когда на приводе нет питания, и происходит это сразу же, а вот вращение ещё какое-то время продолжается по инерции.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 3)
Ответ на: комментарий от yandrey

очень сомневаюсь, что hdparm как то может заставить головки упасть на пластины

тем не менее это произошло с моим диском на старом ноуте (ноут где-то 2010-2011 года выпуска). ввёл # hdparm -Y /dev/sdb и как только нажал enter услышал как скрежетают головки по крутящимся блинам.

teod0r ★★★★★
()
Ответ на: комментарий от firkax

странно. но когда это произошло, блины не остановились (полностью?), и пока я аварийно не вырубил ноут, скрежет о блины продолжался. но это точно был звук скрежета о крутящиеся диски

teod0r ★★★★★
()
Ответ на: комментарий от teod0r

Ну скрежет ты слышал, а вот то что это был именно скрежет головок по дискам - лишь догадка, и скорее всего неверная. Что именно там случилось, спустя время наверно уже бессмысленно гадать.

firkax ★★★★★
()
Ответ на: комментарий от teod0r

Ну откуда я знаю? Я не слышал того звука, а ещё я не слышал звука упавших на диск головок по крайней мере на современных дисках и совсем не уверен что от этого будет именно скрежет.

Возможно, если разобрать тот диск (он больше не работал после этого?) можно было бы что-нить увидеть интересное.

Впрочем, как бы то ни было, возможно команда hdparm -Y, которую никто не тестирует, и правда почему-то может быть опасна и, учитывая что она бесполезна, вызывать её наверно не стоит.

firkax ★★★★★
()
Ответ на: комментарий от firkax

он больше не работал после этого?

если включать ноут с этим диском подключеным, то на этапе запуска биос на экране появляется какая-то ошибка SMART (не помню какая), и до загрузки GRUB (с другого диска) дело не доходит. Если воткнуть его во время запущеной ОС, то иногда можно прочитать какие-то файлы.

teod0r ★★★★★
()
Ответ на: комментарий от vbr

greenman тебе дело говорит, опция -d очень и очень помогает

только сперва загрузись с какого-нибудь свежего liveCD, потому что smartmontools уже версии 7.4 (тем более, что у тебя новый диск).
Заодно проверишь, появляются ли scsi cache ошибки на ядрах 6.x

d00fy ★★★
()
Последнее исправление: d00fy (всего исправлений: 1)

Без графики делаю сначала umount для разделов, потом udisksctl power-off -b /dev/disk, потом уже дергаю кабель.

«Synchronize Cache(10) failed» в логах вылезает для всех USB-HDD на любом компе. Нормальная синхронизация бывает только при отключении дисков на SATA без переходников.

Подобного сообщения нет только при извлечении флешек.

Radjah ★★★★★
()
Ответ на: комментарий от vbr

это какие-то артефакты старого кода

ничего такого, чувак пробует выдвигать версии, но там вполне себе

res = scsi_execute(…);

if (res) {

sd_print_result(sdkp, «Synchronize Cache(10) failed», res);

… }

выглядит как неудачные попытки сбросить кэш, что не есть гуд так-то

и кстати - спасибо за инфу, надо посмотреть какой контроллер в вашей коробке, чтобы не купить случайно :)

sloan ★★
()