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


19

디스크 파티션을 읽기 전용 모드로 설정하고 30 분 이상 읽기 전용으로 유지하려고합니다.

내가 시도한 것 :

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

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

  2. 아래와 같이 매직 sysrq 키를 사용했습니다.

    echo u > /proc/sysrq-trigger
    

    문제 : 장치가 사용 중이더라도 모든 디스크 파티션을 읽기 전용으로 만듭니다. 그러나 20-30 분 후에 컴퓨터가 재부팅됩니다. 이 명령이 실행되면 일부 시스템이 즉시 재부팅됩니다. 이 재부팅의 원인이 무엇인지 확실하지 않습니다. 컴퓨터가 스스로 재부팅되는 것을 원하지 않고 30 분 이상 동안 디스크를 읽기 전용 모드로 유지해야합니다.

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


3
당신은 고려 했습니까 fsfreeze -f? 파일 시스템을 읽기 전용으로 정확하게 다시 마운트하지는 않습니다. 대신까지 모든 작성자를 차단합니다 fsfreeze -u. 그러나 그것은 비슷합니다 ...
Celada

감사합니다 Celada! 그게 좋은 생각이야! .. 지금은 내 컴퓨터에서 작동하는 fsfreeze가 없지만 이것을 시도 할 것입니다.
AdithyaCS

나는 시도 fsfreeze -f하고 내 경우에는 더 "OS 동결"이었다. 쓰기가 거부되지 않고 차단 되었기 때문일 수 있습니다.
Piotr Findeisen

fsfreeze시스템에 액세스 할 수 없게되었고 터미널로 다시 전환 할 수없는 고정 해제 명령을 입력 할 수 없어 내 컴퓨터를 재부팅해야했습니다. 따라서 경고하십시오 ! :)
Alex

답변:


16

프로세스에 쓰기 위해 열려있는 파일이 있거나 삭제되었지만 여전히 열려있는 파일이있는 파일에는 일반적으로 파일 시스템을 읽기 전용으로 다시 마운트 할 수 없습니다. 마찬가지로 파일이 열려있는 파일 시스템 (또는 현재 디렉토리가있는 프로세스, 실행중인 실행 파일 등의 유사한 파일 사용)을 마운트 해제 할 수 없습니다.

umount -l마운트 지점을 해제하고 추가 파일을 열지 못하게하는 데 사용할 수 있지만 파일 시스템을 마운트 된 상태로 유지하고 이미 열려있는 파일이있는 프로세스를 정상적으로 실행합니다.

파일 시스템을 강제로 읽기 전용으로 다시 마운트하지 않아야 할 일반적인 방법은 생각할 수 없습니다. 그러나 파일 시스템이 블록 장치에 의해 백업되는 경우 블록 장치를 읽기 전용으로 만들 수 있습니다 ( 예 :

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

echo u > /proc/sysrq-trigger모든 파일 시스템에 영향을 미치기 때문에 다시 마운트를 읽기 전용으로 강제 실행하는 가장 극단적 인 방법입니다. 이것은 재부팅 직전에 파일 시스템을 깨끗한 상태로 유지하는 최후의 도랑 방법입니다.

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


2
불행히도 이것은 휴대용 솔루션이 아닙니다. 나무 딸기에 나는 얻을 : 나는 실행하면 "사용 권한이 거부되었습니다"echo 1 | sudo tee /sys/block/mmcblk0/mmcblk0p2/ro
표트르 FINDEISEN

.. 그리고 echo u > /proc/sysrq-trigger극단적 일뿐만 아니라 RW를 다시 마운트하려는 경우 다시 부팅해야 할 수도 있습니다. 내가 다시 마운트 다음이 시도하고 할 때 (와 함께 mount..) dmesg말했다 "수 있기 때문에 처리되지 않은 고아 아이 노드 목록이 아닌 다시 마운트 RDWR하시기 바랍니다 언 마운트 / 마운트 할 대신."
표트르 FINDEISEN

@PiotrFindeisen 루트로 실행 했습니까?
hanshenrik

@hanshenrik 내가 그렇게 추측
Piotr Findeisen

4

mount의 강제 옵션을 사용하십시오 (마운트에 마운트가 있다고 가정하면 GNU mount는 그렇지 않지만 BSD 및 macOS는 그렇지 않습니다).

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

물론 마일리지는 실제 파일 시스템, 커널 버전 및 상황에 따라 다를 수 있으므로 @Gilles에서 언급 한 것처럼 다른 하위 수준의 트릭을 시도하는 고급 옵션입니다.


1
@psusi 아니. 내 ext4 /파티션을 다시 마운트 할 수있었습니다 .
Piotr Findeisen

2
내가 생각하고 umount -f있었지만 방금 ro로 다시 마운트하려고 시도했지만 -f로 명령이 오류를 반환하지 않지만 파일 시스템은 실제로 읽기 전용이 아닙니다.
psusi

1
@psusi, 놀랍지 않습니다. 모든 경우에 단일 접근 방식이 작동하는 것은 아닙니다. 이것은 반복적으로 작동했습니다 (문제에 대한 라즈베리의 ext4 루트 파티션). 그리고 오류를 무시 하지 않고 RO로 다시 마운트 하는 것을 의미 하므로 일부는 아니지만 다른 경우에는 효과가 있다고 생각합니다. 죄송합니다. 포함되지 않았습니다.
Piotr Findeisen

13
사람 마운트는 말한다 -f이다 --fake. 인용 : "실제 시스템 호출을 제외한 모든 작업이 수행됩니다. 확실하지 않은 경우 파일 시스템을 마운트하는"가짜 "이 옵션은 -v 플래그와 함께 사용하여 mount 명령이 수행하려는 작업을 결정합니다. 또한 -n 옵션을 사용하여 이전에 마운트 된 장치에 대한 항목을 추가하는 데 사용될 수 있습니다 -f 옵션은 / etc / mtab에서 기존 레코드를 확인하고 레코드가 이미 존재하는 경우 실패합니다 (일반적인 비가 상 마운트, 이 검사는 커널에 의해 수행됩니다). "
Will Manley

3
BSD와 따라서 macOS 마운트 -f 는 실제로 "힘"을 의미합니다.
terdon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.