当前位置: 首页 > news >正文

如何在Linux上检测硬盘上的坏道和坏块

让我们从坏道和坏块的定义开始说起,它们是一块磁盘或闪存上不再能够被读写的部分,一般是由于磁盘表面特定的物理损坏或闪存晶体管失效导致的。

随着坏道的继续积累,它们会对你的磁盘或闪存容量产生令人不快或破坏性的影响,甚至可能会导致硬件失效。

同时还需要注意的是坏块的存在警示你应该开始考虑买块新磁盘了,或者简单地将坏块标记为不可用。

因此,在这篇文章中,我们通过几个必要的步骤,使用特定的磁盘扫描工具让你能够判断 Linux 磁盘或闪存是否存在坏道。

以下就是步骤:

在 Linux 上使用坏块工具检查坏道

坏块工具可以让用户扫描设备检查坏道或坏块。设备可以是一个磁盘或外置磁盘,由一个如 /dev/sdc 这样的文件代表。

首先,通过超级用户权限执行 fdisk 命令来显示你的所有磁盘或闪存的信息以及它们的分区信息:

 
  
  1. $ sudo fdisk -l 


列出 Linux 文件系统分区

然后用如下命令检查你的 Linux 硬盘上的坏道/坏块:

 
  
  1. $ sudo badblocks -v /dev/sda10 > badsectors.txt 


在 Linux 上扫描硬盘坏道

上面的命令中,badblocks 扫描设备 /dev/sda10(记得指定你的实际设备),-v 选项让它显示操作的详情。另外,这里使用了输出重定向将操作结果重定向到了文件 badsectors.txt。

如果你在你的磁盘上发现任何坏道,卸载磁盘并像下面这样让系统不要将数据写入回报的扇区中。

你需要执行 e2fsck(针对 ext2/ext3/ext4 文件系统)或 fsck 命令,命令中还需要用到 badsectors.txt 文件和设备文件。

-l 选项告诉命令将在指定的文件 badsectors.txt 中列出的扇区号码加入坏块列表。

 
  
  1. ------------ 针对 for ext2/ext3/ext4 文件系统 ------------  
  2. $ sudo e2fsck -l badsectors.txt /dev/sda10  
  3. 或  
  4. ------------ 针对其它文件系统 ------------  
  5. $ sudo fsck -l badsectors.txt /dev/sda10 

在 Linux 上使用 Smartmontools 工具扫描坏道

这个方法对带有 S.M.A.R.T(自我监控分析报告技术(Self-Monitoring, Analysis and Reporting Technology))系统的现代磁盘(ATA/SATA 和 SCSI/SAS 硬盘以及固态硬盘)更加的可靠和高效。S.M.A.R.T 系统能够帮助检测,报告,以及可能记录它们的健康状况,这样你就可以找出任何可能出现的硬件失效。

你可以使用以下命令安装 smartmontools:

 
  
  1. ------------ 在基于 Debian/Ubuntu 的系统上 ------------
  2. $ sudo apt-get install smartmontools
  3. ------------ 在基于 RHEL/CentOS 的系统上 ------------
  4. $ sudo yum install smartmontools 

安装完成之后,使用 smartctl 控制磁盘集成的 S.M.A.R.T 系统。你可以这样查看它的手册或帮助:

 
  
  1. $ man smartctl$ smartctl -h 

然后执行 smartctrl 命令并在命令中指定你的设备作为参数,以下命令包含了参数 -H 或 --health 以显示 SMART 整体健康自我评估测试结果。

 
  
  1. $ sudo smartctl -H /dev/sda10 


检查 Linux 硬盘健康

上面的结果指出你的硬盘很健康,近期内不大可能发生硬件失效。

要获取磁盘信息总览,使用 -a 或 --all 选项来显示关于磁盘所有的 SMART 信息,-x 或 --xall 来显示所有关于磁盘的 SMART 信息以及非 SMART 信息。






本文作者:佚名
来源:51CTO

相关文章:

  • Linux高速下载工具——Axel
  • 低功耗M2M市场广阔 芯片设计如何降耗
  • 3.垃圾回收器
  • Debian下无root权限使用Python访问Oracle
  • bzoj 1860: [Zjoi2006]Mahjong麻将 题解
  • git使用点滴:如何查看commit的内容和git 获取最近一次提交的commit id
  • 美光Sun合作长寿命SLC闪存 100万次写入
  • OCZ新Summit系列固态硬盘强悍性能曝光
  • 用MAID 2.0降低存储费用
  • 为什么要创建开放源码的PlayScala社区?
  • 关于 TCP/IP,必知必会的十个问题
  • OSStatus code 查询
  • TCP协议中FLAG的含义
  • TypeScript学习笔记(六):泛型
  • Unity3D之Mecanim动画系统学习笔记(十):Mecanim动画的资源加载相关
  • CentOS6 编译安装 redis-3.2.3
  • codis proxy处理流程
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • input的行数自动增减
  • java概述
  • js对象的深浅拷贝
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • leetcode386. Lexicographical Numbers
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • mysql innodb 索引使用指南
  • mysql 数据库四种事务隔离级别
  • Python进阶细节
  • Swift 中的尾递归和蹦床
  • vue总结
  • 如何胜任知名企业的商业数据分析师?
  • 数据科学 第 3 章 11 字符串处理
  • 小李飞刀:SQL题目刷起来!
  • 小试R空间处理新库sf
  • 用jQuery怎么做到前后端分离
  • ###C语言程序设计-----C语言学习(3)#
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (js)循环条件满足时终止循环
  • (NSDate) 时间 (time )比较
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (一)appium-desktop定位元素原理
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转) RFS+AutoItLibrary测试web对话框
  • ******之网络***——物理***
  • ./configure、make、make install 命令
  • .gitignore文件---让git自动忽略指定文件
  • .jks文件(JAVA KeyStore)
  • .NET Core 中插件式开发实现
  • .NET MVC 验证码
  • .net Stream篇(六)
  • .net 流——流的类型体系简单介绍
  • .net 受管制代码
  • .Net(C#)自定义WinForm控件之小结篇