Linux, 일시적 충돌 후 HDD 상태를 ReadOnly에서 변경하는 방법은 무엇입니까?


17

현재이 문제에 대한 답변은 없습니다.

일반적으로 읽기 또는 블록 장치 쓰기에 문제가 발생한 후 커널은 WHOLE DEVICE의 플래그를 읽기 전용으로 전환하기로 결정합니다. 이 후에는이 장치에있는 파티션 / 파일 시스템에 쓰면 쓰기가 불가능하므로 장치 상태와 함께 읽기 전용으로 전환합니다.

dmesg의 예입니다. 조각 모음이 게스트 장치 이미지를 가져올 때 VirtualBox를 사용하는 windows8의 게스트 Linux에 대한 시뮬레이션입니다.

[11903.002030] ata3.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x6 frozen
[11903.003179] ata3.00: failed command: READ FPDMA QUEUED
[11903.003364] ata3.00: cmd 60/08:00:a8:77:57/00:00:00:00:00/40 tag 0 ncq 4096 in
[11903.003385]          res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[11903.004074] ata3.00: status: { DRDY }
[11903.004248] ata3: hard resetting link
[11903.325703] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[11903.327097] ata3.00: configured for UDMA/133
[11903.328025] ata3.00: device reported invalid CHS sector 0
[11903.329664] ata3: EH complete
[11941.000472] ata3.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x6 frozen
[11941.000769] ata3.00: failed command: READ FPDMA QUEUED
[11941.000952] ata3.00: cmd 60/08:00:c8:77:57/00:00:00:00:00/40 tag 0 ncq 4096 in
[11941.000961]          res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[11941.001353] ata3.00: status: { DRDY }
[11941.001504] ata3: hard resetting link
[11941.320297] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[11941.321252] ata3.00: configured for UDMA/133
[11941.321379] ata3.00: device reported invalid CHS sector 0
[11941.321553] ata3: EH complete
[11980.001746] ata3.00: exception Emask 0x0 SAct 0x11fff SErr 0x0 action 0x6 frozen
[11980.002070] ata3.00: failed command: WRITE FPDMA QUEUED
[11980.002255] ata3.00: cmd 61/18:00:28:23:59/00:00:00:00:00/40 tag 0 ncq 12288 out
[11980.002265]          res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
-------------------
There are many other errors, like "lost write page", "Journal has aborted", "Buffer I/O error", "hard resetting link" and many others.

그런 다음 원인을 다시 마운트하십시오.

mount / -o remount,rw
mount: cannot remount block device /dev/sda1 read-write, is write-protected

rootfs sda1을 유지하는 전체 장치가 읽기 전용이기 때문입니다.

내 경험상 이것은 상황에서 발생합니다.

  1. HDD가 실제로 손상되었습니다. 반환 된 쓰기 문제는 HDD 상태에 따라 다릅니다
  2. 호스트 시스템이 오버로드 된 후 Linux 게스트 가상 HDD 쓰기 시간이 초과되었습니다.
  3. FC 케이블 또는 SAN 장치 (파이버 채널을 통한 어레이 디스크) 과부하
  4. FC 또는 FCoE에서 일시적으로 연결이 끊어졌습니다. FC 패킷이 손실되거나 시간이 초과되었을 수 있음

이 상황에서 장치는 실제로 읽기 / 쓰기이지만 Linux 커널은이 장치를 내부적으로 읽기 전용으로 표시하고 읽기 전용으로 사용합니다. 이것은 손상 방지를 위해 만들어진 커널 기능이지만 1 시점에서만 사용할 수 있습니다.

질문은 커널에 수동으로 알려주는 방법, hdd 블록 장치가 정상적으로 작동합니까?

이것을 끝내면 커널은 'CD-ROM'과 같은 읽기 전용 장치로 사용되며 mount / remount -o read-write, fsck 등을 포함한 다른 명령은 제대로 작동하지 않습니다.

도움이 필요하지만 문제의 성격에 대해 이해하지 못하는 사람들의 스팸으로 자격이 부여 된 사용할 수없는 성향 :

  1. 읽기 / 쓰기로 다시 마운트 해보십시오 (불가능, 장치는 RO 임)
  2. fsck this (무엇을 위해? 장치는 RO입니까, 수리가 불가능합니다)
  3. '몰라요'(먼저 의미는 있지만 사용할 수 없음)
  4. '기기 교체'* (보통 문제는 다른 것입니다)

위의 질문에 대한 공식이 있습니까? 읽기 전용 상태에서 읽기 / 쓰기 상태로 되 돌리는 쓰기 가능한 블록 장치의 스위치 플래그 현재로서는 아무도 아는 사람이없는 것 같습니다.

몇 가지 해결 방법이지만 일반적으로 반 이용 또는 사용할 수 없습니다.

  1. 모듈 제거는 지정된 hdd 또는 스토리지 배열에 대한 액세스를 지원합니다. 불행히도 일반적으로 손상된 장치는 rootfs를 유지하거나 드라이버는 손상된 장치와 rootfs를 유지하는 장치를 유지합니다
  2. 장치에 대한 FC 액세스를 제거하고 가능하지는 않지만 항상 작동하는 것은 아닙니다 (fctools).
  3. 전체 기계를 다시 시작하십시오. 일반적으로 이것은 항상 가능하며 우리는 항상 강요합니다.

1 번과 2 번 지점에서 커널에게 장치를 완전히 분리했다가 다시 연결한다고 알려줍니다. 커널은이 기능을 올바르게 작동하는 새로운 장치로 인식했습니다. USB 장치와 순간 제거 전원을 사용하여이를 시뮬레이션 할 수 있습니다. 포인트 3은 마지막 기회이며 일반적으로 작동합니다. 그러나 왜 우리 모두를 다시 시작해야합니까? 불행히도 모든 시점에서 우리는 모든 저널 업데이트와 더티 버퍼를 잃었습니다.

같은 상황에서 Windows (데스크톱 및 서버)에 문제가 없습니다.


대답은 아니지만 # 2 (높은 호스트로드, 게스트 hdd 시간 초과) 인 경우 관련 : 게스트 시스템의 hdd 시간 초과로 인한 파일 시스템 손상을 방지하려면 Linux hdd 시간 초과를 늘리십시오.
basic6

@Znik,이 게스트 가상 머신은 Citrix XenServer에서 실행됩니까? 아니면 물리적 하드웨어? 스토리지 서버는 이더넷에서 미니 Sas로 연결됩니다. 이 브리지 머신 패닉이 발생하면 강제로 재부팅해야합니다. Windows 게스트 VM이 다시 나타납니다. Linux 게스트 가상 머신은 동일한 문제를 나타냅니다. 여기서 제안 된 것은 마운트 포인트를 다시 rw로 가져 오지 않습니다.
rjt

@rjt, 이것은 많은 상황에서 발생합니다. 주요 상황은 물리적 손상, 장치 과부하, 케이블 연결, 외부 FC over Eth 및 eth 과부하와 같은 문제로 인해 장치가 매우 느려지는 경우입니다. 전송 블록, 시간 초과, 패킷 손실 등의 경우 스위치 재설정이 일반적으로 발생합니다. 읽기 전용으로 표시됩니다. 재부팅은 해결책이 아니며 주요 질문 / 문제 설명에 설명 된대로 해결 방법입니다.
Znik

답변:


12

blockdev --setrw또는 시도hdparm -r 0


고마워, 이것은 유용해야합니다. FC 컨트롤러에서 시간 초과를 기다리는 중입니다.
Znik

추가해야 할 중요한 부분 : 때로는 fsck다시 마운트하기 전에 읽기 전용 파일 시스템에서 수행해야 할 경우가 있습니다.
Evi1M4chine

3
나를 위해 일하지 않았다. 나는 비슷한 문제가있다
jonneymendoza

1
fsck로도 나를 위해 작동하지 않았습니다. Citrix XenServer Linux 게스트
rjt

작동하지 않는 ! 이 명령은 효과적이지만 동글은 여전히 ​​RO입니다. (소프트웨어이지만 어디서부터 ???) 시도하고 싶다면 데비안 iso 9.4를 사용하십시오.
Sandburg

5

Jose Luis Martin이 blockdev 사용을 제안한 것처럼, 2cent는 rw와 forcefsck를 다시 마운트하는 것입니다

(sda가 디스크라고 가정)

blockdev --setrw /dev/sda
mount /dev/sda -o remount,rw
touch /forcefsck

1
없이는 마운트 할 수 없기 때문에 바로 fsck전에 실행하는 것이 더 합리적 입니다. (내 경우에는 최소한 그것은했다.)mountfsck
Evi1M4chine

`# blockdev --setrw / dev / xvda1 # # touch / tmp / date +%Y%m%d-%H%M%Stouch : 터치 할 수 없습니까? / tmp / 20170722-221904 ?: 읽기 전용 파일 시스템 # # mount -o remount, rw / dev / xvda1 [137010.709883] EXT4 -fs error (device xvda1) : ext4_remount : 4824 : 사용자 마운트로 강제 중단 : 블록 장치 / dev / xvda1 읽기 / 쓰기를 다시 마운트 할 수 없음, 쓰기
금지됨

2

이 위키 페이지를 확인하십시오. libata에 의해 발생한 오류가 설명되어 있습니다.

https://ata.wiki.kernel.org/index.php/Libata_error_messages

위에서 본 것에서 언급 한 문서에 따라 시간 초과 문제가 발생했습니다.

컨트롤러가 활성 ATA 명령에 응답하지 못했습니다. 여러 가지 원인이있을 수 있습니다. 대부분의 경우 이는 관련 인터럽트 하위 시스템 버그 ( 'pci = nomsi'또는 'acpi = off'또는 'noapic'로 부팅 시도)로 인해 발생하며, 이는 하드웨어에서 인터럽트를 예상 할 때 인터럽트를 전달하지 못했습니다.

ACPI를 비활성화하거나 (배포에 따라 방법을 확인) 커널에 알려진 버그가 있는지 확인하고 최신 버그가 아닌 경우 업데이트하십시오 (또는 다운 그레이드).


예, 이것은 실제로 시간 초과입니다. 일반적으로 이는 어레이 장치가 과부하 상태 일 때 FC 컨트롤러에서 발생합니다. 로컬 ATA 서브 시스템에서는 일반적으로 하드웨어 버그 또는 드라이버 / 칩셋 구현입니다.
Znik

타임 아웃인가요? 글쎄요 sudo hdparm -I /dev/sdX | grep locked? 그것은 해야한다 말 : '잠겨 있지'. ATA 암호 로 HDD를 잠글 때마다 과거에 이러한 수수께끼의 시간 초과가 표시되었습니다 (이전 보안 지우기 및 시스템 충돌로 인해 보안 암호가 다시 지워지지 않음). 이 암호는 실제로 신경에도 큰 영향을 미칩니다 . :) HD 드라이브 공급 업체가 제공 한 표준 도구조차도 암호가 활성화되면 HDD가 곧 죽는 것처럼 미친 듯이 행동합니다. 년을 찢어 머리의 수많은 다발에 대한 원인.
syntaxerror

1

Windows 10에서 재부팅하고 전원 옵션으로 이동하여 빠른 종료를 끄십시오. 그런 다음 리눅스로 재부팅하십시오 ..gbamm 모두 괜찮습니다.

Windows 10의 빠른 종료는 일부 파일을 최대 절전 모드로 만들고 드라이브가 부분적으로 사용됩니다. 그래서 리눅스는 바쁘다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.