1.硬盘了解

Posted xingyi123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.硬盘了解相关的知识,希望对你有一定的参考价值。

1.硬盘

1.1 分类

分类:根据存储数据的介质可以分为机械硬盘(HDD,Hard Disk Drive)和固态硬盘(SSD,Solid State Disk)。机械硬盘采用磁性碟片来存储数据,而固态硬盘通过闪存颗粒来存储数据。

1.2 接口类型

1.IDE接口(ATA)
传输慢,不支持热插拔

 

2.SATA接口硬盘(Serial ATA,串行ATA) 传输速度大约600M/S,支持热插拔,最大插拔次数仅约200次

 

3.SCSI接口硬盘(淘汰)

 

4.SAS接口硬盘(串行SCSI)
SCSI的升级版

1.3 机械硬盘原理

1.机械硬盘内部结构

2.机械硬盘存储原理:
机械硬盘主要由盘片、磁头、主轴与传动轴等组成。
数据存放在磁盘盘片中。
而硬盘是上下双磁头,盘片在两个磁头中间高速旋转,上下盘面同时进行数据读取。
信息通过离磁性表面很近的磁头,由电磁流来改变极性方式被电磁流写到磁盘上。
注意: 机械硬盘的常见转速是 7200 r/min,所以机械硬盘在读取或写入数据时非常害怕晃动和磕碰

1.4格式化

右键我的电脑,管理,设备管理器,磁盘驱动器,查看是否检测到磁盘
右键我的电脑,管理,设备管理器,磁盘管理,进行格式化
图吧工具箱,磁盘工具,HDTune,查看坏道。

 

在 Delphi 中了解硬盘驱动器的速度

【中文标题】在 Delphi 中了解硬盘驱动器的速度【英文标题】:Know how fast a Hard Drive is in Delphi 【发布时间】:2011-07-30 08:01:25 【问题描述】:

我正在编写一个诊断程序(如 everest,但更简单),我需要知道硬盘驱动器的速度。我想知道诸如:

1 - 每秒字节数(读取) 2 - 每秒字节数(写入) 3 - S.M.A.R.T 数据

我想我可以使用 WMI 来查询这样的事情,但我不知道如何。我是否需要购买组件或获取开源组件都没有关系。我也知道 Windows Perfmoon 能够做到这一点,但我不能使用它。

【问题讨论】:

我不回答这个问题,但我认为大文件和小文件的硬盘读/写速度是不一样的。简单的逻辑表明,您应该从 HD 读取/写入一些数据,然后将数据大小除以操作结束和开始之间的时间差(以秒为单位),以分别获得适当的读/写速度。对于 S.M.A.R.T 数据,我不知道。 是的,这是一种简单的方法。但我猜windows有一些可以使用的东西。 Windows 没有任何可以从代码中使用的内置功能,AFAIK。它使用硬盘的性能来提供 Vista/Win7 上的 Windows 体验指数,但我不知道有任何 API 可以从您自己的应用程序连接到该指数。 【参考方案1】:

Rafael 要获取 S.M.A.R.T 数据,您可以使用 WMI 或 Windows API。

使用 WMI

WMI classes to obtain S.M.A.R.T 数据是

MSStorageDriver_ATAPISmartData MSStorageDriver_FailurePredictData MSStorageDriver_FailurePredictStatus MSStorageDriver_FailurePredictThresholds MSStorageDriver_ScsiInfoExceptions

所有都位于root\WMI 命名空间中。不幸的是,这些类没有很好的文档记录。

使用 WINAPI

要从 Windows API 访问 S.M.A.R.T 数据需要做更多的工作,您必须使用 DeviceIoControlCreateFile 函数传递各自的结构来保存数据。你可以在net 上找到很多这样的示例。

计算硬盘的速度

没有直接公开此信息的 Windows api。所以你必须自己计算。例如,您可以查看此应用程序DISKSPEED,其中包含 C++ 源代码。他们使用CreateFile 函数设置FILE_FLAG_NO_BUFFERING ($20000000) 标志,使对文件句柄的任何写入和读取都可以直接完成而不被缓冲。

【讨论】:

以上是关于1.硬盘了解的主要内容,如果未能解决你的问题,请参考以下文章

linux下的磁盘管理

了解硬盘扇区大小

如何了解哪个进程删除了硬盘上的文件

查询了解linux的一些系统资源概念

hdparm 命令使用;关闭硬盘 HDD cache; 硬盘读写性能测试;

了解Hadoop和大数据