《笨兔兔的故事》之文件系统部分读书心得
最近看了一本電子書,書名叫《笨兔兔的故事》,乍一聽書名,是不是以為是童話故事書?實際上它是一本介紹linux系統(tǒng)的技術(shù)書籍,作者通過趣味幽默的筆觸,把很多乏味難讀的技術(shù)文章,通過笨兔兔這個小動物以第一人稱生動表達,非常適合初學(xué)者,或者即使有經(jīng)驗的同事把它當(dāng)趣味小說也能串聯(lián)復(fù)習(xí)到不少知識,歡迎各位同事下載閱讀,希望你能在這本書中有所收獲!(此處不可以上傳PDF附件,可以自行下載,地址http://xiaoxing.b0.upaiyun.com/2013/04/story.pdf)。
?
此文檔以Ubuntu8.04(即是作者起名為“笨兔”)系統(tǒng)為例,先后介紹了系統(tǒng)的安裝過程,安裝后的配置,常用影音軟件、辦公軟件的介紹,介紹wine和虛擬機VBox,Ubuntu下的程序開發(fā)軟件的使用方法,shell的介紹等等。本書介紹內(nèi)容很多,我只針對磁盤文件系統(tǒng)這部分總結(jié)(知識分享負(fù)責(zé)的部分),以下兩段是摘錄。
———————————————————————————————————-
Windows只會兩種文件系統(tǒng)——換句話說,只會用兩種方式規(guī)劃整個屋子的空間,那就是FAT32和NTFS。FAT32是一種很老舊的格式了,連 4G 以上的文件都不支持,性能也不好,還不支持多用戶的權(quán)限,所以基本不怎么用了。這個查皮也是,沒有用FAT32,而是用了另一個比較高級的格式——NTFS。那么,我就必須能夠讀懂 NTFS 格式的磁盤,我才能去查皮那里串門。要說以前,我們Linux是不太能讀懂NTFS格式的磁盤的,畢竟是微軟私有的格式,我的前輩們基本上只能勉強自從NTFS的磁盤上讀取東西,往里寫是不行的。不過自從Canonical學(xué)校為我們增加了一本ntfs-3g教材以后,讀寫NTFS就都不在話下了。不過雖然能夠讀懂,但是我自己是不會用這個文件系統(tǒng)的,我會用很多其他的文件格式,比如ext2,ext3,xfs,jfs,reiserfs,ufs,zfs 等等,各有優(yōu)勢,我現(xiàn)在的屋里使用的是非常強大的xfs格式,至于怎么強大,以后慢慢細(xì)聊,現(xiàn)在,我要走了,去串門。
文件系統(tǒng)就是我們管理整個硬盤這間屋子的方式,這個以前跟大家說過了。文件系統(tǒng)有很多種,過去的文件系統(tǒng)都是非日志文件系統(tǒng),這種文件系統(tǒng)比較落后。比如EXT2,比如查皮那的FAT。非日志文件系統(tǒng)在發(fā)生意外斷電的時候就容易出問題。就像今天的情況,如果我這屋子用的是ext2的話,沒準(zhǔn)就丟個文件阿什么的,搞不好整個分區(qū)都壞掉了。那用日志文件系統(tǒng)又怎么樣呢?日志文件系統(tǒng),顧名思義,就是有日志的文件系統(tǒng)(廢話)。還是拿上面那種情況舉例,OO 要存那文件,那我怎么做呢?我會在硬盤上一個專門的記錄日志的地方些下來:OO 要覆蓋 笨兔兔的故事.odt 文件。如果這個時候停電了,沒事,原來的那文件還好好的,但是內(nèi)存里的還是沒了,這條記錄也就作廢。記錄之后,我就開始把內(nèi)存里的東西往硬盤里放——放在記錄日志的地方,并不動原來的那個文件。如果放到一半停電了,那也沒關(guān)系,原來的文件還好好的。修改了的那份也有一部分放到了硬盤里,不過這是一部分的話,多半還是沒什么用。如果我把文件完全搬到了記錄日志的那部分硬盤里,那就再在剛才記錄的那條日志下面寫上:已經(jīng)把要覆蓋的內(nèi)容存到了日志去xxx位置,準(zhǔn)備替換原文件。如果這個時候停電,沒事,等再開機,我一查日志,就知道要修改的版本已經(jīng)完全存在了硬盤里,只要按著上面記錄的繼續(xù)做就行了。寫好日志之后,就開始用日志區(qū)的這個新文件去替換硬盤上那個原來的文件。這個過程會很快,因為其實并不需要真的搬運數(shù)據(jù),只要在原文件的地方做上標(biāo)記,表示這個文件已經(jīng)作廢,然后把那個 笨兔兔的故事.odt文件名指向新寫的這個文件就好了。(我們只是拿箱子比喻文件,但文件畢竟不是你家的箱子。)這樣,無論中間的哪個過程斷電,都不會完全損壞整個文件,要么原版還留著,要么修改后的版本已經(jīng)生效,通過查看日志就能知道現(xiàn)在哪個版本有效。這就是日志文件系統(tǒng)。
———————————————————————————————————-
總結(jié):
1.?介紹:
文件系統(tǒng):是一種存儲和組織計算機數(shù)據(jù)的方法,它使得對其訪問和查找變得容易,文件系統(tǒng)使用文件和樹形目錄的抽象邏輯概念代替了硬盤和光盤等物理設(shè)備使用數(shù)據(jù)塊的概念,是一套實現(xiàn)了數(shù)據(jù)的存儲、分級組織、訪問和獲取等操作的抽象數(shù)據(jù)類型。
Windows系統(tǒng)支持FAT32及NTFS文件系統(tǒng),Linux系統(tǒng)可以支持十多種文件系統(tǒng)類型:Btrfs、JFS、ReiserFS、ext、ext2、ext3、ext4、XFS、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。
想要知道你的linux支持的文件系統(tǒng)有哪些,可以查看下面的目錄:
ls –l /lib/modules/$(uname -r)/kernel/fs
查看系統(tǒng)目前已加載到內(nèi)存中支持的文件系統(tǒng):
cat /proc/filesystems
注意:部分Linux發(fā)行版默認(rèn)不支持NTFS文件系統(tǒng),解決方法是安裝ntfs-3g或ufsd等NTFS驅(qū)動程序。部分Linux發(fā)行版對NTFS的支持度并不高。
2.文件系統(tǒng)特性:
文件數(shù)據(jù)除了實際內(nèi)容外,通常還有很多的屬性。EXT2文件系統(tǒng)將文件的實際內(nèi)容放在數(shù)據(jù)塊中,將屬性放在i節(jié)點中。此外,還有超級塊用來記錄整個文件系統(tǒng)的整體信息。
超級塊(super block):記錄文件系統(tǒng)的整體信息,包括inode/block的總量、使用量、剩余量、以及文件系統(tǒng)的格式與相關(guān)信息。
i節(jié)點(inode):記錄文件的屬性,一個文件占用一個inode,同時記錄此文件的數(shù)據(jù)所在的block號碼。
數(shù)據(jù)塊(block):實際記錄文件的內(nèi)容,如果文件太大時,或占用多個block。
3.?常用命令:
3.1 dumpe2fs
功能:顯示ext2/ext3文件系統(tǒng)信息。
用法:dumpe2fs [ -bfhixV ] [ -ob superblock ] [ -oB blocksize ] device
-b 列出保留為壞道的部分。
-h 僅列出superblock的數(shù)據(jù),不會列出其他的區(qū)段內(nèi)容。
3.2 df
功能:顯示文件系統(tǒng)的整體磁盤使用情況。
用法:df [-ahikHTm] [目錄或文件名]
-a 列出所有的文件系統(tǒng),包括/proc等文件系統(tǒng)。
-K 以KB的形式顯示文件系統(tǒng)容量。
-m 以MB的形式顯示文件系統(tǒng)容量。
-h 以易讀的KB、MB、GB的實現(xiàn)顯示文件系統(tǒng)容量。
-H 以1M=1000K代替1M=1024K的進位方式。
-T 連同該分區(qū)的文件系統(tǒng)名稱(如ext3)也列出來。
-i 不以硬盤容量,而以inode的數(shù)量顯示出來。
3.3 du
功能:評估文件或目錄的容量。
用法:du [-ahskm] 文件或目錄
-a 列出所有的文件和目錄的容量。
-h 以人們易讀的KB、MB、GB的形式顯示容量。
-s 僅列出總量。
-S 列出不包括子目錄的總量。
-k? 以KB顯示容量。
-m 以MB顯示容量。
–exlude 排除某個目錄或文件
–max-depth 深入到第幾階目錄。
3.4 ln
Linux下的鏈接文件有兩種:
軟連接:類似于windows下的快捷方式。
硬鏈接:在某個目錄下,產(chǎn)生一個新文件名,該文件名對應(yīng)一個已存在的inode,并不產(chǎn)生一個新的文件。
3.5 fdisk
功能:分區(qū)命令(工具)
用法:fdisk [-l] 設(shè)備名稱
-l 輸出設(shè)備的所有分區(qū)內(nèi)容。
fdisk –l 列出系統(tǒng)的所有能夠找到的設(shè)備的分區(qū)。
4.?日志文件系統(tǒng)
正常情況下,數(shù)據(jù)的新增或改動操作可以順利完成。但是如果在寫入文件時,有異常情況發(fā)生會怎樣?(比如:突然斷電、或內(nèi)核發(fā)生錯誤)早期ext2文件系統(tǒng)中,如果發(fā)生這種情況,系統(tǒng)在重啟時會進行一致性檢查,要耗費很長時間。為了避免文件系統(tǒng)不一致的情況發(fā)生,在文件系統(tǒng)中規(guī)劃出一個塊,該塊專門記錄寫入或修訂文件時的步驟。這樣,即可簡化一致性的檢查。也就是說:
預(yù)備:當(dāng)系統(tǒng)要寫入一個文件時,會先在日志記錄塊中記錄某個文件準(zhǔn)備要寫入的信息。
實際寫入:開始寫入文件的權(quán)限與數(shù)據(jù),開始更新meta data的數(shù)據(jù)。
結(jié)束:完成數(shù)據(jù)與meta data的更新后,在日志記錄塊中完成該文件的記錄。
在這樣的程序當(dāng)中,萬一數(shù)據(jù)的記錄過程當(dāng)中發(fā)生了問題,那么我們的系統(tǒng)只要去檢查日志記錄塊就可以知道那個文件發(fā)生了問題,針對該問題來做一致性檢查即可,而不必針對整塊文件系統(tǒng)去檢查,這樣就可以達到快速修復(fù)文件系統(tǒng)的能力了。這就是日志式文件最基礎(chǔ)的功能。
?
總結(jié)
以上是生活随笔為你收集整理的《笨兔兔的故事》之文件系统部分读书心得的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue监听浏览器刷新和关闭事件,并在页面
- 下一篇: 智慧物流之电子标签在RFID仓库管理系统