$ extend로 인해 외부 USB 드라이브를 안전하게 제거하지 못함


26

외장 USB 3.0 하드 드라이브를 USB 3.0 포트에 연결하면 절대 안전하게 제거 할 수 없습니다.

어떻게 든 Windows는 항상 저널 파일을 열어 둡니다. 여기에 이미지 설명을 입력하십시오 "언제나" 이 시점에서 드라이브를 연결하고 10GB VM을 복사 한 후 나중에 연결을 끊고 싶었습니다 (복사 후 15 분이 지나서 모든 복사가 완료되었습니다).

보시다시피 System 이외의 디스크에 핸들을 유지하는 다른 프로그램은 없습니다 . Uwe Sieberexplorer.exe 뿐만 아니라 다시 시작하려고했습니다 . 운이 좋은 것은 아닙니다. 하드 드라이브의 잠금 장치는 항상 남아 있습니다.RemoveDrive.exe

내 유일한 해결책은 플러그를 뽑거나 (데이터가 손상 될까 걱정 되는가?) 컴퓨터를 다시 시작하는 것입니다 (항상 도움이되지 않습니까?).

SSD 하드 드라이브 만있는 것과 관련이있을 수 있으며 외장 디스크는 일반 드라이브입니까? USB 3.0 드라이버 (NEC Electronics USB Hub)와 관련이 있습니까? 일반 USB 2.0 포트를 사용할 때이 문제가 발생하지 않습니다.

디스크를 올바르게 마운트 해제하는 방법에 대한 아이디어가 있습니까?


이 답변 중 하나라도 해결책이 되었으면 자유롭게 투표하거나 답변으로 표시하십시오.
user88311

답변:


25

가능한 설명이나 MFT / TxF / NTFS 메타 데이터에서이 "잠금"을 지우는 더 쉬운 (읽기 : 자동화 / 스크립트) 방법을 찾아 보았습니다. 나는 수많은 상황에서 나를 위해 일한 해결책을 가지고 있기 때문에 이것을 버릴 것이라고 생각했습니다. 나는 이런 방식으로 붙어있는 모든 USB 및 eSATA 드라이브를 제거하는 데 사용했습니다. 문제는 주로 eSATA 독 또는 USB 인클로저와 같은 고정 드라이브로 마운트 되는 이동식 드라이브 인 것으로 보입니다 . USB 썸 드라이브는 일반적으로이 문제를 보여주지 않는 것 같습니다.

이 마지막 차이점에 대한 참고 사항 : USB 키의 몸체에 SSD 컨트롤러로 구성된 이상한 짐승 인 Sandisk Extreme USB 3.0도 고정 드라이브로 표시됩니다. 안전한 제거가 수행되므로 속도와 잠재적으로 다른 문제로 인해 쓰기 캐싱이 꺼지는 것 같습니다.이 문제가없는 것처럼 보이므로 항상 즉각적인 제거 가능성을 유지합니다. 필자가 테스트에서 철저히 다루지 않았기 때문에 반드시 완벽한 예는 아니지만 (이는 일 화일 뿐이지 만) "고정 된"특성으로 인해이 문제에 약간의 빛이 비춰질 수 있지만이 문제에 대한 감수성이 부족합니다. 그냥 생각할 음식.

<- 해결책 ->

어쨌든 간단히 말해 드라이브를 오프라인으로 전환해야합니다. 두 가지 방법 중 하나로이 작업을 수행 할 수 있습니다. 참고 :이 작업을 수행하는 방법은 약간 짧지 만 여기에 잠재 고객을 모르기 때문에 엄청나게 철저한 단계가 있습니다. diskpart.exe가 스위치 나 인라인 명령 / 인자를받지 않기 때문에 GUI 방법이 훨씬 빠릅니다.

  1. GUI : 실행-> "diskmgmt.msc"-> 물리 디스크 목록 (하단 창)에서 드라이브 찾기-> 파티션이 아니라 드라이브 (가장 왼쪽 부분)를 마우스 오른쪽 단추로 클릭-> "오프라인"클릭

또는:

  1. CLI : 실행-> "cmd.exe"-> "diskpart"유형-> "list disk"유형, 디스크 찾기-> "disk x 선택"을 입력하십시오. 여기서 x는 마지막 단계의 디스크 번호입니다-> 유형 "오프라인 디스크". 이제 명령 프롬프트를 종료하거나 diskpart에 "exit"를 입력 한 다음 프롬프트를 닫을 수 있습니다.

노트:

  • 드라이브에서 NTFS의 보류를 제거하므로 볼륨을 오프라인 상태로 만드는 것이 중요하지만 디스크를 오프라인 화하는 것이 더 간단하고 철저합니다.

  • 디스크 번호는 diskpart.exe와 diskmgmt.msc간에 항상 동일합니다. 호기심 / 걱정 /주의가 필요한 경우를 대비하여 동일한 위치에서 정보를 가져 오기 때문입니다.


1
루크, 이거 좋아 보인다. 기다릴 수 없습니다. 그리고 예, 이것은 항상 고정 드라이브에서 발생합니다. 일반적으로 VM을 호스팅하는 외부 드라이브입니다. 한 가지 질문이 남아 있습니다. 외장 드라이브를 오프라인으로 설정 한 후 무엇을해야합니까? 그냥 뽑아? 안전하게 제거 하시겠습니까?
Dennis G

이것은 나를 위해 일했습니다.
hattenn

감사합니다. @elieux의 대답은 작업 관리자가 문제를 일으키는 경우 가장 간단합니다.
Reg Edit

몇 가지 오래된 질문을 재 방문하고 언급 한 Uwe Sieber removedrive.exe에 대한 링크를 확인했으며 동일한 메커니즘을 통해 작동한다는 느낌이 들었습니다. 물리적 드라이브 (iSCSI 볼륨처럼 에뮬레이트되거나되지 않음)를위한 것이고 후자는 마운트 된 파티션 / 볼륨을위한 것입니다 (예 : C :, X : 등). "-e"옵션을 사용했습니다. removedrive.exe 지침에 따라 : ""[-e] 제거에 실패하면 분리하고 꺼내십시오 ""
Rook

마지막으로, Uwe Sieber 자신이 코드 / API 및 오류 수준에서 작동중인 메커니즘의 토대를 설명하는 것처럼 보입니다 : codeproject.com/Articles/13839/…
Rook

10

오늘은 이벤트 로그를 살펴 보았습니다. 제거 시도 직후에 이것을 발견했습니다.

로그 : 시스템, 소스 : Kernel-PnP, 이벤트 ID : 225, 레벨 : 경고

프로세스 ID가 6436 인 응용 프로그램 \ Device \ HarddiskVolume2 \ Windows \ System32 \ Taskmgr.exe가 장치의 제거 또는 꺼내기를 중지했습니다 [...]

그래서 작업 관리자를 닫고 안전 제거가 작동했습니다.


우수한! 이것은 나를 위해 문제를 해결했습니다. 이제 "프로그램"이라는 메시지가 대화 상자에 여전히 드라이브를 사용하고 있다는 정보를 Microsoft가 왜 넣을 수 없었습니까!
Reg Edit

좋아, 이것은 나에게도 문제를 해결했다. Windows 10. 자동 시작에 Taskmgr이 있음을 발견했습니다. 그렇다면 왜 Taskmgr이 USB 드라이브를 잠그나요?
weberjn

오프 라인 (@rook의 답변 참조)과 fsutil이 과거에는 효과가 있었지만 오늘은 그렇지 않았습니다. ProcessExplorer는 잠금을 수행하는 것은 단지 "시스템"이라고 생각했습니다. 어쨌든 EventViewer는 당신과 같은 범인을 보여 주었으므로 (TaskManager), 나는 그것을 닫았고 황금색이었습니다.
mpag

5

볼륨을 "잠금 해제"하기 위해이 배치 스크립트를 작성했습니다. .bat 스크립트를 관리자 권한으로 실행하고 볼륨을 선택한 다음 ENTER를 누릅니다. 그런 다음 평소와 같이 "안전 제거"를 사용하여 장치를 분리 할 수 ​​있어야합니다.

@echo off
@cls

set tempfile="%TEMP%\diskscrp.dsk"

echo.
echo   === Disk removal tool ===
echo.
echo   Select the disk volume number
echo   (if the disk has multiple volumes, select any of them)
echo.
echo list volume | diskpart | findstr /C:Volume /C:---
echo.
set /p volume="   Selected volume: "
echo.

echo select volume %volume% >>%tempfile%
echo offline disk >>%tempfile%
echo online disk >>%tempfile%

diskpart /s %tempfile% | findstr /C:"not valid"

if "%ERRORLEVEL%"=="1" (
  echo   Disk has been unlocked successfully.  Try to safely remove it now.
)

del /F %tempfile%

이 스크립트는 @Rook 제안을 기반으로하므로 diskpart디스크를 오프라인으로 만드는 데 사용 됩니다. 이 작업이 완료되면 모든 핸들이 강제로 닫힙니다. 이 스크립트의 차이점은 자동으로 디스크를 온라인 상태로 되돌 리므로 다음에 시스템에 연결할 때 인식 할 수 있다는 것입니다.


단! 그것을 사용하지만 난 다른 사람보다 쉽게 제작에 주도권을 감사하지 않은 ... 나는 더 많은 정보를 줄 몇 가지 다른 유틸리티 (즉, 핫스왑! : 왔 mt-naka.com/hotswap/index_enu.htm ) 약을 내장형 Windows보다 이동식 / 고정 드라이브이지만 빠르고 더러운 오프라인 기반 솔루션을 찾지 못 했으므로 이것이 좋습니다!
Rook

3

대부분의 외장 드라이브 / Windows OS 콤보에이 문제가있을 수 있습니다.

내가하는 일은 내 상자 (노트북)를 자고 외부 드라이브의 전원이 꺼질 때까지 10 초 정도 기다려야합니다 (들을 수 있습니다). 그런 다음 플러그를 뽑습니다.

시스템이 휴면 상태이면 모든 I / O 조작이 완료되고 I / O 버스가 정지됩니다. 드라이브 전원이 꺼질 때까지 기다리는 것이 그 위에 "벨트 및 멜빵"입니다.

(해당 접근 방식에 너무 편집증이있는 경우 최대 절전 모드를 수행하는 것으로 충분합니다. 전체 전원을 끌 필요는 없습니다.)


해결 방법이지만 작동해야합니다.
Dennis G

1

지금은 컴퓨터를 종료 한 다음 플러그를 뽑아 외부 연결을 끊으려고 시도 할 수 있습니다. 따라서 데이터 손실을 시도한 다음 마운트를 해제하지 않고 간단히 플러그를 뽑을 때 데이터 손실을 방지하기 위해 쉽게 제거 할 수 있도록 설정하십시오.

솔직히 말하면 드라이브가 항상 연결되어있는 것처럼 붙어있는 MBR 오류와 같은 소리가납니다.이 경우 전원을 켠 상태에서 드라이브를 분리하면 MBR이 손상되고 수동으로 수리하는 2 가지 옵션이 남을 수 있습니다 MBR 또는 MBR 복구와 같은 소프트웨어를 사용하여 드라이브에 다시 액세스하거나 gparted와 같은 소프트웨어를 사용하여 디스크를 다시 포맷하고 오류가 발생할 가능성이 가장 높은 새 파티션 테이블을 설정하십시오.


"그런 다음 쉽게 제거 할 수 있도록 설정" <-무슨 뜻인지 자세히 설명해 주시겠습니까? 드라이브가 항상 연결되어 있다고 생각한다는 것을 어떻게 알 수 있습니까 (예 : 외장 USB 드라이브가 아님)?
Dennis G

전원이 꺼진 상태에서 드라이브를 분리 한 후 컴퓨터를 다시 시작하면 속성, 하드웨어, 드라이브, 속성, 정책을 클릭하고 빠른 제거를 위해 최적화하십시오. 편집 : 귀하의 질문에 당신은 그것이 실제로 외부 USB 드라이브라고 진술합니다.
user88311

대부분의 경우 시스템은 "빠른 제거"플래그가 설정된 외부 드라이브를 설치합니다. 그리고이 설정은 단순히 드라이브의 플러그를 뽑는 것만으로도 문제가 발생할 가능성이 "높지 않을 것"으로 예상됩니다.
Daniel R은

1

이 파일은 TxF (Transactional NTFS)에 속한다고 생각합니다.

Transactional NTFS가 자동 업데이트에 사용된다고 들었지만 시스템이 외부 디스크에 이것을 배치 한 다음 안전한 제거 요청시이를 중지 할 수없는 이유는 없습니다. Fsutil 리소스 정보에 활동이 표시되지 않습니다.

cmd 콘솔에서 시도하십시오.

fsutil 리소스 중지 E :

도움이되지 않으면

fsutil resource setautoreset true

재부팅합니다. 컴퓨터 관리 / 서비스에서 TxF 관련 서비스를 중지 할 수도 있습니다.


이것은 꽤 흥미로운 것들입니다! 다음에 일어날 때 살펴 보겠습니다.
Dennis G

2
그러나 ... 작동하지 않습니다. fsutil resource stop <drive:>sysinternals를 실행할 때 handle.exe핸들이 표시되지 않습니다. 그래서 그들은 제거되었지만 안전하게 제거하려고하면 핸들이 원래 위치로 돌아갑니다.
Dennis G

0

최근에 플래시 드라이브에서도 같은 일이 일어났습니다. 당신처럼, 나는 계속해서 $ Extend 핸들을 보여 주었고 그들이 드라이브를 안전하게 제거하는 것을 방해한다고 가정했습니다. 나는이 질문을 우연히 발견하고 fsutil영향을 미치지 않기 위해 Sem의 제안을 시도했습니다 . 나를 위해 일한 것은 수동으로 드라이브를 마운트 해제하는 것이 었습니다. 플래시 드라이브가 F :로 마운트되었으므로 다음을 실행했습니다.

mountvol f: /d

그런 다음 드라이브의 플러그를 뽑았다가 다시 연결했다가 다시 마운트 mountvol f: <volumename>하여 잠시 동안 사용했습니다. 작업이 완료되면 활성 핸들을 확인하고 이전에 확인한 것과 동일한 $ Extend 항목을 보았습니다. 그래도 '정상적인'안전한 제거를 시도했을 때 활성 핸들에도 불구하고 성공했습니다.

이것이 저에게 효과가 있었는지 모르겠지만 다른 사람을 돕기 위해 여기에 추가하고 있습니다.


나는 $ extend 재료가 붉은 청어라고 생각합니다. Windows가 드라이브를 분리하지 못하게하는 다른 이유가 있습니다.
Daniel R은

그 답변이 제가이 답변을 게시 한 가장 큰 이유라고 동의했습니다. 나는 무의미하게 $ extend 이슈를 쫓아 왔고, 그 핸들이 안전한 제거에 아무런 문제를 일으키지 않는다는 것을 발견했다. 나는 그 빨간 청어 가이 질문에 나를 데려 갔기 때문에이 답변이 다음의 불행한 어부에게 도움이되기를 바랍니다. :).
ajk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.