ไม่สามารถดำเนินการข้อมูล 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] (โครงสร้างท้องถิ่น) ลิขสิทธิ์ (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

อ่าน Device Identity ล้มเหลว: ข้อผิดพลาด scsi ไม่สนับสนุนฟิลด์ในคำสั่ง scsi

=== จุดเริ่มต้นของข้อมูลส่วน ===

รุ่นอุปกรณ์: [ไม่พบข้อมูล]

หมายเลขซีเรียล: [ไม่พบข้อมูล]

เวอร์ชั่นของเฟิร์มแวร์: [ไม่พบข้อมูล]

อุปกรณ์คือ: ไม่ได้อยู่ในฐานข้อมูล smartctl [สำหรับรายละเอียดการใช้งาน: -P showall]

รุ่น ATA คือ: [ไม่พบข้อมูล]

เวลาท้องถิ่นคือ: พุธ 17 มิ.ย. 11:33:46 2015 IST

การรองรับสมาร์ทคือ: คลุมเครือ - ATA IDENTIFY DEVICE คำที่ 82-83 จะไม่แสดงหากรองรับ SMART

การสนับสนุน SMART คือ: คลุมเครือ - ATA IDENTIFY DEVICE คำที่ 85-87 จะไม่แสดงหากเปิดใช้งาน SMART

คำสั่ง SMART บังคับไม่สำเร็จ: ออกจาก หากต้องการดำเนินการต่อให้เพิ่มตัวเลือก '-T permissive' หนึ่งตัวเลือกขึ้นไป

ป้อนคำอธิบายรูปภาพที่นี่


ปัญหาเดียวกันที่นี่ ฉันสามารถเพิ่มว่ามันเกิดขึ้นในUbuntu 14.04แต่ไม่ใช่ในUbuntu 12.04ที่ SMART อ่านได้อย่างถูกต้องโดยทั้ง GUI และบรรทัดคำสั่ง ความคิดใด ๆ
Alvaro Gutierrez Perez

1
พบวิธีแก้ปัญหาดูคำตอบของฉัน
Alvaro Gutierrez Perez

คำตอบ:


13

ผมมีปัญหาเดียวกัน. ในกรณีของฉันสมาร์ททำงานอย่างถูกต้องบนอุปกรณ์เป็นเวลาหลายปีในขณะที่ใช้Ubuntu 12.04และจากนั้นภายใต้Ubuntu 14.04มันเกิดขึ้นอย่างที่คุณบอกในคำถาม

ปัญหาเกี่ยวข้องกับเคอร์เนลโมดูลใหม่ที่นำมาใช้ในLinux Kernel 3.15ชื่อuas(USB Attached SCSI ) (ดูประกาศการเปิดตัว )

ขณะนี้โมดูลดังกล่าวเป็นความรับผิดชอบในการจัดการอุปกรณ์เก็บข้อมูล USB มีเธรดที่ผู้คนบ่นว่าuasในเคอร์เนล 3.15 ทำให้อุปกรณ์ USB ของพวกเขาล้มเหลว อีกคนหนึ่งบอกว่ามันอาจเป็นสาเหตุของปัญหาสมาร์ท

โชคดีที่ปัญหาเหล่านี้ดูเหมือนจะหายไปที่เคอร์เนล 3.19 (ซึ่งฉันกำลังใช้) เนื่องจากอุปกรณ์ของฉันถูกตรวจพบอย่างถูกต้อง ยังคงมีเพียงปัญหาสมาร์ท

ในการแก้ไขคุณต้องปิดการใช้งาน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ทำให้สมาร์ททำงานอย่างถูกต้อง คุณจะเห็นบรรทัดแบบนี้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และโดยผู้จำหน่ายอุปกรณ์ของคุณและรหัสสินค้าที่ได้รับจากProductIdlsusb

ถัดไปสร้าง ramdisk inital ใหม่ของคุณ:

mkinitcpio -p linux

หรือใน Ubuntu รุ่นใหม่กว่า:

sudo update-initramfs -u

ในที่สุดรีบูตคอมพิวเตอร์ของคุณ


แก้ไข: พื้นหลังเพิ่มเติมเกี่ยวกับปัญหาและวิธีอื่นในการหลีกเลี่ยงโดยไม่ต้องปิดการใช้งาน uas (ซึ่งมีปริมาณงานที่ดีกว่า usb-storage) สามารถดูได้ที่นี่: https://www.smartmontools.org/ticket/971#comment:12

ดูเหมือนว่าเคอร์เนลกำลังขึ้นบัญชีดำSAT ATA PASS-THROUGHในอุปกรณ์บางอย่างเมื่อทำงานในโหมด uas เนื่องจากมีเฟิร์มแวร์ที่ใช้งานไม่ได้

ดังนั้นการขึ้นบัญชีดำสามารถปิดการใช้งานได้ (โดยคุณต้องรับความเสี่ยงเอง) โดยใช้วิธีการก่อนหน้านี้ที่ฉันพูดถึงในคำตอบ แต่การลบรายการสุดท้ายuออกจากการเล่นโวหารคือ:

quirks=VendorId:ProductId:

โปรดทราบว่าฉันยังไม่ได้ทดสอบวิธีการนี้


ฉันใช้ Ubuntu 15.10 กับ Linux kernel 4.2 ฉันทำในสิ่งที่คุณพูด แต่ฉันไม่ได้ผลสำหรับฉัน
Edward Torvalds

@edwardtorvalds มันเป็นกุยสิ่งที่ไม่ทำงานหรือยังsmartctl? ในกรณีของฉัน GUI ยังคงเป็นสีเทา (ฉันยังไม่ได้บูตเครื่องใหม่) แต่ใช้smartctlงานได้
Alvaro Gutierrez Perez

2
ไม่มี mkinitcpio ใน 16.04 ไม่ใช่ "sudo update-initramfs -u" แทนตอนนี้หรือไม่
filofel

1
คำตอบที่ดี! ฉันสามารถเข้าถึงไดรฟ์ Seagate USB ของฉันและรับข้อมูล smartctl ทั้งหมดจากมัน ฉันลองทำการแก้ไขของคุณที่นั่นด้วยการลบuและน่าเสียดายที่แขวนไดรฟ์ดังนั้นฉันจึงไม่สามารถรับข้อมูล SMART และเวลาบูตช้า อย่างไรก็ตามฉันเพิ่มกลับuและมันใช้งานได้สมบูรณ์
Terrance

1
มากกว่าหนึ่งครั้งดูเหมือนว่า:quirks=0bc2:ab24:u,0bc2:ac30:u
Tom Hale

6

ไดรฟ์ภายนอก (ผ่าน USB ฉันถือว่า) ใช้กับ SMART ได้ยาก บางคนไม่ทำงานเลย smartmontoolsคนโพสต์รายชื่อของฮาร์ดไดรฟ์ที่มีบรรทัดคำสั่งสวิทช์ที่จะเพิ่มsmartctl (ดูคอลัมน์ห้า)


สำหรับไดรฟ์ซีเกทการขยายตัวโดยเฉพาะอย่างยิ่งดูเหมือนว่าคุณต้องการอย่างใดอย่างหนึ่งหรือ-d sat -d sat,12ลองทำสิ่งต่อไปนี้:

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

หากหนึ่งในผลงานเหล่านั้นจะบอกคุณว่า-dสวิตช์ใดที่จะเพิ่มไปยังsmartctlคำสั่งของคุณ


ทั้งคู่ให้ลิงก์
Edward Torvalds

ชื่อของ hdd ภายนอกคือ: Seagate Expansion External ดูเหมือนว่าจะได้รับการสนับสนุน แต่ก็ยังมีตัวเลือกให้ข้อผิดพลาด
Edward Torvalds

3

แค่อัปเดตที่ฉันเพิ่มเข้าไปในคำตอบของ Alvaro

เพิ่งทดสอบใน Ubuntu 18.04 สำหรับไดรฟ์ซีเกทภายนอกที่ฉันมีซึ่งฉันไม่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.

หวังว่านี่จะช่วยได้!


หลังจากการเปลี่ยนแปลงนี้ไดรฟ์ของฉันจะไม่ติดอีกต่อไป ทำไม
Philippe Delteil

@PhilippeDelteil ฉันไม่เคยได้ยินมาก่อนว่าสาเหตุที่ทำให้ไดร์ฟไม่สามารถติดตั้งได้อย่างเหมาะสม คุณสามารถลองaskubuntu.com/a/952275/231142gnome-disksการตั้งค่าอย่างถาวรมากขึ้นหากไดรฟ์มีให้เห็นใน
Terrance

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

และรีบูตตามคำตอบดั้งเดิม


หาดี! ฉันไม่ได้คิดเกี่ยวกับหลายไดรฟ์ในขณะที่ฉันทดสอบของฉัน ฉันชอบสิ่งนี้มาก! +1
Terrance

1

ตรวจสอบตารางด้วยอุปกรณ์ USB ที่รองรับ ...

สวิตช์-d satบ่งชี้ว่ามันควรจะเป็นไดรฟ์ที่มีพอร์ต SATA

มีสวิตช์เฉพาะสำหรับบริดจ์ USBบางตัว - lsusbอาจแสดงชื่อที่เป็นรูปธรรม ถ้าตัวควบคุมบริดจ์อาจมีการนำไปใช้ที่ไม่ถูกต้อง - ให้ลองเชื่อมต่อมันดั้งเดิมผ่าน SATA แทน USB

SCSI และ ATA (ตามเอาต์พุตเชลล์) อาจไม่ใช่สิ่งที่คุณกำลังมองหา :)


ฉันใช้สายเคเบิลที่มาพร้อมกับ HDD เมื่อฉันซื้อมัน คุณอาจต้องการเห็นข้อผิดพลาดเหล่านี้: ลิงก์
Edward Torvalds

ชื่อของ hdd ภายนอกคือ: Seagate Expansion External ดูเหมือนว่าจะได้รับการสนับสนุน แต่ก็ยังมีตัวเลือกให้ข้อผิดพลาด
Edward Torvalds

@edwardtorvalds มีเงื่อนไขพื้นฐานสองประการ ... การเปิดใช้งาน SMART ใน BIOS / UEFI สำหรับพอร์ต (ถ้ามี) และเปิดใช้งานผ่านซอฟต์แวร์ก่อนที่จะพยายามอ่าน ... smartctl -T permissive --smart=on /dev/sdb(ในขณะที่บันทึกดูเหมือนว่ามันจะกำลังพูดถึง ผิดพอร์ต)
Martin Zeitler

ไม่มีตัวเลือกการบูตสำหรับสิ่งนั้นฉันลองใช้คำสั่งด้านบนฉันได้รับข้อผิดพลาด
Edward Torvalds

@edwardtorvalds ดูเหมือนว่ายังคงส่งคำสั่ง SCSI ... ว่า -d sat switch หายไปsmartctl -d sat -T permissive --smart=on /dev/sdb... และอย่างที่ฉันได้เขียนไว้ข้างต้นlsusbควรแสดงรายการว่าเป็นบริดจ์ใด
Martin Zeitler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.