Linux重要知識點彙總——磁盤與文件系統管理

EXT2文件系統: node

文件系統特性: linux

格式化(format):每種操做系統所設置的文件屬性/權限並不相同,爲了存放這些文件所需的數據,所以就須要將分區格式化,以成爲操做系統可以你用的文件系統格式 安全

一般咱們稱呼一個可被掛載的數據爲一個文件系統而不是一個分區(一個分區多個文件系統,多個分區一個文件系統) 架構

  • super block:記錄此文件系統的總體信息,包括inode/block的總量、使用量、剩餘量,以及文件系統的格式與相關信息等
  • inode:記錄文件的屬性,一個文件佔用一個inode,同時記錄文件的數據所在的block號碼
  • block:實際記錄文件的內容,若文件太大時,會佔用多個block

每一個inode和block都有編號,而每一個文件佔用一個inode,inode內則有文件數據放置的block號碼。這種數據訪問的方法稱爲索引式文件系統異步

碎片整理:文件寫入到block太過於分散了,此時文件讀取的性能將會變得不好。經過碎片整理將同一文件所屬的block匯合在一塊兒,這樣數據的讀取會比較容易。 async

文件系統一開始就將inode和block規劃好了,除非從新格式化(或者利用resize2fs等命令更改文件系統大小),不然inode與block固定後就再也不變更。 oop

Ext2文件系統在格式化的時候基本上是區分多個塊組(block group)的,每一個塊組都有獨立的inode/block/superblock系統。 性能

總體規劃中,文件系統最前面有一個啓動扇區(boot sector),這個啓動扇區能夠安裝引導裝載程序。 測試

調出目前掛載的設備:df 操作系統

查看文件系統信息:dumpe2fs 【-bh】 設備文件名

與目錄樹的關係

  • 目錄:

新建一個目錄時,ext2會分配一個inode與至少一塊block給該目錄。

inode記錄該目錄的相關權限與屬性,並可記錄分配到的那塊block號碼;

block記錄在這個目錄下的文件名與該文件名佔用的inode號碼數據

查看目錄內文件所佔用的inode號碼:ls –i

  • 文件:

當咱們新建一個文件時,ext2會分配一個inode與相對於該文件大小的block數量給該文件。

目錄樹的讀取:

系統經過掛載的信息找到掛載點的inode號碼(一般一個文件系統的最頂層inode號碼會由2號開始),此時就可以獲得根目錄的inode內容,並依據該inode讀取根目錄的block內的文件名數據,再一層一層地往下讀到正確的文件名

新建一個文件或者目錄的步驟:

  1. 肯定用戶對於欲添加文件的目錄是否具備w與x的權限,如有的話才能添加
  2. 根據inode bitmap找到沒有使用的inode號碼,並將新文件的權限/屬性寫入
  3. 根據block bitmap找到沒有使用中的block號碼,並將實際的數據寫入block中,且更新inode的block指向數據
  4. 將剛纔寫入的inode與block數據同步更新inode bitmap與block bitmap,並更新superblock的內容(未使用與已使用的量)

inode table與data block稱爲數據存放區域,其餘super block、block bitmap與inode bitmap等區段爲meta data(中間數據),數據是常常變更的,每次添加、刪除、編輯時均可能會影響到這三個部分的數據。

數據的不一致(Inconsistent)狀態

meta data的內容與實際數據存放區產生不一致的狀況。Ext2文件系統中,經過Super block當中記錄的valid bit(是否有掛載)與文件系統的state(clean與否)等狀態來判斷是否強制進行數據一致性的檢查。如有須要檢查時則以e2fsck這支程序來進行的

日誌文件系統(Journaling file system)

  1. 預備:當系統要寫入一個文件時,會先在日誌記錄塊中記錄某個文件準備要寫入的信息
  2. 實際寫入:開始寫入文件的權限與數據;開始更新meta data的數據
  3. 結束:完成數據與meta data更新後,在日誌記錄塊當中完成該文件的記錄

在這樣的程序當中,萬一數據的記錄過程中發生了問題,那麼咱們的系統只要去檢查日誌記錄塊就能夠知道哪一個文件發生了問題,針對該問題作一致性檢查便可。

linux文件系統的操做

異步處理(asynchronously):當系統知道一個文件到內存後,若是該文件沒有改動過,則在內存區段的文件數據會被設置爲(clean)的。但若是內存中的文件數據被更改過了,此時該內存中的數據會被設置爲Dirty。此時全部的操做還在內存中執行,並無寫入到磁盤中。系統會不定時地將內存中設置爲Dirty的數據寫回磁盤,以保持磁盤與內存數據的一致性。

文件系統與內存:

  • 系統會將經常使用的文件數據放置到主存儲器的緩衝區,以加速文件系統的讀寫
  • Linux的物理內存最後都會被用光。這是正常的狀況,可加速系統性能。
  • 能夠手動使用sync強迫內存中設置爲Dirty的文件寫回到磁盤中
  • 若不正常關機,因爲數據還沒有回寫到磁盤內,所以從新啓動後可能會花不少時間在進行磁盤檢驗,甚至可能致使文件系統損毀(非磁盤損壞)

Linux VFS(Virtual Filesystem Switch):Linux內核經過VFS管理文件系統,用戶並不須要知道麼個分區上頭的文件系統是什麼。

文件系統的簡單操做:

磁盤與目錄的容量:df,du

  • df:列出文件系統的總體磁盤使用量
  • du:評估文件系統的磁盤使用量(經常使用來評估目錄所佔容量)

df -hi:以人們較易閱讀的GB、MB、KB等格式自行顯示;不用硬盤容量,而以inode的數量來顯示

讀取的範圍是在super block內的信息,因此命令顯示結果的速度很是快。

du -s:列出總量而已,而不列出每一個個別的目錄佔用容量

直接到文件系統內去查找全部的文件數據,默認狀況下大小的輸出是以KB爲單位的。

鏈接文件:ln

hard link(硬鏈接或實際鏈接):

在某個目錄下面新建一條文件名鏈接到某inode號碼關聯的記錄。

安全:若是將任何一個「文件名」刪除,其實inode與block仍是存在的。此時能夠經過另外一個「文件名」來讀取到正確的文件數據。此外,不論使用哪一個「文件名」來編輯,最終的結果都會寫入到相同的inode和block中,所以均能進行數據的修改。

限制:不能跨文件系統,不能鏈接到目錄。

symbolic link(符號連接,也即快捷方式)

建立一個獨立的文件,而這個文件會讓數據的讀取指向它鏈接的那個文件的文件名。當源文件被刪除以後,symbolic link的文件會「開不了」

內容:目標文件的「文件名」

symbolic link與Windows的快捷方式能夠劃上等號,有symbolic link所建立的文件爲一個獨立的新的文件,因此會佔用inode與block

ln -s:若是不加任何參數就進行鏈接,那就是hard link,至於-s就是symbolic link

磁盤分區:fdisk

-l:輸出後面接的設備全部分區內容

df:找出可用磁盤文件名,再使用fdisk查閱

刪除分區:

  1. fdisk:先進入fdisk界面
  2. p:先看一下分區信息,肯定刪除的分區
  3. d:選擇一個分區
  4. w:存儲到磁盤數據表中,並離開fdisk

新增磁盤分區:

  1. fdisk:進入fdisk界面
  2. n:選擇分區類型(主分區,擴展分區)
  3. 起始柱面(默認值)
  4. 終止柱面:+512MB
  5. p:查看分區結果

強制更新內核分區表信息:partprobe

磁盤格式化

mkfs 【-t 文件系統格式】 設備文件名

磁盤檢驗:fsck,badblocks

fsck 【-t 文件系統】 【-ACay】 設備名稱

-A:依據/etc/fastab的內容,將須要的設備掃描一次

-a(y):自動修復檢查時遇到的有問題的扇區

-C:檢驗的過程中用一個直方圖來顯示目前的進度

一般只有身爲root且文件系統有問題的時候才使用這個命令,不然在正常狀況下使用此命令,可能對系統形成危害。

執行fsck時,被檢查的分區務必不可掛載到系統上!

磁盤的掛載與卸載

  • 單一文件系統不該該被重複掛載在不一樣的掛載點中
  • 單一目錄不該該重複掛載多個文件系統
  • 做爲掛載點的目錄理論上應該都是空目錄

mount -a:依據配置文件/etc/fstab的數據將全部未掛載的磁盤都掛上來

mount -l:顯示目前掛載的信息(加上label列)

從新掛載根目錄:mount –o remount,rw,auto  /

umount(將設備文件卸載)

磁盤參數的修改:

mknod 設備名 【bcp】 【major】 【minor】

b:外部存儲設備文件

c:外部輸入設備文件

p:FIFO文件

設置文件系統卷標:e2label 設備名稱 新的label名稱

tune2fs

hdparm –Tt 設備名稱 :測試這塊硬盤的讀取性能

設置開機掛載

開機掛載/etc/fstab及/etc/mtab

  • 根目錄/是必須掛載的,並且必定要先於其餘mount point被掛載進來
  • 其餘掛載點必須爲已新建的目錄,可任意指定,但必定要遵照必需的系統目錄架構原則
  • 全部掛載點在同一時間內,只能掛載一次
  • 全部分區在同一時間內,只能掛在一次
  • 如若進行卸載,必須先將工做目錄移到掛載點(及其子目錄)以外

特殊設備loop掛載(鏡像文件不刻錄就掛載使用)

mount –o loop 文件地址 掛載地址

新建大文件以製做loop文件

幫助解決分區不良的狀況。

  • 建立大型文件  dd if=/dev/zero of=/home/loopdev bs=1M count=512
  • 格式化 mkfs –t ext4 /home/loopdev
  • 掛載 mount –o loop …

內存交換空間(swap)的構建

  • 設置一個swap分區
  • 建立一個虛擬內存文件

使用物理分區構建swap

  1. 分區:先使用fdisk分出一個分區給系統做爲swap,同時還要設置一下system ID。fdisk /dev/sda –> p –> t (修改系統ID),幾號分區改爲swap的ID爲82,p,w,partprobe(更新內核分區表)
  2. 構建swap格式:mkswap
  3. 開始查看與加載:free(查看)、swapon(開啓分區)、free

使用文件構建swap

  1. 使用dd新增一個文件
  2. 使用mkswap將文件格式化爲swap的文件格式
  3. 使用swapon將其啓動
  4. 使用swapoff關掉swap file 
相關文章
相關標籤/搜索