Невозможно выполнить SMART-данные и самопроверку на внешнем жестком диске.

13

Прямо сейчас мой внешний диск не имеет ошибок, но я просто хочу проверить вручную, чтобы убедиться.
Как видно из изображения ниже, опция для данных SMART и самопроверки неактивна. Также смотрите подробности о жестком диске в самом образе.

  1. Я попытался запустить, gksu gnome-disksно все же опция неактивна.
  2. Я побежал, sudo smartctl --all /dev/sdb --test=short -T permissiveя получил эту ошибку:

smartctl 6.4 2014-10-07 r4002 [x86_64-linux-3.19.0-15-generic] (локальная сборка) Copyright (C) 2002-14, Брюс Аллен, Кристиан Франке, www.smartmontools.org

Ошибка чтения идентификатора устройства: поле scsi error не поддерживается в команде scsi

=== НАЧАЛО ИНФОРМАЦИОННОГО РАЗДЕЛА ===

Модель устройства: [Информация не найдена]

Серийный номер: [Информация не найдена]

Версия прошивки: [Информация не найдена]

Устройство: отсутствует в базе данных smartctl [для подробной информации используйте: -P showall]

Версия ATA: [Информация не найдена]

Местное время: среда, 17 июня 11:33:46 2015 IST

Поддержка SMART: Неоднозначно - слова ATA IDENTIFY DEVICE 82-83 не отображаются, если поддерживается SMART.

Поддержка SMART: Неоднозначно - слова 85-87 УСТРОЙСТВА ИДЕНТИФИКАЦИИ ATA не отображаются, если SMART включен.

Сбой обязательной команды SMART: выход. Чтобы продолжить, добавьте один или несколько параметров «-T permissive».

введите описание изображения здесь

Эдвард Торвальдс
источник
Та же проблема здесь. Я могу добавить, что это происходит в Ubuntu 14.04 , но НЕ в Ubuntu 12.04, где SMART правильно читается как в графическом интерфейсе, так и в командной строке. Есть идеи?
Альваро Гутьеррес Перес
1
Нашли решение, смотрите мой ответ
Альваро Гутьеррес Перес

Ответы:

13

У меня такая же проблема. В моем случае SMART работал должным образом на устройстве в течение многих лет при использовании Ubuntu 12.04 , а затем под Ubuntu 14.04 произошло именно то, что вы говорите в вопросе.

Проблема связана с новым модулем ядра, который был представлен в Linux Kernel 3.15 и называется uas(USB Attached SCSI ) (см. Объявление о выпуске ).

Этот модуль теперь отвечает за управление USB Mass Storage Devices. Существует поток, где люди жалуются, что uasв ядре 3.15 происходит сбой их USB-устройств. Другой говорит, что это может быть причиной SMART проблем.

К счастью, эти проблемы, похоже, исчезли в ядре 3.19 (которое я использую), так как мое устройство определяется правильно. Остается только проблема SMART.

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

Отключить uasбез перезагрузки

Во-первых, отключите все USB-устройства, которые могут его использовать. Затем удалите uasи usb-storageмодули:

sudo modprobe -r uas
sudo modprobe -r usb-storage

Затем загрузите usb-storageмодуль с параметром, который говорит, что он не должен использоваться uasдля данного устройства:

sudo modprobe usb-storage quirks=VendorId:ProductId:u

VendorIdи ProductIdдолжны быть заменены вашим поставщиком устройства и идентификатором продукта, которые можно получить с помощью lsusbкоманды (они являются символами после ID).

Например, у меня есть следующее устройство:

Bus 002 Device 011: ID 0bc2:3320 Seagate RSS LLC SRD00F2 [Expansion Desktop Drive]

Таким образом, мой идентификатор поставщика 0bc2, а мой идентификатор продукта 3320. Моя команда:

sudo modprobe usb-storage quirks=0bc2:3320:u

Последнее uговорит usb-storageигнорировать uasдля устройства (см. Источник ).

На этом этапе вы можете вставить USB-устройство, и оно будет знать, что не следует использовать uas, чтобы SMART работал правильно. dmesgПри вставке USB-устройства вы увидите такие строки :

usb 2-2: UAS is blacklisted for this device, using usb-storage instead
usb-storage 2-2:1.0: USB Mass Storage device detected
usb-storage 2-2:1.0: Quirks match for vid 0bc2 pid 3320: 800000
scsi host12: usb-storage 2-2:1.0

Сделать изменение постоянным

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

Сначала создайте файл с именем ignore_uas.confв /etc/modprobe.d/каталоге со следующим содержимым:

options usb-storage quirks=VendorId:ProductId:u

Как и прежде, замените VendorIdи ProductIdвашим поставщиком устройства и идентификатором продукта, полученным от lsusb.

Затем восстановите ваш начальный виртуальный диск:

mkinitcpio -p linux

или, на более новых версиях Ubuntu:

sudo update-initramfs -u

Наконец, перезагрузите компьютер.


Изменить: Больше информации об этой проблеме, и другой способ обойти ее без отключения uas (который имеет лучшую пропускную способность, чем usb-хранилище) можно найти здесь: https://www.smartmontools.org/ticket/971#comment:12

Похоже, что ядро ​​занесено в черный список SAT ATA PASS-THROUGHна некоторых устройствах при работе в режиме uas, так как у них сломана прошивка.

Таким образом, черный список можно отключить (на свой страх и риск), используя предыдущий метод, который я упоминаю в ответе, но удаляя финал uиз причуды, то есть:

quirks=VendorId:ProductId:

Обратите внимание, однако, что я не проверял этот подход.

Альваро Гутьеррес Перес
источник
Я использую Ubuntu 15.10 с ядром Linux 4.2, я сделал то, что вы сказали, но у меня это не работает
Эдвард Торвальдс
@edwardtorvalds это графический интерфейс, который не работает, или тоже smartctl? В моем случае GUI остается серым (я еще не перезагружен), но smartctlработает.
Альваро Гутьеррес Перес
2
Нет mkinitcpio в 16.04. Разве теперь это не "sudo update-initramfs -u"?
filofel
1
Отличный ответ! Я могу получить доступ к своему USB-накопителю Seagate и получить с него все данные Smartctl. Я попытался там отредактировать u, удалив диск, и, к сожалению, диск завис, поэтому я не смог получить SMART-данные, а время загрузки было медленным. Тем не менее, я добавил обратно, uи он прекрасно работает.
Терренс
1
Для более чем одного это выглядит так:quirks=0bc2:ab24:u,0bc2:ac30:u
Том Хейл,
6

Внешние накопители (через USB, я полагаю) хитры с SMART. Некоторые вообще не работают. В smartmontoolsлюдях размещен список жестких дисков с командной строкой , чтобы добавитьsmartctl (см пятого столбца).


Для Seagate Expansion дисков , в частности, это выглядит , как вам нужно либо -d satили -d sat,12. Попробуйте следующее:

sudo smartctl -d sat --all /dev/sdb
sudo smartctl -d sat,12 --all /dev/sdb

Если один из них работает, он говорит вам, какой -dпереключатель добавить в ваши smartctlкоманды.

Олате
источник
оба дают мне ссылку на
Эдвард Торвальдс
имя внешнего жесткого диска: Seagate Expansion External. кажется, что это поддерживается, но все еще варианты дают ошибку
Эдвард Торвальдс
3

Просто обновление, которое я добавляю к ответу Альваро

Только что проверил это в Ubuntu 18.04 для внешнего накопителя Seagate, который у меня не получался smartctlпрочитать. Это потребовало перезагрузки, потому что я не хотел отставать от своей системы и возиться с USB-соединениями.

Сначала побежал lsusbи получил всю мою информацию для диска:

terrance@terrance-ubuntu:~$ lsusb
Bus 006 Device 002: ID 0bc2:a0a4 Seagate RSS LLC Backup Plus Desktop Drive
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 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 1532:0118 Razer USA, Ltd 
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 003: ID 046d:c215 Logitech, Inc. Extreme 3D Pro
Bus 003 Device 002: ID 1532:005b Razer USA, Ltd 
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Как вы можете видеть, на моем диске есть имя Seagate, поэтому все, что мне нужно было сделать, это запустить следующую строку, чтобы добавить информацию в /etc/modprode.d/ignore_uas.confфайл:

echo options usb-storage quirks=$(lsusb | awk '/Seagate/ {print $6}'):u | sudo tee -a /etc/modprobe.d/ignore_uas.conf

Просто не забудьте заменить Seagateимя вашего диска. Теперь, когда я смотрю на это, /etc/modprode.d/ignore_uas.confя вижу это как:

~$ cat /etc/modprobe.d/ignore_uas.conf 
options usb-storage quirks=0bc2:a0a4:u

Затем просто запустите, update-initramfsчтобы изменения стали постоянными:

sudo update-initramfs -u

Затем перезагрузите вашу систему. Теперь smartctl может читать мой внешний диск.

$ sudo smartctl -a /dev/sdf
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-43-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.14 (AF)
Device Model:     ST3000DM001-1E6166
Serial Number:    W1F3DNG2
LU WWN Device Id: 5 000c50 06a323610
Firmware Version: SC47
User Capacity:    3,000,592,982,016 bytes [3.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    7200 rpm
Form Factor:      3.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Fri Jan 11 23:07:43 2019 MST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                    was never started.
                    Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                    without error or no self-test has ever 
                    been run.
Total time to complete Offline 
data collection:        (  592) seconds.
Offline data collection
capabilities:            (0x73) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    No Offline surface scan supported.
                    Self-test supported.
                    Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:    (   1) minutes.
Extended self-test routine
recommended polling time:    ( 336) minutes.
Conveyance self-test routine
recommended polling time:    (   2) minutes.
SCT capabilities:          (0x3081) SCT Status supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   108   099   006    Pre-fail  Always       -       19766104
  3 Spin_Up_Time            0x0003   094   091   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   097   097   020    Old_age   Always       -       3944
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   052   048   030    Pre-fail  Always       -       231936780154
  9 Power_On_Hours          0x0032   058   058   000    Old_age   Always       -       36793
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   097   097   020    Old_age   Always       -       3942
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   092   000    Old_age   Always       -       894 897 1362
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   056   039   045    Old_age   Always   In_the_past 44 (Min/Max 44/44 #237)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   099   099   000    Old_age   Always       -       3909
193 Load_Cycle_Count        0x0032   020   020   000    Old_age   Always       -       161838
194 Temperature_Celsius     0x0022   044   061   000    Old_age   Always       -       44 (0 13 0 0 0)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       8558h+07m+38.053s
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       14574986552
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       18776308038

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Надеюсь это поможет!

Терренс
источник
После этого изменения мой диск больше не будет монтироваться. Почему ?
Филипп Делтейл
@PhilippeDelteil Я никогда не слышал о том, чтобы привод не устанавливался должным образом. Вы можете попробовать askubuntu.com/a/952275/231142, чтобы настроить более постоянный, если диск виден в gnome-disks.
Терренс
3

У меня было подключено два диска Seagate, поэтому я изменил команду @Terrance:

echo "options usb-storage quirks=$(lsusb | awk '/Seagate/ {print $6":u"}' | tr '\n' ',' | head -c-1)" | sudo tee -a /etc/modprobe.d/ignore_uas.conf

Что дает правильный разделитель (и флаг повторения) для нескольких элементов:

options usb-storage quirks=0bc2:3320:u,0bc2:2323:u

Эта замена символов «новой строки» на «,», вероятно, выполнена не самым элегантным способом (требует удаления дополнительного разделителя head), но, похоже, она работает.

Потом:

sudo update-initramfs -u

И перезагрузите как в оригинальном ответе.

Bouteille
источник
Хорошая находка! Я не думал о нескольких дисках в то время, когда я тестировал свои. Мне действительно это нравится! +1
Терренс
1

проверить таблицу с поддерживаемыми USB-устройствами ...

Коммутатор -d satуказывает, что это должен быть диск с портом SATA.

Есть определенные переключатели для определенных мостов USB - lsusbможет показывать конкретное имя. если контроллер моста может иметь плохую реализацию - просто попробуйте подключить его через SATA вместо USB.

SCSI и ATA (согласно выходным данным оболочки), вероятно, не то, что вы ищете :)

Мартин Цайтлер
источник
Я использую кабель, который пришел с HDD, когда я купил его. возможно, вы захотите увидеть эти ошибки: ссылка
Эдвард Торвальдс
имя внешнего жесткого диска: Seagate Expansion External. кажется, что это поддерживается, но все еще варианты дают ошибку
Эдвард Торвальдс
@edwardtorvalds есть две основные предпосылки ... включить SMART в BIOS / UEFI для порта (если применимо) и включить его с помощью программного обеспечения, прежде чем пытаться его прочитать ... smartctl -T permissive --smart=on /dev/sdb(в то время как журналы выглядят так, как будто они говорят в неправильный порт)
Мартин Цейтлер
для этого нет варианта загрузки, я попробовал вышеуказанную команду, я получил эту ошибку
Эдвард Торвальдс
@edwardtorvalds, кажется, все еще отправляет команды SCSI ... что переключатель -d sat отсутствует smartctl -d sat -T permissive --smart=on /dev/sdb... и, как я писал выше, lsusbдолжен перечислить, какой это мост.
Мартин Цайтлер,