tmpfstmpfs是Linux/Unix系统上基于内存的文件系统。 tmpfs可以使用内存或swap分区来保存文件。
实现原理: VM子系统tmpfs是基于Linux的虚拟内存管理子系统,面向普通用户,可以根据用户的需要随时创建这种类型的目录,方便快捷地获得读写速度。
用户创建此类型的目录后,剩下的工作交给MMU,最终尽可能满足用户的需求,无论是物理内存还是SWAP。
linux内核中的虚拟机子系统是交换分区或RAM页面,需要虚拟机子系统页面才能在后台管理虚拟内存资源Virtual Memory (即RAM和swap资源)并存储文件tmpfs本身不知道这些页面是在交换分区还是在RAM中; 做这样的决定是VM子系统的工作。 tmpfs文件系统知道某种形式的使用虚拟内存。
如果支持内核编译,则启用" Virtual memory file system support "时可以使用tmpfs。 linux kernel支持2.4或更高版本的tmpfs。 在当前主流的linux系统中,缺省情况下启用tmpfs,例如Redhat。
对于tmpfs和VM:我们已经知道linux虚拟内存(VM ),它包括ram和swap两个部分。 ram是您的物理内存,swap位于安装系统时分割的swap分区(在win中称为页面文件,默认值为c3360(pagefiles.sys ) )中。 虚拟机也是
tmpfs和ramdisk3:linux上的ramdisk由内核提供,使用它只需用mount命令挂载即可,不需要第三方控制工具3360 )
但是,由于它被视为块设备,因此必须使用mkfs命令格式化文件系统:
tmpfs在创建ramdisk时不需要占用固定大小的物理内存,而是动态分配tmpfs
tmpfs的优点:一言以蔽之,就像使用盘一样简单,可以得到飞速的速度
易用性: tmpfs构建在虚拟机上,而不是物理磁盘上,因此无需格式化即可使用。 因此,不需要尝试mkfs.tmpfs。此命令不动态调整大小。 tmpfs的大小是动态的,使用多少分配多少,删除文件将释放相应的虚拟机空间。=.=这非常令人兴奋,具有很好的可扩展性。 如果没有足够的物理内存支持分配给tmpfs的大小,将自动使用swap的页面速度。 tmpfs大部分时间驻留在物理内存中。 由此,读写速度变得超高速=.=tmpfs的缺点3360是不可持续的。 tmpfs的先天优势成为先天劣势3360存储器的特性,如果关闭tmpfs的数据,成本会变高。 与硬盘的价格相比,内存确实很贵,所以请不要在tmpfs目录中放太大的东西。 tmpfs的APP应用3360 APP场景天生是暂时的
例如,作为通过执行程序而生成的临时文件目录,特别是对于服务器上的部分Web服务来说,是有前途的。 比如,squid,网站,它像老虎一样展翅高飞。
Linux系统上的APP应用
magc@magc-pc:~$ df文件系统1K-块已用%挂载点udev 403311604033116 %/dev tmpfs 810749452801292 %/run/dev/sddev dev/shm tmpfs 5120451161 %/run/lock tmpfs 405370804053708 %/sys/fs/cgroup tmpfs 81074424884
。调整tmpfs大小大致有以下三种方法:1.直接挂载到需要的目录--比如系统的临时目录-可以根据实际需要挂载某个程序的临时文件的目录[root@bys3 ~]# mount -t tmpfs -o size=20m tmpfs /tmp[root@bys3 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 16G 10G 4.7G 69% /
/dev/sda1 99M 21M 74M 22% /boot
tmpfs 502M 0 502M 0% /dev/shm
tmpfs 20M 0 20M 0% /tmp
由于没有挂载之前/tmp目录下的文件也许正在被使用,因此挂载之后系统也许有的程序不能正常工作。可以写入/etc/fstab,这样重启后也有效。
2./etc/fstab文件来修改/dev/shm的容量(增加size=100M选项即可),修改后,重新挂载即可:[root@bys3 ~]# cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults,size=600M 0 0
tmpfs /tmp tmpfs defaults,size=25M 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda3 swap swap defaults 0 0
/dev/sda5 swap swap defaults 0 0
[root@bys3 ~]# mount -a --测试/etc/fstab无错误,重启OS系统
[oracle@bys3 ~]$ df -h --重启后的信息如下,tmpfs文件系统的对应条目已经改变为配置的
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 16G 10G 4.7G 69% /
/dev/sda1 99M 21M 74M 22% /boot
tmpfs 600M 0 600M 0% /dev/shm
tmpfs 25M 0 25M 0% /tmp
3./dev/shm建一个tmp目前,并与/tmp绑定。 --这方法有点烦琐,不如方法1方便快捷。[root@bys3 ~]# mkdir /dev/shm/tmp
[root@bys3 ~]# chmod 1777 /dev/shm/tmp
[root@bys3 ~]# mount --bind /dev/shm/tmp /tmp -注意mount --bind 这里bind前是两个-
[root@bys3 ~]# ls -ld /tmp
drwxrwxrwt 2 root root 40 Dec 8 12:15 /tmp
[root@bys3 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 16G 10G 4.7G 69% /
/dev/sda1 99M 21M 74M 22% /boot
tmpfs 600M 0 600M 0% /dev/shm
tmpfs 600M 0 600M 0% /tmp ----可以看到/tmp使用到了 /dev/shm的空间。