tmpfs介绍 虚拟内存文件系统

2009年12月21日 由 月影鹏鹏 留言 »


Tmpfs是一个虚拟内存文件系统,它不同于传统的用块设备形式来实现的Ramdisk,也不同于针对物理内存的Ramfs。
Tmpfs可以使用物理内存,也可以使用交换分区。在Linux内核中,虚拟内存资源由物理内存(RAM)和交换分区组成,这些资源是由内核中的虚拟内存子系统来负责分配和管理。
Tmpfs向虚拟内存子系统请求页来存储文件,它同Linux的其它请求页的部分一样,不知道分配给自己的页是在内存中还是在交换分区中。同Ramfs一样,其大小也不是固定的,而是随着所需要的空间而动态的增减。
使用tmpfs,首先你编译内核时得选择”虚拟内存文件系统支持(Virtual memory filesystem support)” 。
然后就可以加载tmpfs文件系统了:
# mkdir -p /mnt/tmpfs
# mount tmpfs /mnt/tmpfs -t tmpfs
同样可以在加载时指定tmpfs文件系统大小的最大限制:
# mount tmpfs /mnt/tmpfs -t tmpfs -o size=32m

debian下设置
/tmp 使用 tmpfs
一般而言,若將記憶體模擬成磁碟並拿來做為 /tmp 的話將會有效加快一些應用程式的執行速度。而相同的,有些暫放在 /tmp 下的資料如果在關機後被人拿去解讀的話也會產生安全上的問題。所以若能將 /tmp 放在記憶體裡,不但能增進系統的速度,在關機後 /tmp 裡的資料也將跟著消失,這將是一舉兩得的做法。

在 Debian GNU/Linux 裡,預設上就會把記憶體拿來模擬成磁碟了,也就是您在 df 指令裡所看到的 /dev/shm。由於系統記憶體十分寶貴,所以 /dev/shm 會動態調整其大小,但您還是可以修改 /etc/default/tmpfs 來指定其限額,例:

# SHM_SIZE sets the maximum size (in bytes) that the /dev/shm tmpfs can use.
# If this is not set then the size defaults to the value of TMPFS_SIZE
# if that is set; otherwise to the kernel’s default.
#
# The size will be rounded down to a multiple of the page size, 4096 bytes.
SHM_SIZE=200m

然後請再修改 /etc/fstab 讓 /tmp 在開機時能掛在 /dev/shm 上,例:

# <file system> <mount point> <type> <options> <dump> <pass>
tmpfs /tmp tmpfs size=100m,mode=1777 0 0

設定完成後,重新開機您就會發現 /tmp 己經掛在 tmpfs 上了:

~# df
檔案系統 1K-區段 已用 可用 已用% 掛載點
tmpfs 102400 0 102400 0% /tmp

广告位

留言