背景描述:
最近实验室里需要跑大数据,向老师要了一个8TB的SSD插在服务器上。服务器用的vmware的exsi来管理。
服务器上原本有个虚拟机A,实验环境啥的都有,但是需要跑别的任务。不想重新配环境,于是想要把原来的虚拟机A克隆一份到新硬盘上,成为虚拟机B。
原虚拟机A只分配了900GB的容量,并且这900GB只作为一个分区挂载在根目录/上。现在需要给虚拟机B分配5TB的容量,并且保持原有配置不变,这5TB都挂载在根目录/上。由于MBR分区容量最大只支持2TB,遂需要将原BIOS+MBR的格式转变为UEFI+GPT格式。
于是,问题分解如下:
- 8TB磁盘怎么插在服务器上,并且exsi怎么识别到该磁盘?
- 如何在exsi上克隆一份虚拟机到指定硬盘上,并可以使用?
- 如何将Liunx系统下的BIOS+MBR的格式转变为UEFI+GPT格式,并且扩展分区?
8TB磁盘怎么插在服务器上,并且exsi怎么识别到该磁盘
服务器的型号是戴尔的R740,当时是买了一个三星的evo870的8TB固态。
但是并不是直接买了固态就可以插着用的。。。。。。
加装固态到服务器上还要装 转换架和托架。
这里就去京东上面搜服务器硬盘托架
,找到自己服务器对应的型号就好。注意3.5英寸的托架和2.5英寸的托架,这里英寸并不是根据硬盘的尺寸来的,而是和服务器型号有关系。转换架都是一个型号的。
插上去之后,exsi并不能马上识别到这个硬盘。点击exsi界面左侧的storage
,在右边选择New datastore
,选新增的这块硬盘,跟着提示一路确认就好。然后exsi就识别到这块硬盘了。
如何在exsi上克隆一份虚拟机到指定硬盘上,并可以使用
克隆一个虚拟机,只需要复制原虚拟机文件夹下的.vmx文件和.vmdk文件,并对复制后的.vmx文件稍做修改即可。
两种方法:
第一种手动克隆,指使用ssh连上装exsi的服务器,使用linux指令进行克隆
第二种GUI克隆,指在exsi界面,按顺序点几个按钮即可。最后还是用ssh连上装exsi的服务器,但只是使用vi修改一下vmx文件。
注意:不管是哪种方式克隆,原虚拟机都需要保持关机,否则会失败或者卡死。
手动克隆
以下内容摘自https://www.jianshu.com/p/a0b2c52a87e2,但实际操作中发现原文的部分内容并不适用。本文的操作均为本人实际操作过并成功。
1、启用esxi的ssh
登录esxi web界面,在左侧导航器右击主机->服务->启用安全Shell(ssh)

2、ssh登录esxi
3、找到虚拟机所在目录
如果已经存在虚拟机名为hadoop-1, 那么在终端输入命令:find / -name hadoop-1
, 结果如下:

可以看到虚拟机所在目录为:/vmfs/volumes/5dee862f-6c107bc2-9290-0c9d9239daa7,
这一步中,我的虚拟机所在位置是/vmfs/volumes/硬盘名/虚拟机文件夹名
比如我的地址是
/vmfs/volumes/5ff775a3-4028c334-2c9c-2cea7fe7e9f2/defi-1
4、建立新虚拟机目录
切换目录并新建hadoop-2目录:
1 | cd /vmfs/volumes/5dee862f-6c107bc2-9290-0c9d9239daa7 |
这一步中,由于我的需求是克隆到制定硬盘,那么要先找到目标硬盘文件夹。并在目标硬盘文件夹下创建新目录。
5、拷贝vmx文件
切换到hadoop-2目录:cd hadoop-2
, 在hadoop-2目录下执行:
1 | cp ../hadoop-1/hadoop-1.vmx ./hadoop-2.vmx |
6、克隆vmdk
注意!!!这里克隆vmdk必须要用vmkfstools命令,不能直接用cp拷贝!!!
1 | vmkfstools -i ./hadoop-1/hadoop-1.vmdk ./hadoop-2.vmdk |
7、修改vmx文件
执行vim hadoop-2.vmx
, 只需要修改文件中的两个字段
……
scsi0:0.fileName = “hadoop-2.vmdk”
……
displayName = “你虚拟机想被设置的名字”
……
克隆完成
这一步骤,我与原作者的做法不一致,如果按照他的做法把所有的名字都改了,我无法开机。猜测是因为原作者的.vmx文件中没有使用绝对路径
8、esxi导入克隆完成的虚拟机



GUI克隆
1、登录exsi的web界面,在左侧导航栏中左键选择 Storage->原虚拟机所在硬盘->Datastore brower->找到原虚拟机所在文件夹。将.vmx文件和.vmdk 文件 copy 到目标硬盘的目标文件夹下。
2、 依次执行 手动克隆 中步骤1,2,7,修改.vmx文件。
3、执行手动克隆 中步骤8,完成注册。
如何将Liunx系统下的BIOS+MBR的格式转变为UEFI+GPT格式,并且扩展分区
问题描述
原本的虚拟机里只有一个900G的磁盘,并且挂载在根目录。想要将这个900G的磁盘扩展到超过2TB,并且仍然挂载在根目录,原本的系统、系统配置、数据、代码等都不发生改变。
解决思路
将原900G磁盘大小更改为超过2TB,将分区格式改为GPT格式,并将系统设置为UEFI启动。
实际步骤
在exsi的web界面中,点击edit按钮,将原目标虚拟机的硬盘的空间作出更改。这里我只是为了写博客,只改成了1TB。
给目标虚拟机打快照。这种转换分区格式和启动方式的行为很容易造成一些损坏,造成开不了机、文件损坏等等,要是真有损坏就寄了。
进入系统,改变分区格式,使用
sudo gdisk 磁盘文件
命令,
1 | xxxx@xxxx-virtual-machine:~$ sudo gdisk /dev/sda |
在执行完上述操作后,如果直接执行
lsblk
列出块设备信息,会发现没有改变。要执行
partprobe /dev/sda
命令,重读分区表,将磁盘分区表变化信息通知内核,请求操作系统重新加载分区表。这个时候再执行lsblk
会发现磁盘已经更新为第3步的三个分区了。接下来需要挂载ESP。也就是刚才新增的 EFI System 分区,它的全称是 EFI System Partition ,是预留给 UEFI 启动存放引导文件的分区。
1
2
3
4
5
6
7
8
9
10
11
12
13#格式化 ESP ,注意它的文件系统是 FAT 格式
xxxx@xxxx-virtual-machine:~$ sudo mkfs.vfat /dev/sda3
mkfs.fat 4.1 (2017-01-24)
#如果命令不存在,安装新的软件包后重试
#安装命令是:yum install dosfstools
#创建efi目录以供 UEFI 启动分区挂载
#有些系统的/boot分区已经预留了efi目录,就无视这个命令
xxxx@xxxx-virtual-machine:~$ sudo mkdir -p /boot/efi
#将刚刚创建并格式化好的efi启动分区挂载到/boot/efi上
xxxx@xxxx-virtual-machine:~$ sudo mount /dev/sda3 /boot/efi
以上是我从BIOS+MBR转换到UEFI+GPT执行过的
https://yuweizzz.github.io/post/convert_legacy_bios_to_uefi/