linux下内存虚拟硬盘的实现方法分享

发布时间:2020-02-25编辑:脚本学堂
本文介绍下,在linux系统中将部分内存空间模拟成硬盘分区的方法,有需要的朋友参考下。

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

二、ramdisk应用
查看当前系统的ramdisk:
 

复制代码 代码示例:
[root@jbxue ~]# 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的应用实例。

1,格式化/dev/ram0
 

复制代码 代码示例:
mkfs -t ext2 /dev/ram0

2,挂载/dev/ram0 到/tmp/ramdisk0
 

复制代码 代码示例:
mkdir /tmp/ramdisk0
linuxjishu/9952.html target=_blank class=infotextkey>mount /dev/ram0 /tmp/ramdisk0

3,查看当前挂载的情况
 

复制代码 代码示例:
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@jbxue mnt]# mount -t tmpfs -o size=100Gtmpfs /mnt/userdate/
[root@jbxue 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@jbxue ~]# 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
 

有知道这个错误的原因与解决方法的朋友,望分享下。