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