疑問:
系統安裝完成后,查看分區情況,發現多了很多tmpfs文件系統掛載的目錄,並占用了"/" 的分配空間
-- 由於之前用習慣了阿里雲的ECS服務器,簡單明了的把所有空間都分配給了" / " , 所以特別在意。

tmpfs的基本認識:
什么是tmpfs
- tmpfs是ramfs的衍生品。
- ramfs是基於RAM的文件系統,不能使用swap空間;tmpfs可以動態釋放空間、可以使用swap空間。
- ramfs不能控制使用內存的大小容易使內存爆掉;而tmpfs可以在mount的時候指定size來控制使用內存的大小,不會導致系統崩潰。
- tmpfs是存儲在VM的文件系統,VM是linux的虛擬內存,由RM(物理內存)和swap組成
- RM的讀寫性能優於swap,swap是物理磁盤虛擬出來的內存空間。
- 具體tmpfs使用的是RM還是swap是不可控的,這是由linux內核的vm子系統管理的
內核支持
- 編譯內核時,啟用“Virtual memory file system support”就可以使用tmpfs,linux kernel從2.4以后都開始支持tmpfs。目前主流的linux系統默認已啟用tmpfs,如Redhat。
tmpfs的優點
- 使用方便:因為tmpfs是建立在VM上的,而不是物理磁盤上,所以不需要格式化就可以使用,所以不用嘗試mkfs.tmpfs了:沒有這條命令
- 動態調節大小:tmpfs的大小是動態的,用多少才分配多少,刪除文件則會釋放相應的VM空間
- 快:tmpfs大部分時間是駐留在物理內存中,這使得其讀寫速度超快
tmpfs的缺點
- 不可持久保存:tmpfs的先天優勢變成了他的先天劣勢:內存的特性導致位於tmpfs上的數據斷電會丟失
- 成本高:相比較硬盤的價格來說,內存無疑還是很昂貴的,所以用tmpfs的目錄不要放太大的東西
tmpfs的應用場景
- 天生就是為臨時目錄而生的
- 適合存儲socket、session等,對於高io的臨時數據也可以選擇進行存儲,
- 對於高io並且還需要持久化到磁盤的,需要通過其他手段,tmpfs可以提高linux系統的性能。
針對linux為什么默認將這些目錄掛載tmpfs進行分析:
/dev
/dev這個目錄對所有的用戶都十分重要。 因為在這個目錄中包含了所有Linux系統中使用的外部設備。但是這里並不是放的外部設備的驅動程序。 它實際上是一個訪問這些外部設備的端口。我們可以非常方便地去訪問這些外部設備,和訪問一個文件,一個目錄沒有任何區別。
/dev/shm
/dev/shm/是一個設備文件,它使用就是tmpfs文件系統 (注意:在CentOS和RedHat下,/dev/shm目錄是一個鏈接,指向/run/shm目錄,在Ubuntu系統下tmpfs文件系統對應的是/run/shm目錄,可以使用df命令查看) 但后期的centos版本中 /dev/shm 就是一個被掛載的目錄
/run
它被識別為 “tmpfs”(臨時文件系統),因此我們知道 /run 中的文件和目錄沒有存儲在磁盤上,而只存儲在內存中。 它們表示保存在內存(或基於磁盤的交換空間)中的數據,它看起來像是一個已掛載的文件系統,這個可以使其更易於訪問和管理。
/sys/fs/cgroup
Cgroup是將任意進程進行分組化管理的Linux內核功能 cgroup本身提供將進程進行分組化管理的功能和接口的基礎結構
/run/user/0
我們看到的/run/user/下的每個目錄與當前登錄的用戶或顯示管理器 gdm 相關。數字代表他們的 UID。 /run/user/0 表示root用戶 /run/user/1000 表示某個普通用戶
實戰 tmpfs 掛載:
1、掛載某個已存在的目錄,例如 /tmp

設想:如果直接掛載,會將/tmp目錄下原有的文件覆蓋掉。
mount -t tmpfs -o size=20m tmpfs /tmp

測試:在/ets/fstab 文件內直接進行配置掛載,重啟后生效


測試:如何卸載 umount 已經掛載的/tmp
方法一:
如果沒有在/etc/fstab內配置,則直接 umount /tmp 即可。
方法二:
如果在/etc/fstab內配置,則刪除配置,然后mount -a (--測試/etc/fstab無錯誤),最后重啟系統 即可。
轉載及摘抄: