Chinaunix首页 | 论坛 | 博客
  • 博客访问: 73111
  • 博文数量: 8
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-03 23:40
文章分类

全部博文(8)

文章存档

2009年(7)

2008年(1)

我的朋友

分类: 系统运维

2009-04-17 11:26:13

转载
a、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了,那么显而易见的,我们描述设备的能力增强了.就好比,以前你给别人邮寄东西,写地址的时候,可以写:
   xx市人民大街54号 xxx(收)
   但是自从高楼大厦越来越多,你不得不这么写:
   xx市人民大街54号xx大厦518室 xxx (收)
   所以我们可以总结一下,lun就是我们为了使用和描述更多设备及对象而引进的一个方法而已,一点也没什么特别的地方.
b、lun是什么东西?
   lun id不等于某个设备,只是个号码而已,不代表任何实体属性,在我们的实际环境里,我们碰到的lun可能是磁盘空间,可能是磁带机,或者是media changer等等.
   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.....,但是我们要注意到,这只是产品做了特别设计,也是少数情况。
c、存储和主机的电气独立时代的lun的概念
还有很多新手总是把阵列里面的磁盘和主机的内部磁盘的一些概念搞混淆了。
在磁盘阵列和磁带库大行其道的时代,存储越来越智能化,越来越像一个独立的机器,实际上存储和主机的电气独立本来就是一个必然趋势,俗话说得好,儿大要分家嘛。在存储越来越重要的时代,存储要自立门户是必然的事。
如果我们把存储当作一个独立的主机来看,理解起来就很简单了。我们说到lun的概念的时候,我们就要将分为两个层面。一个层面就是在阵列这个机器的os识别到的范围,一个层面就是服务器的os识别到的范围。这两个层面是相对独立的,因为如果我们把存储当作一个主机来看,那么它自然有自己的device,target,lun之说,而服务器也有自己的device,target,lun之说;另外一方面,这两个层面又是相互关联的,一个阵列的控制系统,大多都有虚拟化的功能,阵列想让主机看到什么样的东西,主机才能看到相应的东西。当然,服务器识别到的最小的存储资源,就是lun级别的。那么主机的HBA卡看到的存储上的存储资源就靠主要两个东西来定位,一个就是存储系统的控制器(target),一个就是lun id,这个lun是由存储的控制系统给定的,是存储系统的某部分存储资源。
d、lun masking,lun mapping
我们有了独立的磁盘阵列用了之后,服务器只要看到存储的控制系统,就有可能使用磁盘阵列的磁盘资源,但是磁盘阵列不可能只为某一个服务器来使用,所以他必须管制主机使用某部分磁盘资源。这个管制分为两个部分:一部分就是lun mapping,类似于绿色通道,就是保证服务器能看到某部分存储资源,一部分就是lun masking,类似于警戒线,就是保证服务器只可访问给它分配的存储资源,而没分配给服务器的资源,就不要染指了。
实现lun masking和lun mapping有三种方法:一个是基于存储控制系统来设置,一个是基于存储交换系统来设置,一个是基于服务器os来设置。
基于存储控制系统得设置,是比较常见的设置,比如很多磁盘阵列的控制系统,本身就能设置lun被某服务器看到。比如FastT的partition功能。
基于存储交换系统的设置,也是一种常用的方法,比如常说的zoning。
基于服务器os的设置,比较少采用,一般采用安装某些操作系统上安装某些软件来实现,因为这个方法全靠服务器自觉,所以比较少用,呵呵。
e、lun的multi-path
现在,存储网络越来越发达了,一个lun有多条通路可以访问也不是新鲜事了。
服务器使用多个HBA连接到存储网络,存储网络又可能是由多个交换设备组成,而存储系统又可能有多个控制器和链路,lun到服务器的存储网络链路又可能存在着多条不同的逻辑链路。那么,必然的,同一个physical lun在服务器上必然被识别为多个设备。因为os区别设备无非用的是总线,target id,lun id来,只要号码不同,就认为是不同的设备。
由于上面的情况,多路径管理软件应运而生了,比如emc的powerpath,这个软件的作用就是让操作系统知道那些操作系统识别到lun实际上是一个真正的physical lun,具体的做法,就是生成一个特别的设备文件,操作系统操作这个特殊的设备文件。而我们知道,设备文件+driver+firmware的一个作用,就是告诉操作系统该怎么使用这个设备。那么就是说,多路径管理软件从driver和设备文件着手,告诉了操作系统怎么来处理这些身份复杂的lun。
 
/dsk 是块设备,/rdsk是裸设备。
用newfs在/rdsk上创建了文件系统,便有了块设备。
应用程序可以绕过操作系统,直接访问裸设备,不经过文件系统的缓冲。
而块设备本身是操作系统文件系统的一部分。
是/dsk是磁盘设备在操作系统中映射。
所以newfs肯定用裸设备,mount肯定用块设备,以此类推
 
rdsk与dsk的区别

我觉得你这么理解可能到最后根本不明白,然后糊涂了事。
你应该知道,操作系统的主要功能就是控制硬件。控制硬件的方法就是为硬件建立软件标准。那么这个标准实际上就是软,硬件之间的接口。把计算机从硬件之间的电路联系向软件与硬件间的逻辑联系建立起来的方法。
比如,你有1个文件想写进硬盘。那么,首先是应用程序通知操作系统,现在要写文件到磁盘。这是一个任务,此时的硬盘并没有开始工作,而是在操作系统的控制队列中排队。操作系统开始要执行这个任务的时候,是向/dev/dsk中的设备去写,也就是向以字节为单位的块中去写,写入的是逻辑设备。然后,再通过操作系统,把/dev/dsk中的以字节为单位的逻辑数据,转成/dev/rdsk中以扇区为单位的物理设备中,到达/dev/rdsk的时候,文件就被真实的写进磁盘了。这个过程当然是非常短暂的,很多情况下是不会被人类察觉的速度。所以,我们就很难看到这些动作,而使这些动作变的难以理解了。
总之,我们平时理解逻辑是虚的,物理是实际存在的。但是在计算机中,逻辑的数据和设备是真实存在的,但是看不见,摸不到,比空气还要虚幻而已。而物理设备通常是可以看得到,摸的到的设备。操作系统就是容纳和管理逻辑数据而用的。在物理设备和逻辑设备之间进行不停的转换。
关于这个任务,有些地方可能写的不是很对,但是大致的意思应该如此。

/dev/dsk和/dev/rdsk
/dev/dsk和/dev/rdsk的区别。
特殊设备文件都被存放在/dev目录中,或是/dev/dsk和/dev/rdsk。
在这些目录底下包含了软盘和硬盘的unix设备文件名。
比如:
/fd*     代表软盘设备
/tty*    代表串口设备
/lp*     代表并口设备
运行ls -l,如果在显示文件系统权限之前的第一列中可以看到一个b的标志,他代表的是一个块设备文件。
           如果在显示文件系统权限之前的第一列中可以看到一个c的标志,他代表的是字符特殊设备包括串口、并口、磁盘设备、磁带设备。
现在咱们就来确认“裸”这个概念。
大多数块设备也有一个字符设备接口,这些字符设备接口又叫“裸”(Raw)接口。
“裸”(Raw)设备是字符设备;也就是一个已经存在的块设备的字符接口。
运行ls -l,你就能识别裸设备接口,在文件或目录的前面可以看到r的前缀(列如:/dev/rdsk/f03ht)。
裸设备的访问权限的第一列也有一个c的标志。
裸设备接口允许有效的传输大于1KB的数据,所以大多用在存储数据库的文件
 

/dev/dsk /dev/rdsk 区别 从网上摘了两段话:
1,
When a process sends requests to a rdsk type special file, it is talking directly to the driver. A read or a write goes directly to or from device. Reads and writes must be aligned on DEV_BSIZE boundaries or the results are undefined.
When a process sends requests to a dsk type special file, it is talking to high level os routines. A read or write goes to or from the buffer cache. If needed, the os will read new data into the buffer cache. There are no alignment restrictions. You can read or write any collection of bytes anywhere on the device. The os will send aligned requests to the driver, but this is hidden from the process. I/O requests that arise from accesses to a dsk type special file enter the driver via its strategy entry point, not the read and write entry points. The driver may resequence the requests to optimize overall performance.
 
2,http://www.idevelopment.info/data/Unix/Solaris/SOLARIS_UnderstandingDiskDeviceFiles.shtml
 
Overview

Under Solaris, one of the most involved UNIX devices to understand is the disk device file. Here are several key points that may help:
In many cases, a disk device file (i.e. /dev/dsk/c0t2d0s7) refers to a particular partition (aka "slice") of a disk, and not the entire physical device. There are several device files which refer to the entire physical device, but are rarely used.
For every disk device, there are usually two device files - the block device and the character ("raw") device. In general:
block devices are generally stored under /dev/dsk and used for filesystem type access (e.g mount)
character devices are generally stored under /dev/rdsk used for everything else (e.g. fsck, newfs, etc..)
Discs are generally attached to a controller (or a bus) which can handle multiple devices. IDE and SCSI are both common attach methods. This tends to make disk device filename more complex than other types of devices.
/etc/vfstab

To see the difference between the block device and character device for a device, consider the following. The /etc/vfstab contains entries for a single filesystem on a Solaris server:
/dev/dsk/c0t2d0s7 /dev/rdsk/c0t2d0s7 /opt ufs 3 yes -
The first 2 fields in the above entry, list the same disk device as both a block device ("dsk") and character device ("rdsk"). The block device is used by mount when mounting the filesystem while the character device is used by fsck when checking the filesystem and newfs when creating the filesystem.. Both fields must be present in /etc/vfstab.
阅读(1263) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~