关于LUN、PV、VG和LV
1.划分LUN
LUN只是一个逻辑的东西。在存储设备内部,LUN与物理硬盘的关系,如同主机中逻辑卷与物理硬盘的关系,也就是好像LV和PV的关系,在不同范畴。可以理解为LUN就是在做完RAID之后的逻辑盘上分出来的logic driver。
但不同的是,LUN在主机上看来是一个物理硬盘。
LUN绝对不是以硬盘为单位的东西,他是在raid组下的单位,连在主机上,NT反映成磁盘,AIX反映成pv。一个RAID在EMC存储中最多可以划成226个LUN(cx4-480支持4096个lun),大小从几M到。几百G都行。
LUN是从SCSI起源的:Logical Unit Number,因为SCSI时代最多只有16个SCSI ID,卡本身起码占用一个,如果没有LUN,意味着每个卡连的磁盘阵列最多只能15块硬盘——不可思议嘛,所以SCSI ID+LUN(0-255),可以有15*256=3840个硬盘,总算够用了。
后来存储服务器出来了,经过虚拟化,从主机端以SCSI的概念来看,就表现为一个个不同LUN的硬盘(实际上是虚拟的,存储服务器这时成为一个黑箱)。LUN与物理硬盘的关系没有规律,自己设定,也不一定要做RAID,只是一般都做而已。
2. 添加新的PV
一个硬盘在能够被LVM使用之前一定要初始化,可以使用pvcreate命令将PVRA的信息写入到硬盘当中,而这样被写入了PVRA信息的硬盘,就叫做PV。
#pvcreate /dev/rdsk/c0t5d0
如果之前已经有PVRA的信息在这块硬盘上,也就是说,这块硬盘之前可能被其他的LVM使用过,那么你将得到一个报错信息:
#pvcreate: The Physical Volume already belongs to a Volume Group
如果你确定要初始化这块硬盘,那么可以带上-f的参数来强行执行
#pvcreate -f /dev/rdsk/c0t5d0
注意:如果是启动盘,还应该加上-B的选项。这样做将会在硬盘头保留2912KB的空间给LVM表头(LVM header),相关的信息,可以参见《LVM的结构信息》。如果你想要做启动盘的镜像的话,可以参考后面的《根盘镜像》章节。
将硬盘初始化以后,就可以将该PV添加到已经存在的VG当中去了:
#vgextend vg01 /dev/dsk/c0t5d0
#vgdisplay -v vg01
这里需要注意的是,在硬盘初始化的时候(pvcreate /dev/rdsk/c0t5d0),使用的设备是“rdsk”,而在将PV添加到已经存在的VG的过程中,使用的设备是“dsk”。对于“rdsk”和“dsk”的区别,应该有非常清晰的认识,如果觉得不清楚,可以查看相关资料。因为这是LVM操作的最基础的部分。
3. 添加新的VG
一下过程演示了如何创建一个包含了两个PV的VG:
a. 初始化PV
#pvcreate [-f] /dev/rdsk/c0t5d0
#pvcreate [-f] /dev/rdsk/c0t6d0
b. 为VG选择一个唯一的次号(minor number)
#ll /dev/*/group
crw-r--r-- 1 root sys 64 0x000000 Apr 4 2001 /dev/vg00/group
crw-r--r-- 1 root sys 64 0x010000 Oct 26 15:52 /dev/vg01/group
crw-r--r-- 1 root sys 64 0x020000 Aug 2 15:49 /dev/vgsap/group
c. 创建VG控制文件(group file)
#mkdir /dev/vgnew
#mknod /dev/vgnew/group c 64 0x030000
注意:当使用vgcreate和vgimp
d. 创建和显示VG
#vgcreate vgnew /dev/dsk/c0t5d0 /dev/dsk/c0t6d0
#vgdisplay -v vgnew
注意:在创建VG的时候,需要特别注意的一个参数是max_pe,这个参数限定了VG中每一个PV的最大PE数量。默认值是1016,最大值是65535。而且,除了vgcreate以外,没有其他的任何命令能够调整这个参数(max_pe)。这就要求你在创建VG的时候,要考虑一下将来数据可能的增长情况。因为在使用vgcreate来创建VG的时候,操作系统会根据当前的硬盘大小和默认的max_pe(1016)来指定PE的大小(默认是4MB)。而如果今后要加入一个更大的硬盘,这可能会让多余的空间浪费掉,因为此时,你已经不可能调整max_pe这个参数了。一个比较好的经验就是,根据将来可能的增长情况,来指定一个比较大的max_pe。
4. 添加新的LV
按照如下命令,你将创建一个大小是500MB、名称为lvdata、存在于vg01中的LV:
#lvcreate -L 500 -n lvdata vg01
使用这种方法创建的LV,并不能知道这块空间是在哪个PV上的。如果想在某个确定的PV上创建LV,可以先创建一个0MB的LV,然后再扩大LV的空间,这样就可以指定:
#lvcreate -n lvdata vg01
#lvextend -L 500 /dev/vg01/lvdata /dev/dsk/c4t2d0
然后就可以使用newfs来创建文件系统
#newfs -F <fstype> /dev/vg01/rlvdata
说明:在这里fstype可以是HFS或VxFS(VxFS也就是JFS)
5.条带化
在aix/hp下,建立lv时不选条带化,写入的数据顺序为:写满第一块后再写第二块,直到写满最后一块硬盘。建lv时选条带化,数据同时往n块硬盘上写。在划分LUN时,把多个lun平均取自多个raid group以提高性能。很显然,在不同的RG的LUN之间做条带化会提高性能,在同一个RG的LUN之间做条带化,是没有意义的,甚至会增加物理硬盘的不必要的磁头定位时间