얼마 후, 나는 바인드 마운트가 Linux의 "일반" 마운트와 다르지 않다는 사실을 마침내 알게 되었습니다(마운트 제외 --bind
). /dev/sda1
에 마운트된 경우 바인드가 에 마운트된 경우 /mnt
둘 사이의 유일한 차이점은 파일 시스템의 루트가 에 마운트되는 반면 동일한 파일 시스템의 경로는 (가상/루트 파일 시스템에서)에 마운트된다는 것입니다./mnt/variable_data
/var
/dev/sda1
/mnt
/variable_data
/var
내 질문은 두 가지입니다.
- 실행 중이 아니라고 가정하면
mount /dev/sda1 /mnt
(즉, 실행 중이 아님 ) 내부에 있는 것을/mnt/variable_data
어떻게 마운트합니까 ?/variable_data
sda1
/var
- 위의 내용을 구현하는 방법은 무엇입니까
fstab
?
답변1
가장 쉽고 아마도 유일한 방법은 먼저 설치하는 것입니다 /dev/sda1
. 실수로 인한 변경이 걱정된다면 장치를 읽기 전용으로 마운트해도 되지만,설치 권한 바인딩은 까다로울 수 있습니다.준비해. 그것은 또한과잉 설치장치 상단에 있는 디렉터리입니다. 즉, 일반적인 상황에서는 /dev/sda1
에 마운트 /var
한 다음 /var/variable_data
에 마운트할 수 있습니다 /var
.
이에 대한 한 가지 잠재적인 문제는 설치 프로세스가 원자적이지 않으며 /var
짧은 설치 기간 동안 무언가가 작성될 수 있다는 것입니다. 읽기 전용으로 마운트 /dev/sda1
하더라도 /dev/sda1
쓰기 실패를 처리하는 방법에 따라 문제가 발생할 수 있습니다. 일반적 으로 /var
fstab에는 별도의 파티션이 마운트되어 있으므로 이는 문제가 되지 않습니다.
답변2
매뉴얼 페이지에서mount(2)
, 직접 할 수는 없을 것 같아요. 시스템 호출은 마운트된 파일 시스템의 하위 트리를 고려한 경로를 사용하지 않습니다. 소스 장치, 대상 경로, 파일 시스템 유형, 마운트 플래그( ro
및 같은 공통 옵션 nosuid
) 및 data
파일 시스템 자체에서 해석되는 불투명 필드(파일 시스템별 옵션) 만 있습니다 .
장치를 임시 경로에 마운트한 다음 필요한 하위 트리를 바인드 마운트하고 마지막으로 첫 번째 파일 시스템을 마운트 해제해야 하는 것 같습니다. 제거 외에도 fstab을 통해 이 작업을 수행할 수도 있습니다. 다음과 같은 기능이 Ubuntu에서 작동합니다(systemd 사용).
# fstab
/dev/somedevice /tmpmnt ext4 auto,rw
/tmpmnt/var /var none auto,bind