题记
在很多情况下,我们都会应用到共享存储,例如我们安装Oracle RAC时候,我们的控制文件,数据文件,日志文件都存储在共享存储上面;在物理环境我们很容易实现这种需求,但是在虚拟化环境下,我们将如何实现呢?
接下来,我们就看看一个基于VMWare vCenter环境下如何实现共享存储。
环境需求
VMWare vSphere+vCenter 6.0
目标
实现共享存储
架构图
通过VMWare vCenter创建两个虚拟机,VM1(iportal),VM2(supermap_iportal810_ubuntu14.04_ESXI5.1),两个机器分别有一块本地磁盘,当然,我们可以再往VM1添加一个新的本地磁盘,但是如果我们什么都默认设置,该本次磁盘只能添加到一个虚拟机对象,而不能再挂载到两一个新的虚拟机对象,所以,如果我们希望实现共享存储,我们可以进行如下操作。
一、为VM1添加一个新的磁盘对象
在添加该磁盘,我们需要注意:
1、尽量该磁盘文件不要与虚拟机存储在同一路径下
2、磁盘设置为:“后置备置零”设置
a、厚置备延迟置零:
默认的创建格式,创建过程中为虚拟磁盘分配所需空间。创建时不会擦除物理设备上保留的任何数据,没有置零操作,当有IO操作时,需要等待清零操作完成后才能完成IO,
即:分配好空间,执行写操作时才会按需要将其置零。
b、厚置备置零(thick):
创建支持群集功能的厚磁盘。在创建时为虚拟磁盘分配所需的空间。并将物理设备上保留的数据置零。创建这种格式的磁盘所需的时间可能会比创建其他类型的磁盘长。
即:分配好空间并置零操作,有IO的时无需等待任何操作直接执行。
c、精简置备(thin):
精简配置就是无论磁盘分配多大,实际占用存储大小是现在使用的大小,即用多少算多少。当客户机有输入输出的时候,VMkernel首先分配需要的空间并进行清零操作,也就是说如果使用精简配置在有IO的时候需要:等待分配空间和清零,这两个步骤完成后才能进行操作,对于IO叫频繁的应用这样性能会有所下降,虽然节省了存储空间。
3、磁盘设置的通道与本地磁盘不在同一个通道上
默认添加的磁盘通道为SCSI(0:1),如上图所示,我们新添加的磁盘不在同一个通道上,所以我们选择(1:x)即可
4、磁盘设置为“独立”模式,设置为持久选项。
以上说明,在新添加的磁盘向导中都可以进行选择。
二、添加磁盘完毕之后,我们可以看到,选择主页——清单——数据存储和数据存储群集,默认我们的虚拟机存储在datastore1,我新添加的共享磁盘,存储在new2,我们可以选择“浏览此数据存储”查看物理文件信息
三、选择VM1(iportal )虚拟机,下载*.vmx文件
默认的信息包括:
.encoding = "UTF-8"
config.version = "8"
virtualHW.version = "9"
nvram = "iportal.nvram"
pciBridge0.present = "TRUE"
svga.present = "TRUE"
pciBridge4.present = "TRUE"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge4.functions = "8"
pciBridge5.present = "TRUE"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge5.functions = "8"
pciBridge6.present = "TRUE"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge6.functions = "8"
pciBridge7.present = "TRUE"
pciBridge7.virtualDev = "pcieRootPort"
pciBridge7.functions = "8"
vmci0.present = "TRUE"
hpet0.present = "TRUE"
floppy0.present = "FALSE"
memSize = "1024"
powerType.suspend = "soft"
usb.present = "TRUE"
ehci.present = "TRUE"
scsi0.virtualDev = "lsilogic"
scsi0.present = "TRUE"
ide1:0.startConnected = "FALSE"
ide1:0.deviceType = "atapi-cdrom"
ide1:0.fileName = "CD/DVD drive 0"
ide1:0.present = "TRUE"
mks.enable3d = "TRUE"
ethernet0.virtualDev = "e1000"
ethernet0.networkName = "VM Network"
ethernet0.addressType = "vpx"
ethernet0.generatedAddress = "00:50:56:bb:e3:b0"
ethernet0.wakeOnPcktRcv = "FALSE"
ethernet0.present = "TRUE"
scsi0:0.deviceType = "scsi-hardDisk"
scsi0:0.fileName = "iportal.vmdk"
scsi0:0.present = "TRUE"
displayName = "iportal"
guestOS = "ubuntu-64"
vcpu.hotadd = "TRUE"
mem.hotadd = "TRUE"
toolScripts.afterPowerOn = "TRUE"
toolScripts.afterResume = "TRUE"
toolScripts.beforeSuspend = "TRUE"
toolScripts.beforePowerOff = "TRUE"
tools.syncTime = "FALSE"
uuid.bios = "42 3b 45 6c e8 da 22 f5-b0 e8 60 c1 20 ef 00 f2"
vc.uuid = "50 3b 25 4e e2 26 44 89-f6 1b ba 14 06 23 8c 30"
scsi1.virtualDev = "lsilogic"
scsi1.present = "TRUE"
scsi1:0.deviceType = "scsi-hardDisk"
scsi1:0.fileName = "/vmfs/volumes/57eb5af7-f11fc744-5809-000c29dd753b/iportal/iportal.vmdk"
scsi1:0.mode = "independent-persistent"
scsi1:0.present = "TRUE"
scsi1.sharedBus ="virtual"
sched.scsi0:2.shares = "normal"
sched.scsi0:2.throughputCap = "off"
我们需要添加对共享磁盘的信息
disk.locking="false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize ="0"
diskLib.DataCacheMinReadAheadSize ="0"
diskLib.dataCachePageSize ="4096"
diskLib.maxUnsyncedWrites = "0"
四、同理,我们找到VM2的物理存储,将*.vmx下载,添加以上相关信息,由于VM2并没有添加新的磁盘,需要共享VM1上的新磁盘,所以,VM2需要添加如下信息:
scsi1.virtualDev = "lsilogic"
scsi1.present = "TRUE"
scsi1:0.deviceType = "scsi-hardDisk"
scsi1:0.fileName = "/vmfs/volumes/57eb5af7-f11fc744-5809-000c29dd753b/iportal/iportal.vmdk"
scsi1:0.mode = "independent-persistent"
scsi1:0.present = "TRUE"
scsi1.sharedBus ="virtual"
sched.scsi0:2.shares = "normal"
sched.scsi0:2.throughputCap = "off"
disk.locking="false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize ="0"
diskLib.DataCacheMinReadAheadSize ="0"
diskLib.dataCachePageSize ="4096"
diskLib.maxUnsyncedWrites = "0"
五、将两个vmx文件分别上传到相应的虚拟机文件里面
六、虽然VM2,没有手动添加新磁盘,但是经过修改后的vmx文件可以查看到VM2已经添加了共享磁盘的信息
七、在VM1启动之后,我们可以将新磁盘进行分区,建立文件系统,Mount操作,创建一个文件测试,VM2可以直接mount查看新创建的文件。
可能出现的错误:
如果新添加的磁盘通道未选择正确,可能出现,VM1启动成功,但是VM2启动报如下错误:
打开虚拟机 supermap_iportal810_ubuntu14.04_ESXi5.1 的电源时,会收到来自 ESX 主机的错误。
无法启动虚拟机。
模块 Disk 打开电源失败。
无法打开磁盘“/vmfs/volumes/57eb5af7-f11fc744-5809-000c29dd753b/iportal/iportal.vmdk”或其所依赖的快照磁盘之一。
未能锁定文件
在实际测试过程中,我发现,当我在VM1更新文件时,VM2并不能实时看到更新信息,需要重新umount和mount的操作才能看到。
如果VM2发现不了共享磁盘,建议重启OS。