共计 2931 个字符,预计需要花费 8 分钟才能阅读完成。
这篇文章主要讲解了“linux lun 的概念是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“linux lun 的概念是什么”吧!
linux lun 是指逻辑单元号,其英文全称是“Logical Unit Number”,它实际上是在 SCSI- 3 中定义的,而并非单用于存储范畴,也可以指使用 SCSI 协议的一切外围设备,如磁带机、SCSI 打印机等。
一、LUN 的概念
LUN 的全称是 Logical Unit Number,也就是逻辑单元号。我们知道 SCSI 总线上可挂接的设备数量是有限的,一般为 6 个或者 15 个,我们可以用 Target ID(也有称为 SCSI ID 的)来描述这些设备,设备只要一加入系统,就有一个代号,我们在区别设备的时候, 只要说几号几号就 ok 了。
而实际上我们需要用来描述的对象,是远远超过该数字的,于是我们引进了 LUN 的概念,也就是说 LUN ID 的作用就是扩充了 Target ID。每个 Target 下都可以有多个 LUN Device,我们通常简称 LUN Device 为 LUN,这样就可以说每个设备的描述就有原来的 Target x 变成 Target x LUN y 了,那么显而易见的,我们描述设备的能力增强了。
正如我们的电脑中有一块物理上的硬盘,我们要给它进行分区,分为逻辑盘:如 C 盘、D 盘、E 盘..
所以我们可以总结一下,LUN 就是我们为了使用和描述更多设备及对象而引进的一个方法而已,一点也没什么特别的地方。
LUN ID 不等于某个设备,只是个号码而已,不代表任何实体属性,在我们的实际环境里,我们碰到的 LUN 可能是磁盘空间,可能是磁带机,或者是 media changer 等等。
二、到底什么是 LUN?
LUN 的神秘之处 (相对于一些新手来说) 在于,它很多时候不是什么可见的实体,而是一些虚拟的对象。比如一个阵列柜,主机那边看作是一个 Target Device,那为了某些特殊需要,我们要将磁盘阵列柜的磁盘空间划分成若干个小的单元给主机来用,于是就产生了一些什么逻辑驱动器的说法,也就是比 Target Device 级别更低的逻辑对象,我们习惯于把这些更小的磁盘资源称之为 LUN0、LUN1、LUN2…什么的。而操作系统的机制使然,操作系统识别的最小存储对象级别就是 LUN Device,这是一个逻辑对象,所以很多时候被称为 Logical Device。
有人说,我的 Windows 里,就认到一个磁盘呀,没看到什么 LUN 的说法,是不是 LUN=Physical Disk 呢?回答是否定的,只要你注意,磁盘的属性里就可以看到有一个 LUN 的值,只是因为你的 Disk 没有被划分为多个存储资源对象,而将整个磁盘当作 一个 LUN 来用,LUN ID 默认为零,如此而已。
我们曾经碰到过这样的问题,比如有人问,我们有一个磁盘阵列,连到了两个主机上,我们划分了一个 LUN 给两个主机认到,然后我们想,先在操作系统将磁盘分为两个分区,让两个主机分别使用两个分区,然后再出现某一台主机宕机之后,使用集群软件将该分区切换到另外一个主机上去,这样可行吗?答案也是否定的,集群软件操作的磁盘单元是 LUN,而不是分区,所以该操作是不可行的。当然,在一些环境,一般也是一些要求比较低的环境,可以在多个主机上挂载不同的磁盘分区,但是这种情况下,实际上是没有涉及到磁盘的切换的,所以在一些高要求的环境里,这种情况根本就不允许存在。
还要说明的地方是,在有些厂商和有些产品的概念里,LUN ID 被绑定到了具体的 Device 上,比如 IBM 的一些带库,整个带库只有一个 Target ID,然后 changer,tape drive 被分别分配为 LUN0、LUN1、LUN2…,但是我们要注意到,这只是产品做了特别设计,也是少数情况。
三、LUN 和存储卷到底有什么区别?
常见有人说起存储卷和 LUN 有什么区别,然后争论不休。由上边我们可以知道什么是 LUN。LUN 就是英文 Logical unit number 的缩写,即逻辑单元号,它实际上是在 SCSI- 3 中定义的,而并非单用于存储范畴,也可以指使用 SCSI 协议的一切外围设备,如磁带机、SCSI 打印机等等。从 SCSI- 3 的 SAM 模型中我们知道,SCSI-3(或者之后的版本)的协议层规定,对于 16 位宽的 SCSI 总线,其寻址范围只有 16 个,即只能挂载 16 个外围设备,每个设备称为一个 target。为了提高总线的寻址能力,于是又引入了一层,它规定在每个 target 上,还可以虚拟(也可以实际连接)出多个设备,例如某个 target 上可能接了一个磁带机,一个打印机,他们共用一个 target 地址,但为了区分他们,于是就用 LUN 加以区别,磁带机假设为 LUN0,打印机假设为 LUN2,这样就解决了多设备的寻址问题。
这是实际设备连接的例子,存储阵列(比如:HP leftHand P4000 SAN)是最好的虚拟设备的例子。一个存储磁盘阵列在 SCSI 总线看来是一个 Target,占用一个 SCSI 的 Target 地址,但存储阵列的存储空间太大,我们需要将其分成不同的部分,以供不同的应用,达到集中存储,集中管理的目的。所以在分割出来的每个存储部分(或区域)我们就用 Lun 来区别,如 LUN1 代表地址块 0 -1023,LUN2 代表地址块 1024-65535 等等。从上面可以看出,计算机在使用 SCSI 标准(注意我这里用的标准一词,代表了统含 SAM 模型中的 4 层,而并不使用接口,协议或者命令等词语)接外挂存储时,使用的是总线(BUS)- 目标(Target)-LUN 三元寻址方案,总线指的是你的计算机上有几条 SCSI 总线,有几块 SCSI 卡?目标指的是在该总线上,设备的目标地址即常说的 SCSI 地址是多少?LUN 指的是设备在一个 Target 上分配的逻辑地址,逻辑单元号。这种寻址方案和设备的连接方式,类似于物理上星形连接,逻辑上总线连接的一种网络拓扑。
那么什么又是存储卷呢?这要从存储的卷管理器说起。存储卷管理器是操作系统中的一个对象,他主要负责存储块设备的在线管理。当我们的一个存储 LUN 接入计算机后,计算机发现这个设备的存在,就需要在卷管理器上注册,卷管理器为存储卷提供注册的虚拟接口,获取存储 LUN 的基础信息,如空间大小,三元地址,块大小,起止地址,健康情况等,再为其创建一个对应的数据结构的抽象,这样计算机通过卷管理器,就能够动态的扑捉被注册的存储 LUN 的实时信息,实现动态管理。一个存储 LUN 被卷管理器进行注册抽象之后,就被卷管理器认为是一个可被鱼肉的直接下属,它可以再次被分割成更小区域,当然也可以不分割,再对分割后或者没分割后的存储空间进行数据抽象,建立相关的数据结构,供文件系统层调用。因此,存储 LUN 和卷在物理上可能是同一个东西,只是从不同的角度,不同的层次去看它,去理解它。当然,对计算机来说,这些不同确实数据处理过程的需要,也有必要弄清楚的。
感谢各位的阅读,以上就是“linux lun 的概念是什么”的内容了,经过本文的学习后,相信大家对 linux lun 的概念是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!