把内存当硬盘用: tmpfs & ramfs & ramdisk
一.tmpfs
某天我学了个“奇巧淫技”:在/etc/fstab 里加上一句none /tmp tmpfs defaults 0 0,重起之后/tmp就在内存里了,因为/tmp放的是临时文件,这样每次关机就清空,又减少硬盘读写,而且读写又快,多好。
tmpfs是相当强大,它的空间能动态调整(但是大小不能超过上限),往里面塞文件它就变大,删文件就会变小。
看我往里面塞个1G的文件:
dd if=/dev/zero of=/tmp/bigfile count=1000000 bs=1024
内存里有1352M的cache(原来是300多M的)。
可以试下复制/dev/urandom而不是/dev/zero,再开个top,就能看cache慢慢增加了,可以看出tmpfs在cache里。
当内存不够用的时侯,就动用交换分区(swap)了,这可是影响性能的。
还有个方法是用mount挂载。
先建个文件夹吧,我在我家建了个.tmp_ram
mkdir ~/.tmp_ram
然后就是mount了
sudo mount -t tmpfs -o size=256M tmpfs ~/.tmp_ram
size指定的是能用的内存的上限。
这样,向~/.tmp_ram里写的文件其实都在内存而不是硬盘。
突然想到一个很好的用处,那就是把chrome的cache放内存了。
sudo mount -t tmpfs -o size=384M tmpfs ~/.cache/google-chrome
去掉sudo然后加到/etc/rc.local,那样每次开机就自动挂载。(要改成绝对路径,谢谢红联的相思爱文指出)
(其实这样没次都清空cache也有点影响上网的体验的,不过我还是喜欢保护硬盘,节省空间...)
二.ramfs
ramfs能实现类似的功能:
sudo mount -t ramfs -o size=256m ramfs ~/.tmp_ram
如果你往里面塞超过mount时设置的上限的文件,它不会提示空间不足,相反它突破你设的上限,动态增大了。而且ramfs不会用swap。
三. ramdisk
有没发现在/dev里面有ram0、ram1等等ramN设备文件,这就是ramdisk。
ramdisk和ramfs的差别之一是ramdisk的大小是固定的(通常只有10几M的大小,编译内核时设定的),可以在系统启动的时候用命令行参数调整。
要用ramdisk要先在/dev/ramN里建文件系统:(我这里用ext2)
sudo mke2fs -m 0 /dev/ram0
然后是挂载:
sudo mount /dev/ram0 ~/.tmp_ram
四.参考
linux kernel的文档:
tmpfs : http://lxr.linux.no/linux+v2.6.37.3/Documentation/filesystems/tmpfs.txt
ramfs : http://lxr.linux.no/linux+v2.6.37.3/Documentation/filesystems/ramfs-rootfs-initramfs.txt
ramdisk: http://lxr.linux.no/linux+v2.6.37.3/Documentation/blockdev/ramdisk.txt
WU.题外八卦:神奇的dd & mount & loopback device
dd 可以用来复制文件,把一个分区复制到另一个分区或者文件,把一个文件的一部分复制到其他地方等等。
dd if=/dev/cdrom of=~/mycd bs=2048 conv=sync
这样就把整张cd拷成一个通常说的iso,只是我用的文件名没加.iso。
有iso那怎样打开?用mount就可以了。
mount是用来挂载文件系统的,这文件系统不一定就是硬盘分区的那几个,cd的文件系统就是iso 9660。
sudo mount ~/mycd /media/cdrom
这样打开/media/cdrom就是打开了这个iso。(/media/cdrom只是例子,挂载到其他地方也可以)
简直就是虚拟光驱。
dd if=/dev/zero of=~/myfs count=10000
mkfs. ext3 ~/myfs
sudo mount -o loop ~/myfs /media/cdrom
首先用dd从/dev/zero复制了5.1M到~/myfs这个文件,也就是说myfs这个文件是5.1M大小,内容全是0。
然后用mkfs.ext2在这个文件上建了个ext2文件系统,挂载到/media/cdrom。
这样读写/media/cdrom其实是读写myfs这个文件。
然后你又可以在里面再建文件系统,再挂载到其他地方,很好玩。
而且如果你想验证一下这文件系统的结构是不是和书上说的一样(开头几个字节放什么、怎样放数据之类的),直接用编辑器打开myfs这个文件就可以了,而且linux支持很多文件系统。(看源码更好?)
loopback device就是一个虚拟的设备,能让一个文件通过块设备(硬盘就是块设备的一种)的方式读写。
loopback还跟网络有关,扯远了。
- 浏览: 235204 次
- 性别:
- 来自: 上海
最新评论
-
iwindyforest:
pinocchio2mx 写道iwindyforest 写道H ...
VMware Workstation 11 或者 VMware Player 7安装MAC OS X 10.10 Yosemite -
nng119:
找不到设备的安装信息 这个问题怎么解决的?
VMware Workstation 11 或者 VMware Player 7安装MAC OS X 10.10 Yosemite -
pinocchio2mx:
iwindyforest 写道Hi pinocchio2mx ...
VMware Workstation 11 或者 VMware Player 7安装MAC OS X 10.10 Yosemite -
iwindyforest:
Hi pinocchio2mx 兄弟, 这个镜像是好的, 我安 ...
VMware Workstation 11 或者 VMware Player 7安装MAC OS X 10.10 Yosemite -
pinocchio2mx:
蛋疼啊,折腾一晚上还没搞定!网上的教程没一篇靠谱的,摸摸索索到 ...
VMware Workstation 11 或者 VMware Player 7安装MAC OS X 10.10 Yosemite
相关推荐
存储介质多样,包括磁盘(硬盘、软盘)、光盘(CD、DVD)、闪存(NOR Flash、Nandflash、CF卡、SD卡、U盘)、内存(Ramdisk、tmpfs & ramfs)以及虚拟存储介质(如rootfs、proc、sysfs、usbfs、devpts、NFS)。...
例如,RamDisk和Ramfs/Tmpfs常用于临时存储,以提高速度,但它们依赖于系统内存,因此在资源有限的嵌入式环境中需要谨慎使用。而Cramfs因其高效压缩和只读特性,常用于固件更新和系统启动镜像。
- **ramdisk**:将一部分内存模拟为硬盘,但数据非持久化,重启后数据丢失。 - **ramfs**:与ramdisk类似,但无需预先分配大小,可动态扩展。 - **tmpfs**:在内存或交换分区中创建的虚拟文件系统,支持数据持久...
ramdisk、ramfs和tmpfs是基于RAM的文件系统,它们在系统运行时创建并存储在内存中。ramdisk是预先分配固定大小的内存空间,ramfs和tmpfs则按需动态扩展。ramfs和tmpfs的主要区别在于tmpfs在断电后不会保留数据,而...
- Tmpfs是一个基于内存的文件系统,类似于Ramdisk,但更灵活,可根据需要动态调整大小。数据在系统重启后丢失,主要用于临时文件和缓存。 7. **Yaffs**: - Yaffs是专为闪存设计的文件系统,尤其适用于NAND闪存,...
在Linux中,ramfs和tmpfs类似,都使用内存来存储文件,但ramfs不持久化数据,重启后数据丢失,而tmpfs可以挂载为临时文件系统,支持数据持久化到交换分区或实际磁盘空间。 二.根文件系统在Linux启动过程中的作用 ...
ramdisk和ramfs/tmpfs则是基于内存的文件系统,它们在内存中创建并存储数据,适合临时存储或在内存充足的环境中使用。 选择哪种文件系统取决于应用场景和硬件限制。例如,如果需要数据持久化和高可靠性,可能需要...
1.inittab表action说明; 2.嵌入式相关文件系统:autofs、cramfs、squashfs、JFFS2、YAFF2、ubifs、ramdisk、ramfs、tmpfs、procfs、sysfs; 3.windows文件系统:fat、FAT32、NTFS、EXT3、EXT4;
在嵌入式 Linux 应用中,由于存储设备通常是 RAM 或 ROM(如 FLASH 存储器),因此常用的文件系统类型包括 jffs2、yaffs、cramfs、romfs、ramdisk、ramfs/tmpfs 等。 - **NOR 和 NAND 闪存的区别**:NOR 闪存支持...
常见的嵌入式文件系统包括:jffs2、yaffs、cramfs、romfs、ramdisk、ramfs/tmpfs等。本文以Cramfs为例,Cramfs是一个压缩的只读文件系统,特别适合资源有限的嵌入式环境,因为它节省内存且便于使用。 3. **Cramfs...
嵌入式Linux中常用的基于存储设备的文件系统包括jffs2、yaffs、cramfs、romfs、ramdisk、ramfs/tmpfs等。这些文件系统考虑到存储设备的硬件特性和系统需求而设计。 8. JFFS2文件系统 JFFS2是一个日志闪存文件系统...
2. **挂载点切换**:创建一个可写的临时文件系统,如Ramfs或tmpfs,当需要写操作时,将读写操作重定向到这个临时文件系统,然后在适当的时候将这些变化同步回Cramfs。 3. **快照和更新机制**:定期或按需创建Cramfs...
不同的嵌入式系统文件系统类型...在嵌入式Linux应用中,主要的存储设备为 RAM(DRAM, SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。