Ubuntu 18.04 でハード ドライブの問題が発生しており、エラーのためにシステムがルート パーティション (/dev/sda4) を読み取り専用としてランダムに再マウントします。
dmesg|grep 'I/O error'
sda4 に明らかな問題があることがわかります。ボックスは正常に再起動され、現時点では問題は発生していないため、正確な出力はわかりません。
私の計画はファイルシステムのファイルシステムチェックを実行することでした。この答え同様にこのチュートリアル注意深く。後者のチュートリアルでは、「systemd を使用している Linux でシステム再起動後に fsck でファイルシステムを強制的にチェックする方法「
ただし、再起動後、次のコマンドの出力からわかるように、ファイル システムはチェックされません。
tune2fs -l /dev/sda4 | grep checked
Last checked: Sat Nov 21 15:36:56 2020
GRUB CMDLINE の次のバリエーションを試しましたが、失敗しました:
GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity fsck.mode=force"
そして
GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity fsck.mode=force fsck.repair=yes"
はい、私は走りましたupdate-grub
。何が足りないのでしょうか?
出力smartctl -a /dev/sda
:
Device Model: Samsung SSD 860 EVO 250GB
Serial Number: S59WNG0MA22770K
LU WWN Device Id: 5 002538 e70265a2a
Firmware Version: RVT03B6Q
User Capacity: 250,059,350,016 bytes [250 GB]
Sector Size: 512 bytes logical/physical
Rotation Rate: Solid State Device
Form Factor: 2.5 inches
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: Unknown(0x09fc), ACS-4 T13/BSR INCITS 529 revision 5
SATA Version is: SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Wed May 3 11:35:14 2023 MST
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: ( 0) seconds.
Offline data collection
capabilities: (0x53) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
No 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: ( 85) 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: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 038 038 010 Pre-fail Always - 311
9 Power_On_Hours 0x0032 095 095 000 Old_age Always - 21420
12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always - 14
177 Wear_Leveling_Count 0x0013 001 001 000 Pre-fail Always - 2041
179 Used_Rsvd_Blk_Cnt_Tot 0x0013 100 100 010 Pre-fail Always - 0
181 Program_Fail_Cnt_Total 0x0032 100 100 010 Old_age Always - 0
182 Erase_Fail_Count_Total 0x0032 100 100 010 Old_age Always - 0
183 Runtime_Bad_Block 0x0013 038 038 010 Pre-fail Always - 311
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0032 067 065 000 Old_age Always - 33
195 Hardware_ECC_Recovered 0x001a 200 200 000 Old_age Always - 0
199 UDMA_CRC_Error_Count 0x003e 100 100 000 Old_age Always - 0
235 Unknown_Attribute 0x0012 099 099 000 Old_age Always - 10
241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 166281511800
SMART Error Log Version: 1
No Errors Logged
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
256 0 65535 Read_scanning was never started
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.
アップデート:
今朝、サーバーが再びクラッシュしました (まだ稼働していますが、/
読み取り専用としてマウントされています)。dmesg には次のように表示されます。
dmesg |grep sda
[70547.166349] sd 0:0:0:0: [sda] tag#13 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70547.166354] sd 0:0:0:0: [sda] tag#13 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[70948.441912] sd 0:0:0:0: [sda] tag#15 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70948.441918] sd 0:0:0:0: [sda] tag#15 CDB: Read(10) 28 00 1a cb 1c 00 00 00 08 00
[70948.441922] print_req_error: I/O error, dev sda, sector 449518592
[70948.442312] sd 0:0:0:0: [sda] tag#16 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70948.442315] sd 0:0:0:0: [sda] tag#16 CDB: Read(10) 28 00 1a cb 1c 00 00 00 08 00
[70948.442316] print_req_error: I/O error, dev sda, sector 449518592
[70948.442955] sd 0:0:0:0: [sda] tag#17 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70948.442960] sd 0:0:0:0: [sda] tag#17 CDB: Read(10) 28 00 0e 0b 03 08 00 00 20 00
[70948.442962] print_req_error: I/O error, dev sda, sector 235602696
[70948.443389] sd 0:0:0:0: [sda] tag#18 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70948.443393] sd 0:0:0:0: [sda] tag#18 CDB: Read(10) 28 00 0e 0b 03 08 00 00 08 00
[70948.443396] print_req_error: I/O error, dev sda, sector 235602696
[72347.211525] sd 0:0:0:0: [sda] tag#19 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[72347.211531] sd 0:0:0:0: [sda] tag#19 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[74147.255746] sd 0:0:0:0: [sda] tag#21 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[74147.255752] sd 0:0:0:0: [sda] tag#21 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[75947.299631] sd 0:0:0:0: [sda] tag#23 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[75947.299637] sd 0:0:0:0: [sda] tag#23 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[77747.345291] sd 0:0:0:0: [sda] tag#25 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[77747.345297] sd 0:0:0:0: [sda] tag#25 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[79547.389376] sd 0:0:0:0: [sda] tag#27 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[79547.389382] sd 0:0:0:0: [sda] tag#27 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[81347.432593] sd 0:0:0:0: [sda] tag#29 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[81347.432598] sd 0:0:0:0: [sda] tag#29 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
ドライブを交換する必要があることは承知していますが、私の目標は単にfsck
ルート パーティションで実行することです。
答え1
あなたが試している解決策を使用して fsck を強制する方法はわかりませんが、別の解決策を提案できます:
tune2fs
非常に低い再マウントと非常に低いタイムスタンプに値を使用して制限します
# To see current settings
sudo tune2fs -l /dev/sda4
# To alter it
sudo tune2fs -c 1 -i 1d /dev/sda4
これにより、1 回の再マウントごと、または前回のチェックから 1 日ごと (どちらか早い方) にチェックが強制実行されます。
スマートチェック
他の人が言っているように、これはハードウェアの問題に対する応急処置にすぎません。HDD が故障している場合もあれば、無関係なハードウェアの問題 (memtest を実行) の場合もあり、SATA ケーブルが緩んでいるだけの場合もあります (両端からプラグを抜いて再度差し込みます。それでも問題が解決しない場合は、別のケーブルを試してください)。
最悪のシナリオとして、PSU が故障して HW の残りの部分に損傷を与える可能性があるので注意してください (このような場合、新しい HDD は時間が経つにつれて PSU によって損傷するため、HDD を交換しても問題は一時的にしか解決しません)。電圧が許容レベル内であることを確認します。
スマートの出力を投稿します:
sudo smartctl -a /dev/sda
何が起こっているのかを診断するのに役立ちます。
アップデート
tune2fs 経由で fsck を実行できない理由もわかりません。
しかし、私はあなたの SMART を見ました。それによると、ディスクは古くなってはいますが、健全なようです。
問題は SATA ケーブルなど、他の場所にある可能性があります。
fsck を動作させることができない場合、私が提案できるのは、liveUsb から起動してコマンドを手動で実行することだけです。
アップデート2
OK、dmseg メッセージを投稿しました。SMARTとOSから矛盾した情報が届いていますなので詳しく書いてみます。
不良ブロック
SMARTは、ドライブに不良ブロックがあると言っています。これは、古くなったSSDでは普通のことです。ドライブはデータをスペア ブロックに再割り当てします。スペアがなくなると、ドライブを交換する必要があります。
SMARTは不良ブロックの量が「正常」範囲内であると報告している: ここで確認する最も重要な属性はReallocated_Sector_Ct
とですRuntime_Bad_Block
。
311 個の不良ブロックが検出され、311 個がスペアに再割り当てされたと表示されます。これは良いことです。不良ブロックが 311 個あったのに再割り当てが 310 個だけだった場合、ブロックの 1 つでデータが失われたことを意味します。
重要なのは「標準化された」値 (038) です。これは、製造元が正常とみなす値を通知する方法です。
100 は完璧、0 は非常に悪いという値です。現在は 38 で、「これは悪くなっています」と表示されています。ただし、メーカーは、この値が 010 (THRESHold) を超えている限りは問題ないと言っています。
ここで初めて矛盾する情報があります。Used_Rsvd_Blk_Cnt_Tot
保護区は全く手つかずのままだというのです不良ブロックがあるにもかかわらず、それは一致しません。
しかし、ファームウェアがこの値を報告しているにもかかわらず、それを追跡しないとしても驚かないので、今のところはこれを無視します。
ウェアレベリング
これは、読み取るのに最も問題のある属性です。Wear_Leveling_Count
001 と表示されます。通常、値 1 はドライブが故障しており、すぐに交換する必要があることを意味します。
これは予備ブロックが不足していることを意味します。ただし、この属性が逆方向に報告されるファームウェアのバグがあり、値 1 はドライブの健全性が 99% であることを意味します。
を使ってTBW計算機書き込まれたLBAの数と512セクターサイズを入力すると、ドライブには77.43TiBが書き込まれていることがわかりました。Googleによると、あなたのモデルは150TBWであるはずなので、すべきまだ実行可能である。
残念ながら、ここでの最善の解決策は、Windowsボックスを起動して実行することです。クリスタルディスク情報これは、これらのファームウェアのバグを考慮し (内部データベースを使用)、非常に正確なヘルス評価を報告します。
あなたのスマートな発言を考えるとSMART overall-health self-assessment test result: PASSED
、1% ではなく 99% と言いたいのではないかと私は思います。
しかし、私が間違っていた場合はここで止めて、ディスクを交換する必要があります。
ケーブルの問題 / マザーボードの問題
Linux の dmesg のエラーは基本的に、セクターを読み取ろうとしたが不正なデータが取得されたことを示しています。
カーネルは、セクター 235602696 を 2 回読み取ろうとしたが、異なるデータが取得されたとさえ言っています。
- 28 00 0e 0b 03 08 00 002000
- 28 00 0e 0b 03 08 00 000800.
ディスクにエラーがないと表示されているのに、OS にはエラーがあると表示されている場合は、転送中にデータが破損しています。通常、これは次のことを示します。
- SATAケーブルが緩く差し込まれている
- SATAケーブルが破損しています
- 電源ケーブルが緩く差し込まれている
- 電源ケーブルが破損しています
- マザーボードバス障害
- PSUの故障
- RAM障害
しかし、ここで矛盾する情報の2番目の情報源: UDMA_CRC_Error_Count
0です。
これは、ディスクが不良/緩んだケーブルや不良なマザーボード バスによって引き起こされたエラーを 1 つも検出しなかったことを意味します。
これは非常にありそうにありません。SMART はディスクに問題がないと示し、OS からディスクに届くコマンドが配線不良によって破損することはありません。しかし、OS は同じセクターを 2 回読み取り、異なるバイトを取得しました。
これを可能にする唯一の方法は、RAM が不良である場合だと考えられます。または、ディスクに入力されるデータはすべて破損しないが、ディスクから出力されるデータは破損するという、極めてまれなケーブルの問題もあります。
行動方針
直感的にはディスクが不良のようです。しかし:
- すべてのデータを別のディスクにバックアップします。LiveUSB 実行時 (および十分な大きさの外付け USB ドライブ) では、次のようになります。
sudo apt install zstd
# To backup
sudo zstd -16v < /dev/sda > /media/external_disk/backup_file.zst
# To restore (don't do that on step 1, see step 5)
sudo zstdcat -v /media/external_disk/backup_file.zst > /dev/sda
- データを再度バックアップしますが、今回は通常のコピー ファイルのみを使用します (ディスクが故障した場合、ディスクの圧縮された zstd イメージをループ マウントしてそこからファイルを読み取るよりも、単純なバックアップから回復する方がはるかに簡単です)
- 再起動してmemtestを実行し、RAMエラーを削除します
- シャットダウンしてケースを開け、SATA ケーブルと電源ケーブル (ドライブ用) を抜き差しします。損傷がないか確認します。場合によっては交換します。
- LiveUSB ドライブを再度起動し、ディスクの安全な消去を実行します。ドライブにバグがある場合は、これで動作可能な状態にリセットされる可能性があります (または、ディスクが修復不可能な場合は、最後に実行したコマンドが実行される場合があります)。これには数分かかるはずです。
sudo blkdiscard -s /dev/sda
sudo zstdcat
ここまでうまくいけば、手順 1 のコマンドを使用してバックアップを復元します。
ディスクにまだ問題があり、memtest が成功した場合、個人的にはディスクが不良であると判断するでしょう。
Reallocated_Sector_Ct
メーカーはまだ「それほど」悪くないと言っているにもかかわらず、値が 038 というのは状況が悪化しつつあることを意味しているということを無視することはできません。
ああ! 重要: ディスクの電源を 3 か月以上オフにしたままにしていた場合、このシナリオは十分にあり得ます。一般に信じられていることとは異なり、NAND セルは、電源を長時間オフにしたままにしておくと、ストレージが失われることがあります (「長時間」は 7 日から 7 年までの範囲ですが、最も一般的なケースは 3 か月です)。特に、ディスクが古い場合はそうです。
このような事態が発生した場合は、上記の手順を実行してください: データをバックアップし、ディスクを安全に消去し、バックアップを復元します。
幸運を。