ext4의 블록 손상 방지

ext4의 블록 손상 방지

나는 달리고 있다

$ uname -a
Linux myhostname 4.14.15-041415-generic #201801231530 SMP Tue Jan 23 20:33:21 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Nitrux
Description:    Nitrux 1.1.4
Release:        1.1.4
Codename:       nxos

ext4시스템 및 스왑 파티션이 있는 하드 드라이브가 있습니다. 하드 드라이브가 스마트 short테스트나 스마트 테스트를 완료할 수 없습니다 long.

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed: read failure       90%     32232         11202419
# 2  Extended offline    Completed: read failure       90%     32229         11202419

디스크를 교체해야 할 수도 있습니다.

그동안 해당 블록을 피하도록 파일 시스템에 간단히 지시하는 것이 가능합니까 LBA? 이렇게 하면 더 이상 읽기/쓰기 오류가 발생하지 않습니다. 실제로 이것은 고립된 오류인 것으로 보이며 하드 드라이브(물론 해당 영역 제외)는 여전히 작동합니다.


SMART 매개변수는 재할당할 섹터도 있지만 0재할당된 섹터도 있기 때문에 이상합니다. 이 드라이브는 약 10년 정도 된 것입니다.

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       19
  3 Spin_Up_Time            0x0027   140   139   021    Pre-fail  Always       -       3966
  4 Start_Stop_Count        0x0032   098   098   000    Old_age   Always       -       2058
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   100   253   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   056   056   000    Old_age   Always       -       32232
 10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0032   100   100   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   098   098   000    Old_age   Always       -       2001
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       206
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       1851
194 Temperature_Celsius     0x0022   103   086   000    Old_age   Always       -       40
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       78
198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline      -       70
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   200   200   000    Old_age   Offline      -       89

내부에링크 페이지선택한 답변이 없습니다. 시스템을 계속 작동시켜야 하는데 이를 피하고 싶습니다 dd(그리고 이 경우 사용 방법에 대한 명확한 예가 없습니다). fsck.ext2 -c마운트된 파일 시스템에서 실행할 수 있나요 ?

답변1

e2fsck매뉴얼 페이지 에서 ( names 및 에도 e2fsck링크됨 ):fsck.ext2fsck.ext3fsck.ext4

마운트된 파일 시스템에서 e2fsck를 실행하는 것은 일반적으로 안전하지 않습니다. 유일한 예외는 -n이 옵션이 지정되거나 -c옵션 이 다음 -l과 같은 경우입니다.-L아니요지정됨. 그러나 그렇게 하는 것이 안전하더라도 e2fsck파일 시스템이 마운트되면 인쇄된 결과가 유효하지 않습니다. 마운트된 파일 시스템을 검사해야 하는지 묻는 경우 e2fsck유일한 정답은 "아니오"입니다. 자신이 무엇을 하고 있는지 잘 아는 전문가만이 이 질문에 다른 방식으로 답하는 것을 고려해야 합니다.

따라서 대답은 "아니요. fsck파일 시스템을 변경하는 어떤 모드에서도 마운트된 ext2/3/4 파일 시스템을 실행할 수 없습니다"입니다.

시작 시 읽기 전용 모드로 마운트되어 있거나 시스템이 여전히 initramfs에서 실행 중인 동안 루트 파일 시스템을 검사할 수 있습니다. 그러나 이 경우 시스템에서 fsck변경이 필요하다고 표시되면 즉시 시스템을 다시 시작해야 합니다.


디스크 블록이 완전히 실패하는 경우, 재시도를 반복하더라도 디스크는 데이터가 올바르게 읽혔는지 확신할 수 없으며 운영 체제에서 내용을 덮어쓸 때까지 디스크는 자동으로 블록을 재할당할 수 없습니다. 올바른 데이터를 가지고 있으면 Yu는 자동으로 데이터를 삭제합니다(데이터 블록을 0으로 대체하여). 그건더 나쁜손상된 데이터는 추가 처리에 사용될 수 있으며 결국 발견될 때까지 다른 결과가 자동으로 손상될 수 있으므로 이를 단순히 읽기 오류를 생성하는 파일과 비교하십시오.

읽기 오류를 생성하는 파일은 중요한 시스템 파일이 아니고 파일이 누락된 경우 시스템이 충돌하거나 복구 도구를 실행할 수 없는 경우를 제외하고 일반적으로 백업에서 쉽게 복원할 수 있습니다.

SMART가 재할당을 보류 중이지만 실제로 재할당되지 않은 섹터를 표시한다는 사실은 단순히 실패한 섹터가 일반적으로 읽기만 하고 실제로 쓰지 않는 시스템 파일에 의해 점유된다는 의미일 수 있습니다. 이러한 파일이 어떤 패키지에 속해 있는지 알아낼 수 있으면 패키지 관리 시스템에 패키지를 다시 설치하도록 지시할 수 있으며, Nitrux는 .deb패키지를 사용하는 것으로 나타나며 apt-get reinstall <package name>실행한 명령도 마찬가지입니다. 이렇게 하면 파일을 덮어쓰게 되어 디스크를 다시 할당할 수 있습니다.

불행히도 일부 디스크 제조업체는 불완전한 SMART 구현으로 디스크를 만들기 때문에 모든 것이 괜찮다고 말하지만 OS가 읽기/쓰기 오류를 보고하면 SMART가 모든 것을 말하더라도 문제가 있는 경우에만 SMART를 신뢰할 수 있습니다. - HDD는 마모 부품이기 때문에 대부분의 경우 디스크가 고장납니다.


저는 20년 넘게 서버 관리 분야에서 다양한 역할을 맡아왔습니다. 10년 이상 된 디스크가 여전히 사용되는 것을 본 우리 팀의 반응은 항상 그랬고 지금도 그렇습니다.

"맙소사! 어떤 이유로든 디스크 회전이 멈춘다면 다시 시작된다는 보장은 전혀 없습니다. 합리적인 가격과 응답 시간으로 이런 오래된 하드웨어의 예비 부품을 구할 수 있을까요? 최소한 필요한 것은 무엇입니까? 해야 할 일 매우 현실적인 계획을 세우세요언제(아니요만약에) 그 일이 실패했다면 가능한 한 빨리 그 오래된 것을 교체하거나 가상화하는 것이 좋습니다. "

우리가 다루는 서버는 평생 동안 거의 매년 하루 24시간 동안 실행되는 것이 사실입니다. 그러나 귀하의 시스템에는 그렇지 않을 수도 있습니다.

그러나 10년 된 디스크가 설계된 세그먼트에 대해 "일반적인" 방식으로 사용된다면 확실히 상승세를 타고 있는 것입니다.욕조 곡선: 설계 수명이 초과되어 낡았습니다.

관련 정보