파일 시스템에 특정 경로만 마운트

파일 시스템에 특정 경로만 마운트

얼마 후, 나는 바인드 마운트가 Linux의 "일반" 마운트와 다르지 않다는 사실을 마침내 알게 되었습니다(마운트 제외 --bind). /dev/sda1에 마운트된 경우 바인드가 에 마운트된 경우 /mnt둘 사이의 유일한 차이점은 파일 시스템의 루트가 에 마운트되는 반면 동일한 파일 시스템의 경로는 (가상/루트 파일 시스템에서)에 마운트된다는 것입니다./mnt/variable_data/var/dev/sda1/mnt/variable_data/var

내 질문은 두 가지입니다.

  1. 실행 중이 아니라고 가정하면 mount /dev/sda1 /mnt(즉, 실행 중이 아님 ) 내부에 있는 것을 /mnt/variable_data어떻게 마운트합니까 ?/variable_datasda1/var
  2. 위의 내용을 구현하는 방법은 무엇입니까 fstab?

답변1

가장 쉽고 아마도 유일한 방법은 먼저 설치하는 것입니다 /dev/sda1. 실수로 인한 변경이 걱정된다면 장치를 읽기 전용으로 마운트해도 되지만,설치 권한 바인딩은 까다로울 수 있습니다.준비해. 그것은 또한과잉 설치장치 상단에 있는 디렉터리입니다. 즉, 일반적인 상황에서는 /dev/sda1에 마운트 /var한 다음 /var/variable_data에 마운트할 수 있습니다 /var.

이에 대한 한 가지 잠재적인 문제는 설치 프로세스가 원자적이지 않으며 /var짧은 설치 기간 동안 무언가가 작성될 수 있다는 것입니다. 읽기 전용으로 마운트 /dev/sda1하더라도 /dev/sda1쓰기 실패를 처리하는 방법에 따라 문제가 발생할 수 있습니다. 일반적 으로 /varfstab에는 별도의 파티션이 마운트되어 있으므로 이는 문제가 되지 않습니다.

답변2

매뉴얼 페이지에서mount(2), 직접 할 수는 없을 것 같아요. 시스템 호출은 마운트된 파일 시스템의 하위 트리를 고려한 경로를 사용하지 않습니다. 소스 장치, 대상 경로, 파일 시스템 유형, 마운트 플래그( ro및 같은 공통 옵션 nosuid) 및 data파일 시스템 자체에서 해석되는 불투명 필드(파일 시스템별 옵션) 만 있습니다 .

장치를 임시 경로에 마운트한 다음 필요한 하위 트리를 바인드 마운트하고 마지막으로 첫 번째 파일 시스템을 마운트 해제해야 하는 것 같습니다. 제거 외에도 fstab을 통해 이 작업을 수행할 수도 있습니다. 다음과 같은 기능이 Ubuntu에서 작동합니다(systemd 사용).

# fstab
/dev/somedevice      /tmpmnt      ext4      auto,rw
/tmpmnt/var          /var         none      auto,bind

관련 정보