Tôi đã từng gặp vấn đề tương tự. Trong trường hợp của tôi, SMART đã hoạt động bình thường trên thiết bị trong nhiều năm khi sử dụng Ubuntu 12.04 , và sau đó với Ubuntu 14.04, nó đã xảy ra chính xác những gì bạn nói trong câu hỏi.
Vấn đề liên quan đến một mô-đun hạt nhân mới đã được giới thiệu trong Linux Kernel 3.15 có tên uas
(USB đính kèm SCSI ) (xem thông báo phát hành ).
Mô-đun đó hiện chịu trách nhiệm quản lý các thiết bị lưu trữ lớn USB. Có một chủ đề mà mọi người phàn nàn rằng uas
trong kernel 3.15 đang khiến các thiết bị USB của họ bị lỗi. Một người khác nói rằng nó có thể là nguyên nhân của các vấn đề SMART.
May mắn thay, những vấn đề đó dường như không còn ở kernel 3.19 (mà tôi đang sử dụng), vì thiết bị của tôi đang được phát hiện chính xác. Chỉ có vấn đề SMART vẫn còn.
Để khắc phục, bạn cần phải vô hiệu hóa việc sử dụng uas
mô-đun cho thiết bị đã cho.
Vô hiệu hóa uas
mà không cần khởi động lại
Đầu tiên, rút phích cắm tất cả các thiết bị USB có thể đang sử dụng nó. Sau đó, loại bỏ các mô-đun uas
và usb-storage
:
sudo modprobe -r uas
sudo modprobe -r usb-storage
Sau đó, tải usb-storage
mô-đun với một tham số cho biết nó không sử dụng uas
cho một thiết bị nhất định:
sudo modprobe usb-storage quirks=VendorId:ProductId:u
VendorId
và ProductId
phải được thay thế bởi nhà cung cấp thiết bị và id sản phẩm của bạn, có thể nhận được bằng lsusb
lệnh (chúng là các ký tự sau ID
).
Ví dụ: tôi có thiết bị sau:
Bus 002 Device 011: ID 0bc2:3320 Seagate RSS LLC SRD00F2 [Expansion Desktop Drive]
Vì vậy, id nhà cung cấp của tôi là 0bc2
, và id sản phẩm của tôi là 3320
. Lệnh của tôi là:
sudo modprobe usb-storage quirks=0bc2:3320:u
Câu u
nói cuối cùng usb-storage
bỏ qua uas
cho thiết bị (xem nguồn ).
Tại thời điểm này, bạn có thể cắm thiết bị USB và thiết bị sẽ biết không sử dụng uas
, giúp SMART hoạt động bình thường. Bạn sẽ thấy những dòng như thế này dmesg
khi cắm thiết bị 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
Làm cho sự thay đổi vĩnh viễn
Việc giải quyết trước đó sẽ chỉ kéo dài cho đến khi bạn khởi động lại hệ thống. Để làm cho nó bền bỉ, bạn cần làm theo các bước được mô tả ở đây , mà tôi sao chép dưới đây:
Đầu tiên, tạo một tệp có tên ignore_uas.conf
trong /etc/modprobe.d/
thư mục với nội dung sau:
options usb-storage quirks=VendorId:ProductId:u
Như trước, thay thế VendorId
và ProductId
bởi nhà cung cấp thiết bị và id sản phẩm của bạn thu được từ lsusb
.
Tiếp theo, tái tạo ramdisk bẩm sinh của bạn:
mkinitcpio -p linux
hoặc, trên các phiên bản Ubuntu mới hơn:
sudo update-initramfs -u
Cuối cùng, khởi động lại máy tính của bạn.
Chỉnh sửa: Có thêm thông tin về vấn đề này và một cách khác để khắc phục vấn đề mà không vô hiệu hóa uas (có thông lượng tốt hơn lưu trữ usb) có thể được tìm thấy tại đây: https://www.smartmontools.org/ticket/971#comment:12
Có vẻ như kernel đang nằm trong danh sách đen SAT ATA PASS-THROUGH
trên một số thiết bị khi chạy ở chế độ uas, vì chúng đã bị hỏng firmware.
Vì vậy, danh sách đen có thể bị vô hiệu hóa (có nguy cơ của riêng bạn) bằng cách sử dụng phương pháp trước đây tôi đã đề cập trong câu trả lời, nhưng loại bỏ cuối cùng u
khỏi quirk, tức là:
quirks=VendorId:ProductId:
Xin lưu ý, tuy nhiên, tôi chưa thử nghiệm phương pháp này.