实验原因:虚机磁盘类型是瘦磁盘,在临时性往存储磁盘写大量数据如日志等等后,数据被删除,会发现虚机占用磁盘的空间并不会减少,VMware不会自动回收。查了一下VMware官方在Esxi上是有空间回收命令的,故做该实验进行功能性测试。


实验环境:VMware vSphere 5.5 , NetApp存储


实验步骤:


1.NetApp创建两个新lun并挂载至主机,生成大文件之前我没有截图,这是生成大文件后的截图。

ISCIS的LUN0可用空间 93.45GB

NFS的LUN1可用空间 152.86GB

wKioL1LnmxLTaPVpAAFfdiGHINo888.jpg


2.虚拟Linux分别格式化并挂载这两个磁盘,如图,sdb和sdc

wKiom1LnmcSQ_Oe-AAD5DtFWYTc488.jpg


3.使用命令分别在两个目录下生成包含随机数据的5GB大小文件,命令为

# dd if=/dev/urandom of=/nfs/i_am_big_file bs=1M count=5000


4.删除这两个大文件,可见VMware不会自动回收这些已被删除的空间。

wKiom1Lnm9zygaGNAAC72MAjjXA280.jpg


wKiom1LnnGzRpAShAAEnU2EHwiw623.jpg


5.开启Esxi主机SSH功能,登陆上去,查看存储设备是否支持空间回收特性。

# esxcli storage vmfs extent list     #先查看naa的ID

输出结果:

Volume Name  VMFS UUID                            Extent Number  Device Name                           Partition

-----------  -----------------------------------  -------------  ------------------------------------  ---------

datastore12  52b1453e-0a4daa2a-76a6-a4badb173ed2              0  naa.60026b9037c0930019d1d9e50b4156d1          3

lun0         52e77518-92f54f1f-54d2-a4badb173ed2              0  naa.60a9800065334367614a77464661584f          1


发现我们是压根看不到NFS的lun,有可能NFS不支持回收,先留个疑问。


5.1 查看具体的存储设备是否支持空间回收特性。

~ # esxcli storage core device list -d naa.60026b9037c0930019d1d9e50b4156d1  #这个是本地存储的

naa.60026b9037c0930019d1d9e50b4156d1

  Display Name: Local DELL Disk (naa.60026b9037c0930019d1d9e50b4156d1)

  Has Settable Display Name: true

  Size: 2143360

  Device Type: Direct-Access

  Multipath Plugin: NMP

  Devfs Path: /vmfs/devices/disks/naa.60026b9037c0930019d1d9e50b4156d1

  Vendor: DELL

  Model: PERC 6/i

  Revision: 1.22

  SCSI Level: 5

  Is Pseudo: false

  Status: on

  Is RDM Capable: false

  Is Local: true

  Is Removable: false

  Is SSD: false

  Is Offline: false

  Is Perennially Reserved: false

  Queue Full Sample Size: 0

  Queue Full Threshold: 0

  Thin Provisioning Status: unknown

  Attached Filters:

  VAAI Status: unsupported

  Other UIDs: vml.020000000060026b9037c0930019d1d9e50b4156d1504552432036

  Is Local SAS Device: false

  Is Boot USB Device: false

  No of outstanding IOs with competing worlds: 32

~ #

~ # esxcli storage core device list -d naa.60a9800065334367614a77464661584f   #这是存储设备的

naa.60a9800065334367614a77464661584f

  Display Name: NETAPP iSCSI Disk (naa.60a9800065334367614a77464661584f)

  Has Settable Display Name: true

  Size: 102400

  Device Type: Direct-Access

  Multipath Plugin: NMP

  Devfs Path: /vmfs/devices/disks/naa.60a9800065334367614a77464661584f

  Vendor: NETAPP

  Model: LUN

  Revision: 8030

  SCSI Level: 4

  Is Pseudo: false

  Status: degraded

  Is RDM Capable: true

  Is Local: false

  Is Removable: false

  Is SSD: false

  Is Offline: false

  Is Perennially Reserved: false

  Queue Full Sample Size: 0

  Queue Full Threshold: 0

  Thin Provisioning Status: yes

  Attached Filters:

  VAAI Status: supported

  Other UIDs: vml.02000a000060a9800065334367614a77464661584f4c554e202020

  Is Local SAS Device: false

  Is Boot USB Device: false

  No of outstanding IOs with competing worlds: 32

~ #


5.2 接着看看存储里面还支持其他什么特性

~ # esxcli storage core  device vaai status get -d naa.60a9800065334367614a77464661584f

naa.60a9800065334367614a77464661584f

  VAAI Plugin Name:

  ATS Status: supported

  Clone Status: supported

  Zero Status: supported

  Delete Status: supported

~ #


6.尝试执行空间回收命令

这里我参考的文档 http://blogs.vmware.com/vsphere/2012/04/vaai-thin-provisioning-block-reclaimunmap-in-action.html

是使用 vmkfstools命令,我查了一下官方在5.5已经不用该命令,改为使用esxcli storage vmfs unmap,官方称这是改进版本而且会比较可靠。

见官方KB介绍

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2057513


# esxcli storage vmfs unmap -l lun0     #这里我通过数据存储名字进行空间回收


7.查看结果发现无论怎么执行-n的参数都无法使空间减下来,这是个问题。

# esxcli storage vmfs unmap -l lun0 -n 100/200/4000

在Esxi上df -h空间没有一点减少

wKiom1Lnq53jivtEAAFWZPRrhcg610.jpg

wKioL1Lnq3rxzfT1AAAvMzODQxY747.jpg


不解,继续研究。