FAQ

Если вы хотите увидеть на нашем сайте ответы на интересующие вас вопросы обо всём, что связано с техникой Apple, операционной системой Mac OS X (и её запуском на PC), пишите нам через форму обратной связи.

К нам поступил следующий вопрос:

Привет! Не могли бы Вы рассмотреть особенности работы с RamDisk в Mac OS X с учетом встроенных возможностей: diskutil и сторонних решений: iRamDisk, Ram Disk Utility Pro.
Возможно ли использовать RamDisk в Mac OS для переноса свопа, кэша броузеров и т.д., по аналогии с Windows, для ускорения системы?

Здравствуйте!

Мы твёрдо уверены, что нет никакого смысла пользоваться сторонними (тем более платными) утилитами для создания 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

cat << EOF | sudo tee RamFS/StartupParameters.plist > /dev/null
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
<key>Description</key>
<string>RamFS Disks Manager</string>
<key>OrderPreference</key>
<string>Early</string>
<key>Provides</key>
<array>
<string>RamFS</string>
</array>
<key>Uses</key>
<array>
<string>Disks</string>
</array>
</dict>
</plist>
EOF[/php]

Создайте на рабочем столе текстовый файл, скопируйте туда всё содержимое выше. Обратите внимание на строки RAMDisk /private/tmp 1024 и RAMDisk /var/run 256 — в них задаётся объём RAM-дисков для системных файлов (в мегабайтах). Слишком маленькое значение (128 и меньше) может привести к проблемам в работе системы. Слишком большое значение замедлит выключение и перезагрузку компьютера.
После копирования сохраните файл и поменяйте имя и расширение на ramdisk.sh.

Затем запустите Терминал и выполните следующие команды:

[php]chmod 777 ~/Desktop/ramdisk.sh
~/Desktop/ramdisk.sh[/php]

RAM-диски будут созданы при следующей загрузке компьютера. Обращаем ваше внимание на то, что визуально ничего не изменится — эти диски не будут видны ни в Finder, ни в Дисковой утилите.

Отменить использование RAM-дисков можно будет командой:

[php]sudo rm -rf /System/Library/StartupItems/RamFS[/php]

Опять-таки, диски перестанут создаваться лишь при следующей загрузке.

Поделитесь страницей через социальные сети

  • Илья

    Не вяжется название записи с содержанием. Какой толк пользователю от недоступных дисков. То есть, конечно, перенос системных кешей это полезно, но иногда надо перенести не только системные кеши, но и кеши, допустим, Lightroom, особенно его превью 1:1.

    Диск, создаваемый командой

    diskutil erasevolume HFS+ “ramdisk” `hdiutil attach -nomount ram://xxxxxx`
    где xxxxxx — целевой размер диска в мегабайтах, умноженный на 2048

    будет доступен для пользователя и сторонних программ.

  • airas

    Вы выборочно отвечаете на вопросы пользователей? или просто не знаете?
    (вопрос про плавную прокрутку в ML 10.8)
    сори за офф

    • olzhasXIX

      нельзя просто так взять и ответить на все вопросы

    • LCANT

      Для плавной прокрутки купи себе трекпад.

  • zizu

    выкидывает

    Starting RamFS disks…
    Creating RamFS for /private/tmp
    Initialized /dev/rdisk2 as a 1024 MB HFS Plus volume
    Creating RamFS for /var/run
    Initialized /dev/rdisk3 as a 256 MB HFS Plus volume
    /Users/ML/Desktop/ramdisk.sh: line 49: EOF: command not found
    chmod: RamFS/RamFS: No such file or directory
    tee: RamFS/StartupParameters.plist: No such file or directory

    • fess

      Та же проблема. Придется гуглить

  • zizu

    я так понял ответа я так и не услышу

  • mishukov

    В начало файла нужно добавить вот эти строки:

    cd /System/Library/StartupItems
    sudo mkdir RamFS
    sudo chown -R root:wheel RamFS
    sudo chmod -R u+rwX,g+rX,o+rX RamFS
    cat << «EOF» | sudo tee RamFS/RamFS > /dev/null

    Тогда все заработает