# Windows Server 2012 2016 2019 2022 RAM Disk Setup Guide

NOTE: RAM disks by their very nature are cleared on reboot. Do not use them to store any data that cannot be lost. A suitable use case would be temporary session files for a web server

## Installing iSCSI Target Server

1. Launch Server Manager if it does not automatically load
   1. Click the Start button > Server Manager
2. Click Manage > Add roles and features
3. Click Next on the Before you begin screen
4. Select Role-based or feature-based installation > Next
5. Leave Select a server from the server pool selected and select the current server > Next
6. Expand File and Storage Services > Expand File and iSCSI Services > Select iSCSI Target Server
7. A popup will appear with additional required roles and features, click the Add Features button
8. Click Next
9. Click Next on the Select features screen
10. Click Install on the confirmation screen
11. Leave the installation progress screen open until the install completes

## Creating the RAM Disk

1. Launch Powershell as administrator
2. Enter the following commands to create the RAM disk, replacing the IP address with the current server's IP address
   # allow iSCSI loopback registry setting
   Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\iSCSI Target' -Name AllowLoopBack -Value 1
   # start the iscsi initiator service
   Start-Service -Name MSiSCSI
   # set the iscsi initiator service to start automatically
   Set-Service -Name MSiSCSI -StartupType Automatic
   # create the ram disk, changing size as needed
   New-IscsiVirtualDisk -Path "ramdisk:RAMDisk.vhdx" -Size 256MB
   # initialize iSCSI target
   New-IscsiServerTarget -TargetName RAMDisk -InitiatorIds @("IPAddress:192.168.0.65")
   # connect to the ram disk
   Add-IscsiVirtualDiskTargetMapping -TargetName RAMDisk -DevicePath "ramdisk:RAMDisk.vhdx"
3. Back in Server Manager, select Tools > iSCSI Initiator
4. Enter the IP address in the Target field > Click Quick Connect...
5. Click Done
6. Back in Powershell, run the following command
   # initialize the disk as NTFS
   Get-Disk | Where partitionstyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -DriveLetter R -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "RAMDisk" -Confirm:$false
7. Open File Explorer and the new RAM disk should be listed as a usable NTFS drive

## Re-creating the RAM Disk on Boot

After the RAM disk has been setup initially, follow the steps below to have it recreated on system boot.

1. Open a text editor
2. Paste the following Powershell commands, changing the size as needed

   New-IscsiVirtualDisk -Path "ramdisk:RAMDisk.vhdx" -Size 256MB
   Add-IscsiVirtualDiskTargetMapping -TargetName RAMDisk -DevicePath "ramdisk:RAMDisk.vhdx"
   Get-Disk | Where partitionstyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -DriveLetter R -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "RAMDisk" -Confirm:$false

3. Save the file as ramdisk.ps1 to a safe location to run from, c:\scripts for example
4. Click on the Start Button > Type task > Launch Task Scheduler
5. Right click the Task Scheduler Library folder in the left pane > Create Basic Task...
6. Set the name to RAM Disk and optionally set a Description > Click Next
7. For the Trigger, select When the computer starts > Click Next
8. For the Action, select Start a program > Click Next
9. In the Program/script field, paste the following:

   C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

10. In the Add arguments field, paste the following, editing the path to the .ps1 file if necessary:

    "C:\Scripts\ramdisk.ps1"

11. Click Next
12. Check the Open the Properties dialog for this task when I click Finish box
13. Click Finish
14. In the Properties dialog, click the Change User or Group... button
15. Type system > Press Enter
16. Check the Run with highest privileges box
17. Click OK to create the scheduled task
18. Reboot the server to verify the RAM disk is re-created automatically