《6-2Linux文件系統(tǒng)》由會員分享,可在線閱讀,更多相關(guān)《6-2Linux文件系統(tǒng)(26頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,Linux,文件系統(tǒng),張斌,文件系統(tǒng),文件系統(tǒng)是操作系統(tǒng)中負(fù)責(zé)存取和管理文件信息的機構(gòu)。它定義了管理文件所需的數(shù)據(jù)結(jié)構(gòu)和相應(yīng)的操作。常見的文件系統(tǒng)如,Linux,下的,ext,系列等,(ext2,、,ext3,、,.),需要知道,,Linux,支持很多文件系統(tǒng)。其中,,VFS,為用戶建立了一個通用的文件模型,并提供了訪問文件的通用方法。,VFS,:,Visual File System,VFS,是用戶的應(yīng)用程序與各種各樣的文件系統(tǒng)實現(xiàn)之間的抽象層。,User Process,System call,VFS,
2、ext2,ext3,reiserfs,vfat,proc,iso9660,.,硬盤的邏輯結(jié)構(gòu),硬盤由很多盤片,(platter),組成,每個盤片的每個面都有一個讀寫磁頭,(Head),。如果有,N,個盤片,就有,2N,個面,對應(yīng),2N,個磁頭,從,0,、,1,、,2,開始編號,每個盤片被劃分成若干個同心圓磁道,每個盤片的半徑為固定值,R,的同心圓在邏輯上形成了一個個的柱面,(Cylinder),,從外至里編號為,0,、,1,、,2,每個盤片上的每個磁道又被劃分為幾十個扇區(qū),(Sector),,通常的扇區(qū)的容量是,512B,,并按一定規(guī)則編號為,1,、,2,、,3,硬盤共有,CylindersH
3、eadsSectors,個扇區(qū),這三個參數(shù)即是硬盤的物理參數(shù)。,ext2,文件系統(tǒng),ext,:,EXTended,file system,CentOS,默認(rèn)安裝的是,ext3,文件系統(tǒng),,ext3,是在,ext2,的基礎(chǔ)上加入日志功能而成,ext2,文件系統(tǒng)的優(yōu)點體現(xiàn)在數(shù)據(jù)安全性,數(shù)據(jù)操作的效率,查找效率,空間使用率等方面,ext2,文件系統(tǒng)支持的分區(qū)容量可達(dá),4TB,,支持長文件名,(255,個字符,),等等,了解,ext2,文件系統(tǒng)的結(jié)構(gòu),ext2,文件系統(tǒng)分區(qū)結(jié)構(gòu),對于,ext2,文件系統(tǒng)來說,硬盤分區(qū)首先被劃分成同等大小的若干塊,(block),。比較典型的,block,大小有,1KB
4、,、,2KB,、,4KB,等,第一塊作為分區(qū)的引導(dǎo)塊,(,啟動塊,),,由系統(tǒng)負(fù)責(zé)管理;其余塊聚在一起分成幾個大的塊組,(block,group),引導(dǎo)塊,(,啟動塊,),的大小是固定的,就是,1KB,塊組包含信息,每個塊組包含:,超級塊,(Super Block),組描述符表,(Block Group Descriptors),數(shù)據(jù)塊位圖,(Data Block Bitmaps),索引節(jié)點位圖,(,inode,Bitmaps),索引節(jié)點表,(,inode,Table),數(shù)據(jù)塊,(Data Block),ext2,文件系統(tǒng)分區(qū)結(jié)構(gòu),ext2,BLOCK GROUP N,.,BLOCK GROU
5、P 2,BLOCK GROUP 1,BLOCK GROUP 0,boot block,data blocks,inode table,inode,bitmaps,data block,bitmaps,block group descriptors,super block,功能描述,超級塊:描述,ext2,文件系統(tǒng)整體信息的數(shù)據(jù)結(jié)構(gòu),組描述符表:每個描述符描述對應(yīng)塊組的整體信息,數(shù)據(jù)塊位圖:描述該組中數(shù)據(jù)塊的使用情況,索引節(jié)點位圖:描述該組中索引節(jié)點的使用情況,索引節(jié)點表:存放該組所有的索引節(jié)點,索引節(jié)點是用來描述文件或目錄信息的,數(shù)據(jù)塊:該塊組中用來保存用戶文件數(shù)據(jù)的數(shù)據(jù)塊,其中,超級塊和組描
6、述符表在每個塊組中都一樣,系統(tǒng)只使用,Block Group 0,的超級塊和組描述符表,其他塊組存儲的內(nèi)容可作為備份,用于文件系統(tǒng)一致性檢查或恢復(fù),super block,結(jié)構(gòu),結(jié)構(gòu)定義于,usr/include/linux/ext2_fs.h,,,size,為,1KB,struct,ext2_super_block,_le32,s_inodes_count,;/*,inodes,計數(shù)*,/,_le32,s_blocks_count,;/*blocks,計數(shù)*,/,_le32,s_r_blocks_count,;/*,預(yù)留的塊數(shù)*,/,_le32,s_free_blocks_count,;/*
7、,空閑塊數(shù)*,/,_le32,s_free_inodes_count,;/*,空閑索引節(jié)點數(shù)*,/,_le32,s_first_data_block,;/*,第一個數(shù)據(jù)塊*,/,_le32,s_log_block_size,;/*block,的大小*,/,_le32,s_blocks_per_group,;/*,每個塊組中,block,的個數(shù)*,/,_le32,s_inodes_per_group,;/*,每個塊組中,inode,的個數(shù)*,/,.,block group descriptor,結(jié)構(gòu),結(jié)構(gòu)定義于,usr/include/linux/ext2_fs.h,,,size,為,32B,s
8、truct,ext2_group_desc,_le32,bg_block_bitmap,;/*,組中塊位圖所在塊*,/,_le32,bg_inode_bitmap,;/*,組中索引節(jié)點位圖所在塊*,/,_le32,bg_inode_table,;/*,組中索引節(jié)點表的首塊*,/,_le16,bg_free_blocks_count,;/*,組中空閑塊數(shù)*,/,_le16,bg_free_inodes_count,;/*,組中空閑索引節(jié)點數(shù)*,/,.,inode,結(jié)構(gòu),結(jié)構(gòu)定義于,usr/include/linux/ext2_fs.h,,,size,為,128B,struct,ext2_inod
9、e,_le16,i_mode,;/*,文件類型和訪問權(quán)限*,/,_le16,i_uid,;/*,文件擁有者標(biāo)識號*,/,_le32,i_size,;/*,以字節(jié)計的文件大小*,/,_le32,i_atime,;/*,文件的最后一次訪問時間*,/,_le32,i_ctime,;/*,該節(jié)點最后被修改時間*,/,_le32,i_mtime,;/*,文件內(nèi)容的最后修改時間*,/,_le32,i_dtime,;/*,文件刪除時間*,/,_le16,i_gid,;/*,文件的用戶組標(biāo)志符*,/,_le16,i_links_count,;/*,文件的硬鏈接計數(shù)*,/,_le32,i_blocks,;/*,
10、文件所占塊數(shù)*,/,_le32 i_blockEXT2_N_BLOCKS;/*,指向數(shù)據(jù)塊的指針數(shù)組*,/,.,數(shù)據(jù)塊尋址,Ext2,通過索引節(jié)點中的數(shù)據(jù)塊指針數(shù)組進(jìn)行邏輯塊到物理塊的映射,在,Ext2,索引節(jié)點中,數(shù)據(jù)塊指針數(shù)組共有,15,項,前,12,個為直接塊指針,后三個分別為“一次間接塊指針”、“二次間接塊指針”、“三次間接塊指針”,如果塊大小是,1KB,,那么,Linux,環(huán)境下最大的文件有多大,磁盤分區(qū)命令,fdisk,使用,fdisk,-l,命令可以顯示本機的分區(qū)信息,使用,fdisk,命令對指定的磁盤進(jìn)行分區(qū),fdisk,磁盤驅(qū)動器設(shè)備名,fdisk,提供一個字符操作界面:,m
11、,獲得幫助信息;,p,顯示當(dāng)前的磁盤分區(qū)信息;,v,校驗分區(qū)信息;,n,添加一個新分區(qū);,d,刪除一個分區(qū);,a,設(shè)置或取消可引導(dǎo)標(biāo)志;,l,顯示已知的分區(qū)類型;,t,改變分區(qū)文件系統(tǒng)的類型;,q,退出,fdisk,但不保存修改;,w,保存修改并退出,fdisk,分區(qū)的文件系統(tǒng)類型,使用,fdisk,創(chuàng)建新分區(qū)時,默認(rèn)情況下,系統(tǒng)會給該分區(qū)設(shè)置一個,Linux,分區(qū)的類型標(biāo)識號,以后可在該分區(qū)上建立,ext2,、,ext3,、,reiserfs,等文件系統(tǒng),建立文件系統(tǒng),分區(qū)創(chuàng)建好之后,就需要在分區(qū)上建立文件系統(tǒng),也就是格式化分區(qū),mkfs,命令按照指定的文件系統(tǒng)格式化指定分區(qū),mkfs,-t
12、,文件系統(tǒng)類型 磁盤分區(qū)名,mkfs,-t ext3,/dev/hdc1,也可以使用,mke2fs,創(chuàng)建文件系統(tǒng),配置文件,/etc/mke2fs.conf,,,-j,選項增加日志功能,可以使用,tune2fs-l,或,dumpe2fs,查看分區(qū)信息,掛載文件系統(tǒng)命令,mount,掛載指的是將格式化好的分區(qū)掛載到目錄樹中的一個目錄下進(jìn)行訪問,mount【,選項,】【,設(shè)備名,】【,掛載點,】,設(shè)備名是要掛載的設(shè)備的名稱,掛載點實際上是系統(tǒng)目錄樹中的一個已經(jīng)存在的目錄,直接執(zhí)行,mount,命令將顯示系統(tǒng)當(dāng)前掛載的文件系統(tǒng);設(shè)置系統(tǒng)啟動時自動掛載文件系統(tǒng)需要編輯配置文件,/etc/fstab,u
13、mount,命令用于卸載文件系統(tǒng),umount,【,設(shè)備名,】|【,掛載點,】,磁盤的管理與操作,顯示磁盤相關(guān)信息命令,df,顯示文件目錄大小命令,du,磁盤復(fù)制命令,dd,顯示磁盤信息,df,格式:,df,【,選項,】【,文件,|,設(shè)備,】,給出文件或目錄名,顯示它所在的文件系統(tǒng)的磁盤使用情況;給出設(shè)備名,顯示該設(shè)備上所有文件系統(tǒng)的磁盤使用情況,-i,顯示,inode,的使用情況,而不是磁盤塊;,-h,選項以更直觀的方式顯示容量;,-k,以,K,為單位;,-m,以,M,為單位;,-T,顯示文件系統(tǒng)類型;,-t,文件系統(tǒng)類型:顯示指定類型的文件系統(tǒng)的磁盤空間使用情況,顯示文件目錄大小,du,格
14、式:,du,【,選項,】【,文件,】,統(tǒng)計文件或目錄所占磁盤空間大小。若沒有指定,則對當(dāng)前目錄進(jìn)行統(tǒng)計,-b,以字節(jié)為單位列出磁盤空間的使用情況;,-h,、,-k,、,-m,選項同,df,命令,磁盤復(fù)制命令,dd,格式:,dd,if=,輸入文件或設(shè)備,of=,輸出,.,把指定的輸入文件或設(shè)備復(fù)制到指定的輸出文件或設(shè)備中并進(jìn)行格式轉(zhuǎn)換,dd if=/dev/zero of=fs count=256 bs=4K,od-tx1-Ax fs|less,啟動塊為空,128 inodes,1024 blocks,51 reserved blocks,986 free blocks,blocks/group
15、=8192,inodes/group=128,這個塊記載什么信息?,塊位圖從,6,號塊開始,節(jié)點位圖從,7,號塊開始,節(jié)點表從,8,號塊開始,986 free blocks,117 free inodes,directories=2,已經(jīng)用了,37,個塊,隨著文件系統(tǒng)的使用和添加刪除文件,塊位圖和節(jié)點位圖中的,1,就變得不連續(xù)了,在節(jié)點位圖中可以看到已經(jīng)使用了,11,個節(jié)點,前,10,個,inode,被,ext2,文件系統(tǒng)保留,其中第,2,個節(jié)點被該文件系統(tǒng)的根目錄使用,第,11,個節(jié)點被,lost+found,目錄使用,已經(jīng)使用掉,11,個節(jié)點,st_mod,以八進(jìn)制表示,包含了文件類型和權(quán)
16、限,最高位的,4,表示文件類型為目錄,參見,stat(2),文件系統(tǒng)根目錄的數(shù)據(jù)塊號由,Blocks0,給出,是,24,,其在文件系統(tǒng)中的位置是,24*0 x400=0 x6000,st_mod=40755,owner UID,size=1024B,acess time,GID,Links count,Blocks0=24,第一條記錄第二條記錄都是描述,inode,號為,2,的文件,實際上是根目錄文件,要在根目錄下創(chuàng)建新文件,可把第,3,條記錄截短,如果目錄下文件名太多,一個數(shù)據(jù)塊不夠用,則會分配新的數(shù)據(jù)塊,塊編號會填充到,Blocks1,inode=2,Record len=12,Name len,File type,.,的,ASCII,碼,inode=11,Record len=1000,lost+found,的,ASCII,碼,