在 macOS 上创建虚拟内存盘(RamDisk)

Sep 25, 2025 • 预计阅读时间 1 分钟

使用命令行工具 hdid 可以很简单的把内存创建为虚拟磁盘:

$ hdid -nomount ram://12582912

/dev/disk6

12582912 表示磁盘扇区数,每个扇区大小是 512 字节,总共就是 6GB 大小,所以计算磁盘大小的方式是字节数除以 512。

磁盘管理工具 里可以看到刚才创建出来的虚拟磁盘,可以进行初始化和加载等操作,装载之后可以和普通磁盘一样使用。

也可以使用命令格式化:

$ diskutil apfs create /dev/disk6 ramdisk

Started APFS operation on disk6
Creating a new empty APFS Container
Unmounting Volumes
Switching disk6 to APFS
Creating APFS Container
Created new APFS Container disk7
Disk from APFS operation: disk7
Finished APFS operation on disk6
Started APFS operation on disk7
Preparing to add APFS Volume to APFS Container disk7
Creating APFS Volume
Created new APFS Volume disk7s1
Mounting APFS Volume
Setting volume permissions
Disk from APFS operation: disk7s1
Finished APFS operation on disk7

设置开机自动创建虚拟磁盘

  1. 写一个 Shell 脚本,自动执行创建虚拟磁盘、格式化为 APFS,然后创建 Xcode 的缓存目录
    #!/usr/bin/env bash
    
    set -e
    
    if [ -d /Volumes/ramdisk ]; then
    echo 'found /Volumes/ramdisk.'
    exit 0
    fi
    
    ramdev=$(hdid -nomount ram://8388608)
    diskutil apfs create ${ramdev} ramdisk
    mkdir -p /Volumes/ramdisk/Xcode/DerivedData
    
    把以上脚本内容保存到 /opt/local/share/libexec/mkramdisk.sh
  2. 再写一个 launchd plist 文件,作用是在系统启动的时候自动执行上面的脚本
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
            <string>me.lvv.mkramdisk</string>
        <key>EnvironmentVariables</key>
        <dict>
            <key>PATH</key>
            <string>/sbin:/usr/sbin:/bin:/usr/bin</string>
        </dict>
        <key>ProgramArguments</key>
            <array>
                <string>/bin/bash</string>
                <string>-i</string>
                <string>/opt/local/share/libexec/mkramdisk.sh</string>
            </array>
        <key>RunAtLoad</key>
            <true/>
    </dict>
    </plist>
    
    把以上内容保存到 /Library/LaunchDaemons/me.lvv.mkramdisk.plist,然后加载这个服务:
    $ sudo launchctl load -w /Library/LaunchDaemons/me.lvv.mkramdisk.plist
    
  3. 配置 Xcode 的 DerivedData 目录为虚拟磁盘:

参考资料

https://leopard-adc.pepas.com/documentation/Darwin/Reference/ManPages/man8/hdid.8.html

macOS
版权声明:如果转发请带上本文链接和注明来源。

lvv.me

iOS/macOS Developer

设置 TCP Keepalive,适用于 Linux、FreeBSD 和 macOS