Answers:
您可以在.config
文件中设置两个内核配置选项:
CONFIG_BLK_DEV_RAM_COUNT=1
CONFIG_BLK_DEV_RAM_SIZE=10485760
这将我的内核配置为在启动时创建一个10G的虚拟磁盘。
笔记:
CONFIG_BLK_DEV_RAM_SIZE
以KB为单位。menuconfig
“设备驱动程序”->“阻止设备”下。您可以通过kernel boot参数指定创建的ram磁盘的大小ramdisk_size
。例如:
kernel /vmlinuz-2.6.32.24 ro root=LABEL=/ rhgb quiet ramdisk_size=10485760
现在,我可以引导我的机器并在其上创建文件系统,挂载并像块设备一样使用它。
# mkfs.xfs /dev/ram0
# mount /dev/ram0 /mnt/ramdisk
资料来源:
您应该改为使用tmpfs。
mount -t tmpfs -o size=10g none /mnt/point
另一个选择是使用循环设备(与前面提到的mount的loobpack功能相反):
dd if=dev/zero of=myfs.img bs=1M count=1024
losetup /dev/loop0 myfs.img
mkfs.xfs /dev/loop0
现在,/ dev / loop是一个合法的块设备,您的应用程序将像物理设备或虚拟磁盘一样对它进行操作,只不过它是文件支持的。您可以在某个位置挂载,也可以让应用对基于标准块ioctl的设备节点进行操作。节省您的系统内存,对于保留测试用例等有用。
(您甚至可以fdisk myfs.img,在其上创建分区,并使用--offset和--sizelimit与lostup一起将每个/ dev / loopX指向映像中的特定分区,因此loop0,loop1就像sdc1,sdc2等。 )
ramdrive的目标是速度。Tmpfs不是驱动器。循环设备不是驱动器,但是您可以将驱动器映像放在循环设备上。Ram磁盘是“驱动器”,是非常快速的驱动器。尝试运行:
hdparm -t /dev/sda
然后:
hdparm -t /dev/ram0
您会明白我的意思!但是hdparm有时会破坏ram驱动器。因此,您必须重新制作一次。
有时没有/ dev / ram设备。做一个:
mknod -m 0777 /dev/ram0 b 1 0
但没有任何大小。赋予其大小:
dd if=/dev/zero of=/dev/ram0
当驱动器已满时它将停止。最大大小由内核配置参数:决定CONFIG_BLK_DEV_RAM_SIZE
。
然后,将其格式化,即
mke2fs /dev/ram0
并安装它:
mount /dev/ram0 /mnt/ramdrive
我最喜欢的是调试存储在ramdrive中的代码。编译速度至少是存储在硬盘驱动器上的代码的10倍。存储在ramdrive中的数据库表也会运行,但是您必须具有一个可定期写入硬盘的脚本。大多数管理员没有勇气将数据放在ram磁盘上。而且有些桌子太大了。
在lighthouse 64(基于slackware的Puupy Linux)上,我做到了;
mke2fs /dev/ram1 4096000 # nearly 4G ramdisk, choose the size of ramdisk less than actual ram!
mount /dev/ram1 /mnt/dvd # dvd on my laptop is unused choose your device from /mnt/
在那里,您将ramdisk挂载为目录/mnt/dvd
,您可以在其中复制粘贴,保存所有操作,就像在ram目录中的hd目录中一样。记得在关机之前将文件保存到hd。