tmpfs是一種虛擬內存文件系統, 它的存儲空間在VM裏面,如今大多數操做系統都採用了虛擬內存管理機制, VM(Virtual Memory) 是由Linux內核裏面的VM子系統管理. VM的大小由RM(Real Memory)和swap組成, RM就是物理內存, swap是經過硬盤虛擬出來的內存空間, 大小是能夠配置的. swap的讀寫速度相對RM(Real Memory)要慢許多. 在物理內存不足時一個進程申請內存, 內核的VM子系統就會把RM裏面的一些不經常使用的數據交換到swap裏面, 在須要使用這些數據時再從swap交換到RM裏.
tmpfs最大可用的存儲空間等於 RM + swap, 可是tmpfs自己不知道實際使用的空間是RM仍是swap.linux
mkdir /tmp/memory mount -t tmpfs -o size=1024M tmpfs /tmp/memory
上面的命令分配了1GB的VM到/tmp/memory目錄下, 能夠用df命令查看. tmpfs一個優勢就是它實際使用的空間是隨着實際存儲的數據而變化的, 若是/tmp/memory目錄下什麼也沒有, tmpfs並不佔用VM. 參數1024m只是告訴內核這個掛載點最大可用的VM爲1024m, 若是不設置這個參數, tmpfs默認的大小是RM的一半, 假如物理內存是8GB,那麼tmpfs默認的大小就是4GB.bash
實際應用一: 將內存掛載到文件系統測試
#手動掛載: mount -t tmpfs -o size=2g tmpfs /tmp/tbls #啓動時自動掛載: 修改/etc/fstab,添加以下一行 tmpfs /tmp/tbls tmpfs size=2g 0 0
實際應用二: 快速消耗內存. 下面的腳本將佔用1GB內存1個小時, 注意須要root權限操作系統
#!/bin/bash mkdir /tmp/memory mount -t tmpfs -o size=1024M tmpfs /tmp/memory dd if=/dev/zero of=/tmp/memory/block sleep 3600 rm /tmp/memory/block umount /tmp/memory rmdir /tmp/memory
ramfs是Linux下一種基於RAM作存儲的文件系統, 能夠把ramfs理解爲在普通的HDD上創建了一個文件系統, 而如今HDD被替換成了RAM. 由於是RAM作存儲因此會有很高的讀寫速度. 在ramfs中不會使用swap. 可是ramfs有一個問題是它會吃光系統全部的內存, 即便mount時指定了大小. 同時它只能被root用戶訪問.blog
sudo mount -t ramfs -o size=10M ramfs ./ramfs/ sudo dd if=/dev/zero of=./ramfs/test.file bs=1M count=20
測試時你會發現上面這個操做是能成功的,若是直接寫一個比內存更大的文件,你會發現瞬間系統就卡住了. 另外dd命令必需要有root權限進程
dd: opening `./ramfs/test.file': Permission denied
df只使用h選項是沒法顯示ramfs的內容的, 要用-a參數內存
linux-numy:~ # df -ah | grep "/mnt/ram" ramfs 0 0 0 - /mnt/ram
ramfs與tmpfs的區別是:內存管理
# 不指定大小則爲內存大小 mount -t tmpfs tmpfs /tmp/mem1/ # ramfs須要使用df -a 或 mount -t ramfs 選項才能查看到,大小都是0,但不影響使用 mount -t ramfs ramfs /tmp/mem1/
.io