하드 드라이브에서 읽을 수는 있지만 읽기 전용으로 마운트할 수는 없습니다.

하드 드라이브에서 읽을 수는 있지만 읽기 전용으로 마운트할 수는 없습니다.

내 하드 드라이브에 몇 가지 문제가 있습니다. 문제일 수도 있고, SATA 케이블이 문제일 수도 있습니다. 조사 중입니다. 뭔가 매우 이상합니다.

다음을 사용하여 이 장치에서 원시 데이터를 읽을 수 있습니다.

# cat /dev/gcw/root > /dev/null

하지만 다음 명령을 사용하여 이 장치를 설치하려고 하면:

# mount -o ro /dev/gcw/root /mnt/lvroot

오류가 발생합니다. 데메그는 이렇게 말했습니다.

[ 3561.281369] ata6.01: failed command: WRITE MULTIPLE EXT
[ 3561.281384] ata6.01: cmd 39/00:08:27:92:1c/00:00:39:00:00/f0 tag 0 pio 4096 out
[ 3561.281384]          res 51/84:01:2e:92:1c/84:00:39:00:00/f0 Emask 0x10 (ATA bus error)
[ 3561.281393] ata6.01: status: { DRDY ERR }

내 질문은: 읽기 전용으로 마운트하려고 할 때 OS가 이 장치에 쓰기를 시도하는 이유는 무엇입니까(쓰기를 위해 "WRITE MULTIPLE EXT" 명령)?

답변1

일부 파일 시스템의 경우 읽기 전용 마운트가 쓰기 작업을 트리거합니다. 제가 알고 있는 한 가지 상황은 저널 파일 시스템의 경우입니다. 완전히 마운트 해제하지 않고 마운트하면 읽기 전용 마운트를 사용하더라도 저널 재생이 트리거됩니다.

Linux의 ext3 또는 ext4의 경우 noload마운트 옵션을 전달합니다.

mount -o ro,noload /dev/gcw/root /mnt/lvroot

불행하게도 이로 인해 로그가 메모리에서도 전혀 재생할 수 없게 되어 파일 시스템에 일관되지 않은 데이터가 표시될 수 있습니다.

메모리 계층에 쓰기가 이루어지도록 가상 블록 장치를 생성하면 되지만, 원본 콘텐츠는 디스크 블록 장치에서 제공하는 것이 가능하지 않을까 생각했습니다. 바라보다GNU/Linux: 오버레이 블록 장치/스택 가능 블록 장치귀하와 비슷한 시나리오의 예를 들어보세요.

관련 정보