<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          cramfs文件系統(tǒng)

          作者: 時(shí)間:2011-02-25 來(lái)源:網(wǎng)絡(luò) 收藏

          1、cramfs的特點(diǎn)

          的環(huán)境之下,內(nèi)存和外存資源都需要節(jié)約使用。如果使用RAMDISK方式來(lái)使用文件系統(tǒng),那么在系統(tǒng)運(yùn)行之后,首先要把外存(Flash)上的映像文件解壓縮到內(nèi)存中,構(gòu)造起RAMDISK環(huán)境,才可以開(kāi)始運(yùn)行程序。但是它也有很致命的弱點(diǎn)。在正常情況下,同樣的代碼不僅在外存中占據(jù)了空間(以壓縮后的形式存在),而且還在內(nèi)存中占用了更大的空間(以解壓縮之后的形式存在),這違背了環(huán)境下盡量節(jié)省資源的要求。

          使用cramfs就是一種解決這個(gè)問(wèn)題的方式。cramfs是一個(gè)壓縮式的文件系統(tǒng),它并不需要一次性地將文件系統(tǒng)中的所有內(nèi)容都解壓縮到內(nèi)存之中,而只是在系統(tǒng)需要訪問(wèn)某個(gè)位置的數(shù)據(jù)的時(shí)侯,馬上計(jì)算出該數(shù)據(jù)在cramfs中的位置,將其實(shí)時(shí)地解壓縮到內(nèi)存之中,然后通過(guò)對(duì)內(nèi)存的訪問(wèn)來(lái)獲取文件系統(tǒng)中需要讀取的數(shù)據(jù)。cramfs中的解壓縮以及解壓縮之后的內(nèi)存中數(shù)據(jù)存放位置都是由cramfs文件系統(tǒng)本身進(jìn)行維護(hù)的,用戶并不需要了解具體的實(shí)現(xiàn)過(guò)程,因此這種方式增強(qiáng)了透明度,對(duì)開(kāi)發(fā)人員來(lái)說(shuō),既方便,又節(jié)省了存儲(chǔ)空間。

          cramfs擁有以下一些特性:

          采用實(shí)時(shí)解壓縮方式,但解壓縮的時(shí)侯有延遲。

          cramfs的數(shù)據(jù)都是經(jīng)過(guò)處理、打包的,對(duì)其進(jìn)先寫操作有一定困難。所以cramfs不支持寫操作,這個(gè)特性剛好適合應(yīng)用中使用Flash存儲(chǔ)文件系統(tǒng)的場(chǎng)合。

          在cramfs中,文件最大不能超過(guò)16MB。

          支持組標(biāo)識(shí)(gid),但是mkcramfs只將gid的低8位保存下來(lái),因此只有這8位是有效的。

          支持硬鏈接。但是cramfs并沒(méi)有完全處理好,硬鏈接的文件屬性中,鏈接數(shù)仍然為1.

          cramfs的目錄中,沒(méi)有“.”和“..”這兩項(xiàng)。因此,cramfs中的目錄的鏈接數(shù)通常也僅有一個(gè)。

          cramfs中,不會(huì)保存文件的時(shí)間戳(timestamps)信息。當(dāng)然,正在使用的文件由于inode保存在內(nèi)存中,因此其時(shí)間可以暫時(shí)地變更為最新時(shí)間,但是不會(huì)保存到cramfs文件系統(tǒng)中去。

          當(dāng)前版本的cramfs只支持PAGE_CACHE_SIZE為4096的內(nèi)核。因此,如果發(fā)現(xiàn)cramfs不能正常讀寫的時(shí)侯,可以檢查一下內(nèi)核的參數(shù)設(shè)置。


          2、使用cramfs

          可以從http://sourceforge.net/projects/cramfs/下載cramfs-1.1.tar.gz。然后執(zhí)行

          tar zxvf cramfs-1.1.tar.gz

          進(jìn)入解包之后生成cramfs-1.1目錄,執(zhí)行編譯命令:

          make

          編譯完成之后,會(huì)生成mkcramfs和cramfsck兩個(gè)工具,其中cramfsck工具是用來(lái)創(chuàng)建cramfs文件系統(tǒng)的,而mkcramfs工具則用來(lái)進(jìn)行cramfs文件系統(tǒng)的釋放以及檢查。

          下面是mkcramfs的命令格式:

          mkcramfs [-h] [-e edition] [-i file] [-n name] dirname outfile

          mkcramfs的各個(gè)參數(shù)解釋如下:

          -h:顯示幫助信息

          -e edition:設(shè)置生成的文件系統(tǒng)中的版本號(hào)

          -i file:將一個(gè)文件映像插入這個(gè)文件系統(tǒng)之中(只能在Linux2.4.0以后的內(nèi)核版本中使用)

          -n name:設(shè)定cramfs文件系統(tǒng)的名字

          dirname:指明需要被壓縮的整個(gè)目錄樹(shù)

          outfile:最終輸出的文件


          cramfsck的命令格式:

          cramfsck [-hv] [-x dir] file

          cramfsck的各個(gè)參數(shù)解釋如下:

          -h:顯示幫助信息

          -x dir:釋放文件到dir所指出的目錄中

          -v:輸出信息更加詳細(xì)

          file:希望測(cè)試的目標(biāo)文件


          本段摘自于:《Linux與》,這本書(shū)由李善平 劉文峰 王煥龍等編著。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();