RAM диск – это виртуальный диск, который создается в свободной области оперативной памяти и с точки зрения операционной системы выглядит как обычный локальный диск. Преимущество RAM Drive – очень высокая скорость чтения и записи на него (до 10 раз быстрее чем SSD, и до 2-3 раз чем NVME M.2). RAM диск можно использовать на компьютерах с большим объёмом RAM для хранения кеша и временных файлов приложений. Чаще всего RAM Drive используется для хранения кэша браузера, временных баз SQL, кэша приложений обработки графики, видео, рендеринга. При перезагрузке компьютера содержимое RAM диска обычно очищается.
Создать RAM диск в Windows 10 и 11
В Windows 10 и 11 нет встроенных средств для создания RAM дисков, поэтому нужно использовать сторонние программы (AMD RAMDisk, ImDisk, PassMark OSFMount, StarWind RAM Disk и т.д.).
В этом примере рассмотрим open-source утилиту ImDisk Toolkit (https://sourceforge.net/projects/imdisk-toolkit/). Ее преимущества:
- Бесплатная
- Компактная
- Нет ограничений на максимальный размер RAM диска
- Позволяет сохранять данные на RAM диске после выключения
- Скачайте и установите программу ImDisk Toolkit, запустив install.bat;
- После установки откройте ярлык RamDisk Configuration на рабочем столе;
- На вкладке Basic нужно указать размер RAM диска (обычно рекомендуется использовать не более чем 20-30% RAM), назначить букву диска, указать нужно ли запускать RAM диск автоматически после загрузки Windows;
- Можно автоматически перенаправить папки TEMP на RAM диск через переменные окружения или через символические ссылки;
- Нажмите Mount чтобы включить RAM Drive. Откройте проводник и проверьте, что в нем появится новый диск указанного вами размера.
- По умолчанию содержимое RAM диска очищается при перезагрузке Windows. Вы можете настроить автоматическое сохранение содержимого RAM диска в локальную папку при выключении компьютера. Для этого перейдите на вкладку Data, укажите целевой каталог, включите Synchronize at System Shutdown. При загрузке операционной системы содержимое этого каталога будет копироваться на RAM диск.
Вы можете перенести кэш приложений на RAM диск с помощью символьный ссылок Windows. Например, чтобы хранить кэш 1С на RAM-диске:
mklink /j %USERPROFILE%\AppData\Local\1C\1cv8 R:\User\Local
mklink /j %USERPROFILE%\AppData\Roaming\1C\1cv8 R:\User\Roaming
Чтобы браузер Google Chrome хранил данные на RAM диске, нужно добавить в ярлык его запуска следующий параметр:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disk-cache-dir="R:\Chrome"
В таком режиме Google Chrome будет меньше изнашивать ваш SSD накопитель.
Скорость чтения и записи на RAM диск можно оценить с помощью утилиты Crystal Disk Mark. В нашем тесте скорость чтения/записи на RAM диск в DDR4 в 2-3 раза больше чем на SSD NVME M.2 накопитель.
Создаем RAM диск с помощью встроенных средств Windows Server
Windows Server вы можете создать RAM диск без использования сторонних программ. Можно выделить часть оперативной памяти сервера с помощью драйвера iSCSI.
Установите компонент iSCSI Target Server с помощью Server Manager (File and Storage Services -> File and iSCSI Services)
Откройте порты для службы iSCSI Service в Windows Defender Firewall. Можно разрешить доступ в графической консоли управления Windows Firewall или вы можете включить правила файервола с помощью PowerShell:
Set-NetFirewallRule -Name MsiScsi-in-TCP -Enabled True
Set-NetFirewallRule -Name MsiScsi-out-TCP -Enabled True
Чтобы разрешить трафик на loopback интерфейсе для iSCSI, измените в ветке реестра HKLM\Software\Microsoft\iSCSI Target значение DWORD параметра AllowLoopBack на 1: Можно изменить значение параметра реестра из PowerShell командой:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\iSCSI Target' -Name AllowLoopBack -Value 1
Затем создайте виртуальный RAM диск размером 5 Гб:
New-IscsiVirtualDisk -Path "ramdisk:testRAM.vhdx" -Size 5GB
Теперь нужно создать iSCSI таргет:
New-IscsiServerTarget -TargetName targetRAMDisk -InitiatorIds @("IPAddress:10.1.1.200")
Подключите RAM диск в созданный iSCSI таргет:
Add-IscsiVirtualDiskTargetMapping -TargetName targetRAMDisk -DevicePath "ramdisk:testRAM.vhdx"
Откройте консоль Server Manager -> Tools -> iSCSI Initiator.
На вкладке Targets укажите IP адрес вашего сервера, нажмите Quick Connect и подключите ваш iSCSI таргет.
Get-IscsiTarget | Connect-IscsiTarget
Теперь откройте консоль управления дисками (
diskmgmt.msс
), проверьте что у вас появился новый диск размером 5 Гб (это и есть ваш RAM диск). Инициализируйте, разметьте, отформатируйте диск, и назначьте ему букву диска.
Get-Disk | Where partitionstyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "disk2" -Confirm:$false
Теперь вы можете перенести необходимые файлы на RAM диск и перенастроить ПО на использование данного диска.
После перезагрузки сервера RAM диск удаляется (вместе со всем содержимым) и его нужно пересоздавать заново.
Но к сожалению при тесте оказалось, что производительность (iOPS) RAM диска, созданного через iSCSI таргет на Windows Server почти в 2 раза меньше, чем у RAM диска на базе ImDisk.