由于近期经常挂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/虚拟主机/);
在虚拟机目录下面,虚拟磁盘文件有2个;
FreeBSD9.vmdk 是虚拟磁盘配置文件,记录了改虚拟磁盘的各项参数和运行模式;
FreeBSD9-flat.vmdk 为实际的磁盘数据存储文件,可以看到该文件目前有10G大小;
注意:这里存放数据的虽然是 FreeBSD9-flat.vmdk 文件,但它是被 FreeBSD9.vmdk 文件引用的,所以我们的磁盘转换操作指令也要针对 FreeBSD9.vmdk文件进行,而不是 FreeBSD-flat.vmdk 文件;
转换命令如下:
1 2 3 4 5 | #vmkfstools -i source-disk-name.vmdk -d {thin|thick} destination-disk-name.vmdk 参数解释: -i source -disk-name.vmdk 指定源vmdk磁盘文件名 -d {thin|thick} destination-disk-name.vmdk 指定转换后的目标磁盘格式thin或thick以及destination-disk-name.vmdk转换后的vmdk磁盘文件名 |
所以这里我输入了如下指令进行转换(注意转换后实际是得到了一个新的磁盘文件,所以目标磁盘文件名不能与已存在的文件重名)
1 | vmkfstools -i FreeBSD9.vmdk -d thin FreeBSD9-thin.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