Alex的博客

由于博客程序改版,且org域名无法备案。 故此博客不再更新,以转为新 站博文家。 https://www.32e.top



linux 内存虚拟硬盘

ramdisk

一、概念

ramdisk就是指使用一部分内存空间来模拟硬盘分区,也就是说ramdisk是一个块设备,要用mkfs格式化,才能真正使用它.

.ramdisk在内核2.0/2.2版本就已经支持.
.ramdisk设备是它不允许重新声明它的内存空间,所以ramdisk块通常会一直占用空间的内存直到系统重启.
.ramdisk的一个缺点是在它上面创建一个文件系统,它同时会消耗缓冲区高速缓存和文件系统缓存,理论上,它可以消耗一个磁盘文件的两倍随机内存.
.ramdisk的另一个缺点是它大小固定,之后不能改变
.现在大多数需要RAM临时存储的应用程序会使用tmpfs文件系统而不是ramdisk设备.


二、ramdisk的应用

查看当前系统的ramdisk

[root@localhost ~]# ll /dev/ram*

lrwxrwxrwx 1 root root     4 Sep 26 10:06 /dev/ram -> ram1

brw-r----- 1 root disk 1,  0 Sep 26 10:05 /dev/ram0

brw-r----- 1 root disk 1,  1 Sep 26 10:05 /dev/ram1

brw-r----- 1 root disk 1, 10 Sep 26 10:05/dev/ram10

brw-r----- 1 root disk 1, 11 Sep 26 10:05/dev/ram11

brw-r----- 1 root disk 1, 12 Sep 26 10:05/dev/ram12

brw-r----- 1 root disk 1, 13 Sep 26 10:05/dev/ram13

brw-r----- 1 root disk 1, 14 Sep 26 10:05/dev/ram14

brw-r----- 1 root disk 1, 15 Sep 26 10:05/dev/ram15

brw-r----- 1 root disk 1,  2 Sep 26 10:05 /dev/ram2

brw-r----- 1 root disk 1,  3 Sep 26 10:05 /dev/ram3

brw-r----- 1 root disk 1,  4 Sep 26 10:05 /dev/ram4

brw-r----- 1 root disk 1,  5 Sep 26 10:05 /dev/ram5

brw-r----- 1 root disk 1,  6 Sep 26 10:05 /dev/ram6

brw-r----- 1 root disk 1,  7 Sep 26 10:05 /dev/ram7

brw-r----- 1 root disk 1,  8 Sep 26 10:05 /dev/ram8

brw-r----- 1 root disk 1,  9 Sep 26 10:05 /dev/ram9

lrwxrwxrwx 1 root root     4 Sep 26 10:06 /dev/ramdisk -> ram0

 

ramdisk的应用实例

l  格式化/dev/ram0
mkfs -t ext2 /dev/ram0

l  挂载/dev/ram0 到/tmp/ramdisk0
mkdir /tmp/ramdisk0
mount /dev/ram0 /tmp/ramdisk0

l  查看当前挂载的情况
df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda1             19G  3.1G   15G  18% /
tmpfs                252M     0  252M   0% /dev/shm
/dev/ram0             16M   24K   15M   1% /tmp/ramdisk0

 

tmpfs

一概念:

tmpfs是一种基于内存的文件系统,也可以使用swap分区来存储.tmpfs是一个文件系统,并不是块设备,只要安装它,就可以使用了.

.tmpfs在存储时不需要块设备.
.tmpfs文件系统的数据完全存放在文件系统的缓存中.也可以是交换存储.
.可以在得到高速RAM硬盘优势的同时还享有虚拟内存的灵活性.
.tmpfs基本上是所有版本中共享内存设备/dev/shm的默认文件系统.
.在Linux内核中,虚拟内存资源由物理内存和交换分区组成,tmpfs向虚拟内存子系统请求页来存储文件,它同其它请求页的部分一样,不知道分配给自己的是物理内存还是交换分区存储.

 

利用tmpfs来提高磁盘的读写

新建/mnt/userdate目录,并通过tmpfs挂载到/mnt/userdate目录.

mkdir /mnt/userdate

[root@localhost mnt]# mount -t tmpfs -o size=100Gtmpfs /mnt/userdate/

[root@localhost mnt]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/cciss/c0d1p1     434G 4.6G  407G   2% /

/dev/cciss/c0d0p6     840G 230G  567G  29% /u01

/dev/cciss/c0d0p5     876G  36G  796G   5% /opt

/dev/cciss/c0d0p3      74G 183M   70G   1% /tmp

/dev/cciss/c0d0p1     380M  17M  344M   5% /boot

tmpfs                 127G     0 127G   0% /dev/shm

tmpfs                 100G     0 100G   0% /mnt/userdate

 

使用dd命令来测试磁盘数据总是报错,原因还没有找到,呵呵

[root@localhost ~]# time dd oflag=direct if=/dev/zero of=/mnt/userdate/testfile bs=2M count=1000
dd: opening `/mnt/userdate/testfile': Invalid argument

real    0m0.002s
user    0m0.001s

sys     0m0.001s

 

 

 

http://blog.csdn.net/gltyi99/article/details/6740864

 

 

 

 

 

 tmpfs的用途

     由于tmpfs使用的是VM,因此它比硬盘的速度肯定要快,因此我们可以利用这个优点使用它来提升机器的性能。 

     #mount -t tmpfs  -o size=2m   tmpfs /tmp

     上面这条命令分配了最大2m的VM给/tmp。   

      由于/tmp目录是放临时文件的地方,因此我们可以使用tmpfs来加快速度,由于没有挂载之前/tmp目录下的文件也许正在被使用,因此挂载之后系统也许有的程序不能正常工作。没有关系,只要在/etc/fstab里面加上下面的语句 

     tmpfs    /tmp      tmpfs  size=2m    0   0

重启电脑之后就一切OK了。

浏览8830  评论0  Alex于 2012-1-18 19:45
发言