실행중인 시스템에서 SATA 디스크를 안전하게 제거하려면 어떻게해야합니까?


64

때때로 디스크를 디스크 베이에 연결해야합니다. 다른 경우에는 데스크탑에서 전원을 끄는 동안 랩톱의 SATA-eSATA 케이블을 사용하여 SSD를 연결하는 매우 이상한 설정이 있습니다.

시스템에서 SATA 디스크를 안전하게 제거하려면 어떻게해야합니까? 이 Phoronix 포럼 스레드에는 다음과 같은 제안이 있습니다.

justsumdood는 다음과 같이 썼습니다.

귀찮은 드로이드가 썼다 :
플러그를 뽑기 전에 소프트웨어 측에서 무엇을해야합니까? 단순한 "umount / dev / sd"[드라이브 문자]입니까? 장치를 마운트 해제 한 후 장치를 "전원 끄기"(또는 잠자기)하려면 다음을 수행하십시오.

hdparm -Y /dev/sdX

(여기서 X는 전원을 끄려는 장치를 나타냅니다. 예 : / dev / sdb)

이렇게하면 드라이브의 전원이 꺼져 전압 서지 위험없이 제거 할 수 있습니다.

이것은 이후 디스크 캐시가 올바르게 플러시되고 전원이 꺼 졌음을 의미합니까?

같은 스레드에서 또 다른 제안 :

chithanh 썼다 :
모든 SATA 및 eSATA 하드웨어는 물리적으로 핫 플러그 ​​될 수 있습니다 (즉, 플러그를 꽂거나 당기더라도 손상되지 않음).

칩셋과 드라이버가이를 처리하는 방법은 또 다른 질문입니다. 일부 드라이버 / 칩셋 조합은 핫 플러깅을 제대로 처리하지 못하며 다음과 같은 웜 플러그 명령이 필요합니다.

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

X를 SATA / eSATA 포트에 적합한 번호로 교체하십시오.

올바른 방법인지 아닌지 의심하지만 그에 대한 증거를 찾을 수 없습니다.

그렇다면 시스템에서 연결된 디스크를 제거하는 올바른 방법은 무엇입니까? 디스크의 모든 파티션을 이미 마운트 해제하고 실행했다고 가정합니다 sync. 가능한 경우 공식 문서를 가리 키십시오 .Linux 문서 트리 또는 Linux ATA 위키 에서 아무것도 찾을 수 없습니다 .

답변:


82
  1. 디스크에서 파일 시스템을 마운트 해제하십시오. ( umount ...)
  2. LVM 그룹을 비활성화하십시오. ( vgchange -an)
  3. 디스크에 아무것도 사용하지 않아야합니다.
  4. 일단 완료하면 플러그를 뽑는 것이 안전해야합니다.

추가로주의를 기울이려면 echo 1 > /sys/block/(whatever)/device/delete먼저 수행하십시오. 즉, 커널에서 장치의 등록을 취소 할 수 있습니다, 그래서 당신은 알고 아무것도 당신이 그것을 분리 할 때 그것을 사용 없습니다. eSATA 엔클로저에있는 드라이브로이를 수행하면 드라이브 헤드가 자체적으로 파킹되는 것을들을 수 있으므로 커널은 드라이브의 전원 차단 준비를 지시합니다.

AHCI 컨트롤러를 사용하는 경우 연결이 끊긴 장치에 대처해야합니다. 다른 종류의 SATA 컨트롤러를 사용하는 경우 핫 플러깅으로 인해 드라이버가 혼동 될 수 있습니다.

필자의 경험에 따르면 SATA 핫 플러그 ​​(AHCI 포함)는 Linux에서 잘 작동합니다. 광학 드라이브를 분리하고 하드 드라이브를 연결하고 오류를 검사하고 파일 시스템을 만들고 데이터를 복사 한 후 마운트 해제 및 연결 해제하고 다른 DVD 드라이브에 연결하고 디스크를 레코딩했습니다. 그리고 달리기.


완전히 지우고 싶은 HDD를 분리해야했습니다. 베이에서 디스크를 꺼낸 후에도 / dev / sdXY가 계속 나타납니다. 글 1을 쓰지 delete않기 위해 글 을 쓰면서 디스크가 회전하는 소리를들을 수있었습니다. 그냥 hdparm -Y때문에 충분하지 않았다 /dev/항목이 여전히 존재한다. 감사!
Lekensteyn

16
난 강력하게 조언 항상 발행 echo 1 > /sys/block/(whatever)/device/delete드라이브가 완전히 머리를 주차 디스크를 중지하고 버스 전원을 사용하지 않기 때문에 명령을. 주차되지 않은 헤드가 회전판에 닿으면 드라이브가 영구적으로 파손될 수 있습니다.
drumfire

2
또한 smartd가 실행 중이면 프로세스에 SIGHUP을 발행하여 드라이브 정보를 다시로드하는 것이 좋습니다. smartd가 해당 드라이브 및 기타 모든 드라이브에 대한 정보를 다시로드하므로 드라이브를 교체하는 경우 특히 중요합니다 .
drumfire

1
언급 할 가치가있는 한 가지 메모 만에서 echo 1 > /sys/block/(whatever)/device/delete작동하지 않으며 sudo"Permission denied"오류가 발생합니다. 실제 루트가되어야하므로 su대신 평범한 것을 사용하십시오 .
TranslucentCloud

11
@TranslucentCloud sudo tee루트로 리디렉션을 에뮬레이트하기 위해 파이프를 통과 할 수 있습니다 .echo 1 | sudo tee /sys/block/(whatever)/device/delete
Oli

5

이 두 섹션은 다른 것입니다.

첫 번째는 플러그뽑는 것 입니다. 두 번째는 플러그 입니다.

플러그를 뽑기 위해 OS는 마운트 해제 작업 중에 데이터를 동기화합니다. 따라서 디스크가 마운트 해제 된 경우 (실제로는 전체 하드웨어 지원이 있다고 가정) 디스크의 전원을 끈 다음 데이터 손실 또는 손상의 위험없이 디스크의 플러그를 뽑을 수 있습니다.

플러그를 연결하려면 장치가 자동으로 인식되어야합니다. 그렇지 않은 경우 해당 명령을 실행하여 버스 스캔을 트리거 할 수 있습니다. 장치가 인식되면 마운트 할 수 있습니다.

USB 드라이브로 이런 종류의 작업을 한 적이 있다고 말하면서 이것을 조심해야합니다.


귀하의 답변에 감사드립니다. 그러나 여전히 올바른 조치가 무엇인지 확신하지 못합니다. SSD에는 "안전하지 않은 종료 카운트"SMART 필드가 있으며 아무 것도하지 않고 플러그를 뽑아도 안전하지 않습니다.
Lekensteyn

3
그것이 도움이된다면, 나는 일상적으로 SATA 하드 드라이브를 핫 플러그와 핫 플러그를 뽑아 내야 할 때까지 먼저 마운트를 해제해야하며 문제가 발생하지 않습니다. 그것은 일화적인 일이므로 복음으로 받아들이지 마십시오. 그러나 그것이 아마 안전하다는 증거는 적어도 있습니다. 어쨌든, OS가 마운트 해제 작업이 끝날 때, 특히 핫 플러그 ​​세계에서 데이터가 완전히 기록되도록 보장하지 않으면 커널 버그라고 생각합니다.
Jander

1
@Lekensteyn hdparm -Y은 그것을 처리 할 것입니다. 기본적으로 시스템은 일시 중지 또는 종료 할 때마다 수행합니다.
psusi

5

무엇에 대해 eject /dev/sdX? 내 설정에서이 명령은 드라이브를 마운트 해제, 동기화 및 종료합니다.


4
eSATA를 통해 연결된 디스크로이 작업을 시도했지만 "hotpluggable"이 아닌 다른 명령으로 명령이 실패했습니다.
Lekensteyn

1
Afaik eject는 장치가 아닌 플러그 가능 디스크를 뽑습니다. 블록 장치 드라이버가 도구에서 ioctl()사용 하는 작업을 지원하는지에 따라 다릅니다 eject. Esata 하드 디스크 드라이브는이를 지원하지 않지만 광학 장치, 플로피 및 플래시 드라이브는 가능합니다.
user259412

2

Wyzard답변을 바탕 으로 한 쌍의 스크립트가 있습니다. 첫 번째 scsi-drop는 단일 디스크를 안전하게 분리하는 것입니다.

#!/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

그것의 주요 이점은 발견 된 것과 같은 심볼릭 링크 /dev/disk/by-id/를 실제 장치 로 전달할 수 있다는 것입니다. chase설치 해야 합니다. 을 사용하여 동일한 결과를 얻을 수 있습니다 readlink -e.

두 번째 스크립트 scsi-rescan는 새 장치를 핫 플러그 ​​한 후에 사용됩니다.

#!/bin/bash

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

이렇게하면 모든 어댑터가 장치를 다시 검색하게됩니다. 새로운 용량과 파티션 테이블을 읽을 수있는 유일한 방법이었습니다.


0

실제로 SATA 드라이브는 전원이 꺼지면 자동으로 헤드를 고정시킵니다. 회전 중 드라이브를 당기면 문제가 발생하지 않습니다. 그러나, 회전하는 디스크는 부딪 치면 딩이 발생하기 쉽다. 색다른 힘 또는 태양 발적이있을 때이 소리를들을 수 있습니다.

대부분의 손상은 일반적으로 캐시되지 않은 캐시 및 커밋되지 않은 버퍼 쓰기 등으로 인해 발생합니다. 따라서 드라이브를 제거하기 전에 마운트를 해제해야합니다. SCSI 명령은 좋은 척도이며 같은 목적으로 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.