Создание ram диска windows server 2019
Изучая разные методы повышения производительности работы СУБД SQL Server, добрался до такой интересной темы, как использование RAM-диска для размещения файлов нагруженной системной базы данных tempdb. Выяснил для себя то, что из работоспособных свободно-распространяемых инструментов для организации RAM-диска под ОС Windows Server на текущий момент многие выделяют утилиту imDisk Toolkit. Однако этот инструмент, как и прочие его аналоги, не получится использовать в кластерных конфигурациях SQL Server, где использование ресурсов оперативной памяти (далее ОЗУ) в любой момент времени может быть переключено с одного кластерного узла на другой. То есть, если и использовать в кластере RAM-диск, то он должен быть одинаково доступен всем узлам кластера, как и любой другой кластерный диск, участвующий в конфигурации кластеризованного экземпляра SQL Server.
Напрашивающимся в таком случае решением может стать использование в качестве RAM-диска ОЗУ не самих узлов кластера, а ОЗУ стороннего хоста, подключенного к узлам кластера в качестве дискового устройства через транспорт Fiber Channel SAN (как отличающийся приемлемыми показателями задержки). То есть на выделенном хосте используются локальные ресурсы ОЗУ для создания RAM-диска, после чего RAM-диск транслируется на узлы кластера через FC SAN, как блочное устройство, и может использоваться в качестве кластерного диска.
Далее я опишу пример создания такого RAM-диска на выделенном хосте с ОС Debian GNU/Linux 9 и его трансляцию в SAN с помощью Linux-IO (LIO). На сервере для обеспечения работы FC Target предварительно установлен контроллер FC HBA QLogic и задействован специальный режим работы драйвера – Target Mode.
Обязательным условием в нашем примере является то, что на Linux-хосте нужно организовать механизм сохранения данных RAM-диска при выключении ОС и восстановлении данных на RAM-диск при включении ОС с использованием выделенного SSD-диска.
Настраиваем RAM-диск на Linux
Перейдём на наш Linux-сервер, имеющий большой объем оперативной памяти, часть которой мы готовы выделить под организацию RAM-диска.
Создаём каталог для RAM-диска и каталог для хранения резервной копии содержимого RAM-диска:
Форматируем отдельный SSD диск для сохранения/восстановления данных RAM-диска при выключении/включении хостовой ОС Linux:
Проверяем монтирование созданного на SSD диске раздела в каталог для хранения резервной копии:
Обратите внимание на то, что свободное место в каталоге /mnt/ramdisk1-backup всегда должно быть не меньше, чем размер планируемого содержимого RAM-диска. В противном случае мы можем столкнуться с ситуацией, при которой окажется невозможно сохранить данные RAM-диска при выключении сервера, что приведёт к потере всех данных на этом RAM-диске.
Выясним идентификатор UUID SSD-диска:
В конец системного конфигурационного файла /etc/fstab добавляем директивы монтирования RAM-диска и диска для хранения в соответствующие каталоги:
При описании директивы создания RAM-диска нам желательно сразу правильно спланировать его размер, учитывая то, что размер диска должен быть немного больше, чем объём планируемого блочного устройства. Это нужно для того, чтобы в дальнейшем избежать сигнализации систем мониторинга о том, что исходный RAM-диск переполнен. Например, в нашем случае в fstab при запуске системы создаётся RAM-диск размером 30725MB, а на этом диске мы в последующем будем создавать файл размером 30720MB, который и будет в дальнейшем транслироваться в виде блочного устройства из LIO в SAN.
Настраиваем службу lio-config-controller
Создадим скрипт, который будет представлять собой основу для работы специальной службы systemd, которую мы назовём, например, lio-config-controller.service. Эта служба будет управлять запуском и остановкой блочного устройства, транслируемого в SAN через конфигурацию LIO.
Наполним скрипт содержимым:
Как видно, скрипт может работать в двух основных режимах:
1) Запуск c ключом start
В этом режиме скрипт будет размещать на уже доступном в системе RAM-диске в каталоге /mnt/ramdisk1 специальный файл ramdisk1.img . При этом img-файл будет вновь создаваться только в том случае, если его предыдущая копия не обнаружена на SSD-диске в каталоге /mnt/ramdisk1-backup . В случае обнаружения копии img-файла на SSD, эта копия будет восстанавливаться на RAM-диск. В дальнейшем img-файл на RAM-диске будет загружаться в конфигурацию LIO, создавая FC Target. Обратите внимание на то, что перед загрузкой новой конфигурации, текущая конфигурация LIO будет очищаться.
2) Запуск c ключом stop
В этом режиме конфигурация LIO очищается, то есть из системы удаляется FC Target, ассоциированный с img-файлом на RAM-диске. После чего происходит сохранение img-файла из RAM-диска на SSD-диск.
Оба режима работы скрипта логируют основные этапы выполняемых операций в отдельный log-файл.
Сделаем скрипт исполняемым:
Так как наш скрипт предполагает наличие в системе уже смонтированных дисков, перед его вызовом мы должны удостовериться в том, что эти диски действительно смонтированы. Оформим вызов скрипта, как службы systemd, таким образом, чтобы у службы (юнита) lio-config-controller.service была зависимость от юнитов, отвечающих за монтирование соответствующих дисков.
Выясним то, какие имена имеют автоматически генерируемые юниты монтирования интересующих нас дисков:
Как видим, в нашем случае юниты имеют имена " mnt-ramdisk1.mount " и " mnt-ramdisk1\x2dbackup.mount ".
Создадим новый юнит lio-config-controller.service, который будет выполнять наш скрипт, загружая и останавливая тем самым конфигурацию LIO. При этом не забудем выставить зависимость от юнитов монтирования нужных нам дисков.
Наполним конфигурацию юнита следующим образам:
Так как в процессе остановки службы может потребоваться некоторое время на операцию сброса содержимого RAM-диска на SSD, дополнительно добавим таймаут ожидания остановки службы. Разумеется, если вместо SSD для хранения используется более медленный HDD, имеет смысл увеличить этот таймаут. В нашем случае этот таймаут составляет 300 секунд или 5 минут. При использовании SSD-диска величину таймаута можно сделать и ниже. Для расчёта оптимальной величины можно использовать фактическое время, затрачиваемое на сохранение содержимого RAM-диска, которое фиксируется скриптом в логе /var/log/script_lio-config-controller.log .
Включаем автоматическую загрузку созданного нами юнита в конфигурации systemd:
В опорном скрипте созданной нами службы lio-config-controller используется утилита targetcli, которая позволяет нам управлять конфигурацией LIO. Из официальных репозиториев Debian Linux установим пакет targetcli-fb, позволяющий работать с LIO в Debian и содержащий соответствующую утилиту:
Так как загрузкой и выгрузкой конфигурации LIO у нас будет заниматься собственная служба, нам потребуется остановить и отключить автоматический запуск стандартной службы rtslib-fb-targetctl, устанавливаемой в систему из пакета targetcli-fb. Вся ранее настроенная конфигурация LIO при этом будет очищена.
После всех проделанных изменений можно перезагрузить конфигурацию служб systemd:
Теперь можно выполнить проверку того, как в автоматическом режиме отрабатывает созданная нами конфигурация при выключении и включении хостовой ОС Linux.
Базовая проверка и отладка
Перезагружаем сервер и после завершения загрузки ОС проверяем то, что созданная нами служба lio-config-controller успешно запущена:
Дополнительно можно проверить то, в какой последовательности отработал запуск служб systemd в процессе запуска ОС Linux. Для этого нам потребуется включить и настроить службу journald, как это описано в статье "Включение режима сохранения логов служб systemd через journald в Linux". После соответствующей настройки системы можно посмотреть логи интересующих нас служб, связанных с монтированием дисков, на предмет времени их запуска и остановки:
Основные этапы работы скрипта, вызываемого службой lio-config-controller можем посмотреть в логе, который указан в самом начале скрипта:
Проверяем то, что LIO загружен именно в той конфигурации, что мы описали в скрипте
Как видно из нашего примера, ранее обозначенная в скрипте конфигурация LIO успешно загружена и созданы цели FC Target.
После этого настраиваем зонирование на оптических коммутаторах SAN, чтобы на серверах на базе Windows Server стал доступен соответствующий FC Target.
В нашем случае презентованный LUN доступен на обоих узлах кластера Windows Server по двум путям, обеспечивая тем самым повышенную доступность и производительность. Получившееся общее для двух Windows-систем дисковое устройство форматируем в NTFS и добавляем в кластер в качестве общего кластерного диска.
Теперь настало время убедиться в том, что в случае возникновения необходимости отключения Linux-сервера, предоставляющего свою оперативную память, всё содержимое кластерного диска будет сохранено.
Проверка сохранения содержимого RAM-диска
Для проверки создаём на кластерном диске Windows Server какие-то файлы и запоминаем их содержание, то есть копируем туда какой-то осмысленный контент. После этого выводим в кластере диск в режим обслуживания или просто переводим в состояние Offline, чтобы избежать кластерных попыток активировать диск на соседнем узле кластера в тот момент, когда мы отключим для проверки Linux-сервер.
После этого перейдём на Linux-сервер и вызовем выключение его ОС штатным способом. В ходе завершения работы ОС обращаем внимание на то, что таймаут остановки службы lio-config-controller используется именно тот, который мы указали в настройках юнита systemd - lio-config-controller.service:
После проверочного отключения снова включаем Linux-сервер и дожидаемся успешного запуска ОС, инициализации RAM-диска (с восстановлением данных из копии на SSD диске) и его последующей трансляции в конфигурацию LIO. После того, как всё "взлетело", можем снова проанализировать лог работы службы lio-config-controller и лог работы самого скрипта на предмет корректности этапов выключения/включения RAM-диска при выключении/включении ОС:
Все операции должны отрабатывать последовательно и без ошибок. И здесь лучше не жалеть времени на скрупулёзную проверку корректной и своевременной отработки каждого этапа. Только так можно рассчитывать на то, что данные с RAM-диска не будут в дальнейшем потеряны.
Когда все проверки на стороне Linux-сервера закончены, вернёмся в консоль управления кластером Failover Cluster Manager и убедимся в том, что кластерный RAM-диск работоспособен и успешно переводится в состояние Online. После успешного возобновления работы кластерного диска проверим его содержимое и убедимся в том, что на диске присутствуют скопированные нами ранее на этот диск файлы.
Проверка производительности RAM-диска
Сразу сделаем оговорку о том, что любые сравнительные тесты на проверку производительности всегда зависят от множества факторов. И в каждом отдельно взятом случае и отдельном рабочем окружении эти факторы могут иметь разную степень влияния на конечный результат. Поэтому в нашем конкретном случае никто не претендует на какую-то объективность. Мы лишь поделимся одним простым наблюдением.
На два рассматриваемых в нашем примере сервера с ОС Windows Server помимо RAM-диска через FC SAN (два линка FC 4G c MPIO) презентовано ещё несколько дисковых устройств, одно из которых представляет собой массив RAID10 из 12 SSD дисков Intel SATA 3G с СХД HP MSA P2000 G3. При тестировании такого дискового устройства на любом из узлов кластера получались примерно следующие пиковые показатели:
- Запись ~499 MB/s или 3.9 Gbit/s
- Чтение ~791 MB/s или 6.3 Gbit/s
При тестировании на этих же серверах нашего RAM-диска получались следующие пиковые показатели:
- Запись ~687 MB/s или 5.5 Gbit/s
- Чтение ~730 MB/s или 5.8 Gbit/s
Небольшое отклонение в показателях чтения в пользу СХД MSA можно попытаться объяснить опять же разными факторами, но не будем заострять на этом внимание. Внимание здесь стоит обратить на ощутимую разницу в показателях записи. При операциях с большими блоками, начиная с 512KB, на лицо выигрыш RAM-диска и по второму графику видно, что на каком-то уровне (возможно FC HBA на Linux-сервере, возможно на SAN …) просто срабатывает ограничение, и нельзя исключать того, что есть возможность улучшить полученные показатели чтения/записи. Кстати, обратите внимание также и на ощутимую разницу по показателям чтения/записи при работе с блоками 64K (рекомендуемый Microsoft размер блока при форматировании накопителей под файлы БД SQL Server).
Таким образом, привнесённый в кластер RAM-диск, в качестве места размещения файлов нагруженной системной базы данных tempdb кластеризованного экземпляра СУБД SQL Server, представляется вполне привлекательным решением.
Замечание о последовательности выключения и выключения серверов
Следует обратить внимание на то, что в случае возникновения нештатных ситуаций в ЦОД, например, в случае отключения электропитания, порядок автоматического отключения серверов должен быть настроен таким образом, чтобы физический Linux-сервер c RAM-диском выключался только после того, как завершат свою работу узлы кластера, которые используют этот RAM-диск в качестве кластерного ресурса.
Ну и, разумеется, обратного принципа следует придерживаться в процессе включения серверов. То есть Linux-сервер с RAM-диском должен запускаться, так же как и прочие СХД, раньше, чем стартуют серверы-узлы кластера Windows, использующие этот RAM-диск.
Заключение
Стоит отметить тот факт, что организацию RAM-диска описанным здесь методом можно выполнить не только на ОС Debian GNU/Linux 9, но и на других дистрибутивах Linux. А в качестве механизма трансляции RAM-диска в FC SAN можно использовать не только Linux-IO, но и такой замечательный инструмент, как SCST, пример использования которого мы уже рассматривали ранее.
Если же говорить о том, с чего мы начали, то, разумеется, можно поспорить о плюсах и минусах использования RAM-диска для системной базы данных tempdb СУБД SQL Server, равно как и об описанной здесь организации RAM-диска, как таковой. Здесь каждый для себя выводы делает сам исходя из своего практического опыта и степени "избалованности"
27.05.2020
Sergey Bo
PowerShell, Windows Server 2016, Windows Server 2019
Один комментарий
Протокол iSCSI (Internet Small Computer System) представляет собой протокол SCSI, работающий с системами хранения данных поверх протокола IP. С помощью iSCSI вы сможете подключать ваши сервера к сетевым хранилищам по обычной TCP/IP сеть без использования FC. В этой статье мы рассмотрим, как настроить iSCSI-хранилище на одном Windows Server 2019 и использовать его на других серверах(в Windows Server 2016 и 2012 R2 все настраивается аналогично). Первый пример использования iSCSI: файловому серверу необходимо дополнительное место, и мы по сети подключаем к нему виртуальный диск с другого сервера-хранилища по iSCSI. Другой пример – построение отказоустойчивого кластера, когда для нескольких серверов необходимо общее хранилище.
Для использования ISCSI-диска нужно на сервере-хранилище настроить виртуальный диск (это обычный vhd/vhdx файл) и опубликовать его в виде iSCSI таргета, к которому подключаются iSCSI инициаторы (другие сервера и устройства).
Настройка iSCSI target в Windows Server
Сначала нужно включить iSCSI target (активировать роль iSCSI Target Server), зайдя в File and Storage Services -> File and iSCSI Services.
Install-WindowsFeature -Name FS-iSCSITarget-Server
Теперь на iSCSI сервере нужно создать виртуальный диск. Для этого необходимо зайти в Server Manager -> File and Storage Services -> iSCSI, нажать To create an iSCSI virtual disk, start the New iSCSI Virtual Disk Wizard.
В мастере создания виртуального iSCSI диска нужно выбрать физический раздел, на котором его нужно разместить. Далее нужно присвоить имя iSCSI диска, указать размер диска и его тип (Fixed Size, Dynamically expanding или Differencing), имя iSCSI таргета.
На шаге Access Servers нужно указать серверы (iSCSI инициаторы), которые смогут подключаться к данному iSCSI таргет, выбрав один из вариантов подключения:
-
IQN (придется сначала включить iSCSI initiator на сервере и скопировать IQN);
Пусть используется вариант с IP-адресом.
Следующий шаг в этом мастере – это настройка протокола аутентификации CHAP. Его следует использовать, если необходимо проверять подлинность подключения от инициатора. Далее он включается, вписывается имя пользователя и 12-значный пароль (или длиннее), затем Next -> Next -> Finish. Проверьте, что виртуальный диск iscsiDisk2.vhdx создался в каталоге D:\iSCSIVirtualDisks.
Можно создать iSCSI диск с помощью PowerShell. Создадим виртуальный диск размером 200 Гб:
New-IscsiVirtualDisk -Path С:\iSCSIVirtualDisks\iscsiDisk2.vhdx -Size 200GB.
По умолчанию создается динамический диск размером 4,096 Кб, независимо от того, сколько было указано параметром Size. Динамический диск будет расширяться по мере необходимости.
Если нужно использовать диск фиксированного размера (такие диске резервируют место на физическом носителе при создании), то его создать той же командой с дополнительным параметром UseFixed:
New-IscsiVirtualDisk -Path С:\iSCSIVirtualDisks\iscsiDisk2.vhdx -Size 200GB –UseFixed
Для дисков с высокой активностью и повышенными требованиями к IOPS нужно использовать диски фиксированного размера, т.к. для динамических дисков расходуются дополнительные ресурсы на операции приращения.
Далее таргету присваивается имя, здесь же можно разрешить к нему доступ с IP-адреса сервера-инициатора:
New-IscsiServerTarget -TargetName "iscsiTarget33" -InitiatorId @("IPAddress:172.17.244.8")
При желании вместо IP-адреса можно использовать IQN имя (iSCSI Qualified Name – уникальный идентификатор iSCSI устройства в сети):
Затем желательно проверить результат:
Get-IscsiServerTarget | fl TargetName, LunMappings
Получить полное имя таргета можно с помощью командлета Get-IscsiTarget , а затем подключить таргет:
Как всё это разобрать
Удаляем диск, потом:
Remove-IscsiVirtualDiskTargetMapping -TargetName targetRAM -DevicePath "ramdisk:tempdbRAM.vhdx"
Remove-IscsiServerTarget -TargetName targetRAM
Remove-IscsiVirtualDisk -Path "ramdisk:tempdbRAM.vhdx"
Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.
Если на вашем компьютере достаточно много оперативной памяти (RAM), значительная часть которой не используется, вы можете создать RAM диск (RAMDisk, RAM Drive), т.е. виртуальный накопитель, который операционная система видит, как обычный диск, но который фактически находится в оперативной памяти. Главное преимущество такого диска — он очень быстрый (быстрее, чем SSD накопители).
В этом обзоре о том, как создать RAM диск в Windows, для чего его можно использовать и о некоторых ограничениях (помимо размера), с которыми при этом можно столкнуться. Все программы для создания RAM диска были протестированы мной в Windows 10, но совместимы и с предыдущими версиями ОС, вплоть до 7-ки.
OSFMount
PassMark OSFMount — ещё одна полностью бесплатная программа, которая, помимо монтирования различных образов в системе (её основная задача), также умеет создавать RAM диски без ограничений.
Процесс создания выглядит следующим образом:
- В главном окне программы нажмите «Mount New».
- В следующем окне в пункте «Source» укажите «Empty RAM Drive» (пустой RAM диск), задайте размер, букву диска, тип эмулируемого накопителя, метку тома. Также можно сразу отформатировать его (но только в FAT32).
- Нажмите Ок.
Лучшие бесплатные программы для создания RAM диска в Windows
Далее — обзор лучших бесплатных (или условно-бесплатных) программ для создания RAM-диска в Windows, об их функциональности и ограничениях.
ImDisk
ImDisk — полностью бесплатная программа с открытым исходным кодом для создания RAM-дисков, без каких-либо ограничений (можно задавать любой размер в пределах доступной оперативной памяти, создавать несколько дисков).
- После установки программы, она создаст пункт в панели управления Windows, создание дисков и управление ими осуществляется там.
- Для создания диска откройте ImDisk Virtual Disk Driver и нажмите «Mount New».
- Задайте букву диска (Drive letter), размер диска (Size of virtual disk). Остальные пункты можно не изменять. Нажмите «Ок».
- Диск будет создан и подключен к системе, но не отформатирован — это можно сделать средствами Windows.
Создание RAM диска в Windows — видео
На этом, пожалуй, завершу. Думаю, приведенных программ будет достаточно под почти любые потребности. Кстати, если вы собираетесь использовать RAM диск, поделитесь в комментариях, для каких именно сценариев работы?
Настройка iSCSI Initiator в Windows Server 2019
Следующий шаг – подключение к созданному iSCSI диску со второго сервера-инициатора. Перейдите в панель управления Control Panel, запустите iSCSI initiator (или выполните команду iscsicpl.exe ).
В консоли управления службами services.msc поставьте автоматический тип запуска для службы Microsoft iSCSI Initiator Service, Или используйте команду:
Set-Service -Name MSiSCSI -StartupType Automatic
Перейдите на вкладку Discovery, нажмите на кнопку Discover Portal и введите ввести IP-адрес первого сервера (iSCSI-таргет). Чтобы трафик ходил только через определённый сетевой интерфейс, нужно нажать кнопку Advanced, и изменить значения по умолчанию в выпадающих списках: Local Adapter –> Microsoft iSCSI Initiator, Initiator IP –> 172.17.244.8.
Теперь переключитесь на первую вкладку Targets, на ней появится новое подключение. Чтобы включить его, нажмите Connect -> Advanced, выберите значения из выпадающих полей, включите галочку Enable CHAP log on, укажите имя пользователя и 12-значный пароль.
Осталось инициализировать сам iSCSI-диск, который сначала находится в состоянии Offline. Для этого на сервере-инициаторе необходимо в консоли Disk Management в контекстном меню нового диска выбрать пункт Online, а затем – Initialize Disk. Создайте на новом диске один или несколько разделов, присвойте метку и букву диска. Отформатируйте в файловой системе NTFS.
Для быстрой инициализации и форматирования нового диска можно использовать следующий однострочный PowerShell (см. пример в статье об управления дисками и разделами из PowerShell):
Get-Disk |Where-Object PartitionStyle -eq 'RAW' |Initialize-Disk -PartitionStyle MBR -PassThru |New-Partition -AssignDriveLetter -UseMaximumSize |Format-Volume -FileSystem NTFS -Confirm:$false
Теперь этот виртуальный диск, подключенный с другого сервера по протоколу iSCSI можно использовать как обычный локально подключенный диск.
Такие виртуальные iSCSI диски можно использовать в Windows Server для создания виртуального RAM диска в оперативной памяти.
Также вы можете подключить iSCSI диск на инициаторе из PowerShell. Чтобы получить IQN таргета, используйте командлет Get-iSCSITarget .
Чтобы подключится к iSCSI таргет выполните команду:
Connect-IscsiTarget –IsPersistent $False и введите IQN.
Если использовалась дополнительная проверка аутентификации CHAP, то необходимо будет это указать, используя следующую конструкцию:
Get-iScsiTarget | Connect-iScsitarget –AuthenticationType ONEWAYCHAP –ChapUserName -ChapSecret
Если вы хотите обеспечить высокую доступность и балансировку нагрузки для iSCSI дисков, можно использовать несколько избыточные сетевые компоненты (сетевые карты, коммутаторы) и модуль MPIO.
24.10.2018
itpro
Windows Server 2012 R2, Windows Server 2016
комментариев 10
RAM диск – это виртуальный диск, созданный в свободной области оперативной памяти, который воспринимается операционной системой как отдельный физический диск. За счет, того, что RAM диск хранится в быстрой оперативной памяти, все операции чтения/записи с такого диска выполняются почти мгновенно, даже быстрее, чем при использовании SSD накопителя (у самых производительных SSD скорость передачи данных сейчас составляет около 560МБ/с, в то время как у памяти DDR4 — 12000-25000МБ/с).
Использование RAM диска целесообразно в системах с избытком оперативной памяти. На таком RAM диске можно размещать кэш и временные файлы приложений/системы, временные базы SQL, тем самым можно добиться существенного увеличения производительности приложений.
В операционной системе Windows отсутствуют встроенные средства создания RAM-дисков, поэтому в этих целях приходится использовать сторонние программы (AMD RAMDisk, ImDisk, PassMark OSFMount, StarWind RAM Disk и т.д.).
Однако в Windows Server вы можете создать RAM диск и без использования сторонних программ. Для этого можно воспользоваться драйвером iSCSI.
В первую очередь на сервере нужно установить компонент iSCSI Target Server (входит в состав роли File and Storage Services).
Если у вас включен файервол Windows, необходимо разрешить трафик для службы iSCSI Service.
Чтобы разрешить трафик на loopback интерфейс для iSCSI, нужно в ветке реестра HKLM\Software\Microsoft\iSCSI Target изменить значение DWORD параметра AllowLoopBack на 1. Можно изменить ключ реестра из PowerShell одной командой:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\iSCSI Target' -Name AllowLoopBack -Value 1
Теперь откройте консоль PowerShell и создайте виртуальный 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"
Теперь нужно запустить консоль iSCSI Initiator через Server Manager
На вкладке Targets укажите IP адрес вашего сервера, нажмите Quick Connect и подключите ваш iSCSI таргет.
Теперь откройте консоль управления дисками и проверьте, что у вас появился новый диск размером 5 Гб. Это и есть тот самый RAM диск. Инициализируйте, разметьте и отформатируйте данный диск. Назначьте ему букву диска.
Теперь вы можете перенести необходимые файлы на RAM диск и перенастроить ПО на использование данного диска.
После перезагрузки сервера RAM диск удаляется (вместе со всем содержимым) и его нужно пересоздавать заново.
В некоторых сторонних программах для создания RAM дисков есть возможность сохранения данных RAM диска в файл на жестком диске. После перезагрузки системы данные извлекаются и помещаются на RAM диск.
Создадим RAM диск на Windows Server 2012 R2. Выделим из оперативки 32 Гб в отдельный диск R. Используем для этого средства Windows через драйвер iSCSI.
Для создания RAM диска нам понадобится оперативка. Вставляем в сервер память или выделяем её виртуальной машине:
Итак, 32 Гб оперативки добавили.
Добавляем серверу роль iSCSI Target Server:
Настраиваем Windows Firewall. Выполняем:
Запускается оснастка Windows Firewall. Нажимаем Allow an app or feature through Windows Firewall:
Выбираем iSCSI Service и ставим галки на Domain, Private, Public:
В настройках реестра убеждаемся в наличие значения:
Запускаем Powershell и создаём виртуальный диск как Ramdisk:
Создаём target iSCSI:
Я сначала пробовал на 127.0.0.1, но что-то не срослось. Пришлось использовать локальный IP адрес, на нём всё завелось.
Мапим Ramdisk на target iSCSI:
Запускаем консоль Server Manager и кликаем Tools > iSCSI Initiator:
Просят запустить iSCSI сервис, соглашаемся:
Запускается настройка iSCSI Initiator Properties:
Указываем в Target адрес, у меня в коде выше был 10.10.30.10, кликаем Quick Connect.
Login Succeeded. Всё в порядке. В оснастке Disk Management можно увидеть новый диск:
Настроил его как R.
Тестируем с помощью ATTO Disk Benchmark.
И видим засаду — скорось чтения/записи очень мала, по сравнению с RAM диском от WinRamTech Ramdisk Enterprise:
У технологии есть свои плюсы и минусы. Не требуется сторонний софт, можно презентовать диск другому серверу. Но низкая скорость портит всё удовольствие. Возможно, есть способы ускорить, я вникать не стал.
Softperfect RAM Disk
Softperfect RAM Disk единственная в этом обзоре платная программа (бесплатно работает 30 дней), однако я решил включить её в список, поскольку это единственная программа для создания RAM-диска на русском языке.
В течение первых 30 дней никаких ограничений по размеру диска, а также по их количеству (можно создавать более одного диска) нет, а точнее они ограничены объемом доступной оперативной памяти и свободных букв дисков.
Чтобы сделать RAM Disk в программе от Softperfect, используйте следующие простые шаги:
- Нажмите по кнопке с изображением «Плюса».
- Задайте параметры вашего RAM-диска, при желании можно загрузить его содержимое из образа, создать набор папок на диске, указать файловую систему, а также сделать так, чтобы он определялся Windows как съемный накопитель.
- Если вам требуется, чтобы данные автоматически сохранялись и загружались, то укажите в пункте «Путь к файлу образа» путь, куда будут сохраняться данные, тогда отметка «Сохранять содержимое» станет активной.
- Нажмите «Ок». RAM диск будет создан.
- При желании, вы можете добавить дополнительные диски, а также перенести папку с временными файлами на диск прямо в интерфейсе программы (в пункте меню «Инструменты»), для предыдущей программы и последующих для этого нужно заходить в параметры системных переменных Windows.
AMD Radeon RAMDisk
Программа AMD RAMDisk — одна из самых популярных программ для создания диска в оперативной памяти (нет, она не требует, чтобы на компьютере было установлено оборудование AMD, если у вас возникло такое подозрение из названия), несмотря на своё основное ограничение: бесплатная версия AMD RAMDisk позволяет создавать RAM диск размером не более 4 гигабайт (или 6 Гб, если у вас установлена оперативная память AMD).
Однако, часто такого объема оказывается вполне достаточно, а простота использования и дополнительные функции программы позволяют рекомендовать её к использованию.
Процесс создания RAM диска в AMD RAMDisk сводится к следующим простым шагам:
StarWind RAM Disk
И последняя бесплатная программа в этом обзоре — StarWind RAM Disk, также позволяющая создавать несколько RAM дисков произвольного объема в удобном интерфейсе. Процесс создания, думаю, будет ясен из скриншота ниже.
Для чего может пригодиться RAM диск в оперативной памяти
Как уже было отмечено, главное в этом диске — высокая скорость (можно увидеть результат теста на скриншоте ниже). Вторая особенность — данные с RAM диска автоматически исчезают при выключении компьютера или ноутбука (т.к. для хранения информации в оперативной памяти нужно питание), правда этот аспект некоторые программы для создания рам-дисков позволяют обойти (сохраняя содержимое диска на обычный диск при выключении компьютера и снова загружая его в RAM при включении).
Эти особенности, при наличии «лишней» оперативной памяти, позволяют эффективно использовать диск в оперативной памяти для следующих основных целей: размещение на нем временных файлов Windows, кэша браузеров и подобной информации (получаем прирост скорости, они автоматически удаляются), иногда — для размещения файла подкачки (например, если какая-то программа не работает с отключенным файлом подкачки, а хранить его на жестком диске или SSD мы не хотим). Можно придумать и собственные применения для такого диска: размещение любых файлов, нужных лишь в процессе работы.
Конечно, есть у использования дисков в оперативной памяти и минусы. Главный такой минус — как раз использование RAM, которая часто лишней не бывает. И, в итоге, если какой-то программе нужно больше памяти, чем осталось после создания такого диска, она будет вынуждена использовать файл подкачки на обычном диске, что будет медленнее.
Читайте также: