深入理解badblocks

文章目录

  • 一、概述
  • 二、安装
    • 2.1、源码编译安装
    • 2.2、命令行安装
    • 2.3、安装确认
  • 三、重要参数详解
    • 3.1、查询支持的参数
    • 3.2、参数说明
  • 四、实例
    • 4.1、全面扫描
    • 4.2、破坏性写入并修复
    • 4.3、非破坏性写入测试
  • 五、实现原理
  • 六、注意事项


  团队博客: 汽车电子社区


一、概述

  badblocks命令是一个用于查找与标记磁盘坏块的工具,可以扫描和诊断磁盘上的坏块并将其从可使用中排除。

二、安装

2.1、源码编译安装

  源码编译安装请参考如下命令:

// 用web浏览器打开如下链接进行下载:
https://sourceforge.net/projects/e2fsprogs/postdownload

  请使用如下命令进行解压:

tar zxvf e2fsprogs-1.47.0.tar.gz

请使用如下命令进行编译安装:

// 编译之前配置命令
./configure --host=arm-hisiv400-linux// 编译
make// 安装
sudo make install

在这里插入图片描述

2.2、命令行安装

  Ubuntu下执行如下命令进行安装:

sudo apt-get  install badblocks

在这里插入图片描述

2.3、安装确认

  执行如下命令来确认badblocks是否安装成功:

badblocks -version

在这里插入图片描述

三、重要参数详解

3.1、查询支持的参数

  执行如下命令可以确认badblocks支持的参数:

badblocks -help
BADBLOCKS(8)                                                                            System Manager's Manual                                                                           BADBLOCKS(8)NAMEbadblocks - search a device for bad blocksSYNOPSISbadblocks [ -svwnfBX ] [ -b block_size ] [ -c blocks_at_once ] [ -d read_delay_factor ] [ -e max_bad_blocks ] [ -i input_file ] [ -o output_file ] [ -p num_passes ] [ -t test_pattern ] device[ last_block ] [ first_block ]DESCRIPTIONbadblocks is used to search for bad blocks on a device (usually a disk partition).  device is the special file corresponding to the device (e.g /dev/hdc1).  last_block is the last block to bechecked;  if  it is not specified, the last block on the device is used as a default.  first_block is an optional parameter specifying the starting block number for the test, which allows thetesting to start in the middle of the disk.  If it is not specified the first block on the disk is used as a default.Important note: If the output of badblocks is going to be fed to the e2fsck or mke2fs programs, it is important that the block size is properly specified, since the block  numbers  which  aregenerated  are  very dependent on the block size in use by the file system.  For this reason, it is strongly recommended that users not run badblocks directly, but rather use the -c option ofthe e2fsck and mke2fs programs.OPTIONS-b block_sizeSpecify the size of blocks in bytes.  The default is 1024.-c number of blocksis the number of blocks which are tested at a time.  The default is 64.-d read delay factorThis parameter, if passed and non-zero, will cause bad blocks to sleep between reads if there were no errors encountered in the read operation; the delay will be calculated as  a  per‐centage  of the time it took for the read operation to be performed. In other words, a value of 100 will cause each read to be delayed by the amount the previous read took, and a valueof 200 by twice the amount.-e max bad block countSpecify a maximum number of bad blocks before aborting the test.  The default is 0, meaning the test will continue until the end of the test range is reached.-f     Normally, badblocks will refuse to do a read/write or a non-destructive test on a device which is mounted, since either can cause the system to potentially crash and/or damage the filesystem  even  if  it  is  mounted  read-only.  This can be overridden using the -f flag, but should almost never be used --- if you think you're smarter than the badblocks program, youalmost certainly aren't.  The only time when this option might be safe to use is if the /etc/mtab file is incorrect, and the device really isn't mounted.-i input_fileRead a list of already existing known bad blocks.  Badblocks will skip testing these blocks since they are known to be bad.  If input_file is specified as "-", the list  will  be  readfrom  the  standard  input.   Blocks  listed  in  this  list  will  be  omitted from the list of new bad blocks produced on the standard output or in the output file.  The -b option ofdumpe2fs(8) can be used to retrieve the list of blocks currently marked bad on an existing file system, in a format suitable for use with this option.-n     Use non-destructive read-write mode.  By default only a non-destructive read-only test is done.  This option must not be combined with the -w option, as they are mutually exclusive.-o output_fileWrite the list of bad blocks to the specified file.  Without this option, badblocks displays the list on its standard output.  The format of this file is suitable for  use  by  the  -l

3.2、参数说明

	-s:输出扫描的进度。-v:输出详细信息。-w:使用写模式检查坏块。-n:使用非破坏性的读写测试来识别坏块。这个选项只在Linux Ext2fs和Linux Ext3fs上有效。-f:强制扫描即使在磁盘可能有故障的情况下。-B:指定块大小,默认值是4096。-c:指定每批次测试块数。-e:指定最大坏块数。-o:指定输出文件。-p:指定扫描的次数。-t:指定测试模式,可选值为l、o、s、a、p、0,默认值为l。

四、实例

4.1、全面扫描

  使用如下命令进行磁盘全面扫描:

sudo badblocks /dev/loop9 -v

在这里插入图片描述

4.2、破坏性写入并修复

  使用-w参数,该命令将对硬盘进行破坏性写入测试,以检测坏块并尝试修复。

sudo badblocks -w /dev/loop7 -v

  不安全的操作会有如下提示:
在这里插入图片描述

4.3、非破坏性写入测试

  使用-n参数,该命令将对硬盘/dev/loop7进行非破坏性写入测试,以检测坏块。

sudo badblocks -n /dev/loop7 -v

  不安全的操作会有如下提示:
在这里插入图片描述

五、实现原理

  badblocks命令底层是通过与硬盘进行直接交互来实现的。它使用了底层的读写操作,以及硬盘的块设备接口来进行检测和识别坏块。
  具体来说,badblocks命令通过以下步骤实现:
    1、打开设备:badblocks命令首先会打开指定的设备,例如/dev/sda。这样就可以通过设备文件来与硬盘进行交互。
    2、分配内存:badblocks命令会分配一定数量的内存作为缓冲区,用于读取和写入数据。这样可以提高读写操作的效率。
    3、写入测试:如果使用了破坏性写入测试(-w选项),badblocks命令会将特定的模式数据写入硬盘的每个块中。这样可以检测硬盘中是否存在无法正常写入的块。
    4、读取测试:无论是非破坏性写入测试(-n选项)还是破坏性写入测试,badblocks命令都会尝试读取每个块中的数据。如果读取失败,说明该块可能是坏块。
    5、标记坏块:如果在读取测试中发现了坏块,badblocks命令会将其标记为坏块,并将其位置记录下来。这样可以帮助用户识别和处理坏块。
    6、输出结果:badblocks命令会将扫描结果输出到终端或指定的输出文件中。用户可以根据输出结果来查看坏块的位置和数量。

六、注意事项

  输入任何命令前一定要仔细核对设备名:输入错误的设备名可能导致数据丢失。
  不要在正在运行的操作系统上测试它自己的硬盘:这会导致数据丢失和系统崩溃。
  在修复坏道之前备份数据:某些坏道可能无法修复,导致数据丢失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/646613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第十六天|104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

104.二叉树的最大深度 思路:这道题最开始的时候,我想的是用前序遍历的思路来做,整个过程有剪枝的过程,弄了半天没写出来,主要是剪枝没写对!最大深度是叶子节点的高度,可以使用后序遍历来做。 cl…

el-table 动态渲染多级表头;一级表头根据数据动态生成,二级表头固定

一、表格需求: 实现一个动态表头,一级表头,根据数据动态生成,二级表头固定,每列的数据不一样,难点在于数据的处理。做这种表头需要两组数据,一组数据是实现表头的,另一组数据是内容…

Web网页生成桌面应用

前言:网页生成桌面指的是将一个网页保存为桌面应用程序的形式,使得用户可以在桌面上直接打开该网页,而不必通过浏览器打开。这种桌面应用程序一般具有独立的窗口、菜单、工具栏等界面元素,能够提供更加方便快捷的使用体验。 实现…

【pytorch】pytorch学习笔记(续1)

p22:1.加减乘除: (1)add(a,b):等同于ab。 (2)sub(a,b):等同于a-b。 (3)mul(a,b):等同于a*b。 (4)div(a,b)&#xff1a…

PID控制算法,带C语言源码实现

1 PID简介 PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。PID控制算法是结合比例、积分和微分三种环节于一体的控制算法。PID算法是连续系统中技术最为成熟、应用最为…

gitlab runner 安装、注册、配置、使用(Docker部署)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【工具使用-Everything】everything只能搜到文件夹,无法搜到文件

一,问题现象 everything搜索时,只能搜索到文件夹,无法搜索到文件夹下的文件。 二,问题原因 everything搜索设置问题,设置为"文件夹"导致 三,解决方法 将搜索选项设置为“所有”即可&#x…

5 新增课程

5.1 需求分析 5.1.1 业务流程 根据前边对内容管理模块的数据模型分析,课程相关的信息有:课程基本信息、课程营销信息、课程图片信息、课程计划、课程师资信息,所以新增一门课程需要完成这几部分信息的填写。 以下是业务流程: …

全链路压测:提升业务可靠性和可用性

全链路压测是一种全面评估系统性能和稳定性的测试方法,通过模拟真实用户场景和流程来验证整个应用系统在高负载情况下的表现。全链路压测的主要作用涵盖了多个方面: 性能评估与优化: 全链路压测可以全面评估系统在高负载下的性能表现&#xf…

代码评审——随机数Random问题

问题描述: 为了获取唯一值,经常会依赖产生随机数来保证唯一性。在获取随机数时,如果使用错误的方法,会比较低效。 可以参考以下代码: public static String geneRundomNo(){Random rnew Random();int numr.nextInt(…

day31_CSS

今日内容 CSS概述引入方式 (where)选择器(how)属性(how) 1 CSS介绍 层叠样式表(cascading style sheet) CSS 用来美化HTML页面,可以让页面更好看,还可以布局页面. 好处 美化页面,布局页面使用外部css文件,可以实现样式文件和html文件分离,便于维护使用外…

5.ROC-AUC机器学习模型性能的常用的评估指标

最近回顾机器学习基础知识部分的时候,看到了用于评估机器学习模型性能的ROC曲线。再次记录一下,想起之前学习的时候的茫然,希望这次可以更加清晰的了解这一指标。上课的时候听老师提起过,当时没有认真去看,所以这次可以…

SpeechGPT-Gen;使用Agents编辑图像;多模态扩散模型图像生成

本文首发于公众号:机器感知 SpeechGPT-Gen;使用Agents编辑图像;多模态扩散模型图像生成; CCA: Collaborative Competitive Agents for Image Editing This paper presents a novel generative model, Collaborative Competitive…

多流转换 (分流,合流,基于时间的合流——双流联结 )

目录 一,分流 1.实现分流 2.使用侧输出流 二,合流 1,联合 2,连接 三,基于时间的合流——双流联结 1,窗口联结 1.1 窗口联结的调用 1.2 窗口联结的处理流程 2,间隔联结 2.1 间隔联…

<网络安全>《2 国内主要企业网络安全公司概览(二)》

4 北京天融信科技有限公司(简称天融信) 信息内容LOGO成立日期创始于1995年总部北京市海淀区上地东路1号院3号楼北侧301室背景民营企业是否上市天融信[002212]A股市值99亿主要产品网络安全大数据云服务员工规模6000多人简介天融信科技集团(证券代码:0022…

书生·浦语大模型实战营-学习笔记6

目录 OpenCompass大模型测评1. 关于评测1.1 为什么要评测?1.2 需要评测什么?1.3 如何评测?1.3.1 客观评测1.3.2 主观评测1.3.3 提示词工程评测 2. 介绍OpenCompass工具3. 实战演示 OpenCompass大模型测评 1. 关于评测 1.1 为什么要评测&#…

人工智能系列 :与机器共生的未来

大家好,身处一个日新月异的时代,科技的浪潮汹涌而至,将人们推向未知的前方,一个充满人工智能与机器的世界。 这个未知的境地,或许令人心生恐慌,因为它的庞大未知性仿佛一团迷雾,模糊了大家的视…

Unity Mask合批情况验证

1.首先是两个Mask完全重合的情况下 每张图片使用的image都来自同一个图集 发现彼此之间是没有合批的,但是每个Mask内部是实现了合批的 经过计算此种情况的visiableList:mask1,IM1,IM2,mask2,IM3&#xf…

Docker安装Clickhouse详细教程

简介 ClickHouse是一种列式数据库管理系统,专门用于高性能数据分析和数据仓库应用。它是一个开源的数据库系统,最初由俄罗斯搜索引擎公司Yandex开发,用于满足大规模数据分析和报告的需求。 特点 开源的列式存储数据库管理系统,…

不学前沿技术与朽木浮草何异 ?Java18新特性

不学前沿技术与朽木浮草何异 ?Java18新特性 文章目录 不学前沿技术与朽木浮草何异 ?Java18新特性JEP 400:默认字符集为 UTF-8JEP 408:简易的 Web 服务器JEP 413:优化 Java API 文档中的代码片段JEP 416:使用方法句柄重新实现反射核心JEP 417: 向量 API&a…