
磁盘扇区、IO块、inode、文件、目录、硬链接与软链接到底是什么?
自己理解了一下,记录一下备忘。
1、扇区
扇区是磁盘盘片上的一个物理划分,是真真实实存在看得见摸得着的东西。
我们先来看看如何查看一个磁盘的一些信息,可以使用fdisk -l命令查看。我这里有多块盘,但我只截图了一个在这里展示,如图所示,我截取的这块盘为/dev/sda。
看红框所示,Unit是单元的意思,sector是扇区的意思。即磁盘的存储单元是扇区。
从图中第一行还可以看到这块盘的大小为5996G,总共有1171062784个扇区。
从第二行可以看到每个扇区的大小为512bytes。
从第三行可以看到扇区的逻辑大小为512bytes,物理大小为512bytes。
从上图的帮助文档来看,扇区的逻辑大小可以修改,最小为512bytes,最大为4096bytes。(不同的系统,扇区的大小不一样)
除了扇区,磁盘还有哪些物理部件?
2、IO块(磁盘块)
我们平时常说磁盘块,可能会以为它是磁盘的一个物理分区,其实不是的。
扇区是磁盘存储的最小单元。往大了说,还有磁道、盘片等。
那既然磁盘块不是磁盘的物理分区,那么它是啥呀?
我们或许都有这样一个常识认知,就是磁盘的IO速率是非常慢的,如果在读取数据的时候,先读取了一个扇区的数据,发送给上层应用后,又返回来读下一个扇区,再发送给上层应用,如此循环反复,上层应用需要与磁盘进行多次交互,这就很浪费时间了;
所以就引入了磁盘块这么一个概念,它在逻辑层面将多个连续的扇区当作一个整体,然后在读取数据的时候以逻辑层面上的磁盘块为单位,将磁盘块所包含的扇区的数据都一次性读出来发给上层应用。
所以我们要区分开扇区、磁盘块这些概念所对应的对象是不同的:
扇区对应的是硬件层面,它是磁盘面的区域划分,是一个真真实实存在的物理部件;
而磁盘块对应的是软件层面,它在逻辑层面将多个连续的扇区当作一个整体。
比如磁盘扇区大小一般为512字节,而块大小一般为4096字节,那么每一个块就记录着连续的8个扇区;数据不是存在块里的,而是存储在扇区,而块记录哪些扇区是属于自己的。
如何查看一个IO块的大小:
1)在root用户下,执行tune2fs -l /dev/sda | grep "Block Size"
3、inode
每个文件都有数据以及元数据,数据就是文件内容了,它存储在磁盘的数据区;
而文件元数据包括下图这些项:
文件大小、文件块信息、一个块的大小、文件类型(普通文件、目录还是符号链接)、设备号、索引节点编号、硬链接数、文件的访问时间、文件内容的修改时间、文件属性的修改时间
每个文件都会对应一个inode,而每个inode都有唯一一个编号,如何查看文件的inode编号呢?
1)可以使用stat filename来查看
2)或者切换到文件所在目录后,使用ll -i命令来查看,得到的结果中第一列即为文件的inode编号。
我们刚才说到每个索引节点(inode)都有一个唯一的编号,这个编号在每个磁盘上都是有限的,当inode编号分配完了之后,就不能再创建新文件了;
因为文件都需要对应一个唯一的inode,而每个inode又需要对应唯一的编号,而编号又是有限的,所以当分配完了之后,就没法创建inode了,也就没法创建文件了。
有时候可能会发现这样的现象:就是我们想要创建一个新文件,但是发现创建不了了。
于是我们需要排查问题,怎么排查呢?
首先我们先看下是不是磁盘写满了,使用df -hl查看磁盘的使用率,如果达到了100%,那说明盘写满了,我们需要删除些东西以释放存储空间;
但是如果我们查看了磁盘使用率之后,发现不是磁盘满了,磁盘还有很多空闲的空间,那该怎么办?
可以联想到我们上面说过的,看下inode编号是不是用完了,即看下inode编号的使用率?
可以使用df -i来看下磁盘inode编号的使用率,如果发现是inode编号的使用率达到了100%了,那还是得删除些文件以释放占用的inode编号。
会不会有人有疑问?为什么磁盘空间还有这么多,inode编号就用完了?
这大概率是创建的小文件太多了,你想啊,每个文件都要对应一个inode编号,inode编号是有限的,虽然磁盘空间也有限,但是如果文件系统中是以小文件居多,每个文件就占那么点空间,inode编号的消耗速率大于磁盘空间的消耗速率,这就极有可能出现上述inode编号用完了,但是磁盘空间还剩余很多的情况。
4、文件与目录
在linux系统中,一切皆文件。
在linux中怎么判断是文件还是目录呢?
1)通过ll命令判断:
如果开头是d,那就是目录(d即directory的缩写),如果开头是-,那就是普通文件。
2)通过stat命令判断:
5、硬链接与软链接
当我们创建一个文件时,该文件的文件名其实就是一个硬链接,一个文件至少有一个硬链接,但是一个硬链接不可以指向多个文件。
硬链接有什么作用:文件系统通过硬链接可以找到inode编号,进而找到inode,通过获取inode里存储的文件元数据可以读取到磁盘中存储的文件数据。
怎么查看文件的硬链接数呢?
1)通过ll查看:
第二列即为硬链接数
有没有注意到,普通文件的硬链接数与目录的硬链接数是不一样的,普通文件只有一个硬链接,而目录则有两个,这是为什么?
因为对于目录文件而言,除了可以通过目录名获取到文件的inode之外,还可以通过(点号)获取,因为点号表示当前目录。
所以我们看到目录的硬链接数是2个。
2)还可以通过stat查看文件的硬链接数:
软链接是什么?软链接其实是一个独立的文件(分类为符号链接),它有自己的inode,它的inode里存储的是它所指向的文件的信息;由于软链接与它指向的文件是两个独立的文件,所以删除软链接并不会影响它指向的文件。
通过ln -s 123 softlink123建立一个软链接指向文件123
通过stat softlink123可以看到该文件是一个符号链接,即软链接,它有自己的inode,所以它是一个独立的文件,由于它的inode里存储的是它指向的文件的信息,所以通过软链接softlink123也可以读取到文件123的数据
可以看到通过硬链接和软链接读取到的文件内容是一样的
如何使用CactiEZ进行监控:
1要监视一台Linux主机,需要在被监控的主机上安装net-snmp相关软件包,CentOS安装可使用“yum -y install net-snmp”命令:
# yum -y install net-snmp
……
Complete!
2修改配置文件命令:
# vi /etc/snmp/snmpdconf 确保snmpdconf文件中包含以下内容:
com2sec notConfigUser default public
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
view systemview included 1
access notConfigGroup "" any noauth exact systemview none none
syslocation >
性能评估-disk IO
一、磁盘原理
设备又名I/O设备,泛指计算机系统中除主机以外的所有外部设备。
11 计算机分类
111 按照信息传输速度分:
1低速设备:每秒传输信息仅几个字节或者百个字节,如:键盘、鼠标等
2中速设备:每秒传输信息数千个字节或者数万个字节,如:打印机
3高速设备:每秒传输信息数数10万个字节,如:磁盘
112 按照信息交换单位分
1字符设备:以字符为输入/输出信息的单位,如:键盘,显示终端
2块设备:以数据块为单位输入/输出信息,如:磁盘
注:何为数据块:磁盘中常以一个扇区作为一个数据块,一个扇区就是一个读写单位
一、磁盘性能指标
1、测试磁盘性能,使用命令:dd
因数据写入磁盘,可能是缓存写,直接写(不经过缓冲区直接写入磁盘),顺序io,随机io的区别所以,这种dd测试并不是很准确。
这不是一个专业的测试工具,不过如果对于测试结果的要求不是很苛刻的话,平时可以使用来对磁盘的读写速度作一个简单的评估
在使用前首先了解两个特殊设备
/dev/null 伪设备,回收站写该文件不会产生IO
/dev/zero 伪设备,会产生空字符流,对它不会产生IO
通过以上方法就可以大致知道,磁盘的性能了。
从这条命令中:我们知道:IOPS(每秒io请求数)是:691。当前读速率是:044MB/s 写速率是:036MB/s
得出结论有:
每秒共有80个IO请求(IOPS=r/s+w/s),以写为主
io服务时间为156毫秒,平均等待服务时间为353毫秒
io队列深度为:24个
1、vmstat Block in /out
bi+bo过大,而且vmstat cpu wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。
2、IOwait time
iostat iowait% 小于25%,说明IO性能处于良好的状态;
3、util 磁盘使用率
一秒中有百分之多少的时间用于 I/O *** 作,或者说一秒中有多少时间 I/O 队列是非空的,即 delta(use)/s/1000 (因为use的单位为毫秒)
(1)如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
(2)idle小于70% IO压力就较大了,一般读取速度有较多的wait。
(3)同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)。
4、await 平均等待时间
平均每次设备I/O *** 作的等待时间 (毫秒)即 delta(ruse+wuse)/delta(rio+wio)
await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。
(1)await 的参数要多和 svctm 来参考。差的过高就一定有 IO 的问题。
(2)如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;
(3)如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用。
5、avgqu-sz 平均I/O队列长度
(1)如果avgqu-sz比较大,也表示有大量io在等待。
avgqu-sz 也是个做 IO 调优时需要注意的地方,这个就是直接每次 *** 作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小。如果数据拿的大,IO 的数据会高。也可以通过 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s。也就是讲,读写速度是这个来决定的。
由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水。
里面最重要的参数,actual disk read 和actual disk write 分别代表实际磁盘读写速度
然后下面,我们可以根据每一列进行io排序,就能知道io具体消耗是哪个进程导致的。
注意:TID代表的是线程号,如果是多线程的话,可以借助command 判断是哪个进程,也可以根据ps -eLf | grep TID 来获取到他的父进程号。
221 topas 获取是否存在io等待
仔细观察 “Wait”(在 CPU 部分的上部),如果改值较大则表示io可能存在瓶颈
222 获取io队列、IOPS、响应时间等
登录 AIX *** 作系统,输入 topas,然后按 D,会出现如下界面:
在上图中,hdisk2 的TPS 即为磁盘的 IOPS(每秒发出的io请求数),为 655;KBPS 即为磁盘每秒的吞吐量,为 1639M;尤其是应该检查 ART/AWT 和 MRT/MWT,它们表示磁盘读写 *** 作的平均和最大等待时间。比较高的值表明磁盘非常忙。AQW 表示对 I/O 设备的每个请求的平均等待队列数量。同样,比较高的值表明磁盘的速度无法跟上请求的速度。
223 查看产生瓶颈的原因
1可以使用其他工具(如 filemon、fileplace、lsof 或 lslv)帮助确定究竟是哪个进程、适配器或者文件系统导致了瓶颈。
2可以使用ps -ef | grep "pid" 来查看当前进程所在执行的任务
find -type f -size +100M -print0 | xargs -0 du -h | sort -nr
在我们大量的移动硬盘数据恢复案例中经常碰到这种故障:
移动硬盘出现I/O错误,无法读取里面有重要的数据,想恢复移动硬盘数据恢复,I/O错误,无法读取的移动硬盘,移动硬盘的话,很大程度是因为强拔之类的 *** 作,有时我们无法正常退出,就强制拔掉硬盘,也可能是坏道,病毒,某个磁头损坏硬盘本身质量问题引起的。经常会因为系统读取移动硬盘信息困难,只能读取一部分,而且无法打开。有时候会引起系统假死。卡机。出现提示:未格式化,文件目录损坏,页内 *** 作错误,函数不正确,无法读取。。。。。之类的。是分区结构出现异常。引起的分区错误。单击右键属性看到的是RAW格式。更多
移动硬盘数据恢复,
服务器数据恢复
上海U盘数据恢复
如果说移动硬盘有提示I/O出错的话,建议客户不要插电脑反复通电试了因为在普通的USB电脑上是不大可能读出数据的我们通过专业数据恢复设备,UDMA工具,可以通过工具跳过主板检测硬盘进行硬盘检测提取数据
移动硬盘能识别但io设备错误可以DiskGenius软件修复。
具体方法如下:
1、百度搜索DiskGenius。
2、点击上方的下载按钮,进入DiskGenius下载界面。
3、选择适合的DiskGenius版本下载
4、打开下载的DiskGenius软件,点击左上角的工具-搜索已丢失分区(重建分区表)。
5、点击保存更改,然后退出软件,重新启动电脑。
5、移动硬盘就可以正常使用了。
扩展资料:
移动硬盘的作用
1、目前市场上绝大多数的移动硬盘都是以标准硬盘为基础的,而只有很少部分的是以微型硬盘(1.8英寸硬盘等),但价格因素决定着主流移动硬盘还是以标准笔记本硬盘为基础。
2、因为采用硬盘为存储介制,因此移动硬盘在数据的读写模式与标准IDE硬盘是相同的。
3、移动硬盘多采用USB、IEEE1394等传输速度较快的接口,可以较高的速度与系统进行数据传输。
4、目前主流2.5英寸品牌移动硬盘的读取速度约为15-25MB/s,写入速度约为8-15MB/s,爱国者极速王(SK8666)读写速度可以达到33MB/S。
使用Python获取电脑的磁盘信息需要借助于第三方的模块psutil,这个模块需要自己安装,纯粹的CPython下面不具备这个功能。
在iPython交互界面中进行如下演示:
查看电脑的磁盘分区:
In [1]: import psutil
In [2]: psutildisk_partitions()
Out[2]: [sdiskpart(device='/dev/disk2', mountpoint='/', fstype='hfs', opts='rw,local,rootfs,dovolfs,journaled,multilabel')]
In [3]: len(psutildisk_partitions())
Out[3]: 1
从上面的结果看出,电脑只有一个分区。针对最后的结果专门通过判断字典的元素个数来确认了一下。
查看电脑的磁盘使用百分比:
In [4]: psutildisk_usage('/')
Out[4]: sdiskusage(total=1114478608384, used=305497878528, free=808718585856, percent=274)
相对来说还好,新电脑使用时间还不是很长,硬盘暂时还没有塞满。总共用了大约274%。
查看电脑磁盘的IO计数:
In [5]: psutildisk_io_counters()
Out[5]: sdiskio(read_count=112237L, write_count=99750L, read_bytes=5243863040L, write_bytes=7047483392L, read_time=80568L, write_time=138699L)
In [7]: psutildisk_io_counters(perdisk=True)
Out[7]:
{'disk0': sdiskio(read_count=103533L, write_count=86260L, read_bytes=5120090624L, write_bytes=4813373440L, read_time=29774L, write_time=27654L),
'disk1': sdiskio(read_count=8740L, write_count=13723L, read_bytes=124141056L, write_bytes=2237206528L, read_time=50840L, write_time=111871L)}
上面分别使用了两种方式,第一种方式是获取磁盘总的IO信息,第二种是查看电脑分区的磁盘信息。从结果上来看,信息的统计不是按照逻辑分区来统计的,而是按照物理磁盘来统计的。我的电脑上正好是有两块磁盘,一块机械硬盘还有一块固态硬盘,其实这个按照物理磁盘进行统计的说法是根据这个推断出来的。
计算机从硬盘进行一次I/O *** 作,读写数据量为一个磁道。
磁盘上的磁道是一组记录密度不同的同心圆。磁表面存储器是在不同形状(如盘状、带状等)的载体上,涂有磁性材料层,工作时,靠载磁体高速运动,由磁头在磁层上进行读写 *** 作,信息被记录在磁层上,这些信息的轨迹就是磁道。磁盘的磁道是一个个同心圆。
相邻磁道之间并不是紧挨着的,这是因为磁化单元相隔太近时磁性会产生相互影响,同时也为磁头的读写带来困难。一张老式144MB的35英寸软盘,一面有80个磁道,而硬盘上的磁道密度则远远大于此值,通常一面有成千上万个磁道。
扩展资料:
硬盘的物理结构一般由磁头与盘片、电动机、主控芯片与排线等部件组成;当主电动机带动盘片旋转时,副电动机带动一组(磁头)到相对应的盘片上并确定读取正面还是反面的碟面。
磁头悬浮在碟面上画出一个与盘片同心的圆形轨道(磁轨或称柱面),这时由磁头的磁感线圈感应碟面上的磁性与使用硬盘厂商指定的读取时间或数据间隔定位扇区,从而得到该扇区的数据内容。
以上就是关于磁盘扇区、IO块、inode、文件、目录、硬链接与软链接到底是什么全部的内容,包括:磁盘扇区、IO块、inode、文件、目录、硬链接与软链接到底是什么、如何使用CactiEZ进行监控Windows主机、性能评估-disk IO等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)