起因

由于近期经常挂PT导致家里我自己DYI的黑群晖NAS存储的空间直接飙红了!剩余可用空间只有100多G了!
NAS空间不足

我的Home Server采用ESXi平台,所有的虚拟机资源文件也是通过NFS协议共享全部存放在这台NAS上;由于ESXi虚拟机的默认配置下,虚拟磁盘都是“厚置备 零延迟”的Thick模式;保证了磁盘的 IO 性能,但会占用较多的实际的存储空间,而当初我在建立虚拟机时也没太在意,忘记手动配置为“精简置备”的Thin模式;所以才想到给这些虚拟机的磁盘文件来一次瘦身,全部转换成Thin模式,这样应该能给NAS释放不少的容量出来;

解决

Thick To Thin的转换

1,开启ESXi的SSH服务

虚拟磁盘Thick To Thin模式的转换无法从vSphere Client界面上进行,需要登陆ESXi主机后台,使用命令行工具来操作,因此需要开启默认关闭的ssh远程管理服务
ESXi-开启SSH服务1
ESXi-开启SSH服务2

2,关闭虚拟机

虚拟机必须是在停机状态下,磁盘模式才能被转换,所以需要对虚拟机进行安全停机操作

3,登陆ESXi后台,使用vmkfstools命令行工具进行转换

使用ssh工具登陆ESXi后台,账号为root,密码与登陆vSphere Client的密码相同;
登录ESXi后台

进入存放虚拟机的对应存储目录;由于我的虚拟机都存放在NFSstorage中,所以这里我需要进入NFS-Storage这个存储路径下的FreeBSD9虚拟主机目录(如果是本地磁盘存储,则应该进入默认的/vmfs/volumes/datastore1/虚拟主机/,我这里用FreeBSD9这台虚拟机来进行转换,其他虚拟机操作类似);
查看虚拟机磁盘文件

在虚拟机目录下面,虚拟磁盘文件有2个;

FreeBSD9.vmdk 是虚拟磁盘配置文件,记录了改虚拟磁盘的各项参数和运行模式;
FreeBSD9-flat.vmdk 为实际的磁盘数据存储文件,可以看到该文件目前有10G大小;

注意:这里存放数据的虽然是FreeBSD9-flat.vmdk 文件,但它是被FreeBSD9.vmdk文件引用的,所以我们的磁盘转换操作指令也要针对FreeBSD9.vmdk文件进行,而不是FreeBSD-flat.vmdk文件;

转换命令如下:
所以这里我输入了如下指令进行转换(注意转换后实际是得到了一个新的磁盘文件,所以目标磁盘文件名不能与已存在的文件重名)
转换虚拟机磁盘

貌似虚拟磁盘的模式转换就是一次虚拟磁盘文件的Clone,只不过只保留了有用的数据,释放其他未被使用到的空间数据使其变成按需分配的动态扩展Thin模式;
转换完成后可以发现该目录下产生了2个新的vmdk文件FreeBSD-thin.vmdkFreeBSD-thin-flat.vmdk
转换后的磁盘文件

4,重命名转换后的vmdk文件名

转换完成,我们得到了新的转换成thin模式的虚拟磁盘文件,现在需要将原本的2个磁盘文件改成其他名称进行备份(确认虚拟机使用新的磁盘可以正常工作后,则可以将原磁盘文件彻底删除);然后将新的磁盘文件名改成原本的磁盘文件名称,这里我在原磁盘文件名后加了.old
重命名磁盘文件
这里我将4个磁盘文件全部改名后,发现一个问题,就是转换后生成的新虚拟磁盘配置文件FreeBSD9-thin.vmdk文件中所引用的数据文件是FreeBSD9-thin-flat.vmdk,而这个文件已经被我改名为FreeBSD9-flat.vmdk了(为了和转换之前的虚拟磁盘文件名保持统一)因此会出现找不到所引用的数据文件的错误;

这里我们可以保持FreeBSD9-thin-flat.vmdk文件名不改变让其保持新的文件名正常引用;也可以修改新的磁盘配置文件FreeBSD9.vmdk中的参数,将其指向到新的改名后的FreeBSD9-flat.vmdk;为了保持配置和命名的统一,我采用了第二种方法,修改配置文件参数;
修改磁盘配置文件参数

5,重新添加虚拟机

做完上面的动作,还不能直接启动虚拟机,需要在vSphere Client中将该虚拟机从列表中删除一次后,再从存储空间中重新添加一次后才可以正常启动;(注意这里仅仅是从清单中删除,不是从物理磁盘彻底删除)
从清单中移除虚拟机

浏览存储资源,找到虚拟机目录中的虚拟机配置文件,重新添加该虚拟机到列表
定位到虚拟机存储路径
重新添加虚拟机

配置选项全部保持默认配置,最后完成虚拟机的添加;然后查看其磁盘模式已经成功变成Thin Provision
查看转换后的磁盘模式

Last modification:November 30, 2017
如果觉得我的文章对你有用,请随意赞赏