羊皮纸 服务
       
       
      分享
       
      羊皮纸论坛

      羊皮纸论坛

      分享让知识传播,阅读让心灵成长, 创作让文化传承,让我们共同努力。
      • 禁止广告文
      • 知识传播
      • 阅读
      • 心灵成长
      • 创作
      • 文化传承
      羊皮纸论坛目录 / 个人电脑 / Linux 讨论版 /

      Linux 下创建和使用 RamDisk 的技巧

      发表新主题
      随机主题
      上个主题
      下个主题
      |
      Linux 下创建和使用 RamDisk 的技巧

      Linux下创建和使用RamDisk的技巧

      先介绍一下什麽是RamDisk。RamDisk实际是从记忆体中划出一部分作为一个分区使用,换句话说,就是把记忆体一部分当做硬碟使用,你可以向里边存文件。

      那麽为什麽要用RamDisk呢?假设有几个文件要频繁的使用,你如果将它们加到记忆体当中,程序运行速度会大副提高,因为记忆体的读写速度远高於硬碟。况且记忆体价格低廉,一台PC有 128M 或 256M 已不是什麽新鲜事。划出部分记忆体提高整体性能不亚於更换新的 CPU。何乐而不为呢?象 WEB 伺服器这样的计算机,需要大量的读取和交换特定的文件,因此,在 WEB 伺服器上建立 RamDisk 会大大提高网络读取速度。

      1. 创建和使用 RamDisk 的方法。

      使用 RamDisk 非常方便,预设安装的 RedHat 6.0 就支持 RamDisk。你所要作的就是格式化 RamDisk 并把它装载到一个目录下。要想查看 RamDisk 的数目,用命令 "ls -al /dev/ram*",它会给出所有当前情况下可用的 RamDisk 。这些 RamDisk 只有使用的时候才占用记忆体。下面是使用 RamDisk 的几个命令∶

      #创建装载点
      mkdir /tmp/ramdisk0

      # 创建一个文件系统
      mke2fs /dev/ram0

      #装载ramdisk:
      mount /dev/ram0 /tmp/ramdisk0

      这三个命令将会为 RamDisk 创建一个目录、格式化 RamDisk(创建文件系统)并把 RamDisk 装载到目录 "/tmp/ramdisk0" 中。现在,你就可以把它作为一个磁盘分区使用了。

      如果格式化 RamDisk 失败,可能是因为你没有把对 RamDisk 的支持编译进内核中去。内核中对 RamDisk 的配置选项是 CONFIG_BLK_DEV_RAM。

      预设的 RamDisk 为 4M。使用 mke2fs 命令可以查知你所获 RamDisk 的大小。命令 mke2fs /dev/ram0 会产生以下信息∶

      mke2fs 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09
      Linux ext2 filesystem format
      Filesystem label=
      1024 inodes, 4096 blocks
      204 blocks (4.98%) reserved for the super user
      First data block=1
      Block size=1024 (log=0)
      Fragment size=1024 (log=0)
      1 block group
      8192 blocks per group, 8192 fragments per group
      1024 inodes per group

      使用命令 df -k /dev/ram0 可以查到你实际能用的 RamDisk 的大小(文件系统也占用一定空间)∶
      >df -k /dev/ram0
      Filesystem 1k-blocks Used Available Use% Mounted on /dev/ram0 3963 13 3746 0% /tmp/ramdisk0

      不过要记住,RamDisk中 的数会在机器重新启动後消失,因此应把其中有用的数及时备份到硬碟中。

      2. 改变RamDisk大小的技巧?

      为使用 RamDisk,你或者要将对 RamDisk 的支持编译到内核中去,或者把它编译为一个可装载模块。编译为一个可装载模块有一个好处,就是可以在装载时任意指定 RamDisk 的大小。

      把下面这一行加到你的 lilo.conf  文件中去:
      ramdisk_size=10000 (或对老内核写作 ramdisk=10000)

      这样你键入 LILO 命令并重新启动後,预设的 RamDisk 的大小将为10M,下面是我的 /etc/lilo.conf 文件∶
      boot=/dev/hda
      map=/boot/map
      install=/boot/boot.b
      prompt
      timeout=50
      image=/boot/vmlinuz
      label=linux
      root=/dev/hda2
      read-only
      ramdisk_size=10000

      实际上,我只获得了 9M 多一点的 RamDisk,其馀被文件系统占用。当你编译为一个可装载模块後,你可以在模块装载时决定 RamDisk 的大小,这可以通过 /etc/conf 中的选项设置来设定。或者通过作为 ismod 命令行参数来实现。

      options rd rd_size=10000
      insmod rd rd_size=10000

      下面是使用模块的例子∶

      1. 卸载下上一章装载的RamDisk, umount /tmp/ramdisk0.
      2. 卸载模块rmmod rd。
      3. 装载RamDisk模块并设置大小为20M,insmod rd rd_size=20000。
      4. 创建文件系统,mke2fs /dev/ram0。
      5. 装载RamDisk ,mke2fs /dev/ram0。

      3. 在WEB伺服器上使用RamDisk的实例?

      本例介绍在 WEB 伺服器上使用 3 个 RamDisk 的方法。所用的 WEB 伺服器是 RedHat 6.0 自带的 Apache。首先,把WEB根目录中所有文件移到其它目录中,然後创建 RamDisk 的装载点∶

      mv /home/httpd/ /home/httpd_real
      mkdir /home/httpd
      mkdir /home/httpd/cgi-bin
      mkdir /home/httpd/html
      mkdir /home/httpd/icons

      然後,把以下命令加到你的/etc/rc.d/init.d/httpd.init文件中去∶

      ### 创建 3 个 RamDisk
      /sbin/mkfs -t ext2 /dev/ram0
      /sbin/mkfs -t ext2 /dev/ram1
      /sbin/mkfs -t ext2 /dev/ram2

      ### 加载 RamDisk 到开始创建的目录中
      mount /dev/ram0 /home/httpd/cgi-bin
      mount /dev/ram1 /home/httpd/icons
      mount /dev/ram2 /home/httpd/html

      ### 拷贝真正的目录中的所用文件到 RamDisk 中
      tar -C /home/httpd_real -c . | tar -C /home/httpd -x

      最後,重新启动 WEB 伺服器即可生效,试一下速度是否有所改变。

      後语∶

      1. 一定要记住保存 RamDisk 中有用的东西,否则,重新启动後将化为乌有。你可以用 cron 设定一个计划,每隔10分锺扫描一下 RamDisk 中的文件是否发生变化,如有,拷贝到硬碟中,这会比较安全。

      2.最酷的应用是如果你有 1G 的记忆体,划出 256M 来作为暂存区 /tmp,如果很多程序用到 /tmp,那麽你的系统性能会大大提高,而且重新启动後垃圾消失,真是一举两得。

      来源∶Linux发现网

      • 关键字 : RamDisk, httpd, 使用, mke2fs, ramdisk0, mkdir, 10000, 大小, mount, group, blocks, 格式化, 文件, 创建, 下面, rd_size, 预设, 目录中, 方法, 技巧
      0 0
      2009-01-10T15:34:25+0000
      2009-01-10T18:37:30+0000


      • 当您未登入羊皮纸时,可以利用脸书 Facebook 登入来发表回响。若使用羊皮纸会员身份发表回响则可获得经验值及虚拟金币,用来参加羊皮纸推出的活动。
      发表回响
       
      验证字串

      Facebook 粉丝专页

      QRCode 条码 & APP 连结

      说明
      本页网址

      在相关服务标签中,『扫描条码,在行动装置』或是『点击连结按钮,在本装置』中开启网页或是 APP 相关操作。
      QRCode