설치된 다른 장치의 숨겨진 경로에서 장치를 제거하는 방법은 무엇입니까?

설치된 다른 장치의 숨겨진 경로에서 장치를 제거하는 방법은 무엇입니까?

나는 가지고있다오래된 장비에 설치하다/mnt그리고:

$ mount olddevice /mnt

기기를 바꾸고 싶어요/mnt마운트 지점. 이렇게하려면 간단히 설치하면됩니다.새 장치그 위에:

$ mount newdevice /mnt

이런 방식으로 프로세스에는 여전히 파일 설명자가 있습니다.오래된 장비기존 장치에서 계속 작업할 수 있지만 새로운 프로세스에서는/mnt사용할 것이다새 장치.

언제 감지할 수 있나요?오래된 장비더 이상 사용하지 않아 제거하기로 결정했습니다. 내 질문은 제거하는 방법입니다.

$ umount olddevice
umount: olddevice: umount failed: Invalid argument.

직접 제거할 수 있나요? 아니면 강제로 제거하시겠습니까?새 장치우선 (나는 그것을 원하지 않는다)?

답변1

기본적으로 마운트 전파가 활성화된 systemd를 아직 실행하지 않은 경우 먼저 다음 명령을 실행합니다.

mount --make-rshared /

그 다음에:

mkdir /root.orig
mount --rbind / /root.orig
mount --make-rprivate /root.orig/mnt

mount newdevice /mnt
...
umount -R /root.orig/mnt    # instead of umount olddevice

그런 다음 마법을 안전하게 분해하십시오. 전체 시스템을 제거하지 않도록 주의하십시오.

mount --make-rprivate /root.orig
umount -l /root.orig
rmdir /root.orig

일반적으로 나는 mount/ 명령 umount의 재귀 변형을 사용하는 것을 좋아합니다. 처음에는 아래에 파일 시스템만 마운트했다고 말씀하셨습니다 /mnt. 위의 순서에서는 umount -R /root.orig/mnt.아들디렉토리를 사용 /mnt하면 이 umount -R명령이 중간에 실패할 수 있습니다. 이는 하위 마운트에는 열린 파일이 없지만 기본 마운트에는 여전히 열린 파일이 있기 때문입니다. IMO 이것은 umount -l작동 방식과 비슷하다고 느낍니다. umount -l /path마운트 트리를 분해하고 분리하면 열려 있는 파일이 없는 즉시 각 개별 파일 시스템이 닫힙니다.

관련 정보