虚拟机环境下使用共享磁盘的作用就不多说了,以前已经多次介绍过在虚拟机环境中构建HA、Oracle RAC环境,都需要使用之。而在ESXi 4 环境下,Infrastructure Client工具似乎没有提供创建共享磁盘简便方法,但可以使用命令来创建。
一、前提
由于图形管理工具下没有提供创建共享盘柜的方法,所以,要从命令创建磁盘,就必须先打开可以进入命令行。
进入命令行有两种办法:
引用
1、从Infrastructure Client上选择进入维护模式,然后即可登陆;
2、使用远程ssh登陆。
二、创建共享磁盘
1、创建磁盘文件
使用pietty等ssh工具,登陆到ESXi 服务器上,使用下面的命令创建虚拟客户机使用的共享磁盘文件:
# cd /vmfs/volumes/49f5c866-a25fe688-2bff-003048c37402/
# mkdir sharedisk
# cd sharedisk
# vmkfstools -c 10240m -a lsilogic -d eagerzeroedthick sharedisk.vmdk
这样就创建了一个10G大小的共享磁盘文件。
2、加入到虚拟机中
使用Infrastructure Client,选择对应的虚拟客户机,编辑客户机属性,添加硬盘,选择“使用现有虚拟磁盘”:
并选择上面创建的磁盘文件:
然后,注意选择SCSI“虚拟设备节点”与原本地磁盘不在同一个通道上。
例如,本地磁盘使用SCSI 0:1,那就可以使用SCSI 1:0等,同选择“模式”为“独立”—“持久”的方式:
添加结果如下:
※ 给参与构建集群的虚拟客户机进行一次相同的操作。
3、修改vmx设置文件
再次使用pietty通过ssh登陆到ESXi 服务器上,修改虚拟机的.vmx配置文件:
# cd Asianux\ 3.0
# vi Asianux\ 3.0.vmx
在最后,根据上面添加的控制器情况,修改或加入:
引用
scsi1.present = "true"
scsi1.sharedBus = "virtual"
scsi1.virtualDev = "lsilogic"
scsi1:0.mode = "independent-persistent"
scsi1:0.deviceType = "scsi-hardDisk"
sched.scsi1:0.shares = "normal"
disk.locking="false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
※ 给参与构建集群的虚拟客户机进行一次相同的操作。
最后,启动相关的虚拟客户机,并对新增加的磁盘创建分区,或使用OCFS2、GFS等工作。
三、虚拟磁盘文件类型
VMware为虚拟机文件存储提供了三种虚拟磁盘类型。不过你如何知道哪一种类型适合虚拟机?答案是不确定的,因为每种磁盘类型提供了不同的好处:例如第一种在初始磁盘写入过程中提供了更好的性能,第二种更安全,第三种在节省磁盘空间时是最佳选择。
ESX主要有三种主要的虚拟磁盘文件类型可用:thick、thin和raw。
1、Raw disk(原始磁盘)
原始磁盘指的是原始设备影射(RDM),可以让虚拟机在存储区域网络(SAN)上直接访问逻辑单元号(LUN)。这意味着虚拟机的磁盘数据文件不宿主在虚拟机文件系统(VMFS)卷上。相反,小型磁盘描述符文件是为VMFS卷上虚拟机工作目录里的虚拟磁盘而创建的。
RDM能配置成两种不同的模式:虚拟兼容模式或物理兼容模式。虚拟兼容模式虚拟影射的设备,一般来说对子操作系统是透明的。这种模式也提供了一些VMFS卷的优势,如创建快照的功能。物理兼容模式提供最小化的影射设备SCSI虚拟化,并且VMkernel直接传输几乎所有的SCSI命令到设备。
2、Thick disk(厚磁盘)
Thick disk——在创建的过程中分配给所有空间,在物理媒介上可能包括陈旧的数据。这些磁盘不太安全,因为它们的(组成磁盘的)磁盘块没有清除以前的数据。
Zeroed thick disk——在创建时分配给所有空间,也清除了以前的数据。由于使用了所有空间,数据是零,不过只是在第一次写入磁盘块是如此。当使用VMware Infrastructure Client(VI Client)创建VMFS卷虚拟磁盘时,这是默认的磁盘类型。Zeroed thick disk也叫做lazy zeroed thick disk。由于磁盘在第一次写入时必须清空,这些类型的磁盘在第一次磁盘块写入时也有轻微的I/O性能瓶颈。
Eager zeroed thick disk——在创建时,分配给所有空间,在物理媒介上清除了以前的数据。另外,在创建磁盘时,与创建其他类型的磁盘相比较,所有数据都需要调到0,花费更多时间。这样的磁盘是最安全的,因为磁盘块已经清除了以前的数据,在第一次写入数据到磁盘块时有较好的性能。
3、Thin disk(薄磁盘)
随着磁盘写入块的创建,Thin disk开始很小,然后增长到预先设置的最大值。如果你创建了一台拥有10GB Thin disk的虚拟机,开始大小可能是1MB,随着时间推移,达到10GB的最大值。随着增长,Thin disk可能有轻微的性能损失,因为空间按需分配。同样,第一次对磁盘块的写入是0,这造成额外的性能损失。一旦磁盘增长,其块是0,不过thin disk与其他类型的磁盘表现差不多。
thin disk对保存VMFS卷上的磁盘空间是有用的,不过如果你不能控制其增长将会产生问题。thin disk通常是网络文件系统(NFS)数据存储的默认选择。不过是否使用它们由NFS服务器的分配策略决定,而不是VMware ESX服务器。使用thin disk时,大概使用VI Client数据存储浏览器时,你只能看见一个磁盘的实际大小。如果使用不同的方法,如命令行Ls命令,这个命令将显示磁盘的最大值而不是其目前大小。
4、2GBsparse
此外,有一个叫做2GBsparse的特殊格式。2GBsparse将磁盘分割成多个磁盘,每个磁盘的最大值是2GB。例如,有20GB磁盘空间的虚拟机可以划分为10个2GB的磁盘。VMware Workstation和VMware Server可以使用这种格式,不过除非你第一次输入thick或thin disk格式,否则不能在ESX主机上以这种格式启动虚拟机。这种格式有时用于将较大的VMware ESX磁盘分解成较小的磁盘,利于复制到其他ESX主机或物理媒介,因此这样的磁盘能交付到任何地方。
四、决定使用哪种虚拟磁盘文件类型
因此你的虚拟机该使用何种磁盘?如果你关注VMFS上的磁盘空间,就使用thin disk。如果你关注安全,也想在初次磁盘写入时性能较好就使用eager zeroed thick disk。注意,一旦完成对新磁盘块的初次写入,所有类型的磁盘性能都一样。如果你在虚拟机里运行的应用是感知SAN的,并且需要直接访问SAN LUN,或如果你使用像Microsoft Clustering Server这样的需要两个虚拟机的集群解决方案访问相同的磁盘文件,就使用RDM。
1、创建虚拟磁盘
登录服务控制台并修改虚拟机目录。使用vmkfstools命令创建硬盘。在下面的例子中,我们使用命令
# vmkfstools –c <disk size> -d thin <disk file name>
2、在现有虚拟机里更改磁盘类型
如果你想更改现有的磁盘格式,必须使用vmkfstools命令。确保关闭虚拟机并且没有运行快照。以下是命令列表及其作用。
引用
vmkfstools –j <磁盘文件名>:
这个命令使thin disk增长到其最大值,并删除以前的数据,就把thin disk更改成eager zeroed thick disk。现有的数据仍然是完整的,这是由于只有新磁盘块是0开始或重定格式。
vmkfstools –w <磁盘文件名>:
这个命令完全清除虚拟磁盘文件,所有现有的数据都将被删除。这个命令只能用于新创建的没有数据的虚拟磁盘。
vmkfstools –i <原始磁盘文件名><目标磁盘文件名>-d thin:
这个命令转换现有的thick disk到其他thick disk。完成转换后,你必须移除现有磁盘,添加新磁盘并浏览目标磁盘文件。一旦确保虚拟机启动不出错,就能使用数据存储浏览器删除原始磁盘文件。注意,thick disk的大小能变化,可能与虚拟机使用的磁盘空间不匹配。如果写在操作系统里的数据突然被删除,ESX主机仍然认为使用了空间。