Vmkfstools: Difference between revisions

From VI-Toolkit
Jump to navigation Jump to search
 
(5 intermediate revisions by the same user not shown)
Line 68: Line 68:


=== Examples ===
=== Examples ===
Export a VM disk in 2GB chunks, note that since ESXi 5.1+ the 2GB sparse driver is disabled.
==== Export a VM disk ====
Export a VM disk in 2GB chunks, note that since [[Esxcli#enable_2GB_Sparse_disks|ESXi 5.1+ the 2GB sparse driver is disabled]].
  vmkfstools -i /vmfs/volumes/storagename/YourVM/YourVM.vmdk -d 2gbsparse /vmfs/volumes/storage2/YourVM/YourVM.vmdk
  vmkfstools -i /vmfs/volumes/storagename/YourVM/YourVM.vmdk -d 2gbsparse /vmfs/volumes/storage2/YourVM/YourVM.vmdk


==== Check or repair a disk ====
  -x, --fix -[check|repair]
  -x, --fix -[check|repair]
This option will check and/or repair the virtual disk in case of an unclean shutdown.
This option will check and/or repair the virtual disk in case of an unclean shutdown.
Line 78: Line 80:
  Disk is error free
  Disk is error free


==== Set a UUID ====
  -J, --miscop [setuuid | getuuid]
  -J, --miscop [setuuid | getuuid]
'setuuid´ option creates a unique identifier (UUID) for the virtual disk and stores the UUID in the descriptor file of the
'setuuid´ option creates a unique identifier (UUID) for the virtual disk and stores the UUID in the descriptor file of the
Line 86: Line 89:
´getuuid´ option displays the UUID of the virtual disk.
´getuuid´ option displays the UUID of the virtual disk.


 
==== dumpfs ====
dumpfs can be used by specifying either "-D | --dumpfs" and specifying a VMFS volume, file or folder.
dumpfs can be used by specifying either "-D | --dumpfs" and specifying a VMFS volume, file or folder.


Line 96: Line 99:
  Addr <4, 0, 0>, gen 1, links 4, type dir, flags 0, uid 0, gid 0, mode 1755
  Addr <4, 0, 0>, gen 1, links 4, type dir, flags 0, uid 0, gid 0, mode 1755
  len 1260, nb 1 tbz 0, cow 0, zla 1, bs 1048576
  len 1260, nb 1 tbz 0, cow 0, zla 1, bs 1048576
==== activehosts ====
activehosts can be used by specifying "--activehosts" and specifying a VMFS volume
activehosts can be used by specifying "--activehosts" and specifying a VMFS volume


Line 104: Line 107:
  (1): MAC address 00:50:56:92:3f:86
  (1): MAC address 00:50:56:92:3f:86


Reclaim disk space by returning unused blocks of data in the virtual disk to the host OS. This will only work if your virtual disk is of type thin.
Displays the MAC address of the management interface of each host which is currently using the datastore.
 
This is also what vSphere HA uses to see if a host is still active.
 
==== punchzero ====
Since vSphere 5.1 there's an option to shrink disks besides the normally required storage vmotion.
 
With the guest shut down you can run vmkfstools with the punchzero option.
 
Reclaim disk space by returning unused blocks of data in the virtual disk to the host OS.  
 
Note that this will only work if your virtual disk is of type thin.
 
 
Before running it you will also need to zero out the unused blocks of data in the guest OS.
 
For a windows VM, you can use Microsoft's tool [http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx sdelete].
Run it as
sdelete -z c:
Note that the -z option is needed as of sdelete version 1.6
 
For a linux based VM, run a command like:
cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill
to zero out the unused space.
 
Note of warning that you should stop database -and other disk intensive- services before running the above.
 
Some more detailed descriptions and tips on zero-ing out data from your guest OS can be found at [[Shrink guest on hosted platform]]
 


Example:
Example:
  # vmkfstools --punchzero myvm.vmdk
  # vmkfstools --punchzero disk.vmdk
  vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576  
  vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576  
  Hole Punching: 3% done.
  Hole Punching: 3% done.
After you're done and list the VM from within the console, it looks like nothing has changed, in this example the disk is 10GB in size.
# ls -lh *.vmdk
-rw-------    1 root    root      10.0G Nov 27 20:58 disk-flat.vmdk
-rw-------    1 root    root        527 Nov 27 21:02 disk.vmdk
If you use the command du however then you can see the difference:
# du -hs *.vmdk
4.3G    disk-flat.vmdk
0      disk.vmdk
You can also use the vSphere Client data browser to see the effect of reclaiming disk space.
If you try to run this command against a VM living on NFS storage you might end up seeing the following error:
vmkfstools --punchzero myvmdk.vmdk
Not a supported filesystem type
The error is a bit confusing as you might expect vmkfstools to talk about the guest OS here, but it is actually reporting that NFS does not support the punchzero option.
Your solution is to either move the vmdk by hand to storage not located on VMFS or use storage vmotion to migrate to non NFS storage. On moving using storage vmotion, the zero data is already being discarded. So you can just storage vmotion back afterwards and you have reclaimed the lost disk space.


=== Links ===
=== Links ===

Latest revision as of 16:40, 16 February 2017

Command for directly working with the (virtual) disk at host level.

With this command you can destroy whole virtual machines if you do not take the right precautions (hint: BACKUPS) and are not familiar with the command.


Usage

vmkfstools [options] target

Whereby target can be either a physical disk, a virtual disk or a device.

The command is mostly known for using it to manipulate virtual disks. Beware that if you are working with a virtual disk that in most cases the virtual machine itself should be shut down.

Options

from the help page of the command.

OPTIONS FOR FILE SYSTEMS

vmkfstools -C --createfs [vmfs3|vmfs5]
              -b --blocksize #[mMkK]
              -S --setfsname fsName
          -Z --spanfs span-partition
          -G --growfs grown-partition
  deviceName
          -P --queryfs -h --humanreadable
          -T --upgradevmfs
  vmfsPath

OPTIONS FOR VIRTUAL DISKS

vmkfstools -c --createvirtualdisk #[gGmMkK]
              -d --diskformat [zeroedthick|
                               thin|
                               eagerzeroedthick]
              -a --adaptertype [buslogic|lsilogic|ide|
                                lsisas|pvscsi]
          -w --writezeros
          -j --inflatedisk
          -k --eagerzero
          -K --punchzero
          -U --deletevirtualdisk
          -E --renamevirtualdisk srcDisk
          -i --clonevirtualdisk srcDisk
              -d --diskformat [zeroedthick|
                               thin|
                               eagerzeroedthick|
                               rdm:<device>|rdmp:<device>|
                               2gbsparse]
          -X --extendvirtualdisk #[gGmMkK]
              [-d --diskformat eagerzeroedthick]
          -M --migratevirtualdisk
          -r --createrdm /vmfs/devices/disks/...
          -q --queryrdm
          -z --createrdmpassthru /vmfs/devices/disks/...
          -v --verbose #
          -g --geometry
          -x --fix [check|repair]
          -e --chainConsistent
  vmfsPath

OPTIONS FOR DEVICES

          -L --lock [reserve|release|lunreset|targetreset|busreset|readkeys|rea                              dresv] /vmfs/devices/disks/...
          -B --breaklock /vmfs/devices/disks/...

vmkfstools -H --help


Examples

Export a VM disk

Export a VM disk in 2GB chunks, note that since ESXi 5.1+ the 2GB sparse driver is disabled.

vmkfstools -i /vmfs/volumes/storagename/YourVM/YourVM.vmdk -d 2gbsparse /vmfs/volumes/storage2/YourVM/YourVM.vmdk

Check or repair a disk

-x, --fix -[check|repair]

This option will check and/or repair the virtual disk in case of an unclean shutdown.

Example:

vmkfstools --fix check /vmfs/volumes/esx4-1-local-storage-1/dummy/dummy.vmdk
Disk is error free

Set a UUID

-J, --miscop [setuuid | getuuid]

'setuuid´ option creates a unique identifier (UUID) for the virtual disk and stores the UUID in the descriptor file of the

virtual disk. If the descriptor file already contains a UUID, it will be overwritten with a new one. 

Please make sure that the virtual disk does not have a UUID before using this option.

´getuuid´ option displays the UUID of the virtual disk.

dumpfs

dumpfs can be used by specifying either "-D | --dumpfs" and specifying a VMFS volume, file or folder.

Example:

# vmkfstools -D /vmfs/volumes/esx4-1-local-storage-1/

Lock [type 10c00001 offset 4292608 v 33, hb offset 3440640
gen 11, mode 0, owner 00000000-00000000-0000-000000000000 mtime 2509]
Addr <4, 0, 0>, gen 1, links 4, type dir, flags 0, uid 0, gid 0, mode 1755
len 1260, nb 1 tbz 0, cow 0, zla 1, bs 1048576

activehosts

activehosts can be used by specifying "--activehosts" and specifying a VMFS volume

Example:

# vmkfstools --activehosts /vmfs/volumes/esx4-1-local-storage-1/
Found 1 actively heartbeating hosts on volume '/vmfs/volumes/esx4-1-local-storage-1/'
(1): MAC address 00:50:56:92:3f:86

Displays the MAC address of the management interface of each host which is currently using the datastore.

This is also what vSphere HA uses to see if a host is still active.

punchzero

Since vSphere 5.1 there's an option to shrink disks besides the normally required storage vmotion.

With the guest shut down you can run vmkfstools with the punchzero option.

Reclaim disk space by returning unused blocks of data in the virtual disk to the host OS.

Note that this will only work if your virtual disk is of type thin.


Before running it you will also need to zero out the unused blocks of data in the guest OS.

For a windows VM, you can use Microsoft's tool sdelete. Run it as

sdelete -z c:

Note that the -z option is needed as of sdelete version 1.6

For a linux based VM, run a command like:

cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill

to zero out the unused space.

Note of warning that you should stop database -and other disk intensive- services before running the above.

Some more detailed descriptions and tips on zero-ing out data from your guest OS can be found at Shrink guest on hosted platform


Example:

# vmkfstools --punchzero disk.vmdk
vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576 
Hole Punching: 3% done.


After you're done and list the VM from within the console, it looks like nothing has changed, in this example the disk is 10GB in size.

# ls -lh *.vmdk
-rw-------    1 root     root       10.0G Nov 27 20:58 disk-flat.vmdk
-rw-------    1 root     root         527 Nov 27 21:02 disk.vmdk

If you use the command du however then you can see the difference:

# du -hs *.vmdk
4.3G    disk-flat.vmdk
0       disk.vmdk

You can also use the vSphere Client data browser to see the effect of reclaiming disk space.

If you try to run this command against a VM living on NFS storage you might end up seeing the following error:

vmkfstools --punchzero myvmdk.vmdk
Not a supported filesystem type

The error is a bit confusing as you might expect vmkfstools to talk about the guest OS here, but it is actually reporting that NFS does not support the punchzero option.

Your solution is to either move the vmdk by hand to storage not located on VMFS or use storage vmotion to migrate to non NFS storage. On moving using storage vmotion, the zero data is already being discarded. So you can just storage vmotion back afterwards and you have reclaimed the lost disk space.

Links

Some useful vmkfstools ‘hidden’ options

William also has a list here