論壇目錄 / 個人電腦 / 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, 重新啟動後, 可裝載模塊, 創建文件系統, ramdisk_size, label, insmod, inodes, icons, httpd_real, block
    00
    2009-01-10T15:34:25+0000
    ???補充另一篇

    Linux RamDisk Mini HowTo

    00
    2009-01-10T18:37:30+0000


    • 當您未登入羊皮紙時,可以利用臉書 Facebook 登入來發表迴響。若使用羊皮紙會員身份發表迴響則可獲得經驗值及虛擬金幣,用來參加羊皮紙推出的活動。
    發表迴響
     
    驗證字串
    留言