如何还原virtualbox导出的RAC镜像文件
发布网友
发布时间:2022-04-09 21:05
我来回答
共1个回答
热心网友
时间:2022-04-09 22:34
在virtualbox中建立虚拟机,往往是3个文件夹:节点1(ol6-121-rac1),节点2(ol6-121-rac2),共享存储文件夹(ol6-121-rac)。当我们选择“管理”-“导出虚拟电脑”,导出成ova文件备份,就能看到2个主机,每个主机一个ova文件。另外,细心的你可能会发现,在备份时,共享存储是连带一起备份成ova文件的。也就是说,2个节点,每个节点导出的ova文件都包含共享存储。
当我们做恢复时,导入ova文件后,会发现每个共享存储都变成了非共享磁盘,那么我们如何还原到原来的状态呢?
导入2个ova的镜像文件,可以看到在目录中包含主机的文件(-disk1.vmdk,12G左右大小)和共享存储(-disk2.vmdk~-disk5.vmdk),如下面的这个节点1的目录下:
E:Oralce_Virtual_Boxol6-121-rac1>ls -l
total 35562926
-rwxrwxrwa 1 Administrators None 12757499904 Mar 18 14:56 -disk1.vmdk
-rwxrwxrwa 1 Administrators None 23724032 Mar 18 14:56 -disk2.vmdk
-rwxrwxrwa 1 Administrators None 17629184 Mar 18 14:56 -disk3.vmdk
-rwxrwxrwa 1 Administrators None 20840448 Mar 18 14:56 -disk4.vmdk
-rwxrwxrwa 1 Administrators None 19791872 Mar 18 14:56 -disk5.vmdk
-rwxrwxrwa 1 Administrators None 11027 Mar 18 15:29 ol6-121-rac1.vbox
-rwxrwxrwa 1 Administrators None 11027 Mar 18 15:23 ol6-121-rac1.vbox-prev
E:Oralce_Virtual_Boxol6-121-rac1>
我们可以用VBoxManage modifyhd将其属性改为共享,但是,从ova导入的共享盘,变成了可变大小的磁盘,即我设置的是5G每个盘,可能只用了20M,ova restore出来也只有20M。这种可变大小的属性,是不能还原成共享的。会报错:
E:Oralce_Virtual_Boxol6-121-rac1>VBoxManage modifyhd "E:Oralce_Virtual_Boxol6-121-rac1-disk2.vmdk" --type shareable
VBoxManage.exe: error: Cannot change type for medium 'E:Oralce_Virtual_Boxol6-121-rac1-disk2.vmdk' to 'Shareable' since it is a dynamic medium storage unit
VBoxManage.exe: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component Medium, interface IMedium, callee IUnknown
VBoxManage.exe: error: Context: "COMSETTER(Type)(DiskType)" at line 509 of file VBoxManageDisk.cpp
E:Oralce_Virtual_Boxol6-121-rac1>
我们需要将其属性改为fixed,固定大小。语句如下,同时我们也把vmdk的盘改成vdi 的盘(这个是看个人喜欢了,我比较习惯看vdi 的格式)。注:其实直接改shareable的属性是不能改的,是clone了一个带shareable的盘(因此后面还涉及了到了udev改scsi id的问题):
VBoxManage clonehd "E:Oralce_Virtual_Boxol6-121-rac1-disk2.vmdk" "E:Oralce_Virtual_Boxol6-121-racdisk2.vdi" --format VDI --variant Fixed
VBoxManage clonehd "E:Oralce_Virtual_Boxol6-121-rac1-disk3.vmdk" "E:Oralce_Virtual_Boxol6-121-racdisk3.vdi" --format VDI --variant Fixed
VBoxManage clonehd "E:Oralce_Virtual_Boxol6-121-rac1-disk4.vmdk" "E:Oralce_Virtual_Boxol6-121-racdisk4.vdi" --format VDI --variant Fixed
VBoxManage clonehd "E:Oralce_Virtual_Boxol6-121-rac1-disk5.vmdk" "E:Oralce_Virtual_Boxol6-121-racdisk5.vdi" --format VDI --variant Fixed
改完后,将上述的盘attach到2个主机上
VBoxManage storageattach ol6-121-rac1 --storagectl "SATA" --port 1 --device 0 --type hdd --medium "E:Oralce_Virtual_Boxol6-121-racdisk2.vdi" --mtype shareable
VBoxManage storageattach ol6-121-rac1 --storagectl "SATA" --port 2 --device 0 --type hdd --medium "E:Oralce_Virtual_Boxol6-121-racdisk3.vdi" --mtype shareable
VBoxManage storageattach ol6-121-rac1 --storagectl "SATA" --port 3 --device 0 --type hdd --medium "E:Oralce_Virtual_Boxol6-121-racdisk4.vdi" --mtype shareable
VBoxManage storageattach ol6-121-rac1 --storagectl "SATA" --port 4 --device 0 --type hdd --medium "E:Oralce_Virtual_Boxol6-121-racdisk5.vdi" --mtype shareable
VBoxManage storageattach ol6-121-rac2 --storagectl "SATA" --port 1 --device 0 --type hdd --medium "E:Oralce_Virtual_Boxol6-121-racdisk2.vdi" --mtype shareable
VBoxManage storageattach ol6-121-rac2 --storagectl "SATA" --port 2 --device 0 --type hdd --medium "E:Oralce_Virtual_Boxol6-121-racdisk3.vdi" --mtype shareable
VBoxManage storageattach ol6-121-rac2 --storagectl "SATA" --port 3 --device 0 --type hdd --medium "E:Oralce_Virtual_Boxol6-121-racdisk4.vdi" --mtype shareable
VBoxManage storageattach ol6-121-rac2 --storagectl "SATA" --port 4 --device 0 --type hdd --medium "E:Oralce_Virtual_Boxol6-121-racdisk5.vdi" --mtype shareable
在改一下shared的属性。
VBoxManage modifyhd "E:Oralce_Virtual_Boxol6-121-racdisk2.vdi" --type shareable
VBoxManage modifyhd "E:Oralce_Virtual_Boxol6-121-racdisk2.vdi" --type shareable
VBoxManage modifyhd "E:Oralce_Virtual_Boxol6-121-racdisk4.vdi" --type shareable
VBoxManage modifyhd "E:Oralce_Virtual_Boxol6-121-racdisk5.vdi" --type shareable
此时你可以在virtualbox的主界面可以看到这些磁盘已经变成共享的了。
启动这2个主机,如果你原来是使用udev来管理asm,重新启动后,可能会看不到/dev/asm*的盘,这是因为udev的问题,参考我之前的这个文档做修改/etc/udev/rules.d/99-oracle-asmdevices.rules文件:
检查scsi id
[root@ol6-121-rac1 dev]# /sbin/scsi_id -g -u -d /dev/sdb
1ATA_VBOX_HARDDISK_VB2d8805ec-7e1f9f0a
[root@ol6-121-rac1 dev]# /sbin/scsi_id -g -u -d /dev/sdc
1ATA_VBOX_HARDDISK_VB84bf601e-064dc9a5
[root@ol6-121-rac1 dev]# /sbin/scsi_id -g -u -d /dev/sdd
1ATA_VBOX_HARDDISK_VBf70234c9-5e27b258
[root@ol6-121-rac1 dev]# /sbin/scsi_id -g -u -d /dev/sde
1ATA_VBOX_HARDDISK_VB573dd430-aba1649d
修改/etc/udev/rules.d/99-oracle-asmdevices.rules文件后,更新、重启服务。即可完成。
最后,你可以删除了原来的那些-disk2.vmdk~-disk5.vmdk文件了。因为共享存储都已经到了ol6-121-rac下的disk2.vdi~disk5.vdi,在ol6-121-rac1和ol6-121-rac2下的-disk2.vmdk~-disk5.vmdk已经没有用处了。