마운트 지점의 원래 내용에 액세스 지원). RAID가 실패 할 때 머신에

내 헤드리스에 NAS 나는이 sdf1같은 (플래시 카드)를 장착 /하는 동안이 /home에서 장착 lv00(LVM 볼륨이 소프트웨어 RAID의 지원). RAID가 실패 할 때 머신에 액세스하려면 /home/foo/.ssh파일 시스템에 ssh 공개 키 등의 사본이 있습니다 sdf1.
(가) 장착에 의해 숨겨진 파일을 업데이트하려면 /home일반적으로 다시 마운트 I를 lv00의를 /mnt/home, 내가하고 이동해야 할 일을 lv00다시 제자리에.
마운트 해제하지 않고 이것을 달성하는 방법이 /home있습니까?



답변

mkdir /mnt/root
mount --bind / /mnt/root
ls /mnt/root/home/foo/.ssh

를 사용하는 한 --bind(위에있는 것과는 달리 --rbind) 마운트 된 것없이 마운트의 복제본을 얻습니다.


답변

비슷한 것을 달성하려고 노력했지만 ephemient 의 대답은 방법의 의미를 설명하지 못했습니다. 그것은 나에게 실패했고 그래서 나는 여기에 unix.SE에서 거의 같은 질문을 물었다. 코멘트 후 나는 그것을 스스로 알아 내고 대답했다. 이것은이 맥락에 맞게 편집 된 버전의 답변입니다. 이 질문에 찬성하여 다른 질문 (및 답변)을 제거했습니다.

내가하려고했던 것은 다음과 같습니다.

사례

마운트 :

/dev/sda1  on /     type ext4 (rw)
/dev/sdb1  on /data type ext4 (rw)
/data/home on /home type none (rw,bind)

마운트 후 사용자 /폴더 /home/joe가 있습니다 joe. 다른 위치가 마운트되면 ( /data) 전체 홈 폴더 세트를 사용할 수 있으므로 제자리에 바인드 마운트됩니다 ( /data/home on /home). 폴더 /data/home/joe가 있으므로 마운팅에 /dev/sdb1성공하면의 내용을 얻습니다 /data/home/joe. 그렇지 않으면 /home/joe( /dev/sda1!)로 돌아갑니다 .

그것이 성공, 어떻게의 원래 내용에 액세스 할 수 있습니다 /home/joe(에 /dev/sda1!) 대신에서 제자리에 바인딩이 장착 된 사람들 /data/home/joe?

해결책

에 의해 코멘트를 바탕으로 패트릭 내 질문 ephemient에 의해 솔루션 (여기 허용 대답)에의 코멘트, 나는 다음과 함께했다.

이것은 에 명백하게 가능 mount --bind(또는 mount -o bind)이 상위 폴더 ( 이것은 중요한 부분 (A)의 다른 바인드 장착시켜 원래의 내용을 액세스). 내 예제의 경우 다음을 시도하는 대신

mount --bind /home/joe /home/joe/underneath
# or ...
mount --bind /home /home/joe/underneath

(즉, 이미 바인드 마운트 위치를 다른 곳에 마운트)

test -d /.ROOT || mkdir /.ROOT
mount --bind / /.ROOT
mount --bind /.ROOT/home/joe /home/joe/underneath

이것이 패트릭이 그의 의견에서 의미 한 바입니다.

/(루트)를 다시 마운트하지 않는 한 그 대답은 정상적으로 작동합니다.

사용 가능한 바인드 마운트 위치에 대한 상위 폴더가 있으면 위와 같이 하나의 간접 경로로도 작동합니다. 에 /대한 상위 폴더가 없기 때문에 무언가를 바인딩 마운트 하면 운이 좋지 않습니다 /.


답변

다음을 사용하여 마운트를 마운트 해제하지 않고 새 위치로 마운트를 이동할 수 있습니다 mount --move.

$ mount --move /home /mnt/home
do stuff with the local /home
$ mount --move /mnt/home /home


답변