none
Modifying disk allocation for E:\ failed: RRS feed

  • Question

  • Modifying disk allocation for E:\ failed:
    Error 360: The operation failed due to a virtual disk service error
    Error details: VdsError:The volume cannot be extended because the number of clusters will
    exceed the maximum number of clusters supported by the file system.
     (0x80042928)
    Recommended action: Retry the operation.

    Can someone explain what is going on here and how to fix it?

    Friday, September 20, 2013 3:36 PM

All replies

  • I am bumping this for ideas. I am currently coming up with backup plan B as i am not seeing much information out about this error.

    *EDIT*

    reading this....

    http://social.technet.microsoft.com/Forums/windowsserver/en-US/46e3ccc9-3975-4675-9071-9be214592623/expanding-spanned-disk-over-15tb-failed-on-2008-r2-ent

    It appears that my recovery volumes is trying to pass the 16TB mark and failing.

    Since i am not the one that made the partition DPM is the advice from that thread doesnt really appear to help me.

    everyone says dont mess with DPMS partition.

    • Edited by JustusIV Friday, September 20, 2013 7:05 PM
    Friday, September 20, 2013 7:01 PM
  • Reading more on the subject

    http://social.technet.microsoft.com/Forums/en-US/1eb70f4c-d21a-4c8e-b151-9a5bbf13b92b/is-it-possible-to-extend-replica-volume-over-16tb-on-dpm-2010-windows-server-2008-r2

    i see this info 

    I think the easy way would be to stop your protection Group, retain data, then recreate your protection group.

    Can someone give me some guidance how i would "retain data"

    Friday, September 20, 2013 8:44 PM
  • Hi,

    Is the REPLICA volume or the RECOVERY POINT volume that you need to grow to add more disk space to ?

    I have a hard time believing it's the recovery point volume, but if that is the case, it would be better to simply reduce the retention range so older recovery points get pruned to free up disk space.


    Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. Regards, Mike J. [MSFT] This posting is provided "AS IS" with no warranties, and confers no rights.

    Friday, September 20, 2013 9:06 PM
    Moderator
  • DPM has run out of free space on the recovery point volume and will fail synchronization for E:\ on codfs0.unmc.medforest.org in order to prevent existing recovery points from being deleted. (ID 30195 Details: Internal error code: 0x80990AB2

    Trying to expand is the other error.

    We are trying to stretch DPM a little far I understand that. Trying to maintain almost a year of backups on "short term disk" of our 10TB file server. This is not ideal and would love an alternative. I am open to suggestions.

    Friday, September 20, 2013 10:10 PM
  • Hi,

    Short Term Solution
    =============
    Reduce the retention range and let DPM prune older recovery points naturally, or use the below powershell script to remove old ones immediately so new recovery points can continue to be made.

    #Author	: Ruud Baars
    #Date	: 11/09/2008
    #Edited : 11/15/2012 By: Wilson S.
    #edited : 11:27:2012 By: Mike J.
    
    # NOTE: Update script to only remove recovery points on Disk. Recovery points removed will be from the oldest one up to the date
    #       entered by the user while the script is running
    #deletes all recovery points before 'now' on selected data source.
    $version="V4.7" 
    $ErrorActionPreference = "silentlycontinue"
    add-pssnapin sqlservercmdletsnapin100
    Add-PSSnapin -Name Microsoft.DataProtectionManager.PowerShell
    #display RP's to delete and ask to continue. 
    #Check & wait data source to be idle else removal may fail (in Mojito filter on 'intent' to see the error)
    #Fixed prune default and logfile name and some logging lines (concatenate question + answer)
    #Check dependent recovery points do not pass BEFORE date and adjust selection to not select those ($reselect)
    #--- Fixed reselect logic to keep adjusting reselect for as long as older than BEFORE date
    #--- Fixed post removal rechecking logic to match what is done so far (was still geared to old logic)
    #--- Modified to remove making RP and ask for pruning, fixed logic for removal rechecking logic
    
    $MB=1024*1024
    $logfile="DPMdeleteRP.LOG"
    $wait=10	#seconds
    $confirmpreference = "None" 
    
    function Show_help
    {
    	cls
    	$l="=" * 79
    	write-host $l -foregroundcolor magenta
    	write-host -nonewline "`t<<<" -foregroundcolor white
    	write-host -nonewline " DANGEROUS :: MAY DELETE MANY RECOVERY POINTS " -foregroundcolor red
    	write-host ">>>" -foregroundcolor white
    	write-host $l -foregroundcolor magenta
    	write-host "Version: $version" -foregroundcolor cyan
        	write-host "A: User Selects data source to remove recovery points for" -foregroundcolor green
    	write-host "B: User enters date / time (using 24hr clock) to Delete recovery points" -foregroundcolor green
    	write-host "C: User Confirms deletion after list of recovery points to be deleted is displayed." -foregroundcolor green
    	write-host "Appending to log file $logfile`n" -foregroundcolor white
    	write-host "User Accepts all responsibilities by entering a data source or just pressing [Enter] " -foregroundcolor white -backgroundcolor blue
    
    }
    
    
    "**********************************" >> $logfile
    "Version $version" >> $logfile
    get-date >> $logfile
    show_help
    
    $DPMservername=&"hostname"
    "Selected DPM server = $DPMservername" >> $logfile
    write-host "`nConnnecting to DPM server retrieving data source list...`n" -foregroundcolor green
    $pglist = @(Get-ProtectionGroup $DPMservername) # WILSON - Created PGlist as array in case we have a single protection group.
    $ds=@()
    $tapes=$null
    $count = 0
    $dscount = 0
    foreach ($count in 0..($pglist.count - 1)) 
    {
        # write-host $pglist[$count].friendlyname
        $ds += @(get-datasource $pglist[$count]) # WILSON - Created DS as array in case we have a single protection group.
        # write-host $ds
        # write-host $count -foreground yellow 
    } 
    if ( Get-Datasource $DPMservername -inactive) {$ds += Get-Datasource $DPMservername -inactive}
    
    $i=0
    write-host "Index Protection Group     Computer             Path"
    write-host "---------------------------------------------------------------------------------"
    foreach ($l in $ds) 
    {
    	"[{0,3}] {1,-20} {2,-20} {3}" -f $i, $l.ProtectionGroupName, $l.psinfo.netbiosname, $l.logicalpath
    	$i++
    }
    $DSname=read-host "`nEnter a data source index from list above - Note co-located datasources on same replica will be effected"
    
    if (!$DSname) 
    {
    	write-host "No datasource selected `n" -foregroundcolor yellow
    	"Aborted on Datasource name" >> $logfile
    	exit 0
    }
    $DSselected=$ds[$DSname]
    if (!$DSselected) 
    {
    	write-host "No datasource selected `n" -foregroundcolor yellow
    	"Aborted on Datasource name" >> $logfile
    	exit 0
    }
    $rp=get-recoverypoint $DS[$dsname]
    $rp
    # $DoTape=read-host "`nDo you want to remove when recovery points are on tape ? [y/N]"
    # "Remove tape recovery point = $DoTape" >> $logfile
    
    write-host "`nCollecting recoverypoint information for datasource $DSselected.name" -foregroundcolor green
    if ($DSselected.ShadowCopyUsedspace -gt 0)
    {
        while ($DSSelected.TotalRecoveryPoints -eq 0)
        { # "still 0"
        }
    
    	#this is on disk
    	$oldShadowUsage=[math]::round($DSselected.ShadowCopyUsedspace/$MB,1)
    	$line=("Total recoverypoint usage {0} MB on DISK in {1} recovery points" -f $oldShadowUsage ,$DSselected.TotalRecoveryPoints  ) 
    	$line >> $logfile
    	write-host $line`n -foregroundcolor white
    }
    
    #this is on tape
    #$trptot=0
    #$tp= Get-RecoveryPoint($dsselected) | where {($_.Datalocation -eq "Media")}
    #foreach ($trp in $tp) {$trptot += $trp.size }
    #if ($trptot -gt 0 )
    #{
    #	$line=("Total recoverypoint usage {0} MB on TAPE in {1} recovery points" -f ($trptot/$MB) ,$DSselected.TotalRecoveryPoints  ) 
    #	$line >> $logfile
    #	write-host $line`n -foregroundcolor white		
    #}
    
    [datetime]$afterdate="1/1/1980"
    #$answer=read-host "`nDo you want to delete recovery points from the beginning [Y/n]" 
    #if ($answer -eq "n" )
    #{
    #	[datetime]$afterdate=read-host "Delete recovery points AFTER date [MM/DD/YYYY hh:mm]"
    #}
    [datetime]$enddate=read-host "Delete ALL Disk based recovery points BEFORE and Including date/time entered [MM/DD/YYYY hh:mm]" 
    "Deleting recovery points until $enddate" >>$logfile
    write-host "Deleting recovery points until and $enddate" -foregroundcolor yellow
    $rp=get-recoverypoint $DSselected
    
    if ($DoTape -ne "y" )
    {
    	$RPselected=$rp | where {($_.representedpointintime -le $enddate) -and ($_.Isincremental -eq $FALSE)-and ($_.DataLocation -eq "Disk")}
    }
    else
    {
    	$RPselected=$rp | where {($_.representedpointintime -le $enddate) -and ($_.Isincremental -eq $FALSE)}
    }
    
    if (!$RPselected) 
    {
    	write-host "No recovery points found!" -foregroundcolor yellow
    	"No recovery points found, aborting...!" >> $logfile
    	exit 0
    }
    $reselect = $enddate
    $adjustflag = $false
    foreach ($onerp in $RPselected)
    {
    	$rtime=[string]$onerp.representedpointintime
    	$rsize=[math]::round(($onerp.size/$MB),1)
    	$line= "Found {0}, RP size= {1} MB (If 0 MB, co-located datasource cannot be computed), Incremental={2} "-f $rtime, $rsize,$onerp.Isincremental
            $line >> $logfile
    	write-host "$line" -foregroundcolor yellow
    	#
    	#Get dependent rp's for data source
    	#
    	$allRPtbd=$DSselected.GetAllRecoveryPointsToBeDeleted($onerp)
    	foreach ($oneDrp in $allRPtbd)
    	{
    		if ($oneDrp.IsIncremental -eq $FALSE) {continue}
    		$rtime=[string]$oneDrp.representedpointintime
    		$rsize=[math]::round(($oneDrp.size/$MB),1)
    		$line= ("`t...is dependancy for {0} size {1} `tIncremental={2}" -f $rtime, $rsize, $oneDrp.Isincremental) 
    		$line >> $logfile
    		if ($oneDrp.representedpointintime -ge $enddate)
    		{
    			#stick to latest full ($oneDrp = dependents, $onerp = full)
    			$adjustflag = $true
    			$reselect = $onerp.representedpointintime
    			"<< Dependents newer than BEFORE date >>>" >> $logfile
    			Write-Host -nonewline "`t <<< later than BEFORE date >>>" -foregroundcolor white -backgroundcolor red
    			write-host "$line" -foregroundcolor yellow
    		}
    		else
    		{
    			#Ok, include current latest incremental
    			$reselect =  $oneDrp.representedpointintime
            	write-host "$line" -foregroundcolor yellow
    		}
    	}
    }
    if ($reselect -lt $oneDrp.representedpointintime) 
    {
    	#we adjusted further backward than latest incremental within selection
            $reselect =  $rtime 
    	$line =  "Adjusted BEFORE date to be $reselect to include dependents to $enddate"
    	$line >> $logfile
    	Write-Host $line -foregroundcolor white -backgroundcolor blue
    }
    $line="`n<<< SECOND TO LAST CHANCE TO ABORT - ONE MORE PROMPT TO CONFIRM. >>>"
    write-host $line  -foregroundcolor white -backgroundcolor blue
    $line >> $logfile
    $line="Above recovery points within adjusted range will be permanently deleted !!!"
    write-host $line -foregroundcolor red
    $line >> $logfile
    $line="These RP's include dependent recovery points and may contain co-located datasource(s)"
    write-host $line -foregroundcolor red 
    $line >> $logfile
    $line="Data source activity = " + $DSselected.Activity
    $line >> $logfile
    write-host $line -foregroundcolor white
    $DoDelete=""
    while (($DoDelete -ne "N" ) -and ($DoDelete -ne "Y"))
    {
    	$line="Continue with deletion (must answer) Y/N? "
    	write-host $line -foregroundcolor white
    	$DoDelete=read-host
    	$line = $line + $DoDelete
    	$line >> $logfile
    }
    
    if (!$DSselected.Activity -eq "Idle") 
    {
    	$line="Data source not idle, do you want to wait Y/N ? "
    	write-host $line -foregroundcolor yellow
    	$Y=read-host
    	$line = $line + $Y
    	$line >> $logfile
    	if ($Y -ieq "Y") 
    	{
    		Write-Host "Waiting for data source to become idle..."  -foregroundcolor green
    		while ($DSselected.Activity -ne "Idle")
    		{
    			("Waiting {0} seconds" -f $wait) >>$logfile
    			Write-Host -NoNewline "..." -ForegroundColor blue
    			start-sleep -s $wait
    		}
    	}
    }
    
    if ($DoDelete -eq "Y")
    {
       foreach ($onerp in $RPselected)
    	{
    		#reselect is adjusted to safe range relative to what was requested
    		#--- if adjustflag not set then all up to including else only older because we must keep the full
    		if ((($onerp.representedpointintime -le $reselect) -and ($adjustflag -eq $false)) -or ($onerp.representedpointintime -lt $reselect))
    		{
    			$rtime=[string]$onerp.representedpointintime
    			write-host `n$line -foregroundcolor red
    			$line >>$logfile
    			if (($onerp ) -and ($onerp.IsIncremental -eq $FALSE)) { remove-recoverypoint -RecoveryPoint $onerp -confirm:$True} # >> $logfile}
    			$line =("---`nDeleting recoverypoint -> " + $rtime)
    			$line >>$logfile
    		}
    	}
    }
    "All Done!" >> $logfile
    write-host "`nAll Done!`n`n" -foregroundcolor white
    $line="Do you want to View DPMdeleteRP.LOG file Y/N ? "
    	write-host $line -foregroundcolor white
    	$Y=read-host
    	$line = $line + $Y
    	$line >> $logfile
    	if ($Y -ieq "Y") 
    	{		
    	Notepad DPMdeleteRP.LOG
    	}

    Long Term Solution
    =============

    You have two choices to make the recovery point volume larger (greater than 16TB)  by using larger NTFS Cluster size.

    Option 1)  This will maintain existing recovery points, but requires equal amount of available disk space in the DPM Storage pool as current disk usage for that data source. Approx. 10TB + 16TB = 26TB

    1) Migrate the effected data source using MigrateDatasourceDataFromDPM.ps1 to new volumes. 

    Using MigrateDatasourceDataFromDPM
    http://technet.microsoft.com/en-us/library/dd282970.aspx

    After migration competes and before any new recovery point can be made, re-format the new recovery point volume using a larger cluster size and large enough to protect the volume for the entire retention range.

    2) Assign a drive letter to both the new replica and new recovery point volumes. (let’s say E: and F:)

    3) Remove shadow copy association for E: by running the following commands from an administrative command prompt.

       vssadmin delete shadowstorage /for=E: /on=F:

    4) Reformat the new recovery point volume F: using larger cluster size of 8192.

    Example using 8K cluster size which will support a 34TB NTFS file system.

        format F: /fs:ntfs /a:8192    (Where F: is the volume drive letter assigned to the new recovery point volume)

    5) Re-associate the shadow copy storage.

       vssadmin add shadowstorage /for=E: /on=F: /maxsize=unbounded

    6) Manually make a recovery point after synchronization and protection should continue.  You can grow the recovery point volume as needed up to 34TB now.

    7) Remove drive letters E: and F:

    As older recovery points expire, slowly but surely the old recovery point volume will get more free space and eventually deleted. 

    You can manually shrink the old recovery point volume using diskpart.exe utility every month to get free disk space added back to the storage pool.

    OPTION 2)  This will LOOSE all current recovery points, but maintain replica data. You will NOT need any more disk space.

    1) Assign a drive letter to both the existing replica and recovery point volumes. (let’s say E: and F:)

    2) Use the above power shell script to remove ALL recovery points for that data source from DPM.

    3) Remove shadow copy association for E: by running the following commands from an administrative command prompt.

       vssadmin delete shadowstorage /for=E: /on=F:

    4) Reformat the recovery point volume F: using larger cluster size.

    Example using 8K cluster size which will support a 34TB NTFS file system.

        format F: /fs:ntfs /a:8192    (Where F: is the volume drive letter assigned to the new recovery point volume)

    5) Re-associate the shadow copy storage.

       vssadmin add shadowstorage /for=E: /on=F: /maxsize=unbounded

    6) Make a new manual recovery point without synchronization, then let DPM continue protection.

     You can grow the recovery point volume up to 34TB as needed now.


    Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. Regards, Mike J. [MSFT] This posting is provided "AS IS" with no warranties, and confers no rights.

    Friday, September 20, 2013 11:25 PM
    Moderator
  • Thank you for your thoughts.

    Let me bounce a few ideas off you. I have already moved my file server backup to a new DPM box. I did a few different things this time around. First i virtualized it. I also created a dynamically expanding disk so the over the top disk allocation requirements are not an issue(its not fun seeing a 3TB partition with 66% free space). I did preallocate 16TB+ for my File server backup in DPM so i wouldn't run into the same issue(Not being able to expand past 16TB). And since its in an expanding VHDX its only taking up 10TB currently(as i have not retention). Finally my hope is that when Server 2012 R2 is released it will be able to dedup this volume. Essentially making Replica/Recovery about the size of one.

    Just bouncing ideas at this point.

    Thanks!

    *EDIT*

    Oh and then my last thought was i can just replicate the virtual machine to offsite.
    • Edited by JustusIV Monday, September 23, 2013 3:43 PM
    Monday, September 23, 2013 1:41 PM