资讯
HOME
资讯
正文内容
nand 坏块修复软件 MHDD 软件应用五 实例:硬盘坏块的修复
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

MHDD 软件应用五 实例:硬盘坏块的修复

我们通过前面的几篇文章,了解到MHDD可以修复硬盘后,今天我们拿一块有坏块的硬盘,来具体看MHDD是怎么修复硬盘坏块的。

我们首先找到一块硬盘,对硬盘进行检测,检测方法是安F4键,我们看检测的过程中,屏幕上面的检测格提示是有3个红色的叉,说明硬盘有坏块了。我们这个是西部数据的硬盘,他的容量大小是500G。这个红色的叉应该是可以修复的。

我们这个带有红色叉的硬盘,一般是不能使用的,如果有叉那么存储数据的时候,数据会丢失,造成不必要的损失。如果是系统文件写入到红叉的扇区中,那么会引起系统的蓝屏或死机的情况发生。下面我们看怎么修复。

我们选择F4扫描,然后把高亮条移动到erase delays这个位置,按空格,把后面的参数改成on,这样的话,如果在扫描中发现坏块,就自动擦除,相当于修复硬盘了。我们再按F4键,硬盘开始扫描,并且进行修复。

我们看,开始扫描后,发现红色的叉后,出现了一个W的字符在红叉的位置,也就是写成功了,相当于修复了硬盘。

我们修复完成后,再次按两下F4扫描硬盘,发现这时以前有红色叉的位置已经没有了,变成了灰色的块,其它是MHDD软件把硬盘中的容冗扇区把有坏块的扇区替换掉了,这样就相当于把硬盘的坏块修复成功了。

以上就是我们看的通过修改扫描的ERASE DELAYS 这个参数来对硬盘进行修复的过程。

其它我们修复坏块还有另外一种方法。就是用erase命令,擦除命令。

我们输入erase擦除命令,选择从什么位置开始,到什么位置节束,然后输入Y,开始对硬盘进行擦除,这样也可以修复硬盘的坏块。修复坏块的目的和刚才是一样的。

但是两者是有区别的,扫描时更改参数,只对有坏块的扇区进行写操作,只有坏扇区的数据丢失。而erase命令是对硬盘进行写操作,硬盘的数据全部丢失,并且不能恢复。我们使用哪种方法进行坏扇区的修复,大家还需要酌情考虑。

「干货」如何搞懂Linux 文件系统与持久性内存?(上)

Linux 虚拟文件系统介绍

在 Linux 系统中一切皆文件,除了通常所说的狭义的文件以外,目录、设备、套接字和管道等都是文件。

文件系统在不同的上下文中有不同的含义:

在存储设备上组织文件的方法,包括数据结构和访问方法,到存储设备。

按照某种文件系统类型格式化的一块存储介质。我们常说在某个目录下挂载或卸载文件系统, 这里的文件系统就是这种意思。

内核中负责管理和存储文件的模块,即文件系统模块。

Linux文件系统的架构如下图所示,分为用户空间、内核空间和硬件3个层面:

注意:上图中方块对齐关系,很多时候我们分不清内核文件系统中 "cache" 和 "buffer" 的区别,毕竟两者都可以翻译为 "缓存区",但是从图中,就可以很清晰的看出所谓的 "cache" 其实指的就是图中的 "页缓存" 它是针对文件来说的,除了 "DAX"(直接访问方式的设备)它不使用 "缓存",其他的闪存类,块设备类设备都会使用到 "页缓存" 也就是 "cache",而 "buffer" 其实指的就是图中的 "块缓存" 它是针对块设备的。

01硬件层面

外部存储设备分为块设备、闪存和 NVDIMM 设备 3 类,块设备主要有以下两种:

机械硬盘:机械硬盘的读写单位是扇区。访问机械硬盘的时候,需要首先沿着半径 方向移动磁头寻找磁道,然后转动盘片找到扇区。

闪存类块设备:使用闪存作为存储介质,里面的控制器运行固化的驱动程序,驱动 程序的功能之一是闪存转换层(Flash Translation Layer,FTL),把闪存转换为块设备, 外表现为块设备。常见的闪存类块设备是在个人计算机和笔记本电脑上使用的固态硬盘 splid State Drives,SSD),以及在手机和平板电脑上使用的嵌入式多媒体存储卡(embedded Multi Media Card,eMMc)和通用闪存存储(Universal Flash Storage,UFS)。闪存类块设备相对机械硬盘的优势是:访问速度快,因为没有机械操作:抗振性很高, 便于携带。

闪存(Flash Memory)的主要特点如下:

在写入数据之前需要擦除一个擦除块,因为向闪存写数据只能把一个位从 1 变成 0,不能从 0 变成 1,擦除的目的是把擦除块的所有位设置为 1

一个擦除块的最大擦除次数有限,NOR闪存的擦除块的最大擦除次数是 10^4~10^3, NAND 闪存的擦除块的最大擦除次数是 10^3~10^6。

闪存按存储结构分为 NAND 闪存和 NOR 闪存,两者的区别如下:

NOR闪存的容量小,NAND 闪存的容量大。

NOR 闪存支持按字节寻址,支持芯片内执行(eXecute In Place,XIP),可以直接 在闪存内执行程序,不需要把程序读到内存中; NAND 闪存的最小读写单位是页或子页, 一个擦除块分为多个页,有的 NAND 闪存把页划分为多个子页。

NOR 闪存读的速度比 NAND 闪存块,写的速度和擦除的速度都比 NAND 闪存慢

NOR 闪存没有坏块;NAND 闪存存在坏块,主要是因为消除坏块的成本太高 NOR 闪存适合存储程序,一般用来存储引导程序比如 uboot 程序;NAND 闪存适 合存储数据。

为什么要针对闪存专门设计文件系统?主要原因如下:

NAND 闪存存在坏块,软件需要识别并且跳过坏块。

需要实现损耗均衡( wear leveling),损耗均衡就是使所有擦除块的擦除次数均衡, 避免一部分擦除块先损坏。

机械硬盘和 NAND 闪存的主要区别如下:

机械硬盘的最小读写单位是扇区,扇区的大小一般是 512 字节:NAND 闪存的最 小读写单位是页或子页。

机械硬盘可以直接写入数据:NAND 闪存在写入数据之前需要擦除一个擦除块。

机械硬盘的使用寿命比 NAND 闪存长:机械硬盘的扇区的写入次数没有限制:NAND 闪存的擦除块的擦除次数有限。

机械硬盘隐藏坏的扇区,软件不需要处理坏的扇区:NAND 闪存的坏块对软件可 见,软件需要处理坏块。

NVDIMM(Nonn-Volatile DIMM,非易失性内存:DIMM 是 Dual-Inline-Memory-Modules 的缩写,表示双列直插式存储模块,是内存的一种规格)设备把 NAND 闪存、内存和超级电容集成到一起,访问速度和内存一样快,并且断电以后数据不会丢失。在断电的瞬间, 超级电容提供电力,把内存中的数据转移到 NAND 闪存。

02内核空间层面

在内核的目录 fs 下可以看到,内核支持多种文件系统类型。为了对用户程序提供统一的 文件操作接口,为了使不同的文件系统实现能够共存,内核实现了一个抽象层,称为虚拟文件系统(Virtual File System,VFS),也称为虚拟文件系统切换(Virtual Filesystem Switch,VFS) 文件系统分为以下几种。

块设备文件系统,存储设备是机械硬盘和固态硬盘等块设备,常用的块设备文件 系统是 EXT 和 btrfs。EXT 文件系统是 Linux 原创的文件系统,目前有 3 个 成版本:EXT[2-4]。

闪存文件系统,存储设备是 NAND 闪存和 NOR 闪存,常用的闪存文件系统是 JFFS2 ,(日志型闪存文件系统版本2, Journalling Flash File System version2)和 UBIFS(无序区块镜像文件系统, Unsorted Block Image File System)。内存文件系统的文件在内存中,断电以后文件丢失,常用的内存文件系统是 tmpfs, 用来创建临时文件。

伪文件系统,是假的文件系统,只是为了使用虚拟文件系统的编程接口,常用的 伪文件系统如下所示:

sockfs,这种文件系统使得套接字(socket)可以使用读文件的接口 read 接收报文, 使用写文件的接口 write 发送报文。

proc 文件系统,最初开发 proc 文件系统的目的是把内核中的进程信息导出到用户空间, 后来扩展到把内核中的任何信息导出到用户空间,通常把 proc 文件系统挂载在目录 "proc" 下。

sysfs,用来把内核的设备信息导出到用户空间,通常把 sysfs 文件系统挂载在目录 "/sys"下。

hugetlbfs,用来实现标准巨型页。

cgroup 文件系统,控制组(control group cgroup)用来控制一组进程的资源, cgroup 文件系统使管理员可以使用写文件的方式配置 cgroup。

cgroup2 文件系统, cgroup2 是 cgroup 的第二个版本, cgroup2 文件系统使管理员可 以使用写文件的方式配置 cgroup2。

这些文件系统又各自有着相关的特性:

页缓存:访问外部存储设备的速度很慢,为了避免每次读写文件时访问外部存储设备,文件系统模块为每个文件在内存中创建了一个缓存,因为缓存的单位是页,所以称为页缓存。

块设备层:块设备的访问单位是块,块大小是扇区大小的整数倍。内核为所有块设备实现了统一 的块设备层。

块缓存:为了避免每次读写都需要访问块设备,内核实现了块缓存,为每个块设备在内存中创 建一个块缓存。缓存的单位是块,块缓存是基于页缓存实现的。

IO 调度器:访问机械硬盘时,移动磁头寻找磁道和扇区很耗时,如果把读写请求按照扇区号排序, 可以减少磁头的移动,提高吞吐量。IO 调度器用来决定读写请求的提交顺序,针对不同的 使用场景提供了多种调度算法:NOOP(No Operation)、CFQ(完全公平排队, Complete Fair Queuing)和 deadline(限期)。NOOP 调度算法适合闪存类块设备,CFQ 和 deadline调度算 法适合机械硬盘。

块设备驱动程序:每种块设备需要实现自己的驱动程序。

内核把闪存称为存储技术设备( Memory Technology Device,MTD),为所有闪存实现 了统一的 MTD 层,每种闪存需要实现自己的驱动程序。针对 NVDIMM 设备,文件系统需要实现 DAX(Direct Access直接访问:X 代表 eXciting,没有意义,只是为了让名字看起来酷),绕过页缓存和块设备层,把 NVDIMM 设备里面的内存直接映射到进程或内核的虚拟地址空间。

libnvdimm 子系统提供对 3 种 NVDIMM 设备的支持:持久内存(persistent memory,PMEM) 模式的 NVDIMM 设备,块设备(block,BLK)模式的 NVDIMM 设备,以及同时支持PMEM 和 BLK 两种访问模式的 NVDIMM 设备。PMEM 访问模式是把 NVDIMM 设备当作内存,BLK 访问模式是把 NVDIMM 设备当作块设备。每种 NVDIMM 设备需要实现自己的驱动程序。

下一代存储技术NVIDMM

NVDIMM (Non-Volatile Dual In-line Memory Module) 是一种可以随机访问的, 非易失性内存。非易失性内存指的是即使在不通电的情况下, 数据也不会消失。因此可以在计算机掉电 (unexpected power loss), 系统崩溃和正常关机的情况下, 依然保持数据。NVDIMM 同时表明它使用的是 DIMM 封装, 与标准DIMM 插槽兼容, 并且通过标准的 DDR总线进行通信。考虑到它的非易失性, 并且兼容传统DRAM接口, 又被称作Persistent Memory。

01种类

目前, 根据 JEDEC 标准化组织的定义, 有三种NVDIMM 的实现。分别是:

NVDIMM-N 指在一个模块上同时放入传统 DRAM 和 flash 闪存,计算机可以直接访问传统 DRAM。支持按字节寻址,也支持块寻址。通过使用一个小的后备电源,为在掉电时数据从 DRAM 拷贝到闪存中提供足够的电能;当电力恢复时再重新加载到 DRAM 中。

NVDIMM-N示意图

NVDIMM-N 的主要工作方式其实和传统 DRAM是一样的。因此它的延迟也在10的1次方纳秒级。而且它的容量,受限于体积,相比传统的 DRAM 也不会有什么提升。

同时它的工作方式决定了它的 flash 部分是不可寻址的,而且同时使用两种介质的作法使成本急剧增加,但是 NVDIMM-N 为业界提供了持久性内存的新概念。目前市面上已经有很多基于NVIMM-N的产品。

NVDIMM-F 指使用了 DRAM 的DDR3或者 DDR4 总线的flash闪存。我们知道由 NAND flash 作为介质的 SSD,一般使用SATA,SAS 或者PCIe 总线。使用 DDR 总线可以提高最大带宽,一定程度上减少协议带来的延迟和开销,不过只支持块寻址。

NVDIMM-F 的主要工作方式本质上和SSD是一样的,因此它的延迟在 10的1次方微秒级。它的容量也可以轻松达到 TB 以上。

NVDIMM-P 这是一个目前还没有发布的标准 (Under Development),预计将与 DDR5 标准一同发布。按照计划,DDR5将比DDR4提供双倍的带宽,并提高信道效率。这些改进,以及服务器和客户端平台的用户友好界面,将在各种应用程序中支持高性能和改进的电源管理。

NVDIMM-P 实际上是真正 DRAM 和 flash 的混合。它既支持块寻址, 也支持类似传统 DRAM 的按字节寻址。它既可以在容量上达到类似 NAND flash 的TB以上, 又能把延迟保持在10的2次方纳秒级。

通过将数据介质直接连接至内存总线,CPU 可以直接访问数据,无需任何驱动程序或 PCIe 开销。而且由于内存访问是通过64 字节的 cache line,CPU 只需要访问它需要的数据,而不是像普通块设备那样每次要按块访问。

Intel 公司在2018年5月发布了基于3D XPoint™ 技术的Intel® Optane™ DC Persistent Memory。可以认为是NVDIMM-P 的一种实现。

Intel® Optane™ DC Persistent Memory

02硬件支持

应用程序可以直接访问NVDIMM-P, 就像对于传统 DRAM那样。这也消除了在传统块设备和内存之间页交换的需要。但是向持久性内存里写数据是和向普通DRAM里写数据共享计算机资源的。包括处理器缓冲区, L1/L2缓存等。

需要注意的是, 要使数据持久, 一定要保证数据写入了持久性内存设备, 或者写入了带有掉电保护的buffer。软件如果要充分利用持久性内存的特性, 指令集架构上至少需要以下支持:

写的原子性 表示对于持久性内存里任意大小的写都要保证是原子性的, 以防系统崩溃或者突然掉电。IA-32 和 IA-64 处理器保证了对缓存数据最大64位的数据访问 (对齐或者非对齐) 的写原子性。因此, 软件可以安全地在持久性内存上更新数据。这样也带来了性能上的提升, 因为消除了copy-on-write 或者 write-ahead-logging 这种保证写原子性的开销。

高效的缓存刷新(flushing) 出于性能的考虑, 持久性内存的数据也要先放入处理器的缓存(cache)才能被访问。经过优化的缓存刷新指令减少了由于刷新 (CLFLUSH) 造成的性能影响。

a. CLFLUSHOPT 提供了更加高效的缓存刷新指令

b. CLWB (Cache Line Write Back) 指令把cache line上改变的数据写回内存 (类似CLFLUSHOPT),但是无需让这条 cache line 转变成无效状态(invalid, MESI protocol),而是转换成未改变的独占状态(Exclusive)。CLWB 指令实际上是在试图减少由于某条cache line刷新所造成的下次访问必然的cache miss。

提交至持久性内存(Committing to Persistence)

在现代计算机架构下,缓存刷新的完成表明修改的数据已经被回写至内存子系统的写缓冲区。但是此时数据并不具有持久性。为了确保数据写入持久性内存,软件需要刷新易失性的写缓冲区或者在内存子系统的其他缓存。新的用于持久性写的提交指令 PCOMMIT 可以把内存子系统写队列中的数据提交至持久性内存。

非暂时store操作的优化(Non-temporal Store Optimization)

当软件需要拷贝大量数据从普通内存到持久性内存中时(或在持久性内存之间拷贝), 可以使用弱顺序, 非暂时的store操作 (比如使用MOVNTI 指令)。因为Non-temporal store指令可以隐式地使要回写的那条cache line 失效, 软件就不需要明确地flush cache line了(see Section 10.4.6.2. of Intel® 64 and IA-32 Architectures Software Developer's Manual, Volume 1)。

小结

上面介绍了NVDIMM 的几种实现方式,以及为了发挥NVDIMM-P 的性能所做的硬件上的优化和支持。下面会继续介绍软件方面的支持,包括编程模型、编程库、SPDK方面的支持等。

如果想了解更多关于Linux的技术干货,请关注公众号【Linux架构师训练营】

相关问答

硬盘用HDtune检测硬盘有很多 坏块 ,可是还能用,但是又有可能继续扩散,我应该怎么办,怎么 修复 啊?

建议你用效率源这个软件先修复一下对于物理坏道那是硬件,像盘片被划杀了,这个是修复不了的,不过也不会出现如此多的物理坏道,如果真是这样,建议你赶紧备份...

固态硬盘 修复软件 哪个好?

diskgenius虽然是分区软件,但它带的硬盘修复功能非常强大,实际修复过的确能修复坏道,但坏道面积不能过多,否则需要大量的时间来修复,关键是他是免费的,而且...

runCHKDSK/Ftocheckforharddrivecorruptionandthenrestartyo...

[回答]提示“运行CHKDSK/F来检查硬盘驱动器损坏,然后重新启动您的计算机。”用一些无损分区工具来看一下分区表是否有错误,用硬盘检测工具看是否有坏块...

U盘 修复 工具什么好用?

以下是几款比较好用的U盘修复工具:HPUSBDiskStorageFormatTool:这是一款由惠普公司开发的U盘修复工具,支持格式化和修复U盘,操作简单,适用于大多数品...

内存卡要怎么 修复 ?我把内存卡扩大了,怎么才能缩小?

怎么恢复实际容量呢,内存卡又不像U盘可以量产的方式恢复,因此就有了这个工具,这个《MS-Format扩容内存卡修复工具》可以帮您将扩容卡恢复真实容量。MS-Format...

固态硬盘 修复 的5种最佳方法?

针对不同的SSD故障,可采取以下不同的修复方案:1、针对无法通过固件修复和替换法处理的固态硬盘。可以采取芯片拆卸,编程器读取的方案处理。1)在取芯片读取...

内存卡 修复 工具哪种好?

现在的内存卡不管是SD卡还是TF卡还是手机内存卡都或多或少有各种各样的问题,内存卡又不像U盘可以用量产工具修复,如果出现无法格式化,不能读出数据,不能打开...3...

量产 修复 u盘步骤?

以下是一般的量产修复U盘的步骤:1.下载并安装量产工具:在网络上搜索并下载适合你U盘芯片型号的量产工具。一般常用的量产工具有Phison、Alcor、Smi等。安装...

imac一体机显卡坏了,过保了,怎么处理-ZOL问答

想问一下cpu是i5的不是集成了显卡,那拔下显卡还能显示吗3年前买的imac一体机的显卡坏了,保修过了修一下要好多钱,又找不到能修的一般电脑店,显卡是AMDRadeonH...

umptool无法识别u盘?

芯邦量产工具实际上是分为两种的,一种是UMPTool,另一种是APTool。UMPTool是常规量产工具,支持高格、低格,但无法识别这种扩容盘;而APTool仅支持高格,但可以...

 宁波城市之光  赛尔号龙系 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部