사용 중인 디스크를 읽기 전용 모드로 다시 마운트

사용 중인 디스크를 읽기 전용 모드로 다시 마운트

디스크 파티션을 읽기 전용 모드로 강제 설정하고 30분 이상 읽기 전용 상태를 유지하고 싶습니다.

내가 시도한 것:

  1. mount -o remount,ro (partition-identifier) (mount-point) -t (filesystem)

    질문: 일부 프로세스가 파티션을 사용하고 있기 때문에 장치 사용 중 오류가 발생합니다. 디스크를 사용하여 프로세스를 종료하고 싶지 않습니다. 프로세스가 디스크를 사용하고 있는 동안 갑자기 읽기 전용이 되는 디스크를 시뮬레이션하고 싶습니다.

  2. 아래와 같이 매직 sysrq 키를 사용하십시오.

    echo u > /proc/sysrq-trigger
    

    질문: 이렇게 하면 모든 디스크 파티션이 읽기 전용으로 설정됩니다(장치가 사용 중이더라도). 하지만 20~30분 후에 기기가 자동으로 다시 시작됩니다. 일부 시스템은 이 명령을 실행한 후 즉시 재부팅됩니다. 이 다시 시작의 원인은 확실하지 않습니다. 머신이 저절로 재부팅되는 것을 원하지 않으며 디스크를 30분 이상 읽기 전용 모드로 유지해야 합니다.

질문: 단일 디스크 파티션을 강제로 읽기 전용으로 설정하고 30분 동안 해당 상태를 유지한 다음 프로세스에서 재부팅을 일으키지 않고 읽기-쓰기 모드로 되돌리는 더 좋은 방법이 있습니까?

답변1

일반적으로 프로세스에 쓰기 위해 열려 있는 파일이 있거나 삭제되었지만 아직 열려 있는 파일이 포함되어 있는 경우 파일 시스템을 읽기 전용으로 다시 마운트하는 것은 불가능합니다. 마찬가지로 파일이 열려 있는 상태(또는 현재 디렉터리가 있는 프로세스, 실행 중인 실행 파일 등 유사한 파일 사용)가 있는 파일 시스템을 마운트 해제할 수 없습니다.

umount -l마운트 지점 해제를 사용하여 추가 파일이 열리지 않도록 할 수 있지만 , 파일 시스템을 마운트한 상태로 유지하고 이미 열려 있는 파일이 실행 중인 프로세스를 유지할 수 있습니다.

파일 시스템을 읽기 전용으로 다시 마운트해서는 안 되는데 강제로 다시 마운트하는 일반적인 방법은 생각나지 않습니다. 그러나 파일 시스템이 블록 장치에 의해 지원되는 경우 다음을 수행할 수 있습니다.블록 장치를 읽기 전용으로 만들기,예를 들어

echo 1 >/sys/block/dm-4/ro
echo 1 >/sys/block/sda/sda2/ro

echo u > /proc/sysrq-trigger모든 파일 시스템에 영향을 미치므로 읽기 전용으로 다시 마운트하는 다소 극단적인 방법입니다. 이는 재부팅하기 전에 파일 시스템을 깨끗하게 유지하는 최후의 수단 방법입니다.

파일 시스템을 읽기 전용으로 다시 마운트해도 재부팅되지 않습니다. 재부팅의 원인은 파티션을 읽기 전용으로 다시 마운트하는 것과 직접적인 관련이 없습니다. 전혀 관련이 없을 수도 있고 이로 인해 응용 프로그램에 버그가 발생하여 응용 프로그램이 회전하고 프로세서가 과열되어 프로세서에 결함이 있거나 오버클럭되어 결국 재부팅될 수도 있습니다. 다시 시작하는 이유를 알아내야 합니다.

답변2

강제 옵션 사용 mount(설치에 옵션이 있다고 가정, GNU mount는 없지만 BSD와 macOS는 있음):

mount -f -o remount,ro /mount/point

물론 실제 파일 시스템, 커널 버전, 상황에 따라 마일리지가 달라질 수 있습니다., 따라서 이것은 언급된 @Gilles와 같은 다른 낮은 수준의 트릭을 시도하기 위한 더 높은 수준의 옵션일 뿐입니다.

관련 정보