나는 가지고있다오래된 장비에 설치하다/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
마운트 트리를 분해하고 분리하면 열려 있는 파일이 없는 즉시 각 개별 파일 시스템이 닫힙니다.