😃

MacでRamディスクを作成する

2021/01/06に公開

SSDは読み書きによって化学的に劣化します。

https://qiita.com/hitoshi44/items/3a1e64339369ffe76a26

序文

私の所有する、MacBook Pro(2012年の1st Ratina)のSSDが動作しなくなり、修理に出したところ、5万円〜9万円の修理費用がかかると言われました。おそらくSSDは基盤にハンダ付けされており、SSDだけを交換することはできず、基盤(マザーボード)交換になるからでしょう。(私は幸い無料で修理をして頂きました[1]

私の場合は、gitbranch の切り替えや rebase を頻繁に行っていたので、SSD の書き込み上限に達したんだと思います。

Why RAM Disk???

SSDはファイルの読み書きによって劣化するので、頻繁に読み書きが発生するファイルをRAMディスク上においてしまえばいいのです。

作業

以下のスクリプトは、RAM Diskを作成し、/tmp にマウントしています。
/tmp に、Apacheのログを保存するディレクトリを作成し、Apache側の設定で、/tmp/log/apahe2にログを保存するように設定します。

私は他にも、PHPのセッションファイルの保存先にも利用しています。[2]

#!/usr/bin/env bash

# 512MB 1048576
# 1GB 	2097152
# 2GB 	4194304
NUMSECTORS=${1:-2097152}
MOUNTPOINT=/tmp
VOLUMENAME=TMP

# RAM Disk
RAMDISK=`hdiutil attach -nomount ram://$NUMSECTORS`
newfs_hfs -s -v $VOLUMENAME $RAMDISK
mount -t hfs $RAMDISK $MOUNTPOINT

# Make directory
mkdir -p "${MOUNTPOINT}/caches/"
mkdir -p "${MOUNTPOINT}/log/apache2/"

newfs_hfs のオプションは、-s がケースセンシティブ(大文字小文字を区別する)、-v がボリューム名になります。

ファイルには実行権限が必要です。以下のように実行権限を与えます。

chmod +x ./ramdisk.sh

/tmpにマウントするにはroot権限が必要です。sudoで実行します。

sudo ./ramdisk.sh

PHPのセッションファイルの設定方法
https://zenn.dev/tomoakinagahara/articles/05d45d389f81ea

脚注
  1. 実はこれ、ビックカメラの店員のミスで、無料になりました。 ↩︎

  2. 他にも、プログラムするディレクトリを /www/ にして、そこをRAMディスクのマウントポイントにしてます。 ↩︎

Discussion