누락된 슈퍼블록 및 해당 백업이 있는 ext4 디스크에 액세스

누락된 슈퍼블록 및 해당 백업이 있는 ext4 디스크에 액세스

시스템 디스크에 이상한 상황이 발생했습니다. 이는 부팅 파티션, 스왑 파티션 및 파일 시스템(ext4)의 3개 파티션으로 구성된 Linux 시스템입니다. 며칠 전 저는 읽을 수 없는 디스크가 있는지 확인하고 싶었기 때문에 Pendrive의 knoppix를 사용했습니다(knoppix 이미지에서 부팅 가능한 USB 드라이브를 직접 만들었습니다)... 읽을 수 없는 디스크가 2개 있었습니다!

시스템을 재부팅했을 때 화면에 다음과 같은 오류가 나타나기 시작했습니다.

error: failure reading sector ... from 'hd0'.

여러 번 시도한 끝에 그럽 쉘을 얻었습니다.

  1. Linux Mint를 사용하여 또 다른 부팅 가능한 스틱을 만들고 무엇이 잘못되었는지 확인하려고 했습니다.
    디스크 도구를 사용하여 디스크를 검사하면 디스크는 정상이지만 불량 섹터가 8개 있고(이전에도 있었는지 확실하지 않음) 파일 시스템 파티션은 있지만 데이터 파티션은 알 수 없는 유형이라고 나옵니다.

  2. testdisk를 실행하려고 합니다. 파티션을 찾았고 슈퍼 블록을 확인하고 파일 시스템 유형(ext4)을 설정하면 테스트 디스크 자체의 데이터를 볼 수 있었지만 여전히 파티션을 마운트할 수 없었습니다.

  3. Testdisk는 e2fsck -p -b 실행을 제안했고 testdisk가 제공한 모든 슈퍼블록을 시도했지만 fsck가 문제를 수정하려고 할 때마다 디스크 쓰기 오류가 발생했습니다.
    이 시점에는 시간이 꽤 늦어서 포기하고 하룻밤을 묵었지만 데이터를 여전히 읽을 수 있다는 사실에 다소 안심이 되었습니다.

  4. 다음 날 놀랍게도 데이터는 더 이상 존재하지 않았습니다. 아마도 일부 fsck를 실행하면 상황이 더욱 악화되었을 것입니다. testdisk가 더 이상 슈퍼 블록 번호를 제공하지 않았기 때문입니다(그리고 무엇을 시도해도 더 이상 파일에서 볼 수 없었습니다). testdisk에서), Bad magic number in super-block while trying to open /dev/sda3숫자에 관계없이 이전에 얻은 숫자로 fsck를 실행하려고 하면(저장했습니다)

  5. 이 시점에서 나는 safecopy로 이미지를 만들고(인정합니다. 가장 먼저 해야 했지만 약간 당황해서 생각하지 못했습니다) 다양한 솔루션을 테스트할 수 있도록 복사했습니다. a 마음에 들지 않는 지점에 도달할 때마다 이미지의 새로운 복사본이 시작됩니다.

  6. 내가 시도한 모든 것이 도움이 되지 않습니다. -S 옵션과 함께 mkfs를 사용하는 것이 권장된다는 것을 알았습니다. 그러면 슈퍼블록만 다시 빌드할 수 있지만, 그렇게 한 다음 fsck를 실행하면(도구에서 제안하는 대로) 파티션에 다시 액세스할 수 있게 됩니다. 그러나 파티션은 완전히 비어 있습니다. 너무 비어 있어서 photorec도 데이터를 찾을 수 없습니다(mkfs + fsck를 실행하기 전에 이미지에서 데이터를 찾습니다).

이미지 중 하나에서 R-Linux를 실행 중인데 아무 것도 복원할 수 없습니다. 내가 가진 것은 $Inode라는 "파일"뿐이지만 식별할 수 있는 파일이나 디렉터리 구조는 없습니다.

이것이 결과이다smartctl -a /dev/sda

smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-58-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Toshiba 2.5" HDD MQ01ABD...
Device Model:     TOSHIBA MQ01ABD100
Serial Number:    95CEC91QT
LU WWN Device Id: 5 000039 683983c2b
Firmware Version: AX0R2J
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Tue Jun  1 22:30:50 2021 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                    was never started.
                    Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                    without error or no self-test has ever 
                    been run.
Total time to complete Offline 
data collection:        (  120) seconds.
Offline data collection
capabilities:            (0x5b) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    Offline surface scan supported.
                    Self-test supported.
                    No Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:    (   2) minutes.
Extended self-test routine
recommended polling time:    ( 246) minutes.
SCT capabilities:          (0x003d) SCT Status supported.
                    SCT Error Recovery Control supported.
                    SCT Feature Control supported.
                    SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   050    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0005   100   100   050    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0027   100   100   001    Pre-fail  Always       -       1815
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       1377
  5 Reallocated_Sector_Ct   0x0033   100   100   050    Pre-fail  Always       -       8
  7 Seek_Error_Rate         0x000b   100   100   050    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0005   100   100   050    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   053   053   000    Old_age   Always       -       19115
 10 Spin_Retry_Count        0x0033   127   100   030    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       1368
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       275
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       50
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       4455
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       30 (Min/Max 13/49)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       1
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       1
220 Disk_Shift              0x0002   100   100   000    Old_age   Always       -       0
222 Loaded_Hours            0x0032   053   053   000    Old_age   Always       -       18889
223 Load_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
224 Load_Friction           0x0022   100   100   000    Old_age   Always       -       0
226 Load-in_Time            0x0026   100   100   000    Old_age   Always       -       265
240 Head_Flying_Hours       0x0001   100   100   001    Pre-fail  Offline      -       0

SMART Error Log Version: 1
ATA Error Count: 2032 (device log contains only the most recent five errors)
    CR = Command Register [HEX]
    FR = Features Register [HEX]
    SC = Sector Count Register [HEX]
    SN = Sector Number Register [HEX]
    CL = Cylinder Low Register [HEX]
    CH = Cylinder High Register [HEX]
    DH = Device/Head Register [HEX]
    DC = Device Command Register [HEX]
    ER = Error register [HEX]
    ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 2032 occurred at disk power-on lifetime: 19112 hours (796 days + 8 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 41 38 00 d8 16 40  Error: UNC at LBA = 0x0016d800 = 1497088

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 08 38 00 d8 16 40 00   1d+05:06:46.679  READ FPDMA QUEUED
  ef 10 03 00 00 00 a0 00   1d+05:06:46.678  SET FEATURES [Enable SATA feature]
  ef 10 02 00 00 00 a0 00   1d+05:06:46.678  SET FEATURES [Enable SATA feature]
  27 00 00 00 00 00 e0 00   1d+05:06:46.678  READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]
  ec 00 00 00 00 00 a0 00   1d+05:06:46.677  IDENTIFY DEVICE

Error 2031 occurred at disk power-on lifetime: 19112 hours (796 days + 8 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 41 68 00 d8 16 40  Error: UNC at LBA = 0x0016d800 = 1497088

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 08 68 00 d8 16 40 00   1d+05:06:45.909  READ FPDMA QUEUED
  e5 00 00 00 00 00 00 00   1d+05:06:45.669  CHECK POWER MODE
  e5 00 00 00 00 00 00 00   1d+05:06:40.669  CHECK POWER MODE
  e5 00 00 00 00 00 00 00   1d+05:06:35.670  CHECK POWER MODE
  e5 00 00 00 00 00 00 00   1d+05:06:30.669  CHECK POWER MODE

Error 2030 occurred at disk power-on lifetime: 19110 hours (796 days + 6 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 41 30 00 d8 16 40  Error: UNC at LBA = 0x0016d800 = 1497088

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 00 00 e8 fd de 40 00   1d+02:46:45.118  READ FPDMA QUEUED
  60 00 f8 e8 fc de 40 00   1d+02:46:45.117  READ FPDMA QUEUED
  60 00 b8 e8 fb de 40 00   1d+02:46:45.116  READ FPDMA QUEUED
  60 00 b0 e8 fa de 40 00   1d+02:46:45.116  READ FPDMA QUEUED
  60 00 a8 e8 f9 de 40 00   1d+02:46:45.115  READ FPDMA QUEUED

Error 2029 occurred at disk power-on lifetime: 19110 hours (796 days + 6 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 41 a0 00 d8 16 40  Error: UNC at LBA = 0x0016d800 = 1497088

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 00 08 e8 f8 de 40 00   1d+02:46:44.968  READ FPDMA QUEUED
  60 00 00 e8 f7 de 40 00   1d+02:46:44.968  READ FPDMA QUEUED
  60 00 f0 e8 f6 de 40 00   1d+02:46:44.966  READ FPDMA QUEUED
  60 00 e8 e8 f5 de 40 00   1d+02:46:44.965  READ FPDMA QUEUED
  60 00 e0 e8 f4 de 40 00   1d+02:46:44.964  READ FPDMA QUEUED

Error 2028 occurred at disk power-on lifetime: 19110 hours (796 days + 6 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 41 88 00 d8 16 40  Error: UNC at LBA = 0x0016d800 = 1497088

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 00 a0 e8 e8 de 40 00   1d+02:46:44.792  READ FPDMA QUEUED
  60 00 98 e8 e7 de 40 00   1d+02:46:44.791  READ FPDMA QUEUED
  60 00 90 e8 e6 de 40 00   1d+02:46:44.788  READ FPDMA QUEUED
  60 00 78 e8 e5 de 40 00   1d+02:46:44.787  READ FPDMA QUEUED
  60 00 70 e8 e4 de 40 00   1d+02:46:44.786  READ FPDMA QUEUED

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

답변1

마침내 나는 USB 스틱의 라이브 버전을 사용할 때 Knoppix가 내 파티션 테이블을 엉망으로 만들었고 디스크는 실제로 괜찮았으며(일부 불량 섹터 제외) 올바른 파티션을 복구하기 위해 여러 가지 방법을 시도했지만 성공하지 못했다는 것을 깨달았습니다. 효과가있다.
내 질문과 몇 가지 의견에서 말했듯이 mkfs를 사용하면 파티션을 다시 마운트할 수 있지만 데이터가 없으며 분명히 이것이 슈퍼블록을 다시 빌드하는 유일한 방법인 것 같지만 올바른 방법을 찾을 수 없습니다. 그것 .

2주간의 노력 끝에 필요한 모든 중요한 데이터는 어차피 저장소에 저장되어 있기 때문에 모든 것을 포맷하고 처음부터 시작하기로 결정했습니다.

답변2

맹목적으로 무언가를 하기 전에 항상 문서를 읽으십시오. man mkfs.ext4그리고 깃발을 찾으면 그 후에 달려야 한다고 -S알려줄 것입니다 e2fsck.

저장된 디스크 사본에 기록했다면 이제 그 사본도 만료되었을 것입니다. 디스크 복구의 규칙 1은 가능한 한 빨리 복사본을 얻는 것입니다. 규칙 2는 저장된 사본에 절대 쓰지 않는 것입니다.

제가 알아차린 한 가지는 디스크( /dev/sda)와 파티션( /dev/sda3)을 혼동하고 있다는 것입니다. mkfs -S /dev/sda파티션 대신 디스크에 파일 시스템을 다시 만들려고 하다가 문제가 발생한 것이 확실합니까? 파티션 테이블을 복구할 수 있는 경우가능한성공적으로 실행할 수 있습니다 mkfs -S /dev/sda3. 또는 순환 장비를 통한 동등한 작동.

참고: 만료되는 디스크와 유일하게 저장된 복사본에 다시 쓰려고 시도하지 마십시오. 복제본의 새 복사본을 가져와 처리합니다.

관련 정보