天天看點

[轉]Linux中ramdisk,tmpfs,ramfs比較與說明

鋒影

email:[email protected]

如果你認為本系列文章對你有所幫助,請大家有錢的捧個錢場,點選此處贊助,贊助額0.1元起步,多少随意

mount是Linux下的一個指令,它可以将分區挂接到Linux的一個檔案夾下,進而将分區和該目錄聯系起來,是以我們隻要通路這個檔案夾,就相當于通路該分區了。目前mount已經不僅僅局限于Linux了。在Windows系統下的應用也越來越廣了,多用在虛拟光驅類軟體上,比如Clone CD,Daemon tool,WinMount等

   RamDisk有三種實作方式:在Linux中可以将一部分記憶體mount為分區來使用,通常稱之為RamDisk,分為:Ramdisk, ramfs, tmpfs.

①第一種就是傳統意義上的,可以格式化,然後加載。

這在Linux核心2.0/2.2就已經支援,其不足之處是大小固定,之後不能改變。為了能夠使用Ramdisk,我們在編譯核心時須将block device中的Ramdisk支援選上,它下面還有兩個選項,一個是設定Ramdisk的大小,預設是4096k;另一個是initrd的支援。

如果對Ramdisk的支援已經編譯進核心,我們就可以使用它了:

首先檢視一下可用的RamDisk,使用ls /dev/ram*

首先建立一個目錄,比如test,運作mkdir /mnt/test;

然後對/dev/ram0 建立檔案系統,運作mke2fs /dev/ram0;

最後挂載 /dev/ram0,運作mount /dev/ram /mnt/test,就可以象對普通硬碟一樣對它進行操作了。

 裝載後寫入速度在700M/S-800M/S之間,如果umount再加載,隻要不重新開機linux,那檔案依然會儲存在/dev/ramX中。

②另兩種則是核心2.4才支援的,通過Ramfs或者Tmpfs來實作:

它們不需經過格式化,用起來靈活,其大小随所需要的空間而增加或減少。Ramfs顧名思義是記憶體檔案系統,它處于虛拟檔案系統(VFS)層,而不像ramdisk那樣基于虛拟在記憶體中的其他檔案系統(ex2fs)。因而,它無需格式化,可以建立多個,隻要記憶體足夠,在建立時可以指定其最大能使用的記憶體大小。如果你的Linux已經将Ramfs編譯進核心,你就可以很容易地使用Ramfs了。建立一個目錄,加載Ramfs到該目錄即可:

viewsourceprint?

1 # mkdir /testRam
2 # mount -t ramfs none /testRAM

預設情況下,Ramfs被限制最多可使用記憶體大小的一半。可以通過maxsize(以kbyte為機關)選項來改變。

viewsourceprint?

1 # mount -t ramfs none /testRAM -o maxsize=2000

 (建立了一個限定最大使用記憶體為2M的ramdisk)

寫入速度在900M/S-1100M/S之間,umount後再加載資料消失。

③ Tmpfs是一個虛拟記憶體檔案系統,它不同于傳統的用塊裝置形式來實作的Ramdisk,也不同于針對實體記憶體的Ramfs。Tmpfs可以使用實體記憶體,也可以使用交換分區。在Linux核心中,虛拟記憶體資源由實體記憶體(RAM)和交換分區組成,這些資源是由核心中的虛拟記憶體子系統來負責配置設定和管理。Tmpfs向虛拟記憶體子系統請求頁來存儲檔案,它同Linux的其它請求頁的部分一樣,不知道配置設定給自己的頁是在記憶體中還是在交換分區中。同Ramfs一樣,其大小也不是固定的,而是随着所需要的空間而動态的增減。使用tmpfs,首先你編譯核心時得選擇”虛拟記憶體檔案系統支援(Virtual memory filesystem support)” 。

然後就可以加載tmpfs檔案系統了:

viewsourceprint?

1 # mkdir -p /mnt/tmpfs
2 # mount tmpfs /mnt/tmpfs -t tmpfs

同樣可以在加載時指定tmpfs檔案系統大小的最大限制:

viewsourceprint?

1 # mount tmpfs /mnt/tmpfs -t tmpfs -o size=32m

 寫入速度在1.2G/S-1.3G/S,umount後再加載資料消失。

繼續閱讀