提升磁盘性能瓶颈
linux的内存文件系统:ramdisk,ramfs,tmpfs
ramdisk:
是块设备,在使用它们之前必须用选择文件系统将其格式化。并且调整文件系统大小比较麻烦,
需要修改内核引导参数并重新启动操作系统,在我们的应用中,需要 7X24不间断运行的系统
来说,并不是一个可以接受的选择
ramfs:
Ramfs是内存文件系统,他工作于虚拟文档系统(VFS)层。不用格式化,直接mount使用,能够创建多个,
在创建时能够指定其最大能使用的物理内存大小。
[root@localhost current]# df -haT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
ext3 7.7G 6.6G 724M 91% /
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
devpts devpts 0 0 0 - /dev/pts
/dev/sda1 ext3 99M 13M 82M 14% /boot
/tmpfs tmpfs 502M 0 502M 0% /dev/shm
none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs
my_tmpfs tmpfs 1.2G 1.2G 11M 100% /tmpfs
my_tmpfs tmpfs 1.2G 1.2G 11M 100% /tmpfs
ram_tmpfs tmpfs 1.2G 0 1.2G 0% /ram1
[root@localhost current]# mount -t ramfs my_ramfs /ramfs -o maxsize=100m
[root@localhost current]# df -haT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
ext3 7.7G 6.6G 724M 91% /
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
devpts devpts 0 0 0 - /dev/pts
/dev/sda1 ext3 99M 13M 82M 14% /boot
/tmpfs tmpfs 502M 0 502M 0% /dev/shm
none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs
my_tmpfs tmpfs 1.2G 1.2G 11M 100% /tmpfs
my_tmpfs tmpfs 1.2G 1.2G 11M 100% /tmpfs
ram_tmpfs tmpfs 1.2G 0 1.2G 0% /ram1
my_ramfs ramfs 0 0 0 - /ramfs
[root@localhost current]#
tmpfs:
Tmpfs是个虚拟内存文档系统,他不同于传统的用块设备形式来实现的ramdisk,也不同于针对物理内存的Ramfs。
Tmpfs能够使用物理内存,也能够使用交换分区。在Linux内核中,虚拟内存资源由物理内存(RAM)和交换分区组成,
这些资源是由内核中的虚拟内存子系统来(VM)负责分配和管理。Tmpfs就是和虚拟内存子系统来"打交道"的,他向
虚拟内存子系统请求页来存储文档,他同Linux的其他请求页的部分相同,不知道分配给自己的页是在内存中还是
在交换分区中。Tmpfs同Ramfs相同,其大小也不是固定的,而是随着所需要的空间而动态的增减。
tmpfs和ramfs不同
1.ramfs是内存文件系统,只使用物理内存;tmpfs是虚拟内存文件系统,使用物理内存和交换分区
2.在进程占用内存较多,因为tmpfs根据vm的调度策略会使用交换分区,所以tmpfs的性能可能会低于ramfs,但tmpfs也为其他程序节省了物理内存
经过以上的测试发现,在我们实际应用场景中,我们只能用tmpfs和ramfs,而为了充分利用宝贵的内存资源,增大内存文件系统,建议使用tmpfs
创建测试:
[root@localhost current]# df -hTa
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
ext3 7.7G 6.6G 724M 91% /
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
devpts devpts 0 0 0 - /dev/pts
/dev/sda1 ext3 99M 13M 82M 14% /boot
/tmpfs tmpfs 502M 0 502M 0% /dev/shm
none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs
my_ramfs ramfs 0 0 0 - /ramfs
/tmpfs tmpfs 502M 0 502M 0% /dev/shm
my_ramfs ramfs 0 0 0 - /ramfs
[root@localhost current]# mount -t tmpfs my_tmpfs /tmpfs -o size=100m
[root@localhost current]# df -hTa
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
ext3 7.7G 6.6G 724M 91% /
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
devpts devpts 0 0 0 - /dev/pts
/dev/sda1 ext3 99M 13M 82M 14% /boot
/tmpfs tmpfs 502M 0 502M 0% /dev/shm
none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs
my_ramfs ramfs 0 0 0 - /ramfs
/tmpfs tmpfs 502M 0 502M 0% /dev/shm
my_ramfs ramfs 0 0 0 - /ramfs
my_tmpfs tmpfs 100M 0 100M 0% /tmpfs
[root@localhost current]#
内存文件系统使用场景:
tmpfs和ramfs内存文件系统的特点是速度快,重启数据丢失等特点,所以其中常用存储非重要,中间计算,较少对磁盘的直接访问;
内存文件系统不要设置过大,避免占用内存太多,使系统整体系统下降或宕机。
-----------------end---------------