|
|
51CTO旗下网站
|
|
移动端

了解Linux操作体系中的块设备

块设备也便是存储以“块”为单位存储数据的设备,比较典型的如磁盘设备、光盘或许优盘。本文首要会集在磁盘设备的相关内容的剖析,其他设备类型很相似,暂时不做介绍。

作者:itworld123来历:今日头条|2019-06-14 08:24

块设备也便是存储以“块”为单位存储数据的设备,比较典型的如磁盘设备、光盘或许优盘。本文首要会集在磁盘设备的相关内容的剖析,其他设备类型很相似,暂时不做介绍。

在Windows操作体系下磁盘设备似乎是一个实实在在的设备,咱们能够经过图形界面对磁盘设备进行办理。如图1是Windows下的磁盘办理界面,能够经过这个界面明晰的看到磁盘设备,而且能够对其进行格式化等操作。

了解Linux操作体系中的块设备

图1 Windows磁盘设备

Linux操作体系的磁盘设备并不直观,在LInux体系中“悉数皆文件”的理念下,磁盘设备其实是一个文件,只不过是一个比较特别的文件。如图2是某些磁盘和分区的文件途径,其间黄色字体部分是磁盘的途径(相似文件途径),而前面赤色方框内的b表明这个文件是磁盘设备文件,而非一般文件。

了解Linux操作体系中的块设备

图2 Linux体系下磁盘设备

磁盘设备文件也是坐落VFS(虚拟文件体系)下面,与Ext4等文件体系相似(参阅图3)。用户层面能够用拜访一般文件的接口(API)拜访磁盘。如下代码是用Python完结的一个向磁盘写入字符串的程序。代码很简略,便是翻开磁盘地点的途径(path),然后调用write函数写数据。

了解Linux操作体系中的块设备

Linux体系中磁盘的实质

经过上面的描绘咱们知道关于Linux操作体系来说,磁盘便是一个文件。而磁盘自身便是一个线性存储空间(能够了解为一个大数组),这种办法与文件也是十分相似的。鉴于上述相似性,Linux将磁盘设备笼统为一个文件并没有任何不当之处。

实质上,在Linux操作体系磁盘设备是依据一个称为bdev的伪文件体系来办理的,bdev文件体系是一个在内存中的伪文件体系(在内存的文件体系,无耐久化的数据),方位与Ext4等文件体系相同。如图3所示,bdev文件体系的方位为图中赤色区域。

了解Linux操作体系中的块设备

图3 bdev文件体系方位

了解了块设备的办理办法,再结合咱们之前对文件体系的相关介绍,这样就很简略了解后续的内容了。在文件体系相关文章介绍中咱们知道,不同文件体系数据处理的关键是其供给的函数集,而这个函数集是在翻开文件的时分确认的。磁盘设备也是如此,当咱们翻开磁盘设备时,操作体系依据磁盘设备的特性,会初始化inode中的函数集。而后续对该磁盘设备的读写操作就能经过该函数集完结。如下代码所示 ,块设备连同字符设备和管道都作为特别的文件进行处理,并初始化对应的函数集。

了解Linux操作体系中的块设备

完结函数集的初始化后,当用户调用VFS层的接口时,VFS层就能够找到详细的处理函数,从而完结用户的操作。这儿的函数集与本地文件体系的函数集别无二致,差异在于一般文件体系需求办理目录和文件,而bdev伪文件体系是将磁盘看作一个大文件,更简略一些。

磁盘的缓存

已然磁盘伪文件体系bdev自身也是一个文件体系,因而天然也能够有缓存。这个缓存便是用于提高磁盘功能的缓存体系。磁盘的缓存体系与文件体系的缓存体系相似,也是经过页缓存来完结的。当然,Linux磁盘的缓存是能够封闭的,此刻将调用别的一套函数集。

这样说起来或许比较笼统,下面咱们以一个详细的比如来看一下磁盘缓存的详细完结。如下是磁盘伪文件体系的函数集,咱们以写数据为例进行介绍。

了解Linux操作体系中的块设备

图4 磁盘函数集

写数据的函数为blkdev_write_iter,该函数会调用generic_perform_write函数。假如咱们阅览过本号关于文件体系的文件的话,很清楚后者便是VFS中向页缓存写数据的函数。也便是说块设备伪文件体系的逻辑与本地文件体系完全一致。缓存部分点到为止,详细代码请咱们自行阅览。

好了,今日咱们主要对Linux的磁盘设备的原理及其缓存进行了介绍。后续咱们再逐渐进行各种特性的细节。

【修改引荐】

  1. 华为考虑与俄罗斯Aurora操作体系进行深度研制协作
  2. 常用操作体系原版下载地址收拾,Windows7 Windows10 Deepin
  3. 前端开发也要学点儿Linux根底指令
  4. 有了Lutris,Linux现在也能够发动Epic游戏商城
  5. 怎么监控Linux服务器状况?
【责任修改:赵宁宁 TEL:(010)68476606】

点赞 0
共享:
咱们都在看
猜你喜爱

订阅专栏+更多

20个局域网建造改造事例

20个局域网建造改造事例

网络建立技巧
共20章 | 捷哥CCIE

243人订阅学习

WOT2019全球人工智能技能峰会

WOT2019全球人工智能技能峰会

通用技能、运用领域、企业赋能三大章节,13大技能专场,60+国内外一线人工智能精英大咖站台,共享人工智能的渠道东西、算法模型、语音视觉等技能主题,助力人工智能落地。
共50章 | WOT峰会

0人订阅学习

Spring Boot 爬虫查找轻松游

Spring Boot 爬虫查找轻松游

全栈式开发之旅
共4章 | 美码师

77人订阅学习

读 书 +更多

Expert C# 2005 Business Objects中文版

本书描绘了怎样运用面向目标的概念来进行.NET运用程序的架构、规划和开发。作者将要点放在了面向事务的目标,即事务目标和怎样在包含Web和...

订阅51CTO邮刊

点击这儿检查样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客