关于LUN、PV、VG和LV

news/2024/7/7 15:40:35

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和vgimport命令时,PHCO_24645(UX 11.00)或PHCO_25814(UX 11.11)将检查VG控制文件(group file)是否是唯一的次号。

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之间做条带化,是没有意义的,甚至会增加物理硬盘的不必要的磁头定位时间


http://www.niftyadmin.cn/n/4121152.html

相关文章

重构:第一个案例

在写重构的学习笔记之前&#xff0c;首先我们需要向伟大的软件设计师Martin Fowler致敬&#xff0c;是他带给了我们重构的思想&#xff0c;敏捷的思想。 重构--改善既有代码的设计。意味着对现有运行中的代码进行新的修改、设计。这对很多项目经理来说是不可思议的&#xff0c;…

敏捷开发 慨叙

在开始写敏捷开发系列博客时&#xff0c;首先感谢伟大的软件设计师Martin Fower以及其他几位敏捷思想的创建人&#xff0c;是他们带给了我们新的编程思想&#xff0c;解决了毕业几年来一直困恼我的很多问题。 软件开发是一种对人类智慧的管理&#xff0c;对人大脑思维的“工厂化…

An ATL Sample using VS2005

An ATL Sample using VS2005<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1. Create an ATL COM1). Start VS2005, new a project, select “Visual C”->”ATL”->”ATL Project”, specify the name(“SimonAT…

敏捷开发 迭代流程

敏捷是一柄双刃剑&#xff0c;用的好能极大的提升开发效率&#xff0c;适应需求的变化&#xff01;用的不好则会导致项目的混乱。现在很多公司都说自己在用敏捷开发&#xff0c;很多程序员也说自己懂敏捷开发&#xff01;简单的认为敏捷就是站立会议&#xff0c;就是迭代的开发…

推荐给大家一个网络工程标书模版(仅供参考)

网络工程投标书<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />目 录1. 经济部分.. 31.1. 唱标报告.. 31.2. 设备及软件报价明细表.. 42. 商务部分.. 52.1. 投标函.. 52.2. 投标人承诺函.. 62.3.…

敏捷开发 迭代需求

迭代需求的整理是敏捷开发的第一步&#xff0c;也是敏捷开发很重要的一步&#xff0c;在这一步中我们需要把客户的业务需求按照优先级的顺序&#xff0c;整理成为一个个的迭代。然后把一个个的迭代拆成一个个可验收的故事卡。 在此需要说说什么是故事卡&#xff0c;故事卡和业务…

斯坦福大学iOS应用开发教程学习笔记(第三课) Objective-C

1、为什么用property&#xff0c;理由有两个&#xff1a; 实体变量的安全性和继承能力 提供延迟实例化&#xff0c;比如&#xff1a;UI更新&#xff0c;一次性检测。 1.1 property可以没有实体变量&#xff0c;怎么做到的呢&#xff1f; 不要用synthesize&#xff0c;自己创建g…

Power of Two 判断是否为2的次方

Power of Two Given an integer, write a function to determine if it is a power of two. Credits: Special thanks to jianchao.li.fighter for adding this problem and creating all test cases. class Solution { public: //n0 以及n为负数 返回错误bool isPowerOfTwo(i…