Posted On June 11, 2019

Microsoft SQL Server Storage Capacity Planning

kimconnect 0 comments
blog.KimConnect.com >> Database >> Microsoft SQL Server Storage Capacity Planning

This would be a recommended mounted volumes for most environment:

  1. 80GB RAID10 C:\ Operating System
  2. 50GB RAID10 D:\ SQL Application (BIN) & System Databases
  3. *100GB RAID10 E:\ User Defined Databases (including related Indexes)
  4. 50GB RAID10 L:\ Transaction Logs
  5. 100GB RAID6 G:\ Backups, Batch Processing, Full Text Catalogs
  6. 50GB RAID6 T:\ TempDB

Reasonings:

  • *User Defined Databases may require more than 100GB; thus, DBA would need to adhere to the build-requirements. Fortunately, volumes can be expanded on-the-fly using scripts or GUI.
  • Each volume would be expandable to support growth
  • User Defined databases should be on a separate volume from the System Databases to simplify backups and restores of those non-system files
  • Although some sources recommended that H:\ be used as the Backup volume, it should be avoided as many environments would map this as the “Home” folder for users
  • RAID10 were known for fast READ I/O with fairly performant WRITE I/O
  • RAID6 READ&WRITE I/O would be slower, yet this would be an effective use of available raw disks capacity while allowing 2 simultaneous disk failures to minimize risks of data loss.

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

PowerShell: Restore SQL Database from Full and/or Differential Backups

$databaseName='BALOO_MSCRM' $newDatabaseName='BALOO_MSCRM' $dbData='mscrm' # set this value to $null for autogen defaults $dbLog='mscrm_log' # set…

PowerShell: Microsoft SQL Database Migration

Update 9/25/20: There's another version of this script has has been rewritten form scratch. IMO,…

PowerShell: Get SQL Server Backup Statuses

$computername='sql01' function getSqlBackupInfo ($sqlInstanceName=$env:computername, $dbName){ [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") $location=if($sqlInstanceName.Contains("`\")){ "SQLSERVER:\SQL\$sqlInstanceName\Databases" }else{ "SQLSERVER:\SQL\$sqlInstanceName\DEFAULT\Databases" } function getPacificTime($time){ if($time){ [System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId($time,'Pacific…