<p>UPDATE: I got some feedback that some people are not clear on creating multiple schedulers, so I&#8217;m updating this post.</p>
<p>Since I wrote about doing <a href="http://patrickv.info/wordpress/2011/03/tsm-full-vm-im…ith-vstore-api/">TSM Full-VM Image Backups With VStore API</a> I&#8217;ve done more testing, and have put it into &#8220;production&#8221; with our smaller VMWare cluster. This cluster is managed by one department inside IT. It has some VMs used by customers inside the enterprise, some VMs used for development or testing, and some VMs used by the group inside IS. Now that I&#8217;m ready to put VMWare backups into practice, I need to schedule the backups. And, I got some great feedback on the first post, so I thought I would follow it up.</p>
<p>First we need to setup the client, and here we have a few options. If we have few enough VMs that we can backup all of them in one backup window, then we just specify the VMs in the client options and setup a schedule. If on the other hand we have too many VMs to backup in one backup window, then we need to setup multiple schedules with multiple schedulers and options files. This is similar to how you would setup Data Protection for MS SQL backups. If you have divided your VMs into folders, you can specify a folder of VMs to backup for each scheduler in the options file. Otherwise, you probably want to specify the VMs individually for each scheduler.  </p>
<p>There is another option, you can specify a whole ESX host to each scheduler. I discounted this because a VMotion event would throw off where the VMs get backed up to inside TSM. In my environment, we are sure to end up with multiple unnecessary backups that would have to be cleaned up manually.</p>
<p>Because this is a smaller test system, there are a lot of VMs that I don&#8217;t want to backup regularly, and I can get it all backed up in on backup window. So, I specified to backup &#8220;ALL-VM&#8221;s in the GUI, followed by each VM I wanted to exclude.<br />
<a href="http://patrickv.info/wordpress/wp-content/uploads/2011/03/TSM_VM_Schedule_client_options.jpg"><img loading="lazy" decoding="async" src="http://patrickv.info/wordpress/wp-content/uploads/2011/03/TSM_VM_Schedule_client_options-300x256.jpg" alt="" title="TSM_VM_Schedule_client_options" width="300" height="256" class="alignnone size-medium wp-image-720" /></a></p>
<p>This, of course, just adds some lines to the dsm.opt file:<br />
<code></p>
<pre>VMMC "VM_IMAGES"
DOMAIN.VMFULL "ALL-VM;-VM=crcamzm1-bkup;-VM=DCFM;-VM=dmzftp;-VM=ftp..."
</code></pre>
<p>If you're going to run multiple schedulers, at this point you can copy the dsm.opt file to a new file and use that to setup your scheduler services.  Otherwise, just restart the scheduler service and you're in business. Also of note, you can schedule file level backups of Windows VMs with the VStorage API similarly just by changing the options.</p>
<p>When I looked at the server side, I was happy to note that Tivoli has added a VM subaction to the Backup action. So, I created a schedule that ran once a week using the enhanced schedule options:</p>
<p><code></p>
<pre>tsm: TSM>def sched standard mmc-opsvc1 action=backup subaction=vm schedstyle=enhanced startt=18:00 DAY=Sunday
ANR2500I Schedule MMC-OPSVC1 defined in policy domain STANDARD.</pre>
<p></code></p>
<p>If you have too much data to backup in one backup window, you can break up the backups into multiple schedules that run either at the same time (you could probably run 2 at a time to increase network utilization) or in different backup windows. First, create a node on the TSM server for each schedule and then assign it to a backup schedule:<br />
<code></p>
<pre>tsm: TSM>register node mmc-opsvc1_vm1 PASSWORD userid=none
ANR2060I Node MMC-OPSVC1_VM2 registered in policy domain STANDARD.

tsm: TSM>register node mmc-opsvc1_vm2 PASSWORD userid=none
ANR2060I Node MMC-OPSVC1_VM2 registered in policy domain STANDARD.

tsm: TSM>def sched standard mmc-opsvc1_vm1 action=backup subaction=vm schedstyle=enhanced startt=18:00 DAY=Sunday
ANR2500I Schedule MMC-OPSVC1_VM1 defined in policy domain STANDARD.

tsm: TSM>def sched standard mmc-opsvc1_vm2 action=backup subaction=vm schedstyle=enhanced startt=18:00 DAY=Monday
ANR2500I Schedule MMC-OPSVC1_VM2 defined in policy domain STANDARD.

tsm: TSM>def assoc standard mmc-opsvc1_vm1 mmc-opsvc1_vm1
ANR2510I Node MMC-OPSVC1_VM1 associated with schedule MMC-OPSVC1_VM1 in policy domain STANDARD.

tsm: TSM>def assoc standard mmc-opsvc1_vm2 mmc-opsvc1_vm2
ANR2510I Node MMC-OPSVC1_VM2 associated with schedule MMC-OPSVC1_VM2 in policy domain STANDARD.
</pre>
<p></code></p>
<p>On the client, create seperate dsm.opt files for each nodename. The VMCHost, VMCUser and VMCPW options will need to be changed for your environment. I put them in with the GUI, the copied and edited the dsm.opt file manually. Here's a basic example, you can specify other options for your environment, notice that I specified two VMFOLDERs instead of the "ALL-VM" option:</p>
<p><code></p>
<pre>C:\Program Files\Tivoli\TSM\baclient>type dsm_vm1.opt
NODENAME         MMC-OPSVC1_VM1
TCPSERVERADDRESS tsm2.mhc.net
TCPPORT          1502
ERRORLOGRETENTION 7 D
SCHEDLOGRETENTION 7 D
PASSWORDACCESS GENERATE
COMPRESSION NO
DEDUPLICATION NO
SCHEDMODE POLLING

VMCHOST mmc-opsvc1.ad.mhc.net
VMCUSER pvaughan
VMCPW ****
VMBACKUPTYPE FULLVM
VMFULLTYPE VSTOR
VMMC "VM_IMAGES"
DOMAIN.VMFULL "VMFOLDER=Ambulatory Apps;VMFOLDER=Amcom;"</pre>
<p></code></p>
<p>Once you have the dsm.opt files in place, you just need to register a scheduler service for each file. Here's an example of one:</p>
<p><code></p>
<pre>C:\Program Files\Tivoli\TSM\baclient>dsmcutil install /name:"TSM Scheduler VM1"
/node:"MMC-OPSVC1_VM1" /password:"PASSWORD" /optfile:"dsm_vm1.opt" /startnow:Yes
...
Installing TSM Client Service:

       Machine          : MMC-OPSVC1
       Service Name     : TSM Scheduler VM1
       Client Directory : C:\Program Files\Tivoli\TSM\baclient
       Automatic Start  : no
       Logon Account    : LocalSystem
The service was successfully installed.
...
Authenticating TSM password for node MMC-OPSVC1_VM2 ...

Connecting to TSM Server via client options file 'C:\Program Files\Tivoli\TSM\baclient\dsm_vm1.opt' ...

Password authentication successful.

The registry password for TSM node MMC-OPSVC1_VM1 has been updated.

Starting the 'TSM Scheduler VM1' service ...

The service was successfully started.</code></pre>
<p>Another nice thing that Tivoli did is make each set of image backups for a specific VM a filespace in TSM:<br />
<code></p>
<pre>tsm: TSM>q file mmc-opsvc1

Node Name           Filespace       FSID     Platform     Filespace     Is Files-        Capacity       Pct
                    Name                                  Type            pace               (MB)      Util
                                                                        Unicode?
---------------     -----------     ----     --------     ---------     ---------     -----------     -----
MMC-OPSVC1          \VMFULL-HMC        1     WinNT        API:TSMVM        No                 0.0       0.0
MMC-OPSVC1          \VMFULL-DC-        2     WinNT        API:TSMVM        No                 0.0       0.0
                     FM
MMC-OPSVC1          \VMFULL-ftp        3     WinNT        API:TSMVM        No                 0.0       0.0</pre>
<p></code></p>
<p>As you can see, a filespace is created in the format of "\VMFULL-VMNAME". If you need to remove the backups for a VM because it's been decommissioned or moved, you can simply delete the filespace.</p>
{"id":718,"date":"2011-03-23T14:48:06","date_gmt":"2011-03-23T18:48:06","guid":{"rendered":"http:\/\/patrickv.info\/wordpress\/?p=718"},"modified":"2011-03-23T14:48:06","modified_gmt":"2011-03-23T18:48:06","slug":"scheduling-tsm-vmware-backups","status":"publish","type":"post","link":"https:\/\/rootuser.ninja\/index.php\/2011\/03\/23\/scheduling-tsm-vmware-backups\/","title":{"rendered":"Scheduling TSM VMware Backups"},"content":{"rendered":"<p>UPDATE: I got some feedback that some people are not clear on creating multiple schedulers, so I&#8217;m updating this post.<\/p>\n<p>Since I wrote about doing <a href=\"http:\/\/patrickv.info\/wordpress\/2011\/03\/tsm-full-vm-im\u2026ith-vstore-api\/\">TSM Full-VM Image Backups With VStore API<\/a> I&#8217;ve done more testing, and have put it into &#8220;production&#8221; with our smaller VMWare cluster. This cluster is managed by one department inside IT. It has some VMs used by customers inside the enterprise, some VMs used for development or testing, and some VMs used by the group inside IS. Now that I&#8217;m ready to put VMWare backups into practice, I need to schedule the backups. And, I got some great feedback on the first post, so I thought I would follow it up.<\/p>\n<p>First we need to setup the client, and here we have a few options. If we have few enough VMs that we can backup all of them in one backup window, then we just specify the VMs in the client options and setup a schedule. If on the other hand we have too many VMs to backup in one backup window, then we need to setup multiple schedules with multiple schedulers and options files. This is similar to how you would setup Data Protection for MS SQL backups. If you have divided your VMs into folders, you can specify a folder of VMs to backup for each scheduler in the options file. Otherwise, you probably want to specify the VMs individually for each scheduler.  <\/p>\n<p>There is another option, you can specify a whole ESX host to each scheduler. I discounted this because a VMotion event would throw off where the VMs get backed up to inside TSM. In my environment, we are sure to end up with multiple unnecessary backups that would have to be cleaned up manually.<\/p>\n<p>Because this is a smaller test system, there are a lot of VMs that I don&#8217;t want to backup regularly, and I can get it all backed up in on backup window. So, I specified to backup &#8220;ALL-VM&#8221;s in the GUI, followed by each VM I wanted to exclude.<br \/>\n<a href=\"http:\/\/patrickv.info\/wordpress\/wp-content\/uploads\/2011\/03\/TSM_VM_Schedule_client_options.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/patrickv.info\/wordpress\/wp-content\/uploads\/2011\/03\/TSM_VM_Schedule_client_options-300x256.jpg\" alt=\"\" title=\"TSM_VM_Schedule_client_options\" width=\"300\" height=\"256\" class=\"alignnone size-medium wp-image-720\" \/><\/a><\/p>\n<p>This, of course, just adds some lines to the dsm.opt file:<br \/>\n<code><\/p>\n<pre>VMMC \"VM_IMAGES\"\nDOMAIN.VMFULL \"ALL-VM;-VM=crcamzm1-bkup;-VM=DCFM;-VM=dmzftp;-VM=ftp...\"\n<\/code><\/pre>\n<p>If you're going to run multiple schedulers, at this point you can copy the dsm.opt file to a new file and use that to setup your scheduler services.  Otherwise, just restart the scheduler service and you're in business. Also of note, you can schedule file level backups of Windows VMs with the VStorage API similarly just by changing the options.<\/p>\n<p>When I looked at the server side, I was happy to note that Tivoli has added a VM subaction to the Backup action. So, I created a schedule that ran once a week using the enhanced schedule options:<\/p>\n<p><code><\/p>\n<pre>tsm: TSM>def sched standard mmc-opsvc1 action=backup subaction=vm schedstyle=enhanced startt=18:00 DAY=Sunday\nANR2500I Schedule MMC-OPSVC1 defined in policy domain STANDARD.<\/pre>\n<p><\/code><\/p>\n<p>If you have too much data to backup in one backup window, you can break up the backups into multiple schedules that run either at the same time (you could probably run 2 at a time to increase network utilization) or in different backup windows. First, create a node on the TSM server for each schedule and then assign it to a backup schedule:<br \/>\n<code><\/p>\n<pre>tsm: TSM>register node mmc-opsvc1_vm1 PASSWORD userid=none\nANR2060I Node MMC-OPSVC1_VM2 registered in policy domain STANDARD.\n\ntsm: TSM>register node mmc-opsvc1_vm2 PASSWORD userid=none\nANR2060I Node MMC-OPSVC1_VM2 registered in policy domain STANDARD.\n\ntsm: TSM>def sched standard mmc-opsvc1_vm1 action=backup subaction=vm schedstyle=enhanced startt=18:00 DAY=Sunday\nANR2500I Schedule MMC-OPSVC1_VM1 defined in policy domain STANDARD.\n\ntsm: TSM>def sched standard mmc-opsvc1_vm2 action=backup subaction=vm schedstyle=enhanced startt=18:00 DAY=Monday\nANR2500I Schedule MMC-OPSVC1_VM2 defined in policy domain STANDARD.\n\ntsm: TSM>def assoc standard mmc-opsvc1_vm1 mmc-opsvc1_vm1\nANR2510I Node MMC-OPSVC1_VM1 associated with schedule MMC-OPSVC1_VM1 in policy domain STANDARD.\n\ntsm: TSM>def assoc standard mmc-opsvc1_vm2 mmc-opsvc1_vm2\nANR2510I Node MMC-OPSVC1_VM2 associated with schedule MMC-OPSVC1_VM2 in policy domain STANDARD.\n<\/pre>\n<p><\/code><\/p>\n<p>On the client, create seperate dsm.opt files for each nodename. The VMCHost, VMCUser and VMCPW options will need to be changed for your environment. I put them in with the GUI, the copied and edited the dsm.opt file manually. Here's a basic example, you can specify other options for your environment, notice that I specified two VMFOLDERs instead of the \"ALL-VM\" option:<\/p>\n<p><code><\/p>\n<pre>C:\\Program Files\\Tivoli\\TSM\\baclient>type dsm_vm1.opt\nNODENAME         MMC-OPSVC1_VM1\nTCPSERVERADDRESS tsm2.mhc.net\nTCPPORT          1502\nERRORLOGRETENTION 7 D\nSCHEDLOGRETENTION 7 D\nPASSWORDACCESS GENERATE\nCOMPRESSION NO\nDEDUPLICATION NO\nSCHEDMODE POLLING\n\nVMCHOST mmc-opsvc1.ad.mhc.net\nVMCUSER pvaughan\nVMCPW ****\nVMBACKUPTYPE FULLVM\nVMFULLTYPE VSTOR\nVMMC \"VM_IMAGES\"\nDOMAIN.VMFULL \"VMFOLDER=Ambulatory Apps;VMFOLDER=Amcom;\"<\/pre>\n<p><\/code><\/p>\n<p>Once you have the dsm.opt files in place, you just need to register a scheduler service for each file. Here's an example of one:<\/p>\n<p><code><\/p>\n<pre>C:\\Program Files\\Tivoli\\TSM\\baclient>dsmcutil install \/name:\"TSM Scheduler VM1\"\n\/node:\"MMC-OPSVC1_VM1\" \/password:\"PASSWORD\" \/optfile:\"dsm_vm1.opt\" \/startnow:Yes\n...\nInstalling TSM Client Service:\n\n       Machine          : MMC-OPSVC1\n       Service Name     : TSM Scheduler VM1\n       Client Directory : C:\\Program Files\\Tivoli\\TSM\\baclient\n       Automatic Start  : no\n       Logon Account    : LocalSystem\nThe service was successfully installed.\n...\nAuthenticating TSM password for node MMC-OPSVC1_VM2 ...\n\nConnecting to TSM Server via client options file 'C:\\Program Files\\Tivoli\\TSM\\baclient\\dsm_vm1.opt' ...\n\nPassword authentication successful.\n\nThe registry password for TSM node MMC-OPSVC1_VM1 has been updated.\n\nStarting the 'TSM Scheduler VM1' service ...\n\nThe service was successfully started.<\/code><\/pre>\n<p>Another nice thing that Tivoli did is make each set of image backups for a specific VM a filespace in TSM:<br \/>\n<code><\/p>\n<pre>tsm: TSM>q file mmc-opsvc1\n\nNode Name           Filespace       FSID     Platform     Filespace     Is Files-        Capacity       Pct\n                    Name                                  Type            pace               (MB)      Util\n                                                                        Unicode?\n---------------     -----------     ----     --------     ---------     ---------     -----------     -----\nMMC-OPSVC1          \\VMFULL-HMC        1     WinNT        API:TSMVM        No                 0.0       0.0\nMMC-OPSVC1          \\VMFULL-DC-        2     WinNT        API:TSMVM        No                 0.0       0.0\n                     FM\nMMC-OPSVC1          \\VMFULL-ftp        3     WinNT        API:TSMVM        No                 0.0       0.0<\/pre>\n<p><\/code><\/p>\n<p>As you can see, a filespace is created in the format of \"\\VMFULL-VMNAME\". If you need to remove the backups for a VM because it's been decommissioned or moved, you can simply delete the filespace.<\/p>\n","protected":false},"excerpt":{"rendered":null,"protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,1],"tags":[],"class_list":["post-718","post","type-post","status-publish","format-standard","hentry","category-tsm-notes","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/rootuser.ninja\/index.php\/wp-json\/wp\/v2\/posts\/718","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rootuser.ninja\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rootuser.ninja\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rootuser.ninja\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rootuser.ninja\/index.php\/wp-json\/wp\/v2\/comments?post=718"}],"version-history":[{"count":0,"href":"https:\/\/rootuser.ninja\/index.php\/wp-json\/wp\/v2\/posts\/718\/revisions"}],"wp:attachment":[{"href":"https:\/\/rootuser.ninja\/index.php\/wp-json\/wp\/v2\/media?parent=718"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rootuser.ninja\/index.php\/wp-json\/wp\/v2\/categories?post=718"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rootuser.ninja\/index.php\/wp-json\/wp\/v2\/tags?post=718"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}