起因
由于近期经常挂PT
导致家里我自己DYI
的黑群晖NAS
存储的空间直接飙红了!剩余可用空间只有100
多G了!
我的Home Server
采用ESXi
平台,所有的虚拟机资源文件也是通过NFS
协议共享全部存放在这台NAS
上;由于ESXi
虚拟机的默认配置下,虚拟磁盘都是“厚置备 零延迟”的Thick
模式;保证了磁盘的 IO 性能,但会占用较多的实际的存储空间,而当初我在建立虚拟机时也没太在意,忘记手动配置为“精简置备”的Thin
模式;所以才想到给这些虚拟机的磁盘文件来一次瘦身,全部转换成Thin
模式,这样应该能给NAS释放不少的容量出来;
解决
Thick
To Thin
的转换
1,开启ESXi的SSH服务
虚拟磁盘Thick To Thin
模式的转换无法从vSphere Client
界面上进行,需要登陆ESXi
主机后台,使用命令行工具来操作,因此需要开启默认关闭的ssh
远程管理服务
2,关闭虚拟机
虚拟机必须是在停机状态下,磁盘模式才能被转换,所以需要对虚拟机进行安全停机操作
3,登陆ESXi
后台,使用vmkfstools
命令行工具进行转换
使用ssh
工具登陆ESXi
后台,账号为root
,密码与登陆vSphere Client
的密码相同;
进入存放虚拟机的对应存储目录;由于我的虚拟机都存放在NFS
的storage
中,所以这里我需要进入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.vmdk
和FreeBSD-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