1. 程式人生 > >linux系統管理之存儲管理

linux系統管理之存儲管理

加利福尼亞 software university linux 控制器

存儲管理:

這裏我們要學介紹兩種磁盤陣列:

磁盤陣列是由很多價格較便宜的磁盤,組合成一個容量巨大的磁盤組,利用個別磁盤提供數據所產生加成效果提升整個磁盤系統效能。利用這項技術,將數據切割成許多區段,分別存放在各個硬盤上。

一、RAID

1.RAID是什麽:

RAID:Redundant Arrays of Inexpensive Disks即:廉價磁盤冗余陣列

1988年由加利福尼亞大學伯克利分校(University of California-Berkeley)提出的“A Case for Redundant Arrays of Inexpensive Disks”。旨在將多個相對廉價的IDE接口的磁盤合成一個“陣列”來提供更好的IO性能、實現磁盤冗余,或者兩者都提供。


2.RAID的功能:

提高IO能力:

磁盤並行讀寫

提高耐用性;

磁盤冗余來實現

級別:多塊磁盤組織在一起的工作方式有所不同

RAID實現的方式:

外接式磁盤陣列:通過擴展卡提供適配能力

內接式RAID:主板集成RAID控制器

安裝OS前在BIOS裏配置

Software RAID:


RAID幾個級別:

RAID-0:條帶卷

讀、寫性能提升;

可用空間:N*min(S1,S2,...)

無容錯能力

最少磁盤數:2, 2

RAID-1:鏡像卷

讀性能提升、寫性能略有下降;

可用空間:1*min(S1,S2)

有冗余能力

最少磁盤數:2, 2+

RAID-4:

多塊數據盤異或運算值,存於專用校驗盤

壞了一塊硬盤仍然可以繼續工作的模式稱為降級模式

校驗盤壓力最大,很容易形成性能瓶頸;

RAID-5:

讀、寫性能提升

可用空間:(N-1)*min(S1,S2,...)

有容錯能力:允許最多1塊磁盤損壞

最少磁盤數:3, 3+

RAID-6:

讀、寫性能提升

可用空間:(N-2)*min(S1,S2,...)

有容錯能力:允許最多2塊磁盤損壞

最少磁盤數:4, 4+

RAID混合類型級別

RAID-10:

讀、寫性能提升

可用空間:N*min(S1,S2,...)/2

有容錯能力:每組鏡像最多只能壞一塊

最少磁盤數:4, 4+

RAID-01、RAID-50

/// 註意:混合級別的RAID陣列,其實就是將兩個不同級別的陣列組合,從而完善各自的不足,向RAID 10 ,就是先組合幾個RAID1陣列,再將RAID1整列組合成RAID0陣列

RAID7:可以理解為一個獨立存儲計算機,自身帶有操作系統和管理工具,可以獨立運行,理論上性能最高的RAID模式

JBOD:Just a Bunch Of Disks

功能:將多塊磁盤的空間合並一個大的連續空間使用

可用空間:sum(S1,S2,...)

常用級別:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD


實現方式:

硬件實現方式

軟件實現方式


RAID磁盤陣列的創建工具:

mdadm:模式化工具

命令的語法格式:

mdadm [mode] <raiddevice> [options] <component-devices>

支持的RAID級別:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10,...

模式:

創建模式:-C

裝配模式:-A

監控模式:-F

管理模式:-f, -r, -a


註意:

<raiddevice>:/dev/md#

<component-devices>:任意塊設備,註意如果是分區的話,其分區類型要改為fd

-C:創建模式

-n #:使用#個塊設備來創建此RAID

-l #:指明要創建的RAID的級別

-a {yes|no}:自動創建目標RAID設備的設備文件

-c CHUNK_SIZE:指明塊大小, 默認值為512K

-x #:指明空閑盤的個數


混雜模式:

1) 顯示RAID的詳細信息:mdadm -D /dev/md#

2) 停止md設備:mdadm -S /dev/md0


管理模式:

-f:為指定的磁盤或分區添加損壞標記

-a:添加磁盤或分區到md設備中

-r:從md設備中移除磁盤或分區

裝配模式:Assemble

-A

用於將停止的RAID設備重新裝配使之能夠正常工作。

在裝配RAID設備的時候,需要依賴/etc/mdadm.conf文件進行


mdadm -D --scan >> /etc/mdadm.conf

mdadm -S /dev/md2

mdadm -S /dev/md0

mdadm -C -n 2 -l 0 /dev/sdc /dev/sdf

mdadm -A /dev/md2

mdadm /dev/md2 -a /dev/md0

註意: 我們用cat /proc/mkstat命令來查看md的狀態

watch命令:

-n #:刷新時間間隔,單位為秒,默認為1秒;

watch -n # ‘COMMAND


LVM2

Logical Volume Manager,邏輯卷管理器,Version 2

IBM


使用純軟件的方式組織一個或多個底層的塊設備,將它們重新定義為一個邏輯塊設備的解決方案;


利用內核中的dm模塊實現;

dm:device mapper,設備映射表

dm模塊可以將一個或多個底層塊設備組織成一個邏輯塊設備;

用戶空間中的相應命令來向dm模塊發出系統調用,就可以完成後邏輯塊設備的管理;


邏輯塊設備統一存放在/dev/dm-#


重點:使用DM機制實現LVM管理的步驟:

1.創建並表示物理卷,PV

註意:如果用來創建物理卷的設備是普通分區,一定要將分區的ID修改為8e;

2.基於PV創建卷組,邏輯塊設備,創建的卷組的同時指定PE的大小;

註意:一旦PE大小被指定,就不允許更改;

3.在已經創建的卷組中創建邏輯卷

4.在邏輯卷中創建文件系統(高級格式化)

5.掛載


物理卷(pv)的管理操作:

pvcreate:創建物理卷

pvdisplay:顯示物理卷的詳細信息

pvs:顯示物理卷的簡單信息

pvremove:刪除物理卷

pvmove:將某個物理卷中的所有的PE移動到其他物理卷中;


卷組(vg)的管理操作:

vgcreate:創建卷組

-s #{kKmMgG}:指定PE的大小,如果省略該選項,默認的PE為4M;

vgremove:刪除卷組

vgextend:擴展卷組容量,將新的pv添加到卷組中

vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

vgreduce:縮減卷組容量,將pv從卷組中移除;在做此操作之前,應該先使用pvmove,保證被移 除的pv上沒有被占用的PE;

vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

vgdisplay:顯示卷組的詳細信息

vgs:顯示卷組的簡短信息


邏輯卷(lv)的管理操作:

lvcreate:創建邏輯卷

-L LV_SIZE(#{kK|mM|gG}):指定邏輯卷的大小,不能超過卷組的容量;

-l #%{FREE|VG|ORIGIN|PVS}:指定邏輯卷占用對應存儲單元的百分比;

-n LV_NAME:指定邏輯卷的名稱

-i #:在創建邏輯卷的時候,以條帶的方式創建,並指明這個邏輯卷上有#個條帶

-I #:在創建邏輯卷的時候,以條帶的方式創建,並指明CHUNK的大小;

lvremove:移除邏輯卷

lvdisplay:顯示邏輯卷的詳細信息

lvs:顯示邏輯卷的簡短信息

lvchange:修改LV的狀態

-ay:激活邏輯卷

-an:停用邏輯卷

lvextend:擴展邏輯卷的空間,

///註意:一定要先擴展邏輯卷的物理邊界,再擴展邏輯卷的邏輯邊界;使用ext系列文件系統的時候,resize2fs命令擴展邏輯邊界;


1)擴大邏輯卷的物理邊界:

lvextend -L [+]SIZE /PATH/TO/LVM

如果SIZE有+:表示在原有邏輯卷容量的基礎上,增加SIZE空間

如果SIZE無+:表示將邏輯卷的容量擴大到SIZE空間

2)擴大邏輯卷的邏輯邊界:

e2fsck /PATH/TO/LVM

resize2fs [-f] /PATH/TO/LVM

lvreduce:縮減邏輯卷的空間

註意:先縮減邏輯卷的邏輯邊界,再縮減邏輯卷的物理邊界;使用ext系列文件系統的時候,resize2fs命令縮減邏輯邊界

lvreduce -L [-]SIZE /PATH/TO/LVM

如果SIZE有-:表示在原有邏輯卷容量的基礎上,削減SIZE空間

如果SIZE無-:表示將邏輯卷的容量直接削減至SIZE空間

umount /PATH/TO/LVM

e2fsck /PATH/TO/LVM //強制校驗數據一致性

resize2fs -f /PATH/TO/LVM LV_SiZE //修改邏輯卷的邏輯邊界,LV_SIZE為調整後的邏輯卷大小

lvchange -an /PATH/TO/LVM //關閉邏輯卷

lvreduce -L [+]SIZE /PATH/TO/LVM //修改邏輯卷的物理邊界,大小要和邏輯邊界保持一致

lvchange -ay /PATH/TO/LVM //重新激活邏輯卷

mount /PATH/TO/LVM /PATH/TO/LVM_MOUNT_POINT


為了更方便的使用邏輯卷,為/dev/dm-#設備創建了兩個符號鏈接文件:

/dev/mapper/VG_NAME-LV_NAME --> ../dm-#

/dev/VG_NAME/LV_NAME --> ../dm-#


三、邏輯卷的快照:

1.什麽是快照?

快照本身也是一種邏輯卷;目標邏輯卷的另外一個訪問路徑;快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝;對於需要備份或者復制的現有數據集臨時拷貝以及其它操作來說,快照是最合適的選擇。快照只有在它們和原來的邏輯卷不同時才會消耗空間。在生成快照時會分配給它一定的空間,但只有在原來的邏輯卷或者快照有所改變才會使用這些空間當原來的邏輯卷中有所改變時,會將舊的數據復制到快照中。快照中只含有原來的邏輯卷中更改的數據或者自生成快照後的快照中更改的數據,也可以使用lvextend擴展快照卷。

快照就是將當時的系統信息記錄下來,就好像照相一般,若將來有任何數據改動了,則原始數據會被移動到快照區,沒有改動的區域則由快照區和文件系統共享。

由於快照區與原本的LV共用很多PE的區塊,因此快照去與被快照的LV必須要要在同一個VG上!系統恢復的時候的文件數量不能高於快照區的實際容量。


快照邏輯卷

lvcreate -L SNAPSHOT_SIZE -s -p r -n SNAPSHOT_NAME /PATH/TO/ORIGIN_LVM

-L SIZE:指定快照邏輯卷的大小

-s:創建一個快照邏輯卷

-p r:創建處理的邏輯卷是只讀權限

-n SNAPSHOT_NAME:指定快照邏輯卷的名稱



linux系統管理之存儲管理