mount -o remount,ro /가 실제로 수행하는 작업(내부적으로)

mount -o remount,ro /가 실제로 수행하는 작업(내부적으로)

마운트된 파일 시스템을 읽기 전용으로 다시 마운트하려면 다음 명령을 사용할 수 있습니다.

mount -o remount,ro /foo

/예를 들어 루트 파일 시스템( )이 호출되기 전에 읽기 전용으로 다시 마운트 되는 종료 시퀀스에서 사용됩니다 halt/reboot.

읽기 전용으로 다시 마운트하면 실제로 무엇을 합니까? 커널의 일부 "플래그"가 변경되어 쓰기가 거부됩니까?

주어진 파일 시스템을 읽기 전용으로 다시 마운트하는 것 외에는 아무것도 하지 않는 자신만의 프로그램을 작성하는 것이 얼마나 어려울까요?

답변1

파일 시스템 마운트 또는 재마운트는 다음을 사용하여 수행됩니다.mount(2)시스템 호출. 다시 마운트할 때 대상 위치(마운트 지점), 마운트 작업에 사용된 플래그 및 관련된 특정 파일 시스템에 대한 추가 데이터를 얻습니다. 읽기 전용 모드로 다시 설치할 때 사용되는 플래그는 MS_RDONLY및 입니다 MS_REMOUNT. 파일 시스템이 처음 마운트될 때 사용된 다른 플래그도 제공해야 합니다.

읽기 전용 모드에서 파일 시스템을 다시 마운트하면 일부 정리 작업(기본적으로 모든 미해결 쓰기 완료)을 수행한 후 커널의 파일 시스템 데이터 구조에 플래그가 설정됩니다. 어떻게 처리되는지 보실 수 있어요소스 ext4코드: ext4파일 시스템이 읽기-쓰기로 마운트된 다음 읽기 전용으로 다시 마운트되면 파일 시스템이 동기화되고 할당량이 일시 중지되며 s_flags슈퍼블록 구조가 업데이트되어 파일 시스템이 읽기 전용임을 나타냅니다. 그런 다음 커널 전체에서 쓰기를 거부하는 데 사용됩니다.sb_permission이는 읽기 전용 파일 시스템에 대한 쓰기 액세스를 차단합니다.

이 작업을 직접 수행하려면 mount()위에 링크된 맨페이지에 따라 적절한 옵션을 사용하여 호출해 볼 수 있습니다. 완벽한 솔루션을 위해서는 현재 마운트 플래그를 확인하고 업데이트해야 한다고 생각합니다. 하지만 현재 마운트된 파일 시스템과 일치하도록 간단한 프로그램을 하드코딩할 수도 있습니다.

관련 정보