1、概述
tmpfs是ramfs的衍生品,ramfs是基於RAM的文件系統,不能使用swap空間;tmpfs可以動態釋放空間、可以使用swap空間。ramfs不能控制使用內存的大小容易使內存爆掉;而tmpfs可以在mount的時候指定size來控制使用內存的大小,不會導致系統崩潰。tmapfs是存儲在VM的文件系統,VM是linux的虛擬內存,由RM(物理內存)和swap組成。RM的讀寫性能優於swap,swap是物理磁盤虛擬出來的內存空間。具體tmpfs使用的是RM還是swap是不可控的,
這是由linux內核的vm子系統管理的。
tmpfs默認是物理內存大小的一半,比如物理內存是32G,那么tmpfs就是16G。這部分內存空間他並不會完全占用,只有掛載存儲文件后才會占用相應大小的空間,例如
16G的tmpfs文件系統,存放了200M的文件那么它就只占用了200M的內存空間,其他的空間還是可以被其它程序調用。當刪除了文件后,系統會動態的將文件占用的那部分內存進行回收。
2、使用
由於項目中用到高io、對讀寫性能要求都比較高,磁盤就不能滿目需求,此時可以將這部分數據放到tmpfs,但是要確定數據不會是內存爆掉!自行估算,tmpfs默認使用一般的內存,如32G的內存,tmpfs會占用16G,當然可以mount時通過size參數指定大小。tmpfs是存儲在虛擬內存的,所以不需要mkfs,直接掛載就可以使用:
#mount -t tmpfs -o size=16g tmpfs /data/spark-tmp
為了方便使用,添加到/etc/fstab自動掛載。
#vim /etc/fstab
tmpfs /data/spark-tmp tmpfs defaults,size=16g 0 0
3、對tmpfs進行擴容
可以直接寫到/etc/fstab文件里面,通過size修改tmpfs的大小,size必須是整數。
#vim /etc/fstab
tmpfs /data/spark-tmp tmpfs defaults,size=19g 0 0
#mount -o remount /data/spark-tmp
4、優缺點
優點:
1)可以動態調整大小; 2)能使用swap空間
缺點:
斷電重啟或者umount tmpfs都會使數據丟失。
5、使用建議
適合存儲socket、session等,對於高io的臨時數據也可以選擇進行存儲,對於高io並且還需要持久化到磁盤的,需要通過其他手段,tmpfs可以提高linux系統的性能。