[原创]FreeBSD下tmpfs的使用_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2902 | 回复: 0   主题: [原创]FreeBSD下tmpfs的使用        下一篇 
wulcan
版主
等级:中校
经验:1795
发帖:124
精华:0
注册:2014-3-19
状态:离线
发送短消息息给wulcan 加好友    发送短消息息给wulcan 发消息
发表于: IP:您无权察看 2014-11-27 19:44:01 | [全部帖] [楼主帖] 楼主

按照手册上的描述,tmpfs是一个高效的内存文件系统,在运行的速度是有绝对的优势,本文最后附上复制文件的速度。而用的最多的情形,则是用在各种live环境,这时不能向硬盘中写东西,但是/tmp和/var却是需要写的,如果只读则会出现很多问题,甚至导致系统停止响应,所以大多数的live系统,都使用了tmpfs――当然要是FreeBSD7.0以后的版本,因为tmpfs正到7.0才正式支持,在以前的版本中,一直都是用md。

tmpfs有点恐怖的地方,在于它默认使用了全部的vm,包括硬件内存和交换分区在内的所有空间,一定要注意它包括了交换分区,所以在使用的时候最好加上大小限制,否则一旦在使用时把交换分区也填满了,那系统可能要停止响应了。

tmpfs还有一个特点要注意,就是如果用了多个tmpfs,那么默认情况下,这些tmpfs之间共享内存,也就是说,如果一个tmpfs把内存用光了,那么其他的tmpfs也不可能再写入文件了,剩余的空间也就为零了。

当然这是极限场合,平时使用时,所有的tmpfs剩余空间是一致的,因为他们是共享的内存空间。这一点可以在使用时用df来查看。

要使用tmpfs,首先必须让内核支持tmpfs,方法按常规有两种:编译进内核或者用loader.conf加载。

要自已编译内核的话,就在配置文件中添加下面一行,然后按常规的方法运行就可以了:

options TMPFS


loader.conf支持也比较简单,在/boot/loader.conf中添加一行:

tmpfs_load="YES"


使用tmpfs很简单,有两种方法,写进fstab,或者直接用mount命令,前者适合用在开机就创建内存盘的场合,后者一般用脚本或临时使用。

第一种,使用/etc/fstab:

在fstab文件中添加下面一行,注意这里有个size参数,这是限制/tmp的大小,防止超量使用内存:

tmpfs /tmp tmpfs rw,size=1g,mode=1777 0 0


在启动之后,/tmp就会使用tmpfs了,其实典型的应用,是把一些需要高速存取的小文件,比如socket文件,放到tmpfs里,这样会明显提高速度。

第二种,手动启动:

mount -o size=1g -t tmpfs tmpfs /mnt


同样,用size来限制内存盘的大小,tmpfs还支持其他的几个参数,最常用的还有一个maxfilesize,可以用来限制该系统中单个文件的大小。

这个命令可以由shell或rc脚本启动,使用的时候非常灵活。

来看一下当前系统文件:

root@10:/tmp # df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ada0p2 9.2G 882M 7.6G 10% /
devfs 1.0K 1.0K 0B 100% /dev
tmpfs 1.0G 653M 371M 64% /tmp
tmpfs 1.0G 653M 371M 64% /mnt


来复制一个光盘映像文件试试,顺便对比一下dd 的bs参数,你会发现飞一样的速度,跟硬盘根本就不是一个级别的东东:

root@10:/tmp # dd if=o.iso of=/mnt/o.iso bs=2m
326+1 records in
326+1 records out
684429312 bytes transferred in 0.956879 secs (715272655 bytes/sec)
root@10:/tmp # dd if=o.iso of=/mnt/o.iso bs=1m
652+1 records in
652+1 records out
684429312 bytes transferred in 0.819927 secs (834744229 bytes/sec)
root@10:/tmp # dd if=o.iso of=/mnt/o.iso
1336776+0 records in
1336776+0 records out
684429312 bytes transferred in 3.489204 secs (196156294 bytes/sec)


该贴由hui.chen转至本版2014-11-28 15:27:11



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论