How to get llama 2 up and running , in a VM, with no GPU, and limited memory on Ubuntu

Image
OK I decided to write this up after unsuccessfully being able to find all the required info I needed in one place. In this setup we will be using Ubuntu Server 22.04.2 LTS as the OS. I have this running on a home lab ESXi server 8, on a HP Compaq Pro 6300 SFF CPU = Intel Core i7-3770 Installed Memory 16 GB I have some 10K SAS drives installed for the VM's If you have not already, navigate to  Get Ubuntu Server | Download | Ubuntu and download the 22.04.2 LTS ISO Next Lets create our VM that we are going to run this in. *Note Im using ESXi however you can probably do this in Workstation, Fusion, VirtualBox etc The main things to note on the VM creation. Set Ubuntu 64 bit as the guest OS Set your CPU relevant to the physicals CPU, I will be starting with 4 VCPU Set your Memory to as much as you can tolerate, I will be using 12 Disk Space - we are creating a 100G swap file, and the rest of the file can take up some room , so more is better if you can afford it Dont forget to add the U

DPM 2012 Upgrade from 2010..

So upgrading is very simple, there are many different post on how to upgrade , and its mostly point and click, however there are some things you should do to "make it work", or maybe it was just me.

also depending on how large your infrastructure is, now backups can run until the whole process is done, that means you need your dpm server on 2012, and client agents on on 2012 (2003 servers may require a reboot)

1st backup your 2010 database
run your upgrade
once completed
reboot then BACK UP your 2012 DATABASE NOW! this will save you frustration later down the road, just put it on disk somewhere.

FYI, if your using the SQL that came with DPM, it does not include SP1 (yeah that's right), update this later.
everything will be out of sync begin sync them now.
if you remember setting the tape write period ratio along time ago, guess what, it dosen't exist any more in powershell
Set-DPMGlobalProperty –DPMServerName -TapeWritePeriodRatio


you now get to set it on every single protection group (grouped) you have "yeah"! :-P

now go to  management > libraies , click Optimize usage. 
create a group with the settings you want.
add the servers you want to have those settings...
create more groups as needed..yada yada yadda.

another "feature" is that when dpm 2012 is installed, it changes our long term retention times all to one month  and makes it the default.

So, if your tapes went off site every week, now they only get written to once a month. so you will need to go through LT recover goal and change these back.


Ok at this point every thing looked good for me. however it was all down hill from this point..
Oh do a back up now...

so your backup jobs will appear to run and DPM will not complain about it, this is how i knew that there was an issue was when DPM created a big ass error.
well the errors are in the event logs, so if you don't monitor those every day (as if you had other work to do), you miss a few things:




this error is usually followed by:



This awesome error comes up when a recovery point is created, or synced. To find WTF this actually is, you have to dig into sql and find that job and figure out what it is running. im my case it was running
"C:\Program Files\Microsoft System Center 2012\DPM\DPM\bin\TriggerJob.exe 1406e2b4-abb0-47f3-955b-9f5bb69b07a4 04102f31-b575-406d-9f04-bb9e73ee27a1 DPMSERVER.LOCAL.DOMAIN"
so basically it doesn't tell you shit.

so now you need to look here
C:\Program Files\Microsoft System Center 2012\DPM\DPM\Temp\MSDPMCurr.errlog
this will tell you what the error is. here is what mine was.

1690 1788  04/25 16:30:00.901 15 CommandHelper.cs(797) WARNING The scheduleID 30a117f3-4b94-4eb1-98ed-8cba0569715e is not associated with the job definition 5e76a2ab-4957-4428-a994-d55634f6aeca.
1690 1788  04/25 16:30:00.901 09 serviceutils.cpp(537) WARNING Caught Dls exception: Microsoft.Internal.EnterpriseStorage.Dls.Utils.ScheduleNotFoundException: The scheduleID: 30a117f3-4b94-4eb1-98ed-8cba0569715e is not associated with the job definition: 5e76a2ab-4957-4428-a994-d55634f6aeca


WTF does that mean? well apparently the DPM team on technech doesnt know either.

to shorten this up, what i had to do was a backup of the database, uninstall of DPM 2012, uninstall of SQL,
re-install DPM 2012
restore the database using the DPMSYNC tool

so after re-installing DPM open the DPM management shell as and admin
DPMSync –RestoreDB –DBLoc location of folder 
DPMSync takes the DPM service offline and attaches the backed up database to SQL

after that run
DpmSync -sync
then reboot the server.
when it comes back up, re-scan your library, re-sync your restore points, you should be good to go. 


another issues is an issue with reports after a restore.
Open SQL management studio (run as admin)
connect to the DPM 2012 server
expand Security> Logins
double click on SERVERNAME\DPMDBReaders$SERVERNAME
make sure user mappings have DPMDB checked , and has DB_datareader,MSDPMReaderRole, and public







Im still waiting to see if the tapes work will let you know soon.
Update:4/30/2012 - everything appears to be good to go.
I was origonally having issues with tapes not expiring in the reports, MS has had several reports on this and  put out a script in the mean time.
http://social.technet.microsoft.com/Forums/en-US/dpmtapebackuprecovery/thread/ff20c278-1e8e-40ff-97d4-91ee0bb5ade6

Here is the script name it duetape.ps1 and place in "C:\Program Files\Microsoft System Center 2012\DPM\DPM\bin":

$version = 1.6
foreach ($switch in $args)
{
 $switches = $Switches + $switch.toupper() + " "
}
if ($switches -match'label')   { $barcode = 'label' } else { $barcode = 'barcode'}
if ($switches -like '*??/??/????*') { [datetime] $date = $switches.substring($switches.IndexOf("/")-2,10) } else { [datetime] $date = '12/30/9999'  }
if ($switches -match 'T' -and $date -eq '12/30/9999' ) { $date = (get-date).AddDays($switches.substring($switches.indexof("T") + 1,3))}
if ($switches -match 'verbose') { $verbose = 1 }
if ($switches -match '\?') { $help = 1 }
if ($switches -match 'expired') { $expired = 1 }
$date = $date.AddDays(1)
$confirmpreference = "None"
cls
write-host "due-tape Version $version`nType ? for help"  -f white
write-host "`nCommand: " $myinvocation.line -f yellow
if ($help)
{ 
 write-host 'usage: due-tape ' -f white
 write-host 'switches:'
 write-host '   LABEL      - List ALL tapes and when they will get expired. Output will list tape labels.' -f yellow
 write-host '   VERBOSE    - Includes all recovery points in the tape' -f yellow
 write-host '   Tnnn       - Tapes that will be expired nn days from now. Cannot be used with mm/dd/yy switch'  -f yellow
 write-host "   mm/dd/yyyy - Tapes that will expired before the this date"  -f yellow
 write-host "   Expired    - Include Tapes that are already expired"  -f yellow
 write-host "`nExamples:`n" 
 write-host "due-tape label" -f white
 write-host "   Return tapes with their label values. If ommited, it will return barcode values`n" -f cyan
 write-host "due-tape  verbose" -f white
        write-host "   Include all recovery points available in the tape`n" -f cyan
 write-host "due-tape 05/02/12" -f white
 write-host "   Lists all tapes that are set to expire before May, the 2nd of 2012`n" -f cyan
 write-host "due-tape T015" -f white   
 write-host "   Lists all tapes that are set to expire within the next 15 days`n" -f cyan
 write-host "due-tape Expired" -f white   
 write-host "   Include all tapes expired before current date" -f cyan
 exit
}
write-host "`nList tapes that will be expired before $date`n" -f cyan
$dpmserver = connect-dpmserver (&hostname)
$pg = @(get-protectiongroup (&hostname) | where { $_.protectionmethod -like "*Long-term using tape*"}) 
$filename = "duetape_" +(get-date -uFormat "%m-%d-%Y_%H-%m") + ".txt"
"Command: " + $myinvocation.line | out-file $filename -encoding ASCII
foreach ($pg1 in $pg)
{
 $count = 0
 $rp = @()
 write-host "Protection Group" $pg1.friendlyname "has tape protection" -foreground white
 $ds = @(get-datasource $pg1)
 foreach ($ds1 in $ds)
 {
  if ((get-recoverypoint $ds1 | where { $_.datalocation -eq "Media"}) -ne $null)
  {
   $rp = $rp + (get-recoverypoint $ds1 | where { $_.datalocation -eq "Media"})
  }
 }
 $tp = @(get-tape -protectiongroup $pg1)
 foreach ($tp1 in $tp)
 {
  if ($tp1.Isoffsiteready -eq $true)
  {
   if ($verbose) { write-host "`n   Recovery Points present on tape with" $barcode $tp1.$barcode }
   foreach ($rp1 in $rp)
   {
    if ($tp1.id -eq $rp1.RecoverySourceLocations[0].mediamaplist[$rp1.RecoverySourceLocations[0].mediamaplist.count-1].mediaid)
    {
     if ($verbose) { write-host "     " $rp1.RecoverySourceLocations[0].creationdatetime " - " $rp1.RecoverySourceLocations[0].expirydate " - " $tp1.$barcode "-" $rp1.recoverysourcelocations[0].generation -foreground red }
     if ($expire -lt $rp1.RecoverySourceLocations[0].expirydate)
     {
      $expire = ($rp1.recoverysourcelocations[0].expirydate)       
     }
    }
   }  
   if ($tp1.location.isoffline)
   {
    if ($expire -lt $date -and $expire -gt (get-date))
    {
     write-host "   Offsite Tape with" $barcode $tp1.$barcode "is due back to Library on" $expire -foreground yellow
     "Offsite Tape with " + $barcode + " " + $tp1.$barcode + " is due back to Library on " + $expire | out-file $filename -encoding ASCII -append
     $count++
    }
   }
   else
   {
    if ($expire -lt $date -and $expire -gt $currentDate)
    {
     write-host "   Tape in" $tp1.location.name "-" $tp1.location.id "expires on" $expire -foreground green
     "Tape in " + $tp1.location.name + "-" + $tp1.location.id +" expires on " + $expire | out-file $filename -encoding ASCII -append
     $count++
    }
   }
  }
  if ($expired)
  {
   $notexpired = 0
   foreach ($rp1 in $rp)
   {
    if ($tp1.id -eq $rp1.RecoverySourceLocations[0].mediamaplist[$rp1.RecoverySourceLocations[0].mediamaplist.count-1].mediaid)
    {
     if ($verbose) { write-host "     " $rp1.RecoverySourceLocations[0].creationdatetime " - " $rp1.RecoverySourceLocations[0].expirydate " - " $tp1.$barcode "-" $rp1.recoverysourcelocations[0].generation -foreground red }
     $expire1 = $rp1.RecoverySourceLocations[0].expirydate
     if ($expire1 -gt $expire -and $expire1 -lt (get-date)) { $expire = $expire1 }
     if (!$expire)
     {
      $notexpired = 1
      Break       
     }
    }
   }
   if ($tp1.location.isoffline -eq $True -and $notexpired -eq 0)
   {
    write-host "   Offsite Tape with" $barcode $tp1.$barcode "expired on " $expire -foreground red
    "Offsite Tape with " + $barcode + " " + $tp1.$barcode + " expired on " + $expire | out-file $filename -encoding ASCII -append
    $count++
   }
   if ($tp1.location.isoffline -eq $False -and $notexpired -eq 0)
   {
    write-host "   Tape in" $tp1.location.name "-" $tp1.location.id "expired on" $expire -foreground red
    "Tape in " + $tp1.location.name + "-" + $tp1.location.id +" expired on " + $expire | out-file $filename -encoding ASCII -append
    $count++
   }
  }
 }
 if ($count -eq 0) { Write-host "`n   No tapes will be expired before the supplied date" -f red }
}
write-host "`nFile $filename created`n"




and if you are still having issues not addressed here consider rolling back to 2010
http://technet.microsoft.com/en-us/library/hh848284.aspx

Comments

  1. Hi, thanks a lot for posting your experinces :-)
    I am wondering. What database backup did you restore after uninstalling DPM 2012 and re-installing it again. The one done after the 2012 upgrade or the one just before (still DPM 2010).
    I assume you have used "DPMBackup.exe -db" for doing the backups.

    Reards Christian

    ReplyDelete
  2. I used the database from the 2012 install.

    ReplyDelete

Post a Comment

Popular posts from this blog

vSphere 7 - Specify a vmkernel adapter to use for NFS datastores Step By Step \ Walkthrough on a DVS

Horizon View 2-factor Authentication for Free! with Google Authenticator or others

How to get llama 2 up and running , in a VM, with no GPU, and limited memory on Ubuntu