4.1存儲管理與磁盤分區

一、 物理設備的命名規則

  在Linux 系統中一切都是文件,硬件設備也不例外。既然是文件,就必須有文件名稱。統內核中的udev設備管理器會自動把硬件名稱規範起來,目的是讓用戶通過設備文件的名字猜出設備大致的屬性以及分區信息等;udev設備管理器的服務會一直以守護進程的形式運行並偵聽內核發出的信號來管理/dev目錄下的設備文件。

SCSI/SATA/U盤   /dev/sd[a-p]

  打印機          /dev/lp[0-15]

  光驅             /dev/cdrom

  鼠標             /dev/mouse

硬盤分區編號規則:

1.主分區或擴展分區的編號從1開始,到4結束

2.邏輯分區從編號5開始


知識點一:/dev目錄中sda設備之所以是a,並不是由插槽決定的,而是由系統內核的識別順序來決定的,而恰巧很多主板的插槽順序就是系統內核的識別順序,因此纔會被命名爲/dev/sda

知識點二:分區的編號並不代表着分區的個數,比如sda3 表示這是設備上的第三個分區,這個是錯誤的。因爲分區的數字編碼不一定是強制順延下來的,也有可能是手工指定的。因此sda3 只能表示是編號爲3 的分區,而不能判斷sda 設備上已經存在了3 個分區。

例:“/dev/sdb5”表示“這是系統第二個被識別的硬件設備上的編號爲5的邏輯分區的設備文件”

clip_image002[4]

知識點三:硬盤設備是由大量的扇區組成的。每個扇區的容量爲512字節,其中第一個扇區最重要,保存着主引導記錄與分區表信息。主引導記錄需要佔用446字節,分區表爲64字節,結束符佔用2字節,分區表中每記錄一個分區信息需要16字節,這樣一來最多隻有4個分區信息可以寫入第一扇區,這4個分區就是4個主分區。

clip_image004[4]

 爲了解決分區個數不夠的問題,可以將第一個扇區的分區表中16字節(原本要寫入主分區信息)的空間(稱之爲擴展分區)拿出來指向另外一個分區。換言之,擴展分區並不是一個真正的分區,而是一個佔用16字節分區表空間的指針。用戶一般會選擇使用3個主分區加1個擴展分區的方法,然後在擴展分區中創建出數個邏輯分區,從而滿足多分區(大於4)的要求。

所謂擴展分區,嚴格地講它不是一個實際意義的分區,它僅僅是一個指向下一個分區的指針,這種指針機構將形成一個單向鏈表。

主分區、擴展分區、邏輯分區可以像下圖那樣來規劃:

clip_image006[4]

二、 文件系統

Ext3:  是一款日誌文件系統,能夠在系統異常宕機時避免文件系統資料丟失,並能自動修復數據的不一致與錯誤。然而當硬盤容量較大時,所需的修復時間也會很長,而且也不能百分百保證資料不會丟失。它會把整個磁盤的每個寫入動作的細節都預先記錄下來,以便在發生異常宕機後能回溯追蹤到被中斷的部分,然後嘗試進行修復。

Ext4:  Ext3的改進版本,作爲RHEL6系統中的默認文件管理系統,它支持的存儲容量高達1EB,且能夠有無限多的子目錄。另外,Ext4文件系統能夠批量分配block塊,從而極大地提高了讀寫效率。

XFS:  是一種高性能的日誌文件系統,而且是RHEL7中默認的文件管理系統,它的優勢在發生意外宕機後尤其明顯,即可以快速地恢復可能被破壞的文件,而且強大的日誌功能只用花費極低的計算和存儲性能。而且它最大可支持的存儲容量爲18EB,幾乎滿足了所有要求。

三、 分區

0. 當前系統分區情況

clip_image008[4]

根據第二節講的物理設備的命名規則,我們可以推斷出我們接下來添加的新硬盤是/dev/sdb

1. 首先添加一塊硬盤

clip_image010[4]

clip_image012[4]

選擇SCSI 點擊下一步 選擇創建新虛擬磁盤

clip_image014[4]

點擊下一步,點擊完成

clip_image016[3]

clip_image018[3]

2. 讓系統識別新添加的磁盤

使用命令fdisk -l , 可以查看磁盤的分區信息

clip_image020[3]

仍然只有/dev/sda,那麼我們預期的/dev/sdb去哪兒了呢?

2.1>

重啓系統(不用動腦就搞定)有人說,我比較懶,不想動腦,那麼這種方法(重啓系統,一切搞定)很適合你。那麼,萬一要是此Linux系統有服務正在運行,而又不能重啓呢?咋辦,這時就要動手+動腦了。出絕招了,請看下面方法。

2.2>

使用命令 cat /proc/scsi/scsi

clip_image021

上圖所顯示的是剛纔我們fdisk -l 所看到的/dev/sda 這個磁盤的信息,簡單介紹一下Host、Channel、Id、Lun 的含義:

HOST:主機適配器標識 第一個適配器爲 00

Channel:主機適配器上的SCSI通道,第一個通道爲 00

ID :設備的SCSI標識 即硬盤標識 從00開始

Channel 值一樣 同時 ID一樣的多條信息說明 同一個硬盤被劃分了多個分區

Channel 值一樣 同時 ID有多個 說明這幾個硬盤組成了 卷組 或者 RAID

Lun:全稱是Logical Unit Number,也就是邏輯單元號,(默認情況都是0)

/dev/sda 是 00 00 00 00 所以我們新添加的磁盤/dev/sdb只需要id+1 即00 00 01 00 ,如果/dev/sdc 呢,當然是 00 00 02 00咯

瞭解了這些,我們來讓系統識別我們新添加的/dev/sdb

clip_image022

如上,我們就能看到出現了未分區的磁盤/dev/sdb

3.磁盤分區

clip_image023

不記得命令的話輸入m獲取幫助,以下是分區過程中我們常用的命令:

clip_image024

clip_image025

clip_image026

clip_image028

clip_image029

clip_image030

clip_image031

clip_image032

clip_image033

clip_image034


拓展知識:

一、文件系統

1.1 Sector(扇區)與Block(塊)

硬盤的最小存儲單位:sector(扇區),每個扇區儲存512字節;操作系統會一次性連續讀取多個扇區,即一次性讀取多個扇區稱爲一個block(塊)。

文件存取的最小單位:block(塊),由多個扇區組成;block的大小常見的有1KB、2KB、4KB,在linux中常見設置爲4KB,即連續8個扇區組成一個block;/boot分區的block一般爲1KB

每個block只能存放一個文件,如果文件的大小比block大,會申請更多的block;如果文件的大小比block小,仍會佔用一個block,剩餘的空間會浪費

例:有1萬個文件,大小爲10B,block爲4KB

理論上佔用空間大小:10000 * 10B=97.656MB

實際上佔用空間大小:10000 * 4KB = 40GB

1.2 superblock、inode與block

操作系統對於文件數據的存放包括兩個部分:1文件內容、2權限及文件屬性

在硬盤分區中,還有一個超級區塊(superblock)

· superblock:記錄此filesystem 的整體信息,包括inode/block的總量、使用量、剩餘量, 以及檔案系統的格式與相關信息等;

· inode:記錄檔案的屬性,一個檔案佔用一個inode,同時記錄此檔案的資料所在的block 號碼;

· block:實際記錄檔案的內容,若檔案太大時,會佔用多個block 。

1.3 文件系統(file system)的特性

一個文件除了有文件內存儲的實際內容以外,通常還含有非常多的屬性,例如,文件權限(rwx)與文件屬性(擁有者、所屬組、時間參數等)。 文件系統通常會將這兩部份的資料分別存放在不同的區塊,權限與屬性放置到inode中,至於實際資料則放置到data block區塊中,另外,還有一個超級區塊(superblock)會記錄整個檔案系統的整體信息,包括inode與block的總量、使用量、剩餘量等。一個文件佔用一個inode,同時記錄此文件的資料所在的block 號碼,block實際記錄文件的內容,若文件太大時,會佔用多個block 。

由於每個inode 與block 都有編號,而每個文件都會佔用一個inode ,inode 內則有文件實際內容放置的block 號碼。因此,我們可以知道的是,如果能夠找到文件的inode 的話,那麼自然就會知道這個文件所放置資料的block 號碼, 當然也就能夠讀出該檔案的實際資料了。這是個比較有效率的作法,因爲如此一來我們的磁盤就能夠在短時間內讀取出全部的資料, 讀寫的效能比較好。

我們將inode 與block 區塊用圖解來說明一下,如下圖所示:

clip_image035

文件系統先格式化出inode 與block 的區塊,假設某一個文件的屬性與權限資料是放置到inode 6號(藍色小方格內),而這個inode 記錄了檔案資料的實際放置點爲3,4,8,14 這四個block 號碼,此時我們的就能夠據此來排列磁盤的讀取順序,可以一口氣將四個block 內容讀出來!那麼資料的讀取就如同上圖中的線所指定的模樣了。這種資料存取的方法我們稱爲索引式檔案系統(indexed allocation)。

那有沒有其他的常用的文件系統可以比較一下呢?有,那就是我們慣用的U盤(閃存),U盤使用的文件系統一般爲FAT格式。FAT這種格式的文件系統並沒有inode存在,所以FAT沒有辦法將這個文件的所有block在一開始就讀取出來。每個block號碼都記錄在前一個block當中,他的讀取方式有點像下圖這樣:

clip_image036

上圖中我們假設文件的資料依序寫入3->4->8->14號這四個block 號碼中, 但這個文件系統沒有辦法一口氣就知道四個block 的號碼,他得將前一個block 讀出後,纔會知道下一個block 在何處。如果同一個檔案資料寫入的block 分散的太過厲害時,則我們的磁盤讀取頭將無法在磁盤轉一圈就讀到所有的資料, 因此磁盤就會多轉好幾圈才能完整的讀取到這個檔案的內容!常常會聽到所謂的『碎片整理』吧? 需要碎片整理的原因就是檔案寫入的block太過於離散了,此時檔案讀取的效能將會變的很差所致。 這個時候可以透過碎片整理將同一個檔案所屬的blocks彙整在一起,這樣資料的讀取會比較容易。

二、硬鏈接

硬鏈接:Linux系統多個文件名可以指向同一個inode,這意味着可以用不同的文件名訪問同樣的內容,對文件內容進行修改會影響到所有文件名;但刪除一個文件名不會影響另一個文件名的訪問。

硬鏈接不能跨分區鏈接,只能對文件生效,對目錄無效,鏈接後的文件不佔用系統多餘的空間

命令:ln test1.txt test2.txt         #test1.txt爲源文件,test2爲目標文件

三、軟連接(符號鏈接)

軟鏈接:軟鏈接文件和源文件的inode號不同,可以跨分區鏈接,支持目錄同時也支持文件的鏈接;軟連接就是建立一個獨立的文件,而這個文件的block中記錄指向它link的那個文件的文件名,由於只是作爲指向的動作,所以當源文件被刪除之後,軟連接的文件無法開啓,因爲找不到原始文件。不管是刪除源文件還是重啓系統,該軟鏈接還存在,但文件內容會丟失,一旦新建源同名文件,軟鏈接文件恢復正常

命令:ln –s test1.txt test2.txt #test1.txt爲源文件,test2爲目標文件

參考文獻:

https://blog.csdn.net/wo18237095579/article/details/80365485

https://www.cnblogs.com/itech/archive/2012/05/15/2502284.html

https://www.cnblogs.com/longBlogs/p/9577700.html

https://blog.csdn.net/Ohmyberry/article/details/80427492

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章