장치 매퍼 : luks-xxxx에서 ioctl을 제거하지 못했습니다 : 장치 또는 자원이 사용 중입니다


28

컴퓨터를 사용하지 않는 동안 암호화 된 USB 드라이브가 실수로 마운트 해제되었습니다 (현재 물리적으로 연결되어 있음에도 불구하고). 복구 할 수 없습니다 (아직 재부팅을 시도하지 않았습니다). 이제 장치의 연결을 완전히 끊었지만 / dev / mapper에서 매달려있는 항목을 제거하려고하면 여전히 "장치 또는 리소스 사용 중"이 발생합니다. 재부팅하지 않고 드라이브를 다시 연결하고 마운트 할 수 있습니까?

여기 시도한 내용이 있습니다 (긴 이름이 "xxxxx"로 변경됨) ...

$ sudo dmsetup ls
luks-xxxxx (252:1)
luks-yyyyy (252:0)

$ sudo umount /dev/mapper/luks-xxxxx
umount: /dev/mapper/luks-xxxxx: not mounted

$ sudo fuser --kill /dev/mapper/luks-xxxxx
$ echo $?
1

$ sudo dmsetup info -c luks-xxxxx
Name       Maj Min Stat Open Targ Event  UUID
luks-xxxxx 252   1 L--w    1    1      0 CRYPT-LUKS1-xxxxx-luks-xxxxx

$ sudo dmsetup remove luks-xxxxx
device-mapper: remove ioctl on luks-xxxx failed: Device or resource busy
Command failed

장치를 다시 연결 한 후 ...

$ sudo cryptsetup luksOpen "/dev/sde1" "luks-xxxxx"
Device luks-xxxxx already exists.

[편집] 이번에는 파일을 열지 않았지만 해당 장치의 폴더에서 시작된 GUI 텍스트 편집기를 닫아서 문제를 해결했습니다. 질문은 좀 더 구체적이됩니다 . 장치를 열어 놓은 응용 프로그램을 어떻게 알 수 있습니까?

마음에 곰 lsof장치가 연결되면, 때문에 쉬운 해결책을 제시하지 않는 것은,에서 제공하는 관련 이름을 lsof더 이상은 분리 장치의 이름이 포함됩니다.


CentOS에서 동일한 문제가 발생합니다. 이 링크를 찾았습니다 : krenel.org/… 그러나 장치가 장착 된 것을 보여주지 않습니다
Lars Nordin

수정 된 버그 보고서 와 놀랍게도 비슷한 것 같습니다 : bugs.debian.org/cgi-bin/bugreport.cgi?bug=574126
nobar

경고 : 여기에 표시된대로 sudo로 마운트하면 사용자 공간 파일 관리자를 사용하여 정상적으로 배출되지 않을 수 있습니다.
nobar

답변:


27

이것과 2 년간의 싸움 끝에 마침내 나는 그것을 완전히 깨뜨렸다 고 생각합니다!

dmsetup ls 필요한 데이터를 제공합니다.

$ sudo dmsetup ls
luks-xxxxx (252:1)

그때

sudo lsof |grep 252,1

sudo적어도 어떤 경우에는 여기에서 중요한 것으로 보입니다 .


그러면 문제가되는 응용 프로그램의 열린 파일 이름 및 프로세스 ID를 포함하여 장치에서 열려있는 모든 파일을 닫는 데 필요한 정보가 제공됩니다. 단순히 해당 앱으로 이동하여 닫을 수는 있지만 무차별 대입 방식은 다음과 같습니다.

kill -9 (process ID)

모든 파일을 닫은 후에는 기존 마운트를 다시 열기 전에 해당 마운트를 닫으려면 질문에 표시된 일부 명령 줄 도구가 필요할 수 있습니다.


4
필요한 약간의 번역을주의 : (252:1)이된다 252,1.
nobar

12

사이퍼를 중지하기 전에 LVM 그룹을 중지하십시오.

lvchange -a n [LVM_Group_name]

그때

cryptsetup -v luksClose [LUKS_name]

견본:

lvchange -a n My_vg_crypt
cryptsetup -v luksClose My_Crypt

1
@nobar의 답변을 먼저 사용하십시오 (그러나 kill전에 시도하십시오 kill -9). 그러나 @nobar의 솔루션으로는 충분하지 않았습니다 .LVM 장치 매핑으로 인해 커널 자체에 장치가 열려있는 것으로 보입니다.이 답변은 해결되었습니다.
Tom Hale

+1 제 경우에는 허용 된 답변에서 grep일치하는 항목을 찾지 못했지만 정상적으로 작동했습니다.
user000001

4

다음에 게으른 umount를 시도

umount -l /<folder>

이것은 대부분의 경우 저에게 효과적이며 특히 중단 된 NFS 드라이브에 유용합니다.


나는 이것을 시도했지만 당면한 문제에 도움이되지 않았다. 나는 실제로 NFS를 통한 LUKS를 사용할 수 없다고 가정하고, 이것은 암흑의 제안 일뿐이라고 가정합니다.
nobar

D :이 정확히 내 문제이고, 나는 처음으로 매핑 된 스토리지를 마운트 해제해야한다는 것을 잊었다
HOLMS

2

다음은 Linux Mint 17.3 (~ Ubuntu Trusty)에서이 문제를 해결하는 방법입니다.

  1. 장치 매퍼에서 장치 제거

    $ sudo dmsetup remove luks-xxyyzz
    
  2. 다시 매핑

    $ sudo cryptsetup open /dev/sdc1 luks-xxyyzz
    Enter passphrase for /dev/sdc1:
    

이제 장치에 액세스 할 수 있습니다.


2
이 게시물은 누군가에게 도움이 될 수 있지만, 질문에 언급 된 바와 같이 때때로 dmsetup remove"명령 실패" 라고 보고됩니다.
nobar

0

비슷한 상황에 있었지만 luks-xxxx장치 를 제거하여 문제를 해결할 수 없습니다 . 대신 나는 제거해야했다 ubuntu--vg-root.

내 상황은 다음과 같습니다

  • 장치가 잠기기 전에 실수로 장치를 제거했습니다.
  • 잠 그거나에 실패 사실 후 LUKS 장치를 제거하려고 바쁜 오류 메시지.
  • 같은 이름의 장치가 이미 존재하므로 같은 장치를 잠금 해제하지 못했습니다.
  • lsof 장치의 열린 핸들이 표시되지 않았습니다.

실제 장치를 분리 ubuntu--vg-root하고 다음 명령 으로 장치를 제거하는 것이 도움이되었습니다 .

sudo dmsetup remove ubuntu--vg-root

그 시점에서 나는 평소의 설정으로 외부 장치를 정상적으로 활성화하고 해독 할 수있었습니다.

udisksctl unlock -b /dev/sda3
sudo lvchange --activate y ubuntu-vg/root
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.