시스템 디스크에 이상한 상황이 발생했습니다. 이는 부팅 파티션, 스왑 파티션 및 파일 시스템(ext4)의 3개 파티션으로 구성된 Linux 시스템입니다. 며칠 전 저는 읽을 수 없는 디스크가 있는지 확인하고 싶었기 때문에 Pendrive의 knoppix를 사용했습니다(knoppix 이미지에서 부팅 가능한 USB 드라이브를 직접 만들었습니다)... 읽을 수 없는 디스크가 2개 있었습니다!
시스템을 재부팅했을 때 화면에 다음과 같은 오류가 나타나기 시작했습니다.
error: failure reading sector ... from 'hd0'.
여러 번 시도한 끝에 그럽 쉘을 얻었습니다.
Linux Mint를 사용하여 또 다른 부팅 가능한 스틱을 만들고 무엇이 잘못되었는지 확인하려고 했습니다.
디스크 도구를 사용하여 디스크를 검사하면 디스크는 정상이지만 불량 섹터가 8개 있고(이전에도 있었는지 확실하지 않음) 파일 시스템 파티션은 있지만 데이터 파티션은 알 수 없는 유형이라고 나옵니다.testdisk를 실행하려고 합니다. 파티션을 찾았고 슈퍼 블록을 확인하고 파일 시스템 유형(ext4)을 설정하면 테스트 디스크 자체의 데이터를 볼 수 있었지만 여전히 파티션을 마운트할 수 없었습니다.
Testdisk는 e2fsck -p -b 실행을 제안했고 testdisk가 제공한 모든 슈퍼블록을 시도했지만 fsck가 문제를 수정하려고 할 때마다 디스크 쓰기 오류가 발생했습니다.
이 시점에는 시간이 꽤 늦어서 포기하고 하룻밤을 묵었지만 데이터를 여전히 읽을 수 있다는 사실에 다소 안심이 되었습니다.다음 날 놀랍게도 데이터는 더 이상 존재하지 않았습니다. 아마도 일부 fsck를 실행하면 상황이 더욱 악화되었을 것입니다. testdisk가 더 이상 슈퍼 블록 번호를 제공하지 않았기 때문입니다(그리고 무엇을 시도해도 더 이상 파일에서 볼 수 없었습니다). testdisk에서),
Bad magic number in super-block while trying to open /dev/sda3
숫자에 관계없이 이전에 얻은 숫자로 fsck를 실행하려고 하면(저장했습니다)이 시점에서 나는 safecopy로 이미지를 만들고(인정합니다. 가장 먼저 해야 했지만 약간 당황해서 생각하지 못했습니다) 다양한 솔루션을 테스트할 수 있도록 복사했습니다. a 마음에 들지 않는 지점에 도달할 때마다 이미지의 새로운 복사본이 시작됩니다.
내가 시도한 모든 것이 도움이 되지 않습니다. -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
. 또는 순환 장비를 통한 동등한 작동.
참고: 만료되는 디스크와 유일하게 저장된 복사본에 다시 쓰려고 시도하지 마십시오. 복제본의 새 복사본을 가져와 처리합니다.