作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.设备文件
I/O Ports:
I/O设备地址。
一切皆文件:
open(),read(),write(),close()
设备类型:
块设备:
bolck,存储单位是"块",它的依赖介质是磁盘,比如一个磁盘可以分成很多快。
块存储设备通常来讲是随机存放数据的,但它有缓存的机制。
字符设备:
char,存取单位"字符",它的依赖介质是键盘输入数据,作为运维人员应该很熟悉的一个字符设备就是"/dev/null"和"/dev/tty"。
通常来讲是顺序存放数据的,且其无缓存机制。
设备文件:
关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信。
设备号码:
主设备号:
major number,标识设备类型。
次设备号:
minor number,标识同一类型下的不同设备。
温馨提示:
设备编号是安装系统自动生成的,无需咱们系统工程师手动创建哟~
二.硬盘接口类型
并行:
IDE:
133MB/s,这种接口基本上被淘汰了,如下图左上角所示的
SCSI:
640MB/s
串口:
SATA:
6Gbps(注意哈,bps就是bit/s),约等于768MB/s。
SAS:
6Gbps
USB:
480MB/s
每分钟转速(rotations per minute,简称rpm)。
三.固态硬盘和机械硬盘
1>.硬盘的分类
机械硬盘(Hard Disk Drive,简称HDD):
即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。
机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。
磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。
数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。
硬盘为精密设备,进入硬盘的空气必须过滤(因此,家用设备不建议大家自行拆卸,因为你拆卸后基本上意味着这块磁盘里的数据报废了)。
固态硬盘(Solid State Drive,简称SSD):
用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。
固态硬盘在接口的规范和定义,功能及使用方法上与机械硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致
机械硬盘(HDD)和固态硬盘(SSD)的区别:
相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍
相较于SSD,HDD在价格、容量、使用寿命上占有绝对优势
硬盘有价,数据无价,目前SSD不能完全取代HHD,当HDD"损坏"是有可能将数据找回来的,但是当SSD"损坏"则意味着数据是真的丢失了。不过运维工程师备份自然是做的充足,尽管SSD数据丢失了,运维工程师也可以从备份中恢复数据。
2>.机械硬盘结构
盘片(disk):
负责真正存储数据的介质,一个硬盘中有多个盘片组成。机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的。
磁头(head):
磁头是用来从盘片读取数据的。如下图所示,每个盘片的存储面(一个盘片有上下两面)上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小(一般很难通过肉眼区分它们之间的距离)。
磁头通过磁力读取数据,但并不能和盘片直接接触,因为直接接触会划伤盘片导致数据丢失。这就是为什么生活环境中机械硬盘不能经常磕碰或者摔它。
磁头控制器(Head controller):
所有的磁头联在同一个磁头控制器上,由磁头控制器负责各个磁头的运动。
磁道(track):
每个盘片上下两面都有磁道,这个磁道类似于学校举行运动会的跑道,我们可以说盘片被划分成多个磁道。很显然,靠盘片外部的磁道存储的数据要比靠盘片内部的存储数据要多,这个也不难理解,就好像运动会的跑道,外圈比内圈要长。
需要注意的是,每个盘片的各个磁道都有与其对应的编号,靠外边的磁道编号相对较小。
扇区(sector):
每个磁道又被划分成多个扇区,一般情况下默认每个扇区的大小是512字节(bits)。
柱面(cylinder):
它其实是一个逻辑的概念,它指的是所有盘片的相同的磁道称之为同一个柱面,从逻辑的角度来讲它应该是一个柱状结构。早期的分区划分方式就是基于柱面的(在CentOS 5.x及之前的版本)。
综上所述,基于柱面这个逻辑概念来划分分区的粒度太大了,因此在CentOS 6.x及以后的版本是可以基于扇区的方式来划分。
蔟:
簇是Window系统可以识别的最小单位。当我们存储一个文件时,占用的簇数量都是整数,也就是不会有两个文件同时占用一个簇的情况发生。
每个簇可以包括2、4、8、16、32或64个扇区。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。
在Linux操作系统可以识别的最小单位是块(block),其概念和window的蔟类似。
磁头停泊区:
顾名思义,主要是存放磁头的一个安全停泊区,当没有数据访问时,磁头会停放在该区域,这一点有点类似于高速公路上的服务区,即当你在高速路上想停车时需要进入对应的服务区。
温馨提示:
机械硬盘为精密装备,磁盘里面的空间基本上是没有什么杂物的,但也不是说是真空环境(因为真空环境的话由于压力的作用硬盘会直接被压扁的),因此它里面应该是一种惰性气体,进入硬盘的空气必须经过过滤。
综上所述,非专业人员不建议大家去拆卸自己的机械硬盘,因为当你拆开后意味着空气中未过滤的气体会进入到硬盘内部,可能会导致磁盘不可用。
3>.区位记录磁盘(Zoned Bit Recording,简称ZBR)扇区结构
如上图所示,各个磁道的扇区数是一样的,假设每个扇区的大小是512bytes,如果同一个扇面靠内的扇区和靠外的扇区存储相同的数据,这会导致靠内的扇区存储的数据很紧凑,靠外存储的数据很稀松。
综上所述,为了解决上述的情况,引入了区位记录磁盘扇区结构(Zoned Bit Recording,简称ZBR)。
如下图所示,可以很明显的看出来无论是靠内的函数还是靠外的扇区其大小是一样的,但靠内的扇区数要比靠外的扇区数少。靠外的扇区数多意味着可以多放数据,靠内的扇区数少就少放数据。
温馨提示:
当以盘片的旋转轴为中心,旋转相同的角度,通过ZBR划分扇区的方式,很明显是靠外的数据要比靠内的数据要多。
我们直到靠外的磁道编号较小,靠内的磁道编号较大,因此在实际生产环境中我们在分区时可以考虑将编号较小的分区划分给我们常用的分区,
综上所述,这就是为什么我们安装window操作系统喜欢被大家统称为C盘,因为C盘的分区对应的磁道编号较小,其拥有的是靠外的扇区,读写速度自然是快些。
4>.CHS和LBA
CHS:
CHS是柱面(cylinder),磁头(head)和扇区(sector)的简称。我们通常生活中说的硬盘的三维指的就是CHS。
它采用24bit位寻址(最大寻址空间是8GB):
(1)其中前10位表示cylinder(磁道数和柱面数相同,柱面数范围是0到2的10次方,即0~1024,如果你发现自己的硬盘柱面数大于1024,说明你用的硬盘已经不是早期的硬盘了,随着工业技术的提升,硬盘的质量也有很大的提高哟~);
(2)中间8位表示head(磁头数范围是0到2的8次方,即0~255)。
(3)后面6位表示sector(扇区数范围是0到2的6次方,即0-63)
LBA:
是logical block addressing的简称。
LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址
ATA-1规范中定义了28位寻址模式,以每扇区512字节来计算,ATA-1所定义的28位LBA上限达到128GiB(2的28次方 x 512字节 = 137438953472字节/1024/1024/1024 = 128GB)。
2002年ATA-6规范采用48位LBA,同样以每扇区512字节组计算容量上限可达128Petabytes。
温馨提示:
由于CHS寻址方式的寻址空间在大概8GB(512bytes(单个扇区大小)*63(扇区数)*1024(柱面数/磁道数)*255(磁头)=8422686720bytes/1024/1024=8032MB/1024<8GB)以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式。
5>.磁盘设备的设备文件命名
早期对磁盘设备的设备文件命名方式和现在的设备文件命名方式有所不同,接下来我们就以CentOS为例做简要说明。
在CentOS 5.x操作系统:
如果硬盘设备的接口不同,则设备文件命名方式不同。
当使用SCSI接口类型则操作系统命名方式以"sd"开头(比如表示第一个该设备文件命名为"sda",对应第一个分区则为"sda1"),当使用IDE接口类型则操作系统命名方式以"hd"开头(比如表示第一个该类型设备文件命名为"hda",对应第一个分区则"hda1")。
在CentOS 7.x操作系统:
无论你是哪种硬盘设备接口,都有统一的设备文件命名方式(均以"sd"字母开头)。
温馨提示:
虽然CentOS在2019年的年底就已经将系统发布到CentOS 8.x版本,但目前企业使用较多的版本依旧是CentOS 7.x为主。CentOS 6.x次之,如果你发现还有CentOS 5.x建议迁移到CentOS 7.x及以上版本,因为老版本系统随着时间的推移会不断的爆出bug。
一个服务器基本上很难超过36块硬盘,因此我们对设备文件命名使用/dev/sda到/dev/sdb之间可以表示36块设备,通常是足够使用了。但是你遇到的是磁盘阵列的话可能会超过36块设备,此时我们可以使用/dev/sdaa到/dev/sdaz表示,如果还有更多的设备可以一次类推命名方式。
虚拟磁盘通常以"vd"字母开头,尤其是你在购买一些云产品的服务器,你会发现磁盘的命名方式是"/dev/vd*",这个时候你并不用担心,这意味你使用的是一块虚拟磁盘,关于其底层负责存储的物理磁盘无需咱们用户关心。
我们使用的虚拟机添加硬盘(磁盘)的方式也比较简单,如下图所示按照我们的需求可以自定义磁盘的大小,如果您将虚拟磁盘存储为单个文件最大不能超过2040GB(即不到2TB),如果将虚拟磁盘查分成多个文件,最大磁盘大小不能超过8192GB(即8TB)。
博主推荐阅读:
https://www.cnblogs.com/yinzhengjie/p/12347792.html