18.04 LTS マシンを再起動しようとしましたが、応答がなかったので、数分待ってからマシンの電源を入れ直しました。
マシンは正常に起動しましたが、最近編集したファイルの一部が空になっていることがわかりました。これは、テキスト ファイル、システム ファイル、.git フォルダーの奥深くにあるファイルなど、少なくとも 5 つの既知のケースに当てはまります。
- このファイルシステムは致命的に破損しており、使用するのは安全ではありませんか?
- これがハードウェアの問題であるかどうかはどうすればわかりますか?
- これは、Ubuntu の電源を入れ直すだけで発生する既知のリスクですか?
他の情報:
- ディスクはSamsung 970 Pro
- Ext4 パーティションにインストールされた Ubuntu (Windows とのデュアル ブート)
Disks
ブートディスクを修復できません(ビジー状態です)ライブUSBスティックが必要ですsmartctl
次のように報告しています。
アップデート
- 実行しても
sudo touch /forcefsck;sudo shutdown -r now
ディスクは目に見える形ではチェックされませんでした - ライブディスクを使用して
Disks
チェックすると、パーティションは破損していないことがわかります fsck -f /dev/nvme0n1p5
ライブディスクから実行するとエラーは返されず、終了コード = 0 になります。
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-5.0.0-36-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Number: Samsung SSD 970 PRO 1TB
Serial Number: S462NF0M616954M
Firmware Version: 1B2QEXP7
PCI Vendor/Subsystem ID: 0x144d
IEEE OUI Identifier: 0x002538
Total NVM Capacity: 1,024,209,543,168 [1.02 TB]
Unallocated NVM Capacity: 0
Controller ID: 4
Number of Namespaces: 1
Namespace 1 Size/Capacity: 1,024,209,543,168 [1.02 TB]
Namespace 1 Utilization: 691,389,394,944 [691 GB]
Namespace 1 Formatted LBA Size: 512
Local Time is: Sun Nov 17 01:01:26 2019 GMT
Firmware Updates (0x16): 3 Slots, no Reset required
Optional Admin Commands (0x0037): Security Format Frmw_DL *Other*
Optional NVM Commands (0x005f): Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat *Other*
Maximum Data Transfer Size: 512 Pages
Warning Comp. Temp. Threshold: 81 Celsius
Critical Comp. Temp. Threshold: 81 Celsius
Supported Power States
St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat
0 + 6.20W - - 0 0 0 0 0 0
1 + 4.30W - - 1 1 1 1 0 0
2 + 2.10W - - 2 2 2 2 0 0
3 - 0.0400W - - 3 3 3 3 210 1200
4 - 0.0050W - - 4 4 4 4 2000 8000
Supported LBA Sizes (NSID 0x1)
Id Fmt Data Metadt Rel_Perf
0 + 512 0 0
=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
SMART/Health Information (NVMe Log 0x02, NSID 0x1)
Critical Warning: 0x00
Temperature: 36 Celsius
Available Spare: 100%
Available Spare Threshold: 10%
Percentage Used: 0%
Data Units Read: 1,662,255 [851 GB]
Data Units Written: 5,875,310 [3.00 TB]
Host Read Commands: 20,271,726
Host Write Commands: 90,120,020
Controller Busy Time: 335
Power Cycles: 95
Power On Hours: 515
Unsafe Shutdowns: 4
Media and Data Integrity Errors: 0
Error Information Log Entries: 105
Warning Comp. Temperature Time: 0
Critical Comp. Temperature Time: 0
Temperature Sensor 1: 36 Celsius
Temperature Sensor 2: 39 Celsius
Error Information (NVMe Log 0x01, max 64 entries)
No Errors Logged
答え1
その理由は、EXT4 ファイルシステムの「遅延割り当て」と呼ばれる機能です。遅延割り当ては、データがすぐにディスクにコミットされないというパフォーマンス上の理由から EXT4 に追加されました。これにより、停電時にコミットされていないファイルのデータが完全に失われる可能性がかなり高くなりますが、パフォーマンスが大幅に向上します。遅延は数秒に及ぶ場合があり、停電が発生するとコミットされていないファイルのサイズが 0 バイトとして表示されます。これが、あなたが直面している問題だと思います。
/etc/fstab エントリ内のファイルシステムのマウント オプションを慎重に選択する必要があります。たとえば、data=journal
このオプションにより、すべてのデータがメインのファイルシステムに書き込まれる前にジャーナルにコミットされるようになり、遅延割り当て機能が無効になります。
EXT4フラグに関する基本的な詳細を読むことができますここすべてのオプションこここれらのオプションについては、このスレッドまた。