我已经尝试解决这个问题两天了。让我解释一下:
背景
系统设置
我有一台 Acer Nitro-5 笔记本电脑。
存储设置:1TB HDD 和 256GB Intel ssdpekkw256g7。
操作系统设置:双启动,HDD 上的 Ubuntu 20.4 和 SSD 上的 Windows 10。
问题的起源
最近,我的 Windows 一天比一天慢。我已经用了近 5 年了。
两天前,我启动 Windows,桌面进程一直挂起。我以为是病毒什么的,所以我对系统进行了全面扫描。扫描时电源断了,因此我的笔记本电脑在扫描过程中关闭了。我不确定问题可能是在这次中断之前还是之后发生的。当我重新接通电源并启动 Windows 时,我看到了蓝屏:
蓝屏
我登录 Ubuntu 来修复这个问题。我备份了所有需要的数据,所以不会丢失数据。只是我丢失了一些 SSD 数据。
我尝试过的
分区
我尝试检查磁盘是否存在问题,但它显示以下内容:
群集核算在 13300092 (0xcaf17c) 处失败:$Bitmap 中的额外群集
群集核算在 13300093 (0xcaf17d) 处失败:$Bitmap 中的额外群集
文件系统检查失败!
总共有 999 个群集核算不匹配。错误:NTFS 不一致。chkdsk /f
在 Windows 上运行,然后重新启动两次!/f 参数的使用非常重要!在修复之前,此软件不会对 NTFS 进行任何修改。
Windows 安全模式和 ChkDsk
由于我无法直接访问 Windows(还记得蓝屏吗)。我尝试使用 Hiren 的 BootCD winPE 来访问 Windows 命令提示符。我运行了该命令,它显示以下三条消息之一:
Windows cannot run disk checking on this volume because it is write protected
The type of the file system is RAW. CHKDSK is not available for RAW drives.
**这是最新的一条:**
chkdsk g: /f
Stage 2: Examining file name linkage ...
An unspecified error occurred (696e647863686b2e 9cd).
An unspecified error occurred (6e74667363686b2e 1798).
Failed to transfer logged messages to the event log with status 6.
因此,我在使用 chkdsk 时陷入了困境。
格式化磁盘/分区
我尝试使用磁盘管理、Diskpart、GParted、磁盘等来格式化分区。它们不起作用,要么显示 I/O 错误,要么显示某些意外错误。
通过在 SSD 上安装 Ubuntu 来覆盖磁盘
我尝试在 SSD 上安装另一个 Ubuntu 并覆盖 Windows 文件。但这也不起作用,它显示“格式化磁盘时发生错误”或类似信息。
尝试通过 Ubuntu 进行修复
sudo mkfs.ext4 /dev/nvme0n1p4
我尝试通过 Ubuntu 更改文件系统,但日志如下:
mke2fs 1.45.5 (07-Jan-2020)
/dev/nvme0n1p4 contains a ntfs file system labelled 'OS'
Proceed anyway? (y,N) y
Creating filesystem with 62186249 4k blocks and 15548416 inodes
Filesystem UUID: 98f9d29e-c882-42ca-9b83-d15bb1f1a9cb
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: mkfs.ext4: Input/output error while writing out and closing file system
因此我尝试检查坏块:
sudo bad blocks -v /dev/nvme0n1
其结果是:
Checking blocks 0 to 250059095
Checking for bad blocks (read-only test): 1404620
1404621
1404622
1404623
.
.
.
基本上,它发现了 1333 个坏块。但我不认为这是一个物理问题,因为几天前 SSD 还运行良好。
使用 NVME
我曾经nvme
检查过日志:
Smart Log for NVME device:nvme0n1 namespace-id:ffffffff
critical_warning : 0x9
temperature : 25 C
available_spare : 0%
available_spare_threshold : 10%
percentage_used : 4%
data_units_read : 23,584,781
data_units_written : 22,680,050
host_read_commands : 424,922,169
host_write_commands : 435,538,029
controller_busy_time : 7,189
power_cycles : 3,689
power_on_hours : 10,192
unsafe_shutdowns : 298
media_errors : 716,805
num_err_log_entries : 716,805
Warning Temperature Time : 265
Critical Composite Temperature Time : 0
Thermal Management T1 Trans Count : 0
Thermal Management T2 Trans Count : 0
Thermal Management T1 Total Time : 0
Thermal Management T2 Total Time : 0
我真的不知道该如何修复它。你能帮我吗?
我宁愿不更换 SSD。
答案1
每个 SSD 都有一些备用块来重新分配坏块,因为这些单元在使用过程中会退化。
available_spare : 0%
...
media_errors : 716,805
num_err_log_entries : 716,805
根据智能日志,所有备用空间都已使用。由于没有备用空间来重新分配新的坏块,因此磁盘可视为“寿命终止”和“损坏”。
如果您的磁盘有那么多坏块,则很可能存在其他缺陷,而增加空间只能在短时间内起到作用。
是否可以增加共享空间?
我曾经对通过以下方式连接的 SSD 做过一次SATA使用该hdparm
工具。
这很大程度上取决于 SSD 固件。
这也许不适用于您的驱动器。
当然,这只能在空磁盘上进行。如果磁盘不是空的,您很可能会丢失数据。最坏的情况下,磁盘将完全损坏。请注意。自行承担风险。
要获取 HPA(最大可写扇区):
hdparm -N /dev/sda
/dev/sda:
max sectors = 3907029168/3907029168, HPA is disabled
使用相同的命令,您可以设置系统可用的“最大扇区”,这会将其余部分提供给可用备用扇区。
我不会给你确切的命令(如果你能读手册的话就很容易了)。
如果你自己找不到,最好不要这么做。
我不知道这是否适用于 NVME 驱动器,或者是否可以使用该命令完成nvme
。如果有人知道,请添加答案。
答案2
也许可以尝试将所有数据放入新磁盘。然后强制格式化 SSD。如果仍然显示坏扇区,那就是坏消息了。
坏扇区可以被取消分配,但我认为如果你有 1 个坏扇区,那么你会有越来越多的坏扇区,这是不可阻挡的退化。
好消息是 SSD 现在真的很便宜。