网站开发建设总结,网站建设吉金手指专业11,网页添加背景图片代码,网站开发与系统开发二、预习 在我们进去device mapper的dm dedup学习之前#xff0c;我们先要预习一下#xff0c;什么是device mapper#xff0c;和为什么device mapper能够做块重删。 1、device mapper照旧#xff0c;我们先看一下维基百科对它的介绍。The device mapper is a framework pr…二、预习 在我们进去device mapper的dm dedup学习之前我们先要预习一下什么是device mapper和为什么device mapper能够做块重删。 1、device mapper照旧我们先看一下维基百科对它的介绍。The device mapper is a framework provided by the Linux kernel for mapping physical block devices onto higher-level virtual block devices. It forms the foundation of the logical volume manager (LVM), software RAIDs and dm-crypt disk encryption, and offers additional features such as file system snapshots.注1这一段的意思就是说device mapper是我们linux系统中非常重要的LVM和软RAID还有加密、快照等特性的实现。 Device mapper works by passing data from a virtual block device, which is provided by the device mapper itself, to another block device. Data can be also modified in transition, which is performed, for example, in the case of device mapper providing disk encryption or simulation of unreliable hardware behavior.注2这一段的意思是说device mapper使用虚拟设备dm-n来提供与其他虚拟或者真实的块设备的数据传送当然数据能够在其中改变比如raid会增加冗余信息也可以不改变比如linear就是透传或者就是更厉害的功能加密等吧可见这个device mapper一定可以是个常青树什么和存储有关系的都可以用它实现。 我们大致了解的device mapper我们还需要了解一下device mapper在linux I/O stack中的位置吧还是那个老图我们尽量看看顺便把其他的模块也讲解一下 鉴于篇幅有限我们就从上往下讲因为本人从事linux I/O stack的研究已经有5年的时间大概每个位置都是玩过的但并非每个module都是专家并且kernel I/O stack里面的存储的知识都非常的深所以要入坑存储的同行的请三思啊。ok废话不多说我们从最上层开始讲这里只是概要性的分析不涉及特别深。我把图截成上下两半以block layer为分层。上面应该就是大概非常熟悉的三大块LIO、虚拟块设备、VFS虚拟文件系统。1、LIO(linux io target)做传统SAN存储和分布式块存储的同学应该对LIO比较熟悉吧至少都是听过的早些年我们做iscsi或者fc存储的时候那时候我们大多数用IET和SCST后来随着linux kernel对LIO的逐步完善目前LIO可以支持非常多种类的fabric和backcore。fabrictcm_fc(我觉得可能是用于emulex的光纤卡)iscsi_target_mod(是对接linux kernel网络协议栈)、tcm_qla2xxx(对接qlogic的光纤卡)、sbp_target(IEEE 1394)tcm_usb_target(做usb移动硬盘可以用上)等等吧其中iscsi_target_mod可以被赋予infiniband的支持会成为一个新的target为iser。backcore:backcore简单来讲就是虚拟scsi lun的mod它能够解析和仿真几乎常见的所有标准SCSI命令让它看起来和SCSI DISK内的LUN一样。LIO能够提供几种backcorecore_file(通常是文件系统的某个文件或者直接是将块设备作为文件导出)core_iblock(能够将linux块设备导出)pscsi(能够直接导出比如直接导出/dev/sdb等)。2、vfs(虚拟文件系统)微微一笑这里我不太懂属于瞎写。文件系统在linux中占有举足轻重的作用他可能是用户和开发者最便捷能够访问资源的方式。linux为用户开发了很多可操作的文件系统。大致有以下几种block-based fs:这类文件系统通常后端设备是一个或多个块设备它们的实体是一个能够组织数据的表结构通过查表(metadata)来实现文件描述符到块的映射访问这能非常有效的进行我们日常所有的大部分工作和生活需求。我们比较常用的是ext2/3/4xfs和btrfs等等。Network fs:网络文件系统他们的诞生是要去解决block-based文件不能够有效共享文件而产生的。他们从本质上讲都是分布式的因为文件可能被多个client使用这种文件系统通常需要非常复杂的分布式协议作为支持如我们最开始接触的NFS从windows兼容的smb2fs还有目前非常流行的ceph目前来看ceph并非和它的前辈一样只能够作为NAS的导出协议它能够提供新兴的存储接口对象存储和高效的块存储。psedudo fs伪文件系统。大家应该都会对/dev/sda这种块设备直接进行过dd等操作从vfs来看/dev/sda这种bdev也是一种伪文件系统包括我们更加数据的/proc、/sys、/configfs等开发者经常用来变成使用的接口他们的注册和使用都非常简单能够高效的帮助我们完成各种系统功能的配置和查看。special psedudo fs这类特别伪文件系统是非常重要的我们经常会把/tmp和/var挂载为tmpfs用来加速不需要持久化的信息来提供运行速度。 大致说完了上面的两个LIO和vfs后我们就需要来讲讲top block device也就是可能被导出的block decive在linux中被LIO和VFS使用等价于被mount即使独占模式保护块设备的访问安全。top block device:也就是虚拟块设备这个在linux 里主要就是咱们经常用的LVM drbd md-raid bcache和device mapper它们就是在/drivers/md/下面他们就是真正承上启下的块虚拟化模块每个模块都是比较有意思。这些内容会在后续的文章中一一讲解。 【本文由51cto博客作者 “底层存储技术” https://blog.51cto.com/12580077 个人创作公众号存储之谷】如需转载请于本人联系谢谢。转载于:https://blog.51cto.com/12580077/2310233