天天看點

Linux之檔案系統管理建立

檔案系統在哪實作? 核心

核心級檔案系統的組成?子產品、使用者空間中的程式

哪些是核心級檔案系統?除了分布式檔案系統

子產品的定義

中間層定義

檔案如何按名存取

查找檔案、建立檔案、存儲檔案

檔案系統、格式化

swap,虛拟記憶體

日志型檔案系統和非日志型檔案系統工作原理

超級塊

檔案按名存取的實作

<a href="https://s3.51cto.com/wyfs02/M02/9D/DC/wKioL1mH4MaghRnDAADfDz6_uI8553.png-wh_500x0-wm_3-wmp_4-s_4237411605.png" target="_blank"></a>

檔案系統實作按名存取将分區後的存儲空間劃分為資料區和中繼資料區。

    資料區:   存儲大小相同的資料塊

    中繼資料區:有多個inode塊,每個inode塊中存儲:filename,perm,owner,group,timestamp,size,資料區的資料塊編号,資料塊的映射

在查找檔案時,先找中繼資料後找資料

    先找到中繼資料區的inode。從inode中的資料位址編号,找到對應的資料塊。

在建立檔案時,先建立中繼資料,由中繼資料找空閑資料塊

    先建立中繼資料,找到空閑的磁盤塊,才能存儲資料

在存儲檔案時,找到的磁盤塊不夠用,就再配置設定磁盤塊,并将配置設定的新磁盤塊編号記錄于inode中,供以後查找

檔案系統的定義

    索引和索引指向的編址方式

        資料區中存儲資料的不同組織機制和中繼資料區存儲資料時存放索引的位置。

    資料的組織機制:資料在存儲空間存放的形式 及 存儲空間的結構。

        例如:

                一個圖書館内的書架可以橫、豎、斜着放,每個書架上存放書的格子不同。

                一張白紙,在其上寫文字可以打成方格、行格、斜格,其結構都可以不同。

                寫的時候可以橫、豎、斜着寫。

    格式化:重新建構資料的組織機制,廢墟之上重建

        例如:将之前擺放的書架,一把火燒了,重新買書架,重新按照不同的結構組織書架的擺放,書的擺放也可能不同。

檔案系統的常見類型

按應用場景劃分

    Linux:Windows:iso:unix:網絡檔案系統:叢集檔案系統:分布式檔案系統:

按核心級劃分

    除了分布式檔案系統之外的所有檔案系統

按是否支援日志功能劃分

    日志型檔案系統:  ext3,ext4,xfs

    非日志型檔案系統: ext2 vfat(将winodws的fat32識别為vfat)

++++++++++++++++++++++++++++++++++++++++++++++++++++++

Linux

    ext2 ext3 ext4 xfs btrfs swap 

CentOS 5 ,ext2 ext3

    ext2  單個檔案支援8EB

CentOS 6, ext4,xfs

    ext ( extended filesystem) - 系統的檔案系統有向下相容的特性

CentOS7: ext4,xfs,btrfs,relserFS,JFS

   ext4 -  因穩定性原因,不在被推崇

   btrfs - SUN公司研發 --檔案系統級别支援 本來lvm2級别才能擁有的功能

    btrfs 單個檔案支援沒有理論上限值 64bit的檔案系統,位數越多意味着單個檔案所能夠尋址的磁盤塊數量越大

   reiserFS 命名是源自作者Hans Reiser的姓氏,其特色為能很有效率地處理大型檔案到衆多小檔案都可以用很高的效率處理

JFS

    由IBM研發,AIX支援的檔案系統,JFS,JFS2

swap,交換分區

    用于Solaris之上,為了避免虛拟記憶體機制,導緻的實體記憶體滿載後不能進行任何操作的嚴重的影響,Sun公司研發了一種檔案系統,能在實體記憶體耗盡之前,把磁盤空間中的某段存儲空間格式化為同實體記憶體一樣的存儲格式,而後把實體記憶體中不太有用的資料放至磁盤之上,如果需要用到此資料時,将資料拿回來即可,這種行為叫做“交換”

    虛拟記憶體:如果實體記憶體隻有2G,對于32bit系統,每一個程序有4G記憶體可用,實際上可能隻有幾M大小記憶體。如果某個程序記憶體占據逐漸增大時,将實體記憶體大耗盡,可能導緻其他程序不能運作,管理工具無法使用。

CD光牒:iso9660

    ISO 9660源于High Sierra檔案系統,被一些硬體和軟體供應商稱作CDFS(CD光牒檔案系統),是一個由國際标準化組織(ISO)為CD光牒媒介釋出的檔案系統。其目标是能夠在不同的作業系統如Windows、Mac OS以及類Unix系統上交換資料。

Windows

    fat32, ntfs

fat32

    FAT檔案系統考慮當時電腦性能有限,是以未被複雜化,是以幾乎所有個人電腦的作業系統都支援。這特性使它成為理想的軟碟和存儲卡檔案系統,也适合用作不同作業系統中的資料交流。現在,一般所講的FAT專指FAT32。

    但FAT有一個嚴重的缺點:當檔案删除後寫入新資料,FAT不會将檔案整理成完整片段再寫入,長期使用後會使檔案資料變得逐漸分散,而減慢了讀寫速度。碎片整理是一種解決方法,但必須經常重組來保持FAT檔案系統的效率。

    其它IBM PC的可選作業系統,如Linux、FreeBSD和BeOS都支援FAT格式,并且大部分都在相應的Windows版本釋出以後很快就支援VFAT和FAT32格式。

ntfs

    NTFS(英語:New Technology File System),是Microsoft公司開發的專用檔案系統,從Windows NT 3.1開始成為Windows NT家族的标準檔案系統。

    NTFS取代FAT(檔案配置設定表)和HPFS(高性能檔案系統)并進行一系列改進,例如增強對中繼資料的支援,使用更進階的資料結構以提升性能、可靠性和磁盤空間使用率,并附帶一系列增強功能,如通路控制清單(ACL)和檔案系統日志。

    Linux和BSD提供自由及開放源代碼的軟體,可用于讀寫NTFS檔案。

UNIX

    UFS

   Unix File System是一種檔案系統,為許多UNIX和類Unix作業系統所使用。它也被稱為伯克利快速檔案系統(Berkeley Fast File System)

    FFS

    BSD快速檔案系統(BSD Fast File System)FFS對Unix System V檔案系統“FS”有所繼承。FFS在Unix檔案系統(1或2)之上,提供目錄結構的資訊,以及各種磁盤通路的優化。UFS(以及UFS2)定義了on-disk資料規格。

    JFS2

網絡檔案系統

    NFS

    Network File System是一種分布式檔案系統協定,最初由Sun Microsystems公司開發,并于1984年釋出。其功能旨在允許用戶端主機可以像通路本地存儲一樣通過網絡通路伺服器端檔案。

NFS和其他許多協定一樣,是基于開放網絡運算遠端過程調用(ONC RPC)協定之上的。它是一個開放、标準的RFC協定,任何人或組織都可以依據标準實作它。NFS的消息格式是固定長度,

    CIFS

    伺服器消息塊(Server Message Block,縮寫為SMB),又稱網絡檔案共享系統(Common Internet File System,縮寫為CIFS, /sfs/),一種應用層網絡傳輸協定,由微軟開發,CIFS消息一般使用NetBIOS或TCP協定發送,分别使用不同的端口139或445,目前傾向于使用445端口。CIFS的消息格式大多數是可變長度,這增加了協定的複雜性。    

叢集檔案系統

    GFS2(redhat Global File System version2)  

    OCFS2(oracle cluster filesystem version 2)

分布式檔案系統

   ceph(linux核心中所實作)

    HDFS、GlusterFS、Ceph、OpenStack的Swift項目等都屬于分布式叢集檔案系統。分布式叢集檔案系統可擴充性更強,目前已知最大可擴充至10K節點。對于分布式叢集,其對檔案中繼資料的管理方式又可以分為單一路徑映像和單一檔案系統映像兩種方式。

++++++++++++++++++++++++++++++++++++++++++++++++

日志檔案系統

    檔案存儲時,先建立中繼資料,由中繼資料找到空閑資料塊,就能存儲檔案,在存儲過程中,如果系統斷電了,其存儲的檔案是不完整的。對于windows系統來說,需要檔案恢複,将之前存儲資料的不完整的檔案查找出來删除。

    非日志檔案系統

    存儲檔案時,直接在中繼資料區給檔案建立中繼資料,通過中繼資料區的中繼資料條目"inode"塊,找到對應的資料塊即可完成存儲。

    存儲過程中,如果斷電,在斷電恢複時,需要周遊整個檔案系統所有檔案查找不完整的檔案。

<a href="https://s3.51cto.com/wyfs02/M00/9D/DE/wKioL1mH-4XDdrBYAABxjd9dBD4683.png" target="_blank"></a>

    日志型檔案系統        

    存儲檔案時,在日志區中給檔案建立中繼資料,通過日志區的中繼資料條目"inode"塊,找到對應的資料塊即可完成存儲。

    存儲過程中,如果斷電,在斷電恢複時,隻需要查找日志區的所有中繼資料即可,是不是很快?

    存儲完畢後,将日志區的中繼資料同步到中繼資料區。

檔案管理由核心實作的原因

    1、核心管理硬體,核心才能跟磁盤互動

    2、核心将磁盤資料區劃分為不同的格式及建立檔案的索引

    3、檔案系統在核心中實作

核心級檔案系統的組成

核心中的子產品: 

    linux由于其開源特性,其上實作了衆多檔案系統,每種檔案系統都有一個對應的子產品,ext2,ext3,ext4,xfs,btrfs,....,程式員要格式化不同的檔案系統就要調用對應的子產品賊困難。後來,用一種機制解決了這個問題,添加一個中間層

    中間層:在Linux之上隻要有兩個層級間不能銜接,就需要一個中間層就能抹除底層不同檔案系統的差異。解決檔案系統的差異是VFS。

     VFS:抽象底層不同子產品功能為一個統一的接口,類似于作業系統一樣:抽象底層硬體功能為一個簡潔、易用、美觀的接口,目的是:友善程式員調用,利于程式員程式設計。

<a href="https://s2.51cto.com/wyfs02/M00/9D/DF/wKioL1mIAzugbfpwAAAvXTG6wAo321.png" target="_blank"></a>

使用者空間中的程式:

    調用核心中的子產品完成格式化的功能

        常用工具有: mkfs,mke2fs, mkfs.ext2,mkfs.ext3,mkfs.ext4,mkfs.xfs,mkfs.btrfs

子產品 提供一種功能,隻要調用此子產品就能完成功能。

########對于任何一個檔案系統想要在Linux中使用:1、核心中有子產品且已經裝載,2、遵循POSIX規範,3、有使用者空間的程式#######################

使用者空間工具的使用

    mkfs,mke2fs,mkfs.ext2,mkfs.ext3,mkfs.ext4,mkfs.xfs,mkfs.btrfs

擷取目前核心支援的檔案系統

1

2

3

4

5

6

7

8

9

10

11

<code>[root@izpo45bh60h6bsz ~]</code><code># cat /proc/filesystems   </code>

<code>    </code><code>ext3</code>

<code>    </code><code>ext2</code>

<code>    </code><code>ext4</code>

<code>nodev   rpc_pipefs</code>

<code>nodev   nfsd</code>

<code>nodev   binfmt_misc</code>

<code>##注意 </code>

<code>     </code><code>nodev:  沒有使用的檔案系統</code>

<code>    </code><code>無nodev:  正在使用的檔案系統</code>

對于任何一個檔案系統想要在Linux中使用

1、檢視核心中的所有已經裝載的子產品

<code>[root@izpo45bh60h6bsz ~]</code><code># lsmod</code>

<code>Module                  Size  Used by</code>

<code>binfmt_misc            17468  1 </code>

<code>tcp_diag               12591  0 </code>

<code>inet_diag              18949  1 tcp_diag</code>

<code>ip6t_rpfilter          12595  1 </code>

<code>ipt_REJECT             12541  2 </code>

<code>nf_reject_ipv4         13373  1 ipt_REJECT</code>

2、檢視使用者空間的程式

<code>root@izpo45bh60h6bsz ~]</code><code># mkfs  ##兩次TAB,列印清單(以下有的使用者空間的程式均為核心中存在子產品,且可使用)</code>

<code>mkfs   mkfs.btrfs  mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.ext4    mkfs.minix   mkfs.xfs</code>

mkfs.FS_TYPE指令

<code>mkfs.FS_TYPE [-L LABEL] filesys</code>

<code>    </code><code>FS_TYPE: ext2,ext3,ext4,xfs,btrfs 檔案系統類型</code>

<code>    </code><code>-L LABEL 卷标</code>

<code>    </code> 

<code>ext2:</code><code># mkfs.ext2 /dev/sdb5</code>

<code>ext3:</code><code># mkfs.ext3 /dev/sdb5</code>

<code>ext4:</code><code># mkfs.ext4 /dev/sdb5  </code>

<code>-L: </code><code># mkfs.ext4 -L 'MYDATA' /dev/sdb5</code>

<code>xfs:</code><code># mkfs.xfs -f /dev/sdb5 </code>

<code>btrfs:</code><code># mkfs.btrfs -f /dev/sdb5    ##CentOS 7</code>

mkfs指令

<code> </code><code>mkfs [-L LABEL] [-t fstype] filesys</code>

<code>     </code><code>fstype:ext2,ext3,ext4,xfs,btrfs 檔案系統類型</code>

<code>     </code> 

<code>ext2:</code><code># mkfs -t ext2 /dev/sdb5</code>

<code>ext3:</code><code># mkfs -t ext3 /dev/sdb5</code>

<code>ext4:</code><code># mkfs -t ext4 /dev/sdb5  </code>

<code>-L: </code><code># mkfs -t ext4 -L 'MYDATA' /dev/sdb5</code>

<code>xfs: </code><code># mkfs -t xfs /dev/sdb5</code>

<code>btrfs: </code><code># mkfs -t btrfs /dev/sdb5    ##CentOS 7</code>

mke2fs指令:建立ext2,ext3,ext4檔案系統的專用的指令

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<code>mke2fs [-t fstype] [OPTIONS...] filesys</code>

<code>OPTIONS:</code>

<code>    </code><code>-b {1024|4096|2048} 機關是byets,不指定是2048</code>

<code>    </code><code>-t {ext2|ext3|ext4} </code>

<code>        </code><code>小檔案多: 1024</code>

<code>    </code><code>大檔案多: 4096</code>

<code>    </code><code>小檔案多用大塊,浪費磁盤空間</code>

<code>    </code><code>-L LABEL 指定卷标</code>

<code>    </code><code>-j 相當于 mke2fs -t ext3</code>

<code>    </code><code>-i </code><code># 比率關系. 為資料空間每多少個byte建立一個Inode. 大小不應該小于單個塊大小 </code>

<code>        </code><code>資料空間總大小 </code>

<code>        </code><code>-----------------------------  =  inode數量</code>

<code>        </code><code>單個inode占據資料空間的大小 </code>

<code>        </code> 

<code>        </code><code>-----------------------------  =  塊數量</code>

<code>        </code><code>單個塊大小 </code>

<code>        </code><code>inode = 單個塊大小 時, inode數量 = 塊數量</code>

<code>        </code><code>inode &gt; 單個塊大小 時, inode數量 &lt; 塊數量</code>

<code>        </code><code>inode &lt; 單個塊大小 時, indoe數量 &gt; 塊數量,此時如果一個塊,存儲一個檔案,inode也多了.inode空間浪費</code>

<code>    </code><code>-N </code><code># 為資料空間建立多少個inode </code>

<code>    </code><code>-m </code><code># 為管理人員預留的空間占據的百分比. 預設為5% 避免磁盤空間占滿之後,管理人員不能操作</code>

<code>    </code><code>-O FEATURE[,...] 建立分區時,啟用哪些特性</code>

<code>    </code><code>-o ^FEATURE 關閉特性</code>

<code>    </code><code>mke2fs -O journal 格式化為ext3  </code>

選項注釋

-b,預設為496 ,-L LABEL,-m # 選項注釋

<code>[root@localhost ~]</code><code># mke2fs -t ext4 -L 'mydata' -m 2 /dev/sdb5</code>

<code>mke2fs 1.41.12 (17-May-2010)</code>

<code>檔案系統标簽=mydata  </code><code>##卷标名</code>

<code>作業系統:Linux </code>

<code>塊大小=4096 (log=2)  </code><code>##未給出塊大小時的預設大小</code>

<code>52451 blocks (2.00%) reserved </code><code>for</code> <code>the super user </code><code>##為super user預留百分比</code>

<code>Superblock backups stored on blocks:  </code><code>##超級塊的磁盤塊編号</code>

<code>    </code><code>16386, 49152, 81920, 114688, 217456, 409600, 442368, 802816, 1327104, </code>

<code>    </code><code>2048000, 3981313</code>

-m 選項預設為5%, 

<code>[root@localhost ~]</code><code># mke2fs -t ext4 -b 2048 -L 'mydata' /dev/sdb5</code>

<code>檔案系統标簽=mydata </code><code>##卷标</code>

<code>作業系統:Linux</code>

<code>塊大小=2048 (log=1)  </code><code>##塊大小非預設</code>

<code>262259 blocks (5.00%) reserved </code><code>for</code> <code>the super user  </code><code>##預設預留百分比</code>

<code>Superblock backups stored on blocks:  </code><code>##超級塊位置</code>

<code>    </code><code>16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, </code>

<code>    </code><code>2048000, 3981312</code>

blkid指令 塊裝置屬性資訊檢視

<code>blkid [OPTIONS...] [DEVICE.]</code>

<code>-U UUID 根據UUID查詢裝置</code>

<code>-L LABLE 根據LABEL查詢裝置</code>

使用示例

<code>[root@localhost ~]</code><code># blkid /dev/sdb5</code>

<code>/dev/sdb5</code><code>: LABEL=</code><code>"mydata"</code> <code>UUID=</code><code>"7981933b-6ca6-4601-94db-7566da016dc1"</code> <code>TYPE=</code><code>"ext4"</code> 

<code>/dev/sda5</code><code>: 裝置檔案名: </code>

<code>LABEL: 卷标,</code>

<code>UUID: 全局唯一辨別,</code>

<code>TYPE: 檔案系統類型</code>

<code>全局唯一辨別:就算裝置檔案名字改變UUID也是固定不變的</code>

<code># blkid -U 7981933b-6ca6-4601-94db-7566da016dc1  </code>

<code>/dev/sdb5</code>

<code># blkid -L mydata</code>

<code>[root@localhost ~]</code><code>#</code>

e2label指令 檢視和管理ext檔案系統的LABEL

<code>e2label DEVICE [LABEL]</code>

<code>檢視label: e2label DEVICE</code>

<code>設定label: e2label DEVICE LABEL</code>

<code>##顯示label</code>

<code>[root@localhost ~]</code><code># e2label /dev/sdb5</code>

<code>mydata</code>

<code>##設定label</code>

<code>[root@localhost ~]</code><code># e2label /dev/sdb5 'MYDATA'</code>

<code>MYDATA</code>

    磁盤空間:日志區 + 資料區 + 中繼資料區   

    塊組:分區後将磁盤資料空間劃分成大小相等的塊,對磁盤空間平面化管理過于複雜,将幾個磁盤塊劃分成一個塊組,

    1、每個塊組内有相等數量的資料塊

    2、每個塊組的内的塊的編号不同,(例如:1-99,100-199,200-299,....) 

    3、有幾個塊組内建立磁盤時自動血備份的超級塊   

    超級塊:存儲整個分區中的整個結構劃分。如果超級塊挂了,整個分區的結構就消失了。

<a href="https://s1.51cto.com/wyfs02/M02/9D/E8/wKiom1mIUQiRrpNKAABlKrziwgY353.png" target="_blank"></a>

     超級塊  存儲所有塊組的整體的、全局的概括性的資訊

<code>            </code><code>超級塊資訊檢視: </code>

<code>                </code><code># tune2fs -l partition</code>

<code>                </code><code># dumpe2fs -h partition</code>

<code>Filesystem volume name:       </code><code>## 檔案系統卷标</code>

<code>Last mounted on:               </code><code>## 最近一次什麼時間被挂載</code>

<code>Filesystem UUID:           </code><code>## 全局唯一标示符</code>

<code>Filesystem magic number:        </code><code>## 魔數</code>

<code>Filesystem revision   </code>

<code>Filesystem features:         </code><code>## 檔案系統的特性:檔案系統自己的特性跟是否挂載無關 sparse_super large_file (沒有journal,可見為ext2檔案系統)</code>

<code>Default </code><code>mount</code> <code>options:       </code><code>## 預設在挂載時的預設選項 tune2fs -o</code>

<code>Filesystem state:           </code><code>## 檔案系統的目前狀态 clean:幹淨狀态 ,沒有什麼損壞</code>

<code>Filesystem OS </code><code>type</code><code>:         </code><code>## 标示所在的作業系統</code>

<code>Inode count:                 </code><code>## 有多少個inode?inode是中繼資料的條目</code>

<code>Block count:                 </code><code>## 一共有多少個磁盤塊</code>

<code>Free blocks:                </code><code>## 一共有多少個空閑磁盤塊</code>

<code>Free inodes:                </code><code>## 一共有多少個空閑inode. ##inode即為中繼資料的條目</code>

<code>First block:            </code>

<code>Block size:                 </code><code>## 單個磁盤塊大小</code>

<code>Fragment size:         </code>

<code>Reserved GDT blocks:      </code>

<code>Blocks per group:         </code><code>##  每組有多少個塊</code>

    塊組   存儲組内的資訊,更為詳細的資訊    

<code>            </code><code>塊組内的資訊檢視:</code>

<code>                </code><code># dumpe2fs partition</code>

<code>[root@localhost ~]</code><code># dumpe2fs /dev/sdb5  </code>

<code>Group 320:                      </code><code>## 塊組編号,</code>

<code>(Blocks 5242880-5245189)        </code><code>## 目前塊組内的磁盤塊起始-結束 </code>

<code>Block bitmap at 5242880 (+0)    </code><code>## 塊位圖的位置</code>

<code>Inode bitmap at 5242896 (+16)   </code><code>## 中繼資料條目位圖的位置</code>

<code>Inode表位于 5242912-5243167 (+32)</code>

<code>2052 </code><code>free</code> <code>blocks                </code><code>## 目前塊組内有多少個空閑的磁盤塊</code>

<code>2048 </code><code>free</code> <code>inodes,               </code><code>## 目前塊組内有多少個空閑的inode塊</code>

<code>可用塊數: 5242881-5242895, 5242897-5242911, 5243168-5245189 </code>

<code>可用inode數: 655361-657408</code>

tune2fs 修改ext系統的參數

<code>-l 檢視指定檔案的超級塊資訊,super block</code>

<code>-L LABEL 修改檔案系統的卷标</code>

<code>-m </code><code># 修改預留給管理者的空間百分比</code>

<code>-j 将ext2更新為ext3</code>

<code>-O [FEATURE|^FEATURE] 檔案系統屬性啟用或禁用</code>

<code>     </code><code>has_journal 擁有日志功能</code>

<code>-o 調整檔案系統的預設挂載選項</code>

<code>    </code><code>acl   啟用Posix通路控制清單。</code>

<code>-U UUID 修改UUID</code>

-l

<code>[root@localhost ~]</code><code># tune2fs -l /dev/sda3   顯示超級塊資訊</code>

-L LABEL修改檔案系統的卷标

<code>[root@localhost ~]</code><code># blkid /dev/sdb5  ##檢視檔案系統的卷标</code>

<code>/dev/sdb5</code><code>: LABEL=</code><code>"MYDATA"</code> <code>UUID=</code><code>"7981933b-6ca6-4601-94db-7566da016dc1"</code> <code>TYPE=</code><code>"ext4"</code>

<code> </code> 

<code>[root@localhost ~]</code><code># tune2fs -L 'Mydata' /dev/sdb5  ##修改檔案系統的卷标</code>

<code>[root@localhost ~]</code><code># blkid /dev/sdb5  ##檢視卷标</code>

<code>/dev/sdb5</code><code>: LABEL=</code><code>"Mydata"</code> <code>UUID=</code><code>"7981933b-6ca6-4601-94db-7566da016dc1"</code> <code>TYPE=</code><code>"ext4"</code>

-j 将ext2更新為ext3

<code>[root@localhost ~]</code><code># mkfs.ext2 -L 'mydata' /dev/sdb5</code>

<code>/dev/sdb5</code><code>: LABEL=</code><code>"mydata"</code> <code>UUID=</code><code>"2fde103f-a686-4f94-bb8a-0472ed1e2816"</code> <code>TYPE=</code><code>"ext2"</code> 

<code>[root@localhost ~]</code><code># tune2fs -j /dev/sdb5  ##建立ext</code>

<code>/dev/sdb5</code><code>: UUID=</code><code>"680c887c-c9c9-4536-b9bb-13a0822c05ed"</code> <code>SEC_TYPE=</code><code>"ext2"</code> <code>TYPE=</code><code>"ext3"</code>

-O [FEATURE|^FEATURE] 檔案系統屬性啟用或禁用

<code>[root@localhost ~]</code><code># tune2fs -O ^has_journal /dev/sdb5</code>

<code>/dev/sdb5</code><code>: UUID=</code><code>"680c887c-c9c9-4536-b9bb-13a0822c05ed"</code> <code>TYPE=</code><code>"ext2"</code> 

<code>[root@localhost ~]</code><code># tune2fs -O has_journal /dev/sdb5</code>

-o 調整檔案系統的預設挂載選項

<code>#擷取預設挂載屬性</code>

<code>[root@localhost ~]</code><code># dumpe2fs -h /dev/sdb5</code>

<code>[root@localhost ~]</code><code># tune2fs -l /dev/sdb5</code>

<code>Default </code><code>mount</code> <code>options:    (none)</code>

<code>##啟用預設挂載屬性</code>

<code>[root@localhost ~]</code><code># tune2fs -o acl /dev/sdb5</code>

<code>##擷取預設挂載屬性</code>

<code>Default </code><code>mount</code> <code>options:    acl</code>

-U UUID 修改UUID

<code>##檢視UUID</code>

<code>/dev/sdb5</code><code>: UUID=</code><code>"680c887c-c9c9-4536-b9bb-13a082 2c05ed"</code> <code>SEC_TYPE=</code><code>"ext2"</code> <code>TYPE=</code><code>"ext3"</code>

<code>##生成UUID</code>

<code>[root@localhost ~]</code><code># uuidgen</code>

<code>f33430fa-b6ab-40ee-9a7b-9098abb7f092</code>

<code>##修改UUID</code>

<code>[root@localhost ~]</code><code># tune2fs -U f33430fa-b6ab-40ee-9a7b-9098abb7f092 /dev/sdb5</code>

<code>tune2fs 1.41.12 (17-May-2010)</code>

<code>##顯示修改的結果</code>

<code>/dev/sdb5</code><code>: UUID=</code><code>"f33430fa-b6ab-40ee-9a7b-9098abb7f092"</code> <code>SEC_TYPE=</code><code>"ext2"</code> <code>TYPE=</code><code>"ext3"</code>

dumpe2fs指令  顯示超級塊分組資訊和檔案系統的組織結構資訊 讀取每個塊組

<code>dumpe2fs 顯示超級塊組資訊及檔案系統結構資訊</code>

<code>dumpe2fs -h  檢視超級塊</code>

<code>##想看超級塊組資訊</code>

<code>[root@localhost ~]</code><code># dumpe2fs  /dev/sdb5</code>

<code>##檢視超級塊</code>

<code>dumpe2fs 1.41.12 (17-May-2010)</code>

<code>Filesystem volume name:   &lt;none&gt;</code>

<code>Last mounted on:          &lt;not available&gt;</code>

<code>Filesystem UUID:          f33430fa-b6ab-40ee-9a7b-9098abb7f092</code>

<code>Filesystem magic number:  0xEF53</code>

<code>Filesystem revision </code><code>#:    1 (dynamic)</code>

<code>Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super large_file</code>

<code>Filesystem flags:         signed_directory_hash </code>

mkswap指令

<code>mkswap [OPTIONS...] DEVICE 建立交換分區(調整分區ID為82,system)</code>

<code>-L LABEL 指定卷标</code>

<code>-U UUID   指定UUID</code>

<code>swap大小:</code>

<code>對于mysql,oracle資料庫,沒有記憶體就别玩</code>

<code>對于hadoop,記憶體要求大,記憶體使用效率不高,swap記憶體 == 實體記憶體</code>

<code>對于早期,實體記憶體隻有128M,512M時。給1-1.5倍即可。</code>

<code>現在,實體記憶體動辄2-8G,大多數給2G,足夠用</code>

<code>渲染,3D,記憶體要求較大。交換分區可大一點。</code>

<code>[root@localhost ~]</code><code># mkswap -U `uuidgen` -L 'MYDATA' /dev/sdb6  ##指定UUID和卷标</code>

<code>Setting up swapspace version 1, size = 2104476 KiB</code>

<code>LABEL=MYDATA, UUID=2225b375-1403-4a36-acb4-a14bbd3c5bfc</code>

<code>[root@localhost ~]</code><code># blkid /dev/sdb6  ##顯示</code>

<code>/dev/sdb6</code><code>: UUID=</code><code>"2225b375-1403-4a36-acb4-a14bbd3c5bfc"</code> <code>TYPE=</code><code>"swap"</code> <code>LABEL=</code><code>"MYDATA"</code>

建立交換分區步驟

1、分區

<code>##顯示所有磁盤的分區資訊</code>

<code>[root@localhost ~]</code><code># fdisk -l /dev/sd[a-z] </code>

<code>/dev/sdb1</code>   <code>1        2610    20964793+   5  Extended</code>

<code>/dev/sdb5</code>   <code>1        1306    10490382   83  Linux</code>

<code>##确定建立分區為sdb6</code>

<code>##調整分區表</code>

<code>[root@localhost ~]</code><code># fdisk /dev/sdb</code>

<code>Command (m </code><code>for</code> <code>help): n</code>

<code>Command action</code>

<code>   </code><code>l   logical (5 or over)</code>

<code>   </code><code>p   primary partition (1-4)</code>

<code>l</code>

<code>First cylinder (1307-2610, default 1307): </code>

<code>Using default value 1307</code>

<code>Last cylinder, +cylinders or +size{K,M,G} (1307-2610, default 2610): +2G </code><code>##給2G</code>

<code>Command (m </code><code>for</code> <code>help): p  </code><code>##顯示出第6個分區id為83</code>

<code>   </code><code>Device Boot      Start         End      Blocks   Id  System</code>

<code>/dev/sdb6</code>            <code>1307        1568     2104483+  83  Linux</code>

2、調整id号為82

<code>Command (m </code><code>for</code> <code>help): t                 </code><code>##調整id</code>

<code>Partition number (1-6): 6                </code><code>##調整第6個分區 </code>

<code>Hex code (</code><code>type</code> <code>L to list codes): 82  </code><code>##其分區id為82,swap分區</code>

<code>Changed system </code><code>type</code> <code>of partition 6 to 82 (Linux swap / Solaris)  </code><code>##修改成功</code>

<code>Command (m </code><code>for</code> <code>help): w                 </code><code>##将記憶體中資料同步到磁盤</code>

3、檢視核心是否已經識别分區

<code>[root@localhost ~]</code><code># cat /proc/partitions </code>

<code>major minor  </code><code>#blocks  name</code>

<code>   </code><code>8       16   20971520 sdb</code>

<code>   </code><code>8       17          1 sdb1</code>

<code>   </code><code>8       21   10490382 sdb5</code>

<code>   </code><code>8       22    2104483 sdb6  </code><code>##sdb6已經識别</code>

4、如果沒有識别,則讓核心重讀分區表

<code>[root@localhost ~]</code><code># partx -a -n 1:6 /dev/sdb  ##從第一個分區至第6個分區</code>

<code>[root@localhost ~]</code><code># partx -a -n 6 /dev/sdb  ##指定分區</code>

<code>[root@localhost ~]</code><code># partx -a /dev/sdb  ##讀所有分區</code>

5、建立交換分區

<code>[root@localhost ~]</code><code># mkswap /dev/sdb6</code>

<code>no label, UUID=dc3551e0-3c4a-47e1-abe9-2675c1ee41f8</code>

<code>[root@localhost ~]</code><code># blkid /dev/sdb6</code>

<code>/dev/sdb6</code><code>: UUID=</code><code>"dc3551e0-3c4a-47e1-abe9-2675c1ee41f8"</code> <code>TYPE=</code><code>"swap"</code>

6、啟動交換分區

<code>##顯示交換分區的大小</code>

<code>[root@localhost ~]</code><code># free -m</code>

<code>             </code><code>total       used       </code><code>free</code>     <code>shared    buffers     cached</code>

<code>Mem:           242        105        137          0          5         59</code>

<code>-/+ buffers</code><code>/cache</code><code>:         41        201</code>

<code>Swap:         1999          0       1999</code>

<code>##啟動</code>

<code>[root@localhost ~]</code><code># swapon /dev/sdb6</code>

<code>##大小是否轉變?</code>

<code>Swap:         4055</code>

7、關閉交換分區

<code>##顯示交換分區</code>

<code>Swap:         4055         </code>

<code>##關閉交換分區</code>

<code>[root@localhost ~]</code><code># swapoff /dev/sdb6</code>

<code>Swap:         1999</code>

fsck指令 file system check 非法關機後。開機不要檢測,開機手動檢測

<code>##擷取相關的指令</code>

<code>[root@localhost ~]</code><code># fsck</code>

<code>fsck</code>          <code>fsck</code><code>.cramfs   </code><code>fsck</code><code>.ext2     </code><code>fsck</code><code>.ext3     </code><code>fsck</code><code>.ext4     </code><code>fsck</code><code>.ext4dev  </code><code>fsck</code><code>.msdos    </code><code>fsck</code><code>.vfat</code>

<code>方法一: </code><code>fsck</code><code>.FS_TYPE </code>

<code>方法二: </code><code>fsck</code> <code>-t FS_TYPE</code>

<code>    </code><code>-a 自動修複</code>

<code>    </code><code>-r 互動修複</code>

<code>方法三: e2fsck ext系列檔案系統檢測工具 </code>

<code>    </code><code>-f 強制修複</code>

<code>    </code><code>-y 自動回答為</code><code>yes</code>

<code>/dev/sdb5</code><code>: UUID=</code><code>"680c887c-c9c9-4536-b9bb-13a0822c05ed"</code> <code>SEC_TYPE=</code><code>"ext2"</code> <code>TYPE=</code><code>"ext3"</code> 

<code>[root@localhost ~]</code><code># fsck.ext3  -a /dev/sdb5</code>

<code>[root@localhost ~]</code><code># fsck -t ext3  -r /dev/sdb5</code>

<code>fsck</code> <code>from util-linux-ng 2.17.2</code>

<code>e2fsck 1.41.12 (17-May-2010)</code>

<code>/dev/sdb5</code><code>: clean, 11</code><code>/655776</code> <code>files, 79733</code><code>/2622595</code> <code>blocks</code>

<code>[root@localhost ~]</code><code># e2fsck -f /dev/sdb5</code>

<code>第一步: 檢查inode,塊,和大小</code>

<code>第二步: 檢查目錄結構</code>

<code>第3步: 檢查目錄連接配接性</code>

<code>Pass 4: Checking reference counts</code>

<code>第5步: 檢查簇概要資訊</code>

<code>/dev/sdb5</code><code>: 11</code><code>/655776</code> <code>files (0.0% non-contiguous), 79733</code><code>/2622595</code> <code>blocks</code>

<code>[root@localhost ~]</code><code># e2fsck -y /dev/sdb5</code>

擴充

<code>1、blkid </code><code>/dev/sda6</code> <code>不顯示任何資訊時,表示沒有配置檔案系統</code>

<code>[root@localhost ~]</code><code># echo $?</code>

<code>2</code>

<code>2、linux和windows系統同時支援fat32,在linux中識别其為vfat格式,如果要u盤能同時在windows和linux之間使用時,</code>

<code>可在windows中格式化為 FAT32。</code>

<code>在linux中:</code><code># mkfs.vfat DEVICE</code>

<code>即可完成分區</code>

本文轉自 lccnx 51CTO部落格,原文連結:http://blog.51cto.com/sonlich/1954299,如需轉載請自行聯系原作者

繼續閱讀