파일 시스템을 실제로 강제로 마운트 해제하는 방법 (수동으로 조사하지 않은 이유)


13

왜 바쁜지 조사하지 않고 Linux에서 파일 시스템을 마운트 해제하는 방법은 무엇입니까?

하나의 명령으로하고 싶습니다. 해당 파일 시스템, 서브 마운트, 컨테이너 ( lxc-execute -n qqq <command>) 및 기타 모든 것을 사용하는 응용 프로그램을 처리해야합니다 .

그냥 "마운트를 해제하십시오. 반대는 없습니다!". 특수 커널 패치 또는 구성이 허용됩니다.

파일 시스템은 실제로 마운트 해제되어야하므로 umount -l반드시 옵션이 아닙니다. 예를 들어, cryptsetup remove(BTW how to to 강제 cryptsetup remove? Update : cryptsetup luksSuspend 이지만 cryptsetup luksResumeLUKS가 아닌 경우에는 사용할 수 없습니다)

해당 파일 시스템의 모든 파일 핸들을 유효하지 않게 만드는 방법은 무엇입니까?

내가 아는 유일한 확실한 방법은 FUSE를 통해 파일 시스템을 마운트하는 것입니다 (일반적으로 프로세스를 죽일 수 있기 때문에 FUSE를 마운트 해제하는 데 아무런 문제가 없습니다).

PS는 이미 알고 마운트 fuser, lsof | grep, cat /proc/*/mounts | grep및 사용되지 않는 비 작업 "badfs 패치".

답변:


3

사용 매직 SysRq를 키 콤보 : Alt+ SysRq+u

비상 동기화를 먼저 수행해야합니다. Alt+ SysRq+s

또한 일부 (특히 이상) 키보드에서, 당신은 사용할 필요가 있습니다 PrtSc보다는SysRq


Shift 키는 필요하지 않으며 Alt + SysRq + key 만 있습니다. 언급해야 할 또 다른 사항은 (특히 랩톱 사용자의 경우) Alt를 누르고 SysRq를 눌렀다가 놓은 다음 문자 / 숫자를 눌렀다가 놓은 다음 Alt를 놓을 수 있다는 것입니다. 가장 중요한 것은 모든 파일 시스템을 읽기 전용으로 다시 마운트하기 때문에 파일 시스템을 읽기 전용으로 다시 마운트하는 일반적인 방법이 아니라 강제로 재부팅하기 전에 마지막으로 버리는 것입니다.
Gilles 'SO- 악마 그만'

@Gilles : Shift 키에 대한 팁을 주셔서 감사합니다. 지시 사항을 수정했습니다.
sml

1. 읽기 전용으로 만 다시 마운트됩니다. 그것은 원하는 것이 아닙니다. 예를 들어, 마운트를 해제하고 FUSE를 사용하여 다시 마운트하려고합니다. 2. 나쁜 점은 루트 파일 시스템과 그 이후의 다른 파일 시스템을 "-o remount, rw"하여 정상적인 작업으로 돌아 가야한다는 것입니다.
Vi.

3

umount --force또는 umount -f(동등한)

실패하면 다음을 사용하십시오.

umount --lazy또는 umount --l(동등한)

" lazy "옵션은 "지금 파일 시스템 계층에서 파일 시스템을 분리하고 더 이상 사용하지 않는 즉시 파일 시스템에 대한 모든 참조를 정리합니다. (커널 2.4.11 이상이 필요합니다.)" 불안정성을 유발할 있습니다 . 물건을 마운트 해제합니다. 드라이브를 사용하는 모든 프로그램이 충돌 할 수 있습니다.


물론 --force작동하지 않습니다. 그리고 --lazy실제로 마운트 해제되지는 않습니다. LVM, 루프백 또는 cryptsetup을 해제하지 않습니다.
Vi.

1
umount -f

파일 시스템이 사용 중일 때 강제로 마운트 해제에 사용할 수 있습니다.


1
그것은 나에게 효과가 없었습니다. umount2: Device or resource busy유일한 부분적인 성공은 badfs 패치를 실험했을 때였습니다.
Vi.

나는 같은 "오류"메시지를 받았지만 그럼에도 불구하고 작동했다. 파일 시스템은 umount -f
IanH

3
"lazy umount", umount -l을 시도하십시오. 항상 마운트 해제되지만 불안정한 파일 시스템을 생성 할 수 있습니다.
Jimmy Hedman

이 답변에 대한 Jimmy의 의견은 실제로 최선의 선택이라고 생각합니다. "게으른"마운트 해제로 인해 불안정성이 발생할 수 있지만 파일 시스템을 강제로 마운트 해제해야하는 경우 이미 불안정한 상태라고 가정합니다. 이를 위해 왜 '-l'이 옵션이 아닌가?
deesto

@deesto, Lazy unmount는 undelying block device (LVM volume, LUKS container, loopback)를 참조하지 않습니다.
Vi.

1

하나의 명령 으로이 작업을 수행 할 수있는 방법이 없습니다. umount -f실제로 원하는만큼 원활하게 작동하지 않습니다. 다른 마운트 아래에 서브 마운트가있는 경우 해당 마운트를 임의의 순서로 마운트 해제 할 수 없으며 내려 가기를 바랍니다.

그러나 걱정하지 마십시오.이 모든 것을 하나의 명령으로 만드는 한 가지 방법이 있습니다. 쉘 / 펄 스크립트를 작성하여 원하는 프로세스를 종료하고 컨테이너, 서브 마운트를 마운트 해제하고 마지막으로 다른 마운트를 마운트 해제하십시오. 그런 다음 필요에 따라 스크립트를 호출 할 수 있습니다. 처음에는 더 많은 일을하지만 스크립트가 작동하면 모든 것이 어린이의 놀이입니다. :)


1
수동으로 마운트를 해제 할 수없는 경우는 다음과 같습니다. 1. 다시 시작할 수없는 무정전 절전 프로세스 (드라이버 등) 2. 스토리지 실패 (각 요청이 중단됨). 이 "더러운 마운트 해제"가 이것을 처리하기를 원합니다.
Vi.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.