Làm cách nào tôi có thể gỡ đĩa SATA ra khỏi hệ thống đang chạy một cách an toàn?


64

Đôi khi tôi cần phải cắm một đĩa vào khoang đĩa. Vào những lúc khác, tôi có một thiết lập rất kỳ lạ là kết nối SSD bằng cáp SATA-eSATA trên máy tính xách tay của tôi trong khi lấy nguồn từ máy tính để bàn.

Làm cách nào tôi có thể gỡ đĩa SATA ra khỏi hệ thống một cách an toàn? Đây Phoronix thread trên diễn đàn có một số gợi ý:

jowersumdood đã viết:

Một droid (noymous) đã viết:
Bạn sẽ làm gì ở phía phần mềm trước khi rút phích cắm? Đây có phải là một "umount / dev / sd" đơn giản [ký tự ổ đĩa] không? sau khi ngắt kết nối thiết bị, để "tắt nguồn" (hoặc ngủ) thiết bị:

hdparm -Y /dev/sdX

(trong đó X đại diện cho thiết bị bạn muốn tắt nguồn. Ví dụ: / dev / sdb)

điều này sẽ làm giảm ổ đĩa cho phép loại bỏ nguy cơ tăng điện áp.

Điều này có nghĩa là bộ đệm đĩa được xóa đúng cách và tắt nguồn sau đó?

Một đề nghị khác từ cùng một chủ đề:

chithanh đã viết:
Tất cả phần cứng SATA và eSATA đều có thể được cắm nóng (nghĩa là không bị hỏng nếu bạn cắm / rút phích cắm).

Làm thế nào chipset và trình điều khiển xử lý điều này là một câu hỏi khác. Một số kết hợp trình điều khiển / chipset không xử lý đúng cách cắm nóng và cần một lệnh hâm nóng, chẳng hạn như lệnh sau:

echo 0 - 0 > /sys/class/scsi_host/hostX/scan

Thay thế X bằng số thích hợp cho cổng SATA / eSATA của bạn.

Tôi nghi ngờ liệu có phải là cách chính xác để làm như vậy, nhưng tôi cũng không thể tìm thấy một số bằng chứng chống lại nó.

Vì vậy, cách chính xác để loại bỏ một đĩa đính kèm từ một hệ thống là gì? Giả sử rằng tôi đã ngắt kết nối mọi phân vùng trên đĩa và chạy sync. Vui lòng chỉ vào một số tài liệu chính thức nếu có thể, tôi không thể tìm thấy bất cứ điều gì trong cây tài liệu Linux, cũng như wiki ATA của Linux .

Câu trả lời:


82
  1. Ngắt kết nối bất kỳ hệ thống tập tin trên đĩa. ( umount ...)
  2. Vô hiệu hóa bất kỳ nhóm LVM. ( vgchange -an)
  3. Hãy chắc chắn rằng không có gì là sử dụng đĩa cho bất cứ điều gì.
  4. Một khi bạn đã làm điều đó, nó sẽ an toàn để rút phích cắm.

Nếu bạn muốn thận trọng hơn, hãy làm echo 1 > /sys/block/(whatever)/device/deletetrước. Điều đó sẽ hủy đăng ký thiết bị khỏi kernel, vì vậy bạn không biết gì khi sử dụng nó khi bạn rút phích cắm thiết bị. Khi tôi làm điều đó với một ổ đĩa trong vỏ bọc eSATA, tôi có thể nghe thấy đầu của ổ đĩa đó đỗ, do đó, hạt nhân rõ ràng nói với ổ đĩa để chuẩn bị tắt nguồn.

Nếu bạn đang sử dụng bộ điều khiển AHCI, nó sẽ đối phó với các thiết bị được rút ra. Nếu bạn đang sử dụng một số loại bộ điều khiển SATA khác, trình điều khiển có thể bị nhầm lẫn khi cắm nóng.

Theo kinh nghiệm của tôi, cắm nóng SATA (với AHCI) hoạt động khá tốt trong Linux. Tôi đã rút ổ đĩa quang, cắm vào ổ cứng, quét lỗi, tạo hệ thống tập tin và sao chép dữ liệu vào nó, ngắt kết nối và rút phích cắm, cắm vào ổ đĩa DVD khác và ghi đĩa, tất cả đều có máy và chạy.


Tôi có nhu cầu rút ổ cứng mà tôi muốn xóa hoàn toàn. Sau khi kéo đĩa ra khỏi vịnh, / dev / sdXY vẫn hiển thị. Viết 1để deletelàm cho nó biến mất và tôi có thể nghe thấy đĩa quay xuống. Chỉ hdparm -Ylà không đủ vì các /dev/mục vẫn sẽ tồn tại. Cảm ơn!
Lekensteyn

16
Tôi khuyên bạn nên luôn luôn ra echo 1 > /sys/block/(whatever)/device/deletelệnh vì ổ đĩa sẽ đỗ đầu, dừng hoàn toàn đĩa và vô hiệu hóa nguồn trên xe buýt. Nếu một đầu không đỗ chạm vào một đĩa quay, ổ đĩa có thể bị phá hủy vĩnh viễn.
trống

2
Ngoài ra - nếu smartd tình cờ đang chạy, bạn nên cấp SIGHUP cho quy trình để nó tải lại thông tin ổ đĩa. Đặc biệt quan trọng nếu bạn thay thế ổ đĩa vì smartd sẽ tải lại thông tin cho ổ đĩa đó và tất cả các ổ đĩa khác.
trống

1
Chỉ cần một lưu ý đáng nói, echo 1 > /sys/block/(whatever)/device/deletesẽ không hoạt động sudo, lỗi "Quyền bị từ chối" sẽ bị ném. Bạn sẽ cần phải trở thành một root thực sự, vì vậy hãy sử dụng đơn giản cũ suthay thế.
translucentCloud

11
@TranslucentCloud Bạn có thể chuyển nó qua sudo teeđể mô phỏng chuyển hướng dưới dạng root:echo 1 | sudo tee /sys/block/(whatever)/device/delete
Oli

5

Hai phần đó là dành cho những thứ khác nhau.

Đầu tiên là để rút phích cắm . Thứ hai là để cắm .

Để rút phích cắm, HĐH sẽ đồng bộ hóa dữ liệu trong quá trình thao tác ngắt kết nối. Do đó, nếu đĩa không được kết nối (giả sử bạn thực sự có hỗ trợ phần cứng đầy đủ), bạn có thể tắt nguồn đĩa sau đó rút phích cắm mà không có nguy cơ mất dữ liệu hoặc hỏng.

Để cắm, thiết bị nên được tự động nhận dạng. Nếu không, bạn có thể thực thi lệnh đó để kích hoạt quét xe buýt. Khi thiết bị được nhận dạng, bạn có thể gắn nó.

Và hãy để tôi báo trước điều này bằng cách nói rằng tôi chỉ từng làm điều này với các ổ USB.


Cảm ơn câu trả lời của bạn, nhưng tôi vẫn không tin hành động chính xác sẽ là gì. SSD có trường SMART "Đếm tắt máy không an toàn", chỉ cần rút phích cắm mà không làm gì có vẻ không an toàn với tôi.
Lekensteyn

3
Nếu nó có ích, tôi thường xuyên cắm nóng và rút phích cắm ổ cứng SATA như một phần công việc của mình, không có gì khác ngoài việc đảm bảo rằng nó chưa được khắc phục trước và tôi chưa bao giờ gặp phải vấn đề gì. Đó là giai thoại, vì vậy đừng coi đó là tin lành, nhưng ít nhất đó là một số bằng chứng cho thấy nó có khả năng an toàn. Trong mọi trường hợp, tôi sẽ coi đó là lỗi kernel nếu HĐH không đảm bảo rằng dữ liệu được ghi đầy đủ vào cuối hoạt động không đếm được, đặc biệt là trong thế giới cắm nóng.
Jander

1
@Lekensteyn, hdparm -Ysẽ chăm sóc điều đó. Đó là cơ bản những gì hệ thống làm mỗi khi bạn tạm dừng hoặc tắt máy.
psusi

5

những gì về eject /dev/sdX? Trong thiết lập của tôi, lệnh này sẽ vượt qua, đồng bộ hóa và tắt nguồn ổ đĩa.


4
Tôi đã thử điều này với một đĩa được kết nối qua eSATA nhưng lệnh không thành công với "không thể cắm được" hoặc một cái gì đó.
Lekensteyn

1
Afaik đẩy ra đĩa cắm và không phải thiết bị. Nó phụ thuộc vào trình điều khiển thiết bị khối hỗ trợ ioctl()hoạt động được sử dụng bởi ejectcông cụ. Ổ đĩa cứng Esata không hỗ trợ nó, nhưng các thiết bị quang học, đĩa mềm và có thể là ổ đĩa flash, vâng.
dùng259412

2

Tôi có một cặp kịch bản dựa trên câu trả lời của Wyzard . Đầu tiên, scsi-droplà tách một đĩa an toàn:

#!/bin/sh

if test -h "$1"
then
    disk=$(chase "$1")
else
    disk="$1"
fi

if test -b "$disk"
then
    echo 1 >/sys/block/$(basename "$disk")/device/delete
else
    echo "$0: not a block device: $1" >&2
    exit 1
fi

Lợi ích chính của nó là bạn có thể truyền cho nó một liên kết tượng trưng, ​​chẳng hạn như được tìm thấy /dev/disk/by-id/và nó sẽ giải quyết điều đó cho thiết bị thực. Nó không cần chasephải được cài đặt; bạn có thể có được kết quả tương tự bằng cách sử dụng readlink -e.

Tập lệnh thứ hai scsi-rescan, được sử dụng sau khi cắm thiết bị mới:

#!/bin/bash

exec tee /sys/class/scsi_host/host*/scan <<<'- - -' >/dev/null

Điều này làm cho tất cả các bộ điều hợp quét lại cho các thiết bị. Đó là cách duy nhất tôi quản lý để có được khả năng mới và bảng phân vùng được đọc.


0

Trên thực tế, ổ đĩa SATA tự động đỗ đầu khi mất điện. Kéo ổ đĩa trong khi nó vẫn đang quay, không nên dẫn đến các vấn đề. Tuy nhiên, đĩa quay dễ bị dings nếu bị va đập. Bạn có thể nghe thấy điều này khi bạn có năng lượng flakes hoặc năng lượng mặt trời.

Hầu hết các thiệt hại thường được gây ra bởi, bộ đệm không được xóa và ghi không được ghi vào bộ đệm, v.v ... Đây là lý do tại sao bạn PHẢI ngắt kết nối ổ đĩa, trước khi xóa nó. Lệnh SCSI chỉ là biện pháp tốt và hoạt động đến cùng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.