Виртуальный SSD. Создаём RAM диск в Mac OS X.
Электронный диск (RAM drive, RAM disk — диск в памяти) — компьютерная технология, позволяющая хранить данные в быстродействующей оперативной памяти как на блочном устройстве (диске). Может быть реализована как программно, так и аппаратно.
Кейс из жизни: как-то мне потребовалось написать небольшой bash скрипт, генерирующий в процессе своей работы много временных файлов и от времени доступа к которым зависела работы программы в целом. За счет решения с RAM-диском производительность скрипта возросла на порядок.
Скорость чтения/записи RAM гораздо выше обычного жесткого диска. Для этого типа памяти совершенно не принципиально количество циклов перезаписи информации по сравнению с SSD накопителями, что делает виртуальный RAM диск идеальным решением для задач, где необходима максимальная скорость доступа к данным без ущерба для жесткого диска.
Для создание виртуального диска вводим в терминале (актуально для Mac OS X 10.5 и выше):
My Disk — это название создаваемого диска, а цифра 8388608 — объём (количество секторов по 512 байт), в данном случае 4 Гб.
После создания диск можно найти в Finder и работать с ним можно также, как с обычным жестким диском. Внимание: диск, как и информация на нем, живут до первой перезагрузки, поэтому не забудьте скопировать нужную информацию перед завершением работы. Для удаления диска достаточно просто извлечь его в Finder.
Тестируем и сравниваем скорость чтения/записи в Mac OS X
Для теста на чтение/запись воспользуемся утилитой dd.
Начнем со скорости записи системного SSD диска OCZ Vortex3:
413 Мб/cек. Проверим скорость чтения:
Она составила 469 Мб/сек. Теперь проверим скорость записи обычного жесткого диска объемом 250Gb:
104 Мб/сек. Проверим скорость чтения:
155 Мб/сек.Теперь мы подошли к самому главному – тесту скорости виртуального жесткого диска расположенного в оперативной памяти DDR3:
Наш «жесткий диск» пишет данный почти со скоростью 1,1 Гб/сек! Посмотрим на скорость чтения:
В тесте на чтение оперативная память показала 1,17 Гб/сек! Визуализируем полученные данные:
График результатов сравнительного тестирования скорости чтения / записи магнитного, SSD и RAM дисков.
Отличный результат, который наглядно показывает преимущество скорости RAM диска над твердотельными и магнитными накопителями.
[FAQ] Про создание RAM-дисков в Mac OS X
Если вы хотите увидеть на нашем сайте ответы на интересующие вас вопросы обо всём, что связано с техникой Apple, операционной системой Mac OS X (и её запуском на PC), пишите нам через форму обратной связи.
К нам поступил следующий вопрос:
Мы твёрдо уверены, что нет никакого смысла пользоваться сторонними (тем более платными) утилитами для создания RAM-диска нет смысла. Для решения обозначенных вами задач вполне хватает встроенных в систему возможностей.
Но для начала поясним остальным читателям, зачем это всё. Если в вашем Маке много оперативки, то не секрет, что большую часть времени она простаивает. Тем не менее, можно занять её весьма оригинальным образом — выделить часть оперативной памяти под виртуальный диск. Он будет необычно быстрым, но есть один главный минус — после выключения или перезагрузки он будет уничтожен. Соответственно, хранить пользовательские данные на нём нет никакого смысла, а вот размещать там разнообразные временные файлы Mac OS X очень даже можно. Для Маков с SSD-носителями создание RAM-дисков весьма желательно, поскольку позволяет существенно продлить жизнь вашего SSD-шника (количество записываемых на диск файлов в этом случае сильно снизится).
Чтобы создать RAM-диски для системных директорий с кэшами, вам пригодится следующий скрипт:
[php]#!/bin/sh# Create a RAM disk with same perms as mountpoint
RAMDisk() <
mntpt=$1
rdsize=$(($2*1024*1024/512))
echo «Creating RamFS for $mntpt»
# Create the RAM disk.
dev=`hdik -drivekey system-image=yes -nomount ram://$rdsize`
# Successfull creation…
if [ $? -eq 0 ]; then
# Create HFS on the RAM volume.
newfs_hfs $dev
# Store permissions from old mount point.
eval `/usr/bin/stat -s $mntpt`
# Mount the RAM disk to the target mount point.
mount -t hfs -o union -o nobrowse $dev $mntpt
# Restore permissions like they were on old volume.
chown $st_uid:$st_gid $mntpt
chmod $st_mode $mntpt
fi
>
# Test for arguments.
if [ -z $1 ]; then
echo «Usage: $0 [start|stop|restart] »
exit 1
fi
# Source the common setup functions for startup scripts
test -r /etc/rc.common || exit 1
. /etc/rc.common
StartService () <
ConsoleMessage «Starting RamFS disks…»
RAMDisk /private/tmp 1024
RAMDisk /var/run 256
>
StopService () <
ConsoleMessage «Stopping RamFS disks, nothing will be done here…»
diskutil umount -f /private/tmp /private/var/run
>
RestartService () <
ConsoleMessage «Restarting RamFS disks, nothing will be done here…»
>
RunService «$1»
EOF
sudo chmod u+x,g+x,o+x RamFS/RamFS
Создайте на рабочем столе текстовый файл, скопируйте туда всё содержимое выше. Обратите внимание на строки RAMDisk /private/tmp 1024 и RAMDisk /var/run 256 — в них задаётся объём RAM-дисков для системных файлов (в мегабайтах). Слишком маленькое значение (128 и меньше) может привести к проблемам в работе системы. Слишком большое значение замедлит выключение и перезагрузку компьютера.
После копирования сохраните файл и поменяйте имя и расширение на ramdisk.sh.
Затем запустите Терминал и выполните следующие команды:
RAM-диски будут созданы при следующей загрузке компьютера. Обращаем ваше внимание на то, что визуально ничего не изменится — эти диски не будут видны ни в Finder, ни в Дисковой утилите.
Отменить использование RAM-дисков можно будет командой:
[php]sudo rm -rf /System/Library/StartupItems/RamFS[/php]Опять-таки, диски перестанут создаваться лишь при следующей загрузке.
How to Create and Use a RAM Disk with Your Mac (Warnings Included!)
Once a popular option in the early days of the Mac, RAM disks, which were used to speed up the performance of a Mac, have fallen by the wayside.
Conceptually, RAM disks are a simple idea: a chunk of RAM set aside that looks, to the Mac system, like just another storage drive. The system, as well as any installed apps, can write files to or read files from the RAM disk, just as if it really were another storage drive mounted on your Mac.
But unlike any storage drive, a RAM disk can operate at the speed of RAM, which is usually many times faster than most drive storage systems.
RAM Disk History
RAM disks existed before the Macintosh ever hit the market, but we’re going to predominantly explore how RAM disks were used with the Mac.
The Mac Plus, released in 1986, had quite a few new features, including the use of SIM (Single Inline Memory) modules that users could easily upgrade. The Mac Plus shipped with 1 MB of RAM, but users could increase the memory size to 4 MB. That was an amazing amount of RAM in 1986, and begged the question: What can I do with all this memory space?
At the same time, many users were asking how they could speed up their Macs. And while many users were happy to just max out the RAM, and enjoy the performance gain of having more memory, which let them run more applications concurrently, some users discovered the joys of using a RAM disk to speed up the system and apps. Other users discovered that a RAM disk could be used to create an amazingly fast storage system. Remember, back then, most Mac Plus users were getting by with a single 800 KB floppy drive, while those who felt like splurging could add an additional external floppy drive. If you really had cash to burn, you could hook up a 20MB SCSI (Small Computer System Interface) hard drive, which would likely set you back well over $1,200.
The first prominent use of a RAM disk was to copy the Mac’s slow ROM (Read Only Memory), which contained many of the system’s core components, along with the operating system, which was stored on a floppy drive, and move them both to a RAM disk where they could operate at the speed of RAM; many, many times faster than either the floppy disk or the ROM.
The performance increase was amazing, and was achieved for just the cost of a RAM disk utility app.
The second common use of a RAM disk back in the Mac Plus days was to create a tiered storage system. Floppy drives weren’t fast enough for professionals or avid amateurs to work with new rich media editing systems, such as audio editors, image editors, or page layout apps. SCSI drives could meet the needs of image editing and page layout, but audio editing was at best iffy, with most SCSI drives being too slow to provide the needed bandwidth for audio or other real-time editing.
RAM disks, on the other hand, were very fast, and could easily meet the needs of real-time editing with their ability to write or read files as quickly as the RAM could be accessed, without the mechanical latency inherent in SCSI or floppy disks.
(RAM disks can be very fast. In my case, over 10x faster than my Mac’s startup drive.)
The only disadvantage to RAM disks was that the data stored in them was lost every time you turned your Mac off, or the power went out. You had to remember to copy the content of the RAM disk to your main storage system or your work would be lost.
Modern Uses for RAM Disks
RAM disks are likely to be the fastest storage location available on a Mac, easily outperforming any hard drive, and in most cases, beating out SSDs. If you can live with the downside of RAM disks, primarily their small sizes, and the issue of not being able to retain data when power to your Mac is turned off, then there are still plenty of good uses for them.
- Scratch space and temp files: Assigning RAM disk space for use with a multimedia app as scratch space can increase the app’s performance. This assumes the app in question prefers to use disk space for its temporary files.
- Games: Try loading your favorite game, or for small RAM disks, just the saved game files to a RAM disk. You should see faster load times and rendering speeds, and smoother play.
- Video or audio editing/rendering: Load textures, images, audio loops, or other media assets you’ll be using onto a RAM disk for better overall performance.
- Compression: If you need to compress a large number of files as part of your workflow, moving them to a RAM disk can speed up the compression time.
- Batch file processing: If you’re converting a number of image, audio, or video files from one format to another, moving the files to your RAM disk can increase performance.
Creating a RAM Disk
There are two ways to create a RAM disk; you can use the Terminal app to manually create a RAM disk, or you can make use of a third-party utility for creating a RAM disk.
(You can use Activity Monitor to get a handle on how much free RAM you have available.)
It’s a good idea to start the process of creating a RAM disk by knowing how much free RAM space you have available to work with:
Launch Activity Monitor, located at /Applications/Utilities/.
Select the Memory button in the Activity Monitor window.
At the bottom of the window is a summary of how the RAM is being used. You should see entries for Physical Memory, and Memory Used. Subtract Memory Used from Physical Memory to figure out how much free memory is available to you.
It’s a good idea not to use all of the free memory; your Mac always needs some free memory to work with. Apps like web browsers can quickly swallow up free memory, not to mention the RAM disk you’re about to create. I suggest you leave the Activity Monitor app open, so you can see how memory is being used on your Mac as you experiment with creating and using RAM disks.
Note: The RAM disk you create will not affect the Memory Used entry until you actually use the RAM disk to store data.
Let’s start with using the included Terminal app:
Launch Terminal, located at /Applications/Utilities/.
The following command will create the RAM disk:
diskutil erasevolume HFS+ “RAMDisk” hdiutil attach -nomount ram://2048
The command has a number of parameters you’ll likely wish to change; the first is the name of the RAM disk, which in the example is “RAMDisk”. You can use any name you wish; just be sure the name is contained within the double quotes.
(Terminal can create a RAM disk and mount it on the desktop, ready to use.)
The second option you may wish to change is the size of the RAM disk; in this example, the entry ram://2048 will create a 1 MB RAM disk. The size you enter is how many memory blocks to use in the RAM disk; 2048 blocks will create a 1 MB RAM disk. Multiply the 2048 value by the number of MB you wish to use for the RAM disk; some examples:
- 256 MB = 524288
- 512 MB = 1048576
- 1 GB = 2097152
- 2 GB = 4194304
The last note about the command is the accent grave ` character used before hdiutil and after the size parameter. The character is not a single quote; the accent grave character is found at the top left of most QWERTY keyboards; the accent grave character is usually on the same key as the tilde (
With all the notes taken into account, if you wished to create a 1 GB RAM disk, you would enter the following at the Terminal prompt:
diskutil erasevolume HFS+ “RAMDisk” hdiutil attach -nomount ram://2097152
and then press enter or return.
After a moment or two, the RAM disk will be mounted on your Mac’s desktop, ready for you to work with.
Third-Party RAM Disk Utilities
There are a number of utilities that make creating and managing a RAM disk a bit easier than using Terminal.
- TmpDisk: Available at github.com/imothee/tmpdisk, TmpDisk is a simple Open Source RAM disk management app. It allows you to create RAM disks by simply filling in a few fields. It installs as a menu bar item and includes the ability to create RAM disks automatically at startup.
- Ultra RAM Disk: Available from the Mac App Store, Ultra RAM Disk installs as a menu bar item that allows you to create RAM disks when needed.
- RAMDisk: Available from the Mac App Store, RAMDisk is an app for creating as well as backing up RAM disks, to allow you to save their contents as well as restore RAM disks when you restart your Mac.
(Using a third-party utility, such as TmpDisk, can be a bit easier than remembering Terminal commands.)
Using the RAM Disk
Now that you have a RAM disk mounted on your Mac you can use it just as if it were another drive. Try copying an image file to the RAM disk and then open it in your favorite editor. You may be amazed at how fast it opens, as well as how fast you can perform edits and save the image.
If you have a favorite game, and enough free memory to house the game, try using the RAM disk to run the game from. You may be racking up points faster than ever.
Remember: The key to using a RAM disk is that the information stored within it is volatile. It won’t survive a shutdown or power loss. Make sure you copy any information you need from the RAM disk before shutting down.