[Linux] 在 CentOS 7 上建立 RAM disk
最近因為專案的需求,要在 CentOS 裡面建立 RAM disk~
查了一下,發現蠻簡單的,
Create a RAM disk in Linux 這邊就有完整的說明可以參考,就來照做一次吧~
(可以另外參考 THE DIFFERENCE BETWEEN A TMPFS AND RAMFS RAM DISK 這篇)
1. 建立要掛載 RAM disk 的目錄
我這邊也是照著教學文章上的,在 /mnt 下面建立了一個 ramdisk 的目錄:
sudo mkdir /mnt/ramdisk
2. 用 free 指令查看可用的記憶體
用 free -g 可以看到剩下的 GB 數,或是用 free -m 可以看到 MB 數:
testuser@localhost ~ $ free -g
total used free shared buffers cached
Mem: 7 1 6 0 0 4
-/+ buffers/cache: 0 7
Swap: 3 0 3
像我現在還有 6GB 的剩餘記憶體,可以拿其中的 4GB 來作 RAM disk~
3. 用 mount 指令暫時性的掛載 RAM disk
可以先用 mount 指令測試一下掛載 RAM disk 能否成功:
sudo mount -t tmpfs -o size=4G tmpfs /mnt/ramdisk
掛載成功後,用 mount 指令就可以看到被掛載上去的 RAM disk 目錄了:
testuser@localhost ~ $ mount proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel) /dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota) tmpfs on /mnt/ramdisk type tmpfs (rw,relatime,seclabel,size=4194304k)
用 df -h 也可以看到這個 RAM disk 目前剩餘的空間:
testuser@localhost ~ $ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 18G 33G 36% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 17M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-home 96G 21G 76G 22% /home
/dev/sda1 497M 124M 373M 25% /boot
tmpfs 4.0G 0 4.0G 0% /mnt/ramdisk
4. 修改 /etc/fstab 永久性的掛載 RAM disk
上面的 mount 指令可以暫時性的掛載 RAM disk,
不過如果要永久有效的話,還是得改 /etc/fstab 這個檔案…
在最下面加入 tmpfs 那一行:
# # /etc/fstab # Created by anaconda on Wed Oct 8 07:56:21 2014 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/centos-root / xfs defaults 1 1 /dev/mapper/centos-home /home xfs defaults 1 2 /dev/mapper/centos-swap swap swap defaults 0 0 tmpfs /mnt/ramdisk tmpfs rw,relatime,size=4G 0 0
修改好後,執行 sudo mount -a 就可以把 /etc/fstab 裡面列的磁碟都掛載上去,
自然也包含 RAM disk 了~(重開機也可以)
sudo mount -a
這邊要注意的是 tmpfs “有可能”會用到 SWAP 的空間,因此不保證一定都在記憶體裡面…
用 ramfs 的話雖然確保都在記憶體,但會用記憶體用完爆掉的問題…
因此使用上還是要小心囉~