更新

更新

我尝试重新启动 18.04 LTS 机器,但它没有响应,因此等待几分钟后,我关闭了机器的电源并循环。

机器启动正常,但我发现最近编辑的一些文件现在为空。这至少适用于 5 个已知案例,包括文本文件、系统文件和 .git 文件夹深处的文件。

  • 该文件系统是否已严重损坏并且使用不安全?
  • 我怎么知道这是否是硬件问题?
  • 这是仅因 Ubuntu 电源循环而产生的已知风险吗?

其他信息:

  • 磁盘是三星 970 Pro
  • Ubuntu 安装在 Ext4 分区上(与 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 标志的基本详细信息这里以及所有选项这里。关于这些选项的讨论很好此主题还。

相关内容