2.4 存儲管理

2.4 存儲管理

Linux針對設備類型對存儲設備進行識別,如果是IDE存儲設備,在計算機中將被識別爲hd,第一個IDE設備會被識別爲hda,第二個IDE設備將被識別爲hdb,以此類推。如果是SATAUSBSCSI設備,會被識別爲sd,以此類推。

對於分區,Linux使用數字來表示。如第一塊SATA硬盤的第一個分區爲sda1,第二塊SATA硬盤的第二個分區爲sdb2

 

2.4.1 硬盤分區

傳統的MBR分區方式是一塊硬盤最多可以分四個主分區。即使硬盤還有剩餘空間,也無法再繼續分區。無法創建大於2TB的分區。

Sda1

Sda2

Sda3

Sda4

剩餘空間

 

傳統的MBR分區方式中,如果需要更多的分區,則需要使用在擴展分區中創建邏輯分區的方法來實現。此時可以在擴展分區中劃分出多個邏輯分區,所有邏輯分區的總和爲擴展分區的大小。邏輯分區一定是以編號5開始的。SATA磁盤的第一個邏輯分區一定爲sda5

Sda1

Sda2

Sda3

擴展分區sda4

邏輯分區sda5

邏輯分區sda6

......

 

Command (m for help): m在此輸入指令m獲得幫助
Command action
   a   toggle a bootable flag切換分區啓動標記
   b   edit bsd disklabel編輯bsd磁盤標籤
   c   toggle the dos compatibility flag切換dos兼容模式
   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顯示分區表信息
   q   quit without saving changes不保存退出
   s   create a new empty Sun disklabel創建新的Sun磁盤標籤
   t   change a partition's system id修改分區id,可以通過l查看id
   u   change display/entry units修改容量單位,磁柱或扇區
   v   verify the partition table檢驗分區表
   w   write table to disk and exit保存並退出
   x   extra functionality (experts only)擴展功能

 

 

使用partprobe命令讓內核立即讀取新的分區表。或partx -a增加了分區,partx -d刪除了分區。

[root@instructor ~]# partprobe /dev/sda

GPT分區提供了分區表的冗餘以實現分區表的備份與安全。但fdisk命令不支持GPT分區方式,使用Linux的另一個分區工具parted,命令格式爲:

parted[選項][磁盤 [命令] ]

 

 

1. 修改分區表類型

[root@instructor ~]# parted /dev/sdb mklabel gpt修改分區表格式
[root@instructor ~]# parted /dev/sdb print查看系統分區表信息

 

2. 創建與刪除分區

創建新的分區需要使用parted命令的mkpart指令,語法格式如下:

parted  [磁盤] mkpart  分區類型文件系統類型開始結束

其中,mkpart指令爲創建新的分區,分區類型有:primarylogicalextended三種,文件系統類型有:fat16fat32ext2ext3linux-swap等,開始與結束標記區分開始與結束的位置(默認爲MB)。

[root@instructor ~]# parted  /dev/sdb  mkpart  primary  ext3  1  1G

上面的命令將創建一個格式爲ext3的主分區,從磁盤的第1MB開始分區,到1GB結束。

[root@instructor ~]# parted  /dev/sdb  rm  3(編號)使用rm指令刪除分區

除了基本的創建與刪除外,利用parted命令還可以進行分區檢查、調整分區大小、還原誤刪除分區等操作。

 

2.4.2 格式化與掛載文件系統

使用mkfs命令來完成格式化操作,其中Linux系統默認文件系統格式爲ext4格式。對於交換分區,我們需要使用單獨的mkswap命令實現格式化的工作。 

[root@instructor ~]# mkfs.ext4 /dev/sdb5
[root@instructor ~]# mkswap /dev/sdb3

 

掛載可以使用命令或修改系統文件兩種方式。第一種方式使用mount命令實現文件系統的掛載。

mount

描述:掛載文件系統

用法:mount [選項] [ -o[選項] ]  設備|目錄

選項:-a掛載/etc/fstab文件中所有未掛載的文件系統

-t指定文件系統類型(包括: adfs,  affs, autofs, cifs, coda, coherent, cramfs,

debugfs, devpts, efs, ext, ext2, ext3, ext4, hfs, hfsplus, hpfs, iso9660, jfs,  minix,  msdos, ncpfs,  nfs,  nfs4,  ntfs,  proc,  qnx4, ramfs, reiserfs, romfs, squashfs, smbfs, sysv, tmpfs, ubifs, udf, ufs, umsdos, usbfs, vfat, xenix, xfs, xiafs),默認ext4

-o指定掛載屬性,具體屬性可參考man幫助手冊

第二種方式是修改系統文件/etc/fstab,該文件共計六列,第一列爲設備名稱或設備標籤,第二列爲掛載點名稱(掛載點爲用戶自己創建的目錄),第三列爲文件系統類型,第四列爲掛載屬性,第五列指定該文件系統是否使用dump進行備份(0表示不備份,1表示每天備份),第六列指定該文件系統在開機後使用fsck程序進行磁盤檢測的順序(根文件系統需要指定爲1,其他文件系統一般爲2,如果爲0,則表示不需要進行磁盤檢測)。

/dev/sda6 /123 ext4  defaults 0  0

 

2.4.3 LVM邏輯卷概述

LVMLogical Volume Manager)是基於內核的一種邏輯卷管理器,LVM適合於管理大存儲設備,並允許用戶動態調整文件系統的大小。LVM的快照功能可以幫助我們快速備份數據。

物理卷(Physical VolumePV):物理卷是LVM最底層概念,是LVM的邏輯存儲塊,物理卷與磁盤分區是邏輯的對應關係。

卷組(Volume GroupVG):卷組是LVM邏輯概念上的磁盤設備,通過將單個或多個物理卷組合後生成卷組。

物理長度(Physical ExtentPE):物理長度是將物理卷組合爲卷組後,所劃分的最小存儲單位,即邏輯意義上磁盤的最小存儲單元。LVM默認PE大小爲4MB

邏輯卷(Logical VolumeLV):邏輯卷就是LVM邏輯意義上的分區,我們可以指定從卷組中提取多少容量來創建邏輯卷,最後對邏輯卷格式化並掛載使用。

將分區轉換爲物理卷的命令是pvcreate,將物理卷組合爲卷組的命令是vgcreate,從卷組中提取容量創建邏輯卷的命令是lvcreate。創建完成後可以分別使用pvdisplayvgdisplaylvdisplay查看效果。

1. pvcreate

描述:使用LVM對磁盤或分區進行初始化

用法:pvcreate [選項物理卷 [物理卷...]

2. vgcreate-s指定PE大小

描述:創建卷組

用法:vgcreate [選項卷組名稱 物理設備路徑 [物理設備路徑...]

3. lvcreate

描述:在已存在的卷組中創建邏輯卷

用法:lvcreate [選項卷組名稱或路徑 [物理卷路徑]

選項:-l指定使用多少個卷組中的PE創建邏輯卷,PE容量在創建卷組時已經指定

-L直接指定邏輯卷的容量大小,單位可以是bB)、sS)、kK)、mM)、gG)、tT)、pP)、eE

-n指定邏輯卷名稱

[root@instructor ~]# pvcreate /dev/sdb{5,6,7}
[root@instructor ~]# vgcreate -s 8M ceshi_vg1 /dev/sdb{5,6}
[root@instructor ~]# lvcreate -l 40 -n ceshi_lv1 ceshi_vg1 /dev/sdb6

 

指定使用/dev/sdb6這個物理卷的存儲空間

 

附:修改分區標籤爲LVM,即8e

 

2.4.5 修改LVM分區容量

使用lvextend命令調整邏輯卷大小。但lvextend僅調整邏輯卷大小,使用該命令調整完邏輯卷大小後,還需要使用resize2fs命令更新文件系統的大小。

[root@instructor ~]# lvextend -L +100M /dev/mapper/ceshi_vg1-ceshi_lv1
[root@instructor ~]# resize2fs /dev/mapper/ceshi_vg1-ceshi_lv1

 

LVM的卷組也是可以動態調整容量大小的,這是需要使用fdisk創建一個新的分區,並使用pvcreate命令轉換爲物理卷格式,接着通過vgextend將新的物理卷追加至現有的卷組空間中,最後使用lvextend調整邏輯卷的容量。

[root@instructor ~]# vgextend ceshi_vg1 /dev/sdb7

 

2.4.6 刪除LVM分區

使用LVM命令輕鬆地刪除之前創建的物理卷、卷組、邏輯卷。刪除的順序應該與創建時的順序相反,也就是卸載文件系統、刪除邏輯卷、刪除卷組、刪除物理卷。

[root@instructor ~]# lvremove /dev/mapper/ceshi_vg1-ceshi_lv1
[root@instructor ~]# vgremove ceshi_vg1
[root@instructor ~]# pvremove /dev/sdb{5,6,7}

 

 

2.4.7 RAID磁盤陣列概述

RAIDRedundant Array of Independent Disk)虛擬存儲系統。RAID即獨立冗餘磁盤陣列,其思想是將多塊獨立的磁盤按不同的方式組合爲一個邏輯磁盤,從而提高存儲容量,提升存儲性能或提供數據備份功能。

RAID分爲軟件RAID和硬件RAID兩類。硬件RAID通常需要有RAID卡,RAID卡本身會有獨立的控制部件和內存,所以不會佔有系統資源,效率高、性能強。

 

2.4.8 RAID級別

1. RAID 0(不含校驗與冗餘的條帶存儲)

多塊磁盤組合爲RAID 0 後,數據將被分割並分別存儲在每塊硬盤中,所以能最大地提升存儲性能與存儲空間,但無法容錯,RAID 0 至少需要兩塊磁盤。

如果一個文件要寫入RAID 0 ,則該文件會被分割爲多個部分,DATA1DATA2被分別同步存入磁盤1和磁盤2,其他部分依次類推。讀取該文件時,將同時從磁盤1和磁盤2中讀取數據。

缺點:因爲沒有校驗與備份,兩塊硬盤中如果有一塊磁盤損壞,即磁盤中的任何一個數據損壞將導致整個文件無法讀取。

 

2. RAID 1 (不含校驗的鏡像存儲)

多塊磁盤組合爲RAID 1 後,數據將被同時複製到每塊硬盤中,製作這種磁盤陣列至少需要兩塊硬盤,該級別的RAID只要有一塊硬盤可用,即可正常工作,該級別的陣列安全性是最好的,磁盤利用率是最低的。

如果一個 文件要寫入RAID 1 ,則該文件會寫入磁盤1,同時以複製備份的形式寫入磁盤2DATA1DATA2被同時存入磁盤1和磁盤2,其他部分依此類推。RAID 1 寫入數據的效率會降低,因爲相同數據需要同時寫入兩塊磁盤,但RAID 1 讀取數據的效率會提升,因爲數據可以同時從兩塊硬盤讀取數據。

缺點:RAID 1 寫入效率低下。此外,磁盤的利用率極低,爲總空間的一般。

 

3. RAID 2 (位級別的校驗式條帶存儲)

多塊磁盤組合爲RAID 2 後,數據將以位(bit)爲單位同步式分別存儲在不同的硬盤上,並採用海明碼(海明碼是一種具有糾錯功能的校驗碼)對數據進行校驗與恢復。

如果一個文件要寫入RAID 2 ,則該文件會被分成數據位分別同步寫入不同的磁盤中,DATA1DATA2進行海明碼運算後再寫入校驗盤中,其他部分以此類推。擁有校驗位的RAID 2 允許三塊磁盤中任何一塊磁盤損壞,並能夠對未損壞的兩塊磁盤進行運算後還原已損壞磁盤上額數據,從而實現數據恢復的功能。RAID 2 對大量數據的讀寫具有很高的性能,但對少量數據的讀寫時性能反而不好,該磁盤陣列至少需要三塊硬盤。

 

4. RAID 3 (字節級別的校驗式條帶存儲)

該級別的磁盤陣列可以參考RAID 2 的讀寫原理,僅數據分割的單位爲字節。

 

5. RAID 4 (數據塊級別的校驗式條帶存儲)

該級別的磁盤陣列與RAID 2 類似,僅數據分割單位不同。block

 

6. RAID 5 (數據塊級別的分佈式校驗條帶存儲)

多塊磁盤組合爲RAID 5 後,數據將以塊(block)爲單位同步式分別存儲在不同的硬盤上,並對數據進行海明碼運算,與其他級別不同的是,該級別的海明碼會被寫入不同的磁盤。

 

7. RAID 10 (鏡像與條帶存儲)

RAID 10 不是獨創額一種RAID級別,它由RAID 0 RAID 1 結合而成,RAID 10 繼承了RAID 0 的快速與高效,同時也繼承了RAID 1 的數據安全,RAID 10 至少需要四塊硬盤。RAID 10 通常有兩種結構,一種是RAID 0+1 結構,一種是RAID 1+0 結構。如果是RAID 1+0 ,則先使用四塊硬盤組合成兩個獨立的RAID 1 ,然後將兩個RAID 1 再組合爲一個RAID 0

當數據寫入時,首先會以條帶的方式同步寫入由兩個RAID 1 組合而成的RAID 0 中,隨後,當數據被寫入由具體磁盤組成的RAID 1 時,又可以實現雙磁盤鏡像功能。

缺點:RAID 10 繼承了RAID 0 RAID 1 的優點,但同時也繼承了一些缺點,RAID 10 的磁盤利用率很低,只有50%

2.4.9 創建與管理RAID實例

1. 創建硬盤分區

Hex code (type L to list codes): fd格式fdRAID格式

 

2. 創建RAID(本例將分別創建RAID 0 RAID 5

Linux中創建磁盤陣列可以使用mdadm命令,在Centos 6.3中,目前支持的RAID級別有RAID 0 RAID 1RAID 4RAID 5RAID 6RAID 10

 

mdadm

描述:管理linux軟件RAID設備

用法:mdadm [模式選項 <RAID設備>

選項:-C創建軟件RAIDcreate

-l指定RAID級別(level

-n指定磁盤個數

-x指定備用設備個數

[root@instructor ~]# mdadm -C /dev/md0 -l 0 -n 4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
[root@instructor ~]# mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}2
[root@instructor ~]# mdadm --detail /dev/md0查看md0信息

 

 

3. 格式化與掛載

[root@instructor ~]# mkfs.ext4 /dev/md0
[root@instructor ~]# mkfs.ext4 /dev/md5

 

將磁盤陣列設備設置爲開機自動掛載項,Centos系統開機會讀取磁盤陣列的配置文件/etc/mdadm.conf以啓動RAID設備。下面兩條命令可以幫助我們快速創建這樣的配置文件,DEVICE行代表填寫所有磁盤陣列的設備成員名稱,ARRAY行描述磁盤陣列具體的基本信息,包括名稱、級別、UUID等信息。

[root@instructor ~]# echo "DEVICE /dev/sdb1 /dev/sdb2 /dev/sdc1 /dev/sdc2 /dev/sdd1 /dev/sdd2 /dev/sde1 /dev/sde2" > /etc/mdadm.conf
[root@instructor ~]# mdadm -Evs >> /dev/mdadm.conf
[root@instructor ~]# cat /dev/mdadm.conf 
ARRAY /dev/md/5 level=raid5 metadata=1.2 num-devices=3 UUID=762e0a76:527fd9d4:2e6ff87d:297dfa17 name=instructor.example.com:5
   spares=1   devices=/dev/sdb2,/dev/sdc2,/dev/sdd2,/dev/sde2
ARRAY /dev/md/0 level=raid0 metadata=1.2 num-devices=4 UUID=16eaae13:deb2233a:cf5b1611:b1971321 name=instructor.example.com:0
   devices=/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1
[root@instructor ~]# echo "/dev/md0 /raid0 ext4 defaults 0 0" >> /etc/fstab 
[root@instructor ~]# echo "/dev/md5 /raid5 ext4 defaults 0 0" >> /etc/fstab

 

2.4.10 RAID性能測試

[root@instructor ~]# time dd if=/dev/zero of=/raid5/1.txt bs=1M count=1500
[root@instructor ~]# time dd if=/dev/zero of=/raid0/1.txt bs=1M count=1500

設備或分區hdparm -t /dev/sd

 

 

 

2.4.11 RAID故障模擬

[root@instructor ~]# mdadm /dev/md5 -f /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md5

註釋:使用-f選項(failed)模擬磁盤sdb2的損壞

由於上面做性能測試時已經往RAID 5 中寫入了1.5GB的數據,所以使用命令模擬磁盤損壞後,快速查看RAID詳細信息可以看出正在使用/dev/sde2重建數據(還原數據),而原來的/dev/sdb2成了損壞的空閒設備。

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