硬盘检测与维护记录

Carinnan

查看设备与 SMART 信息 #

首先,查看接入的设备:

1
2
lsblk -o NAME,SIZE,MODEL
sudo fdisk -l

查看 SMART 状态:sudo smartctl -a /dev/sdX

SMART 状态可以交给 AI 辅助分析。

SMART 自检 #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
sudo smartctl -t short /dev/sdX
sudo smartctl -t long /dev/sdX
sudo smartctl -t conveyance /dev/sdX  # 运输损伤自检

# 查看进度
sudo smartctl -c /dev/sdX

# 中断自检
sudo smartctl -X /dev/sdX

# 查看自检历史
sudo smartctl -l selftest /dev/sdX

badblocks 检测 #

只读测试:

1
sudo badblocks -sv /dev/sdX

非破坏性读写测试:

1
sudo badblocks -nsv /dev/sdX

警告: 以下 -w 测试会破坏目标设备上的原有数据,执行前务必核对设备名。

1
2
3
4
sudo badblocks -wsv /dev/sdX

# 指定块大小和每次处理的块数,以加快检测
sudo badblocks -nsv -b 4096 -c 65536 /dev/sdX

使用 ddrescue 救援 #

使用 mapfile 保存进度,以便断点续传。先跳过坏块,尽快复制可读数据:

1
sudo ddrescue -f -n /dev/sdX /dev/sdY /root/map_sda.log

再针对坏块重试 3 轮:

1
sudo ddrescue -f -r3 /dev/sdX /dev/sdY /root/map_sda.log

镜像压缩 #

快速压缩:

1
pv bkup.img | pigz -p 6 -4 > bkup.img.gz

简单测速 #

1
2
3
4
5
6
# 顺序读取速度测试
sudo hdparm -t /dev/sdX

# 简易写入速度测试
cd ./mount-point
dd if=/dev/zero of=./testfile bs=1G count=1 oflag=direct

备份 #

全盘备份并压缩:

1
sudo dd if=/dev/sdX bs=4M | pv -s $(sudo blockdev --getsize64 /dev/sdX) | pigz -p 4 > ./img.gz

备份分区表:

1
sudo sfdisk -d /dev/sdX > ./partition