熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

使用 RAM 作為虛擬硬盤

2013-11-13 22:16:44  來源: Oracle 

  RamDisk簡介
  這是一個關於在RedHat 系統上如何建立一個RamDisk的文章對於其他的發行版本這個過程也應該是相識的
  
  什麼是RamDisk? 一個A RamDisk 是你用作一個硬盤分區的一部分內存空間或者換句話說你是把內存假設為一個硬盤驅動器並且你在它的上面存儲文件為什麼我們要使用 RamDisk? 好的如果你知道通常將要使用的文件是被調入內存以提高計算機的性能因為內存的存儲速度要快於硬盤 這樣類似於web服務器上的數據就可以用這個方法提高訪問速度或是有點愚蠢的假如你有一台PII計算機並且有G的內存空間和M的硬盤你也可以用這種方法來增加你的你的硬盤空間 或者你也可以做一個無盤的機器沒有比這個更為瘋狂的了
  
  以下是一些可以得到幫助的資源
  
  
  
  /usr/src/linux/Documentation/ramdisktxt
  
  如何使用RamDisk
  OK使用ramdisk是一件很簡單的事首先RedHat的默認安裝就支持ramdisk你所需要做的就是格式化一個ramdisk並且把他家在到一個目錄上列出所有可用的ramdisk用ls al /dev/ram*這就會列出你現有可用的ramdisk這些ramdisk並不搶奪內存除非進行格式化的一類操作這裡有一個使用ramdisk的例子
  
  # create a mount point:
  mkdir /tmp/ramdisk
  # create a filesystem:
  mkefs /dev/ram
  # mount the ramdisk:
  mount /dev/ram /tmp/ramdisk
  
  這三個命令將為ramdisk創建一個目錄格式化ramdisk(創建文件系統)並且加載這個ramdisk到/tmp/ramdisk 現在你可以將這個目錄看成一個虛擬的分區使用它就象使用其它的目錄一樣
  如果對ramdisk的格式化失敗那就是你的內核不支持ramdisk其內核配置選項是 CONFIG_BLK_DEV_RAM
  
  ramdisk的默認大小是 Mb= blocks 在你進行mkefs的時候你可以看到你的ramdisk的大小mkefs /dev/ram 將產生類適於以下的信息
  
  mkefs Jan for EXT FS b //
  Linux ext filesystem format
  Filesystem label=
   inodes blocks
   blocks (%) reserved for the super user
  First data block=
  Block size= (log=)
  Fragment size= (log=)
   block group
   blocks per group fragments per group
   inodes per group
  
  執行df k /dev/ram 你實際用了多少空間
  
  >df k /dev/ram
  Filesystem kblocks Used Available Use% Mounted on
  /dev/ram % /tmp/ramdisk
  
  那麼麻煩是什麼呢?在系統重新啟動的時候將刷新這個區域不要將任何沒有拷貝的數據放在這個區域如果你對這個目錄進行了修改並且需要保留這些修改采取一些辦法進行備份
  
  改變 ramdisks 的大小
  要想使用ramdisk你必須或是得到內核的支持或是以模塊的形式將他加載到系統中其中內核的配置選項是 CONFIG_BLK_DEV_RAM 把ramdisk編譯成一個可加載的模塊的好處是你可以在加載是重新確定ramdisk的大小
  
  Okay 第一個辦法在nf文件中加入這一行
  ramdisk_size= (or ramdisk= for old kernels)
  這樣在你使用lilo命令和重新啟動計算機之後ramdisk的默認大小將會是M這是一個/etc/nf文件的例子
  
  boot=/dev/hda
  map=/boot/map
  install=/boot/bootb
  prompt
  timeout=
  image=/boot/vmlinuz
  label=linux
  root=/dev/hda
  readonly
  ramdisk_size=
  
  確切的說我只是使用了M多的空間文件系統也將占用一定空間
  
  當你以模塊的形式編譯ramdisk時你可以在加載的時候決定ramdisk的大小這也可以通過修改/etc/confmodules 的選項設置來做到
  
  options rd rd_size=
  
  或是在命令行中指定參數給ismod
  
  insmod rd rd_size=
  
  以下是介紹如何使用這樣的模塊的例子
  
  卸載ramdiskumount /tmp/ramdisk
  卸載模塊(再上一節所提到的過程中自動加載) rmmod rd
  加載ramdisk模塊並且把它的大校設為Minsmod rd rd_size=
  創建一個文件系統 mkefs /dev/ram
  加載ramdisk mount /dev/ram /tmp/ramdisk
  
  使用 RamDisk 做 webserver例子
  Okay 這是一個用個ramdisk做webserver的例子讓我們設想你在 RedHat 上默認安裝的 Apache 的cgiscripts html 和 icons都不超過M這就是如何實現這一點
  首先利用命令將webserver的跟目錄移到另外一個地方並且加載ramdisk
  
  mv /home/httpd/ /home/httpd_real
  mkdir /home/httpd
  mkdir /home/httpd/cgibin
  mkdir /home/httpd/html
  mkdir /home/httpd/icons
  
  接下來將這些命令加到啟動進程中/etc/rcd/initd/(或者是系統啟動httpd的地方):
  
  ### Make the ramdisk partitions
  /sbin/mkfs t ext /dev/ram
  /sbin/mkfs t ext /dev/ram
  /sbin/mkfs t ext /dev/ram
  
  ### Mount the ramdisks to their appropriate places
  
  mount /dev/ram /home/httpd/cgibin
  mount /dev/ram /home/httpd/icons
  mount /dev/ram /home/httpd/html
  
  ### Copying real directory to ramdisks (the
  ### data on the ramdisks is lost after a reboot)
  tar C /home/| tar C /home/httpd x
  
  ### After this you can start the webserver
  
  注釋
  請記住一件事如果你改變了數據備份你的數據在系統重新啟動時所有的變化將失去
  應該設置一個cron進程使它每十分鐘時檢查一下文件是否有變動並且備份這些改動另一種可能是你對真實的目錄進行了改動所以要拷貝這些變動到ramdisk這樣做也許更安全
  一個非常酷的做法是用一個有G內存的計算機並且將其中的M作為/tmp 如果你有很多的進程使用/tmp這樣做會提高你的系統速度同時/tmp目錄中的東西將在系統重新啟動的時候被刪除這可是一件好事
  Linux使用所有沒有被程序使用的內存作為一個緩存但我的經歷告訴我ramdisk將會更多的提高速度
  

From:http://tw.wingwit.com/Article/program/Oracle/201311/18666.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.