1. 程式人生 > >硬碟管理與RAID陣列

硬碟管理與RAID陣列

硬碟管理

硬碟管理其實無論是Linux還是windows其實都是相當重要的內容,為了更好的使用計算機/伺服器,認識硬碟的執行機制非常有必要。

最基本的硬碟管理命令是du,作用相當於你在win開啟“我的電腦”時的硬碟情況,配合du可以更加詳細的瞭解當前的硬碟情況。

[root@LinServ-1 ~]# df 
檔案系統       1K-塊        已用      可用         已用%   掛載點 
/dev/sda2 146294492   28244432 110498708        21%     / 
/dev/sda1 1019208        62360 904240           7
% /boot tmpfs 1032204 0 1032204 0% /dev/shm /dev/sdb1 2884284108 218826068 2518944764 8% /data1

引數如下

-a或–all:包含全部的檔案系統;
-h或–human-readable:以可讀性較高的方式來顯示資訊;
-i或–inodes:顯示inode的資訊;
-l或–local:僅顯示本地端的檔案系統;
-T或–print-type:顯示檔案系統的型別;

其中sda1 sda2是硬碟分割槽,代表它們都是從一塊叫做sda的硬碟上分出來的不同分割槽,而如果有多一塊硬碟,就會叫做sdb(如上所示)。

既然說到分割槽,那麼分割槽有什麼用呢?在WIN下我們都明白,分割槽可以讓一塊硬碟當作幾塊硬碟來用,以對不同的硬碟進行不同的管理。但是在linux下,本來就只有一個目錄樹,為什麼還要進行分割槽呢?

這是因為Linux的掛載(mount)機制,通過把不同的分割槽掛載到不同的目錄,來對不同的目錄進行分別管理。

以上面的程式碼為例,sda2掛載到了根目錄/,sda1掛載到了/boot,意味著根目錄下除了/boot的其他檔案和目錄都儲存在sda2分割槽,而/boot下的檔案儲存在sda1,這樣就實現了啟動檔案和普通檔案分開儲存,你可以看到sda1分割槽因為要儲存較多檔案,所以容量要大於sda2。而後面的sdb1掛載到/data1,也是同理。

tmpfs是一種虛擬檔案系統,儲存在Virtual Memory,VM由RM+Swap兩部分組成,RM是實體記憶體,Swap是由硬碟劃分出來的虛擬記憶體,因此tmpfs最大的儲存空間可達(The size of RM + The size of Swap)。 但是對於tmpfs本身而言,它並不知道自己使用的空間是RM還是Swap,這一切都是由核心的vm子系統管理的。

磁碟分割與格式化

fdisk是一種硬碟分割工具,使用方式很友善,選定磁碟後會一步一步進行操作。通過 -l引數可以直接列出分割槽表以便檢視。

# fdisk -l /dev/sda

command (m for help): m

a toggle a bootable flag 
b edit bsd disklabel 
c toggle the dos compatibility flag 
d delete a partition 
l list known partition types 
m print this menu 
n add a new partition 
o create a new empty DOS partition table
p print the partition table 
s create a new empty Sun disklabel 
t change a partition's system id 
u change display/entry units 
v verify the partition table 
w write table to disk and exit 
x extra functionality (experts only)

注意,當你進行完磁碟操作之後,要按w才能真正將新的分割槽表寫入。

分割槽完成之後。還要通過mkfs命令來進行格式化

mkfs -V -t msdos -c /dev/hda5 //在/dev/hda5上建一個msdos的檔案系統,同時檢查是否有壞軌存在,並且將過程詳細列出來
mkfs -t ext3 /dev/sda6 //將sda6分割槽格式化為ext3格式 
mkfs -t ext2 /dev/sda7 //將sda7分割槽格式化為ext2格式

回顧一下開頭說的,Linux的分割槽是需要掛載到目錄樹上的,所以這時候別忘了進行掛載。在掛載前如果目標目錄不存在,會提示錯誤,所以一定要先mkdir建立好目錄。

# mkdir /data1
# mount /dev/sda6  /data1

RAID陣列

RAID 的英文全稱為 Redundant Array of Independent Disks, 獨立磁碟冗餘陣列。 RAID 的初衷主要是為了大型伺服器伺服器 的供應商提供高階的儲存功能和冗餘的資料安全。 在系統中, RAID 被看作是一個邏輯分割槽, 但是它是由多個硬碟硬碟 的供應商組成的(最少兩塊) 。 它通過在多個硬碟上同時儲存和讀取資料來大幅提高儲存系統的資料吞吐量(Throughput) , 而且在很多 RAID 模式中都有較為完備的相互校驗/恢復的措施, 甚至是直接相互的映象備份, 從而大大提高了 RAID 系統的容錯度, 提高了系統的穩定冗餘性, 這也是 Redundant 一詞的由來。

RAID的級別很多,各級別有著各自的優缺點,使用者可以根據不同的需求來選擇合適的級別。 

RAID-0需要至少兩個硬碟,是沒有任何保護的,它只是將兩個或多個相同型號及容量的硬碟組合起來,而當系統提取資料時,它可以同時由所有硬碟(同一陣列裡)讀出資料,速度會比一個硬碟快得多。而亦因為它沒有任何的資料保護,只要其中一隻硬碟出事,所有資料便會被破壞。所以它通常應用在一些非重要資料上,如影像擷取。磁碟陣列的總容量為各個硬碟容量之和。 它的優點是讀寫效能得到很大的提升,缺點是沒有冗餘。  

RAID-1這個級別由兩個(只有兩個)硬碟組成,亦可稱為映象(Mirroring)。每一個資料均會相同的寫在兩個硬碟上,映象就是因為兩個硬碟的內容將會一模一樣,但對於系統來說都只會見到一個硬碟。當然,資料寫入的時間可能會長一點,但讀資料時,因為兩個硬碟是可以同時讀取資料的,所以效能得以提高。磁碟陣列的總容量為其中一塊硬碟的容量。這種盤陣列可靠性很高,因此RAID1常用於對出錯率要求極嚴的應用場合,如財政、金融等領域。它的優點是良好的讀取效能和很好的資料冗餘。它的缺點是很大的冗餘附加開銷和只限於兩個磁碟。
  
RAID-3是帶有一個專門的校驗盤的分條技術。資料被分佈在多個磁碟上以提高讀/寫速度,並用一個專門的校驗盤來儲存校驗資訊,當一個成員盤故障時,控制器可以從校驗盤重新恢復/生成丟失的資料。它要求至少3個盤,且其中一個為專職校驗盤。當一個成員盤故障時,控制器可以從校驗盤重新恢復/生成丟失的資料。RAID3讓整個陣列的頻寬可以充分利用,在要求大塊資料順序傳送時較理想,如:圖形、圖象、科學計算等應用。其缺點是每次讀寫要牽動整個組,每次只能完成一次I/O,所以作為檔案伺服器共享時效能不好。因為提供奇偶校驗的磁碟常成為瓶頸,所以在沒有相應技術的情況下,如回寫快取記憶體技術,不常使用。如果組成磁碟陣列的硬碟相同,磁碟陣列的總容量為各個硬碟容量之和減去一塊硬碟的容量。  

RAID-5級別也是需要至少三個硬碟。資料分割跟RAID-3一樣,但並不會有一個特定的硬碟將來儲存校驗值,所有資料及校驗值都會分佈在所有硬碟上。RAID-5消除了RAID-3在寫資料上的瓶頸,可以提供高速資料讀取並針對多使用者模式(解決了爭用校驗盤的問題 ),所以RAID-5即適於大資料量的操作,也適於各種事務處理。它是一種快速,大容量和容錯分佈合理的磁碟陣列 。RAID-5常使用緩衝技術來降低效能的不對稱性。與RAID-3一樣,如果組成磁碟陣列的硬碟相同,磁碟陣列的總容量也為各個硬碟容量之和減去一塊硬碟的容量。RAID-5級以合理的價位提供了最佳的效能和資料安全性,因此目前它很受歡迎。  

RAID-6級別至少需要四個硬碟。資料分割跟RAID-5一樣,但它有兩組奇偶性校驗資訊,而不是一組。RAID-6提供比RAID-5更高的資料容錯 ,它可以同時支援兩個驅動器故障,為資料提供100%的保護。但是由於用到兩組奇偶性校驗資訊所以它比RAID-5的效能差些。同時這個級別並非被一般的控制器所支援而且成本也十分高,所以一般只在高階在應用。