我有一個 NTFS 磁碟作為資料磁碟機安裝到 Ubuntu 系統 (19.10)。
在過去的幾天裡,驅動器變得非常緩慢且不可靠。
日誌(journalctl -r)顯示:
Nov 20 15:23:39 acer smartd[1253]: Device: /dev/sdb [SAT], SMART Usage Attribute: 194 Temperature_Celsius changed from 54 to 53
Nov 20 15:23:39 acer smartd[1253]: Device: /dev/sdb [SAT], SMART Usage Attribute: 190 Airflow_Temperature_Cel changed from 46 to 47
Nov 20 15:23:39 acer smartd[1253]: Device: /dev/sdb [SAT], SMART Usage Attribute: 188 Command_Timeout changed from 100 to 99
Nov 20 15:23:39 acer smartd[1253]: Device: /dev/sdb [SAT], SMART Usage Attribute: 183 Runtime_Bad_Block changed from 97 to 96
Nov 20 15:23:39 acer smartd[1253]: Device: /dev/sdb [SAT], 41344 Offline uncorrectable sectors (changed +8)
...
Nov 20 15:23:39 acer smartd[1253]: Device: /dev/sdb [SAT], 41344 Currently unreadable (pending) sectors (changed +8)
但是ntfsfix
報告磁碟沒問題(我認為)
sudo ntfsfix -bd /dev/sdb1
Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
Going to un-mark the bad clusters ($BadClus)... No bad clusters...OK
NTFS partition /dev/sdb1 was processed successfully.
- 還有其他方法檢查該磁碟嗎?
根據評論的建議一些smartctl
輸出。
smartctl -data -A /dev/sdb
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-5.3.0-23-generic] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org
[=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 079 078 006 Pre-fail Always - 168133076
3 Spin_Up_Time 0x0003 094 092 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 099 099 020 Old_age Always - 1209
5 Reallocated_Sector_Ct 0x0033 093 093 036 Pre-fail Always - 9840
7 Seek_Error_Rate 0x000f 074 060 030 Pre-fail Always - 8648101443
9 Power_On_Hours 0x0032 073 073 000 Old_age Always - 24172
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 099 099 020 Old_age Always - 1237
183 Runtime_Bad_Block 0x0032 096 096 000 Old_age Always - 4
184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 001 001 000 Old_age Always - 12019
188 Command_Timeout 0x0032 099 098 000 Old_age Always - 11 26 26
189 High_Fly_Writes 0x003a 097 097 000 Old_age Always - 3
190 Airflow_Temperature_Cel 0x0022 047 042 045 Old_age Always In_the_past 53 (Min/Max 47/58 #91)
191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 1217
193 Load_Cycle_Count 0x0032 099 099 000 Old_age Always - 3392
194 Temperature_Celsius 0x0022 053 058 000 Old_age Always - 53 (0 18 0 0 0)
197 Current_Pending_Sector 0x0012 001 001 000 Old_age Always - 41344
198 Offline_Uncorrectable 0x0010 001 001 000 Old_age Offline - 41344
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 23784h+22m+27.579s
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 16322055947757
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 108452827544617
我不知道如何準確地解釋它,但看起來像是一些加熱問題?
答案1
建議更換驅動器。
Smart 05表示要用多少個備用磁區來替換壞磁區。 RAW值9840表示9840個扇區,即4920KB。 93 是標準化值,表示您仍有 93% 的備用分割器。
然而,同時,197 表示有 41344 個待處理扇區。掛起的磁區並不一定意味著這些磁區是壞的,而是硬碟無法完全處理它。 (有時是因為在電源中斷之前沒有刷新)在下一次寫入時,它將返回到良好的扇區狀態,或者轉到 05 並由備用扇區替換。
不管怎樣,41344 已經是 20MB 左右了。這已經太多了,意味著你的驅動器不穩定。
答案2
由於您已將資料備份到雲端,我們可以將磁碟機準備到壞區塊,這樣...
用於
gparted
建立新的 GPT 分割區表(這將擦除驅動器)用於
gparted
建立使用所有未分配空間的單一 ext4 分割區(磁碟壞區塊後您始終可以重新建立 NTFS 分割區)
Note: do NOT abort a bad block scan!
Note: do NOT bad block a SSD
Note: backup your important files FIRST!
Note: this will take many hours
Note: you may have a pending HDD failure
啟動至 Ubuntu Live DVD/USB。
在terminal
...
sudo fdisk -l
# 辨識所有「Linux 檔案系統」分割區
注意:確保正確識別哪個驅動器是壞塊...sdb1/等。
sudo e2fsck -fcky /dev/sdXX
# 唯讀測試
或者
sudo e2fsck -fccky /dev/sdXX
# 無損讀/寫入測試(受到推崇的)
-k 很重要,因為它保存先前的壞塊表,並將任何新的壞塊添加到該表中。如果沒有 -k,您將丟失所有先前的壞塊資訊。
-fccky 參數...
-f Force checking even if the file system seems clean.
-c This option causes e2fsck to use badblocks(8) program to do a
read-only scan of the device in order to find any bad blocks.
If any bad blocks are found, they are added to the bad block
inode to prevent them from being allocated to a file or direc‐
tory. If this option is specified twice, then the bad block
scan will be done using a non-destructive read-write test.
-k When combined with the -c option, any existing bad blocks in the
bad blocks list are preserved, and any new bad blocks found by
running badblocks(8) will be added to the existing bad blocks
list.
-y Assume an answer of `yes' to all questions; allows e2fsck to be
used non-interactively. This option may not be specified at the
same time as the -n or -p options.
注意:如果壞塊無法產生可用的驅動器,請更換它。