마운트된 파일 시스템을 읽기 전용으로 다시 마운트하려면 다음 명령을 사용할 수 있습니다.
mount -o remount,ro /foo
/
예를 들어 루트 파일 시스템( )이 호출되기 전에 읽기 전용으로 다시 마운트 되는 종료 시퀀스에서 사용됩니다 halt/reboot
.
읽기 전용으로 다시 마운트하면 실제로 무엇을 합니까? 커널의 일부 "플래그"가 변경되어 쓰기가 거부됩니까?
주어진 파일 시스템을 읽기 전용으로 다시 마운트하는 것 외에는 아무것도 하지 않는 자신만의 프로그램을 작성하는 것이 얼마나 어려울까요?
답변1
파일 시스템 마운트 또는 재마운트는 다음을 사용하여 수행됩니다.mount(2)
시스템 호출. 다시 마운트할 때 대상 위치(마운트 지점), 마운트 작업에 사용된 플래그 및 관련된 특정 파일 시스템에 대한 추가 데이터를 얻습니다. 읽기 전용 모드로 다시 설치할 때 사용되는 플래그는 MS_RDONLY
및 입니다 MS_REMOUNT
. 파일 시스템이 처음 마운트될 때 사용된 다른 플래그도 제공해야 합니다.
읽기 전용 모드에서 파일 시스템을 다시 마운트하면 일부 정리 작업(기본적으로 모든 미해결 쓰기 완료)을 수행한 후 커널의 파일 시스템 데이터 구조에 플래그가 설정됩니다. 어떻게 처리되는지 보실 수 있어요소스 ext4
코드: ext4
파일 시스템이 읽기-쓰기로 마운트된 다음 읽기 전용으로 다시 마운트되면 파일 시스템이 동기화되고 할당량이 일시 중지되며 s_flags
슈퍼블록 구조가 업데이트되어 파일 시스템이 읽기 전용임을 나타냅니다. 그런 다음 커널 전체에서 쓰기를 거부하는 데 사용됩니다.sb_permission
이는 읽기 전용 파일 시스템에 대한 쓰기 액세스를 차단합니다.
이 작업을 직접 수행하려면 mount()
위에 링크된 맨페이지에 따라 적절한 옵션을 사용하여 호출해 볼 수 있습니다. 완벽한 솔루션을 위해서는 현재 마운트 플래그를 확인하고 업데이트해야 한다고 생각합니다. 하지만 현재 마운트된 파일 시스템과 일치하도록 간단한 프로그램을 하드코딩할 수도 있습니다.