磁盤陣列,簡(jiǎn)單的說就是將多個(gè)硬盤通過一定的接口和協(xié)議連接起來,然后通過控制器或者磁盤管理設(shè)備來統(tǒng)一管理的存儲(chǔ)設(shè)備。下圖是磁盤陣列的實(shí)物圖。
磁陣管理器可以設(shè)置存儲(chǔ)的RAID類型,可以劃分LUN,可以把LUN映射到服務(wù)器上,前提是在光纖交換機(jī)里劃分ZONE來將主機(jī)的HBA卡跟磁陣的HBA綁定,光纖線路圖可參見4.2節(jié)。
這里重點(diǎn)講LVM的概念和操作,看完這篇文檔,你會(huì)了解LVM是什么,里面有哪些概念,如何把LUN劃分到LV掛載到服務(wù)器上,雙機(jī)切換是怎么對(duì)存儲(chǔ)進(jìn)行處理的。至于存儲(chǔ)如何跟服務(wù)器連上,如何做RAID策略,如何劃分LUN,這里不涉及。
LVM是 Logical Volume Manager(邏輯卷管理)的簡(jiǎn)寫,它由Heinz Mauelshagen在Linux 2.4內(nèi)核上實(shí)現(xiàn),目前最新版本為:穩(wěn)定版1.0.5,開發(fā)版 1.1.0-rc2,以及LVM2開發(fā)版。與傳統(tǒng)的磁盤與分區(qū)相比,LVM為計(jì)算機(jī)提供了更高層次的磁盤存儲(chǔ)。它是Linux環(huán)境下對(duì)磁盤分區(qū)進(jìn)行管理的一種機(jī)制,LVM是建立在硬盤和分區(qū)之上的一個(gè)邏輯層,來提高磁盤分區(qū)管理的靈活性。通過LVM系統(tǒng)管理員可以輕松管理磁盤分區(qū),如:將若干個(gè)磁盤分區(qū)連接為一個(gè)整塊的卷組(volume group),形成一個(gè)存儲(chǔ)池。管理員可以在卷組上隨意創(chuàng)建邏輯卷組(Logical Volumes),并進(jìn)一步在邏輯卷組上創(chuàng)建文件系統(tǒng)。管理員通過LVM可以方便的調(diào)整存儲(chǔ)卷組的大小,并且可以對(duì)磁盤存儲(chǔ)按照組的方式進(jìn)行命名、管理和分配,例如按照使用用途進(jìn)行定義:“development”和“sales”,而不是使用物理磁盤名“sda”和“sdb”。而且當(dāng)系統(tǒng)添加了新的磁盤,通過LVM管理員就不必將磁盤的文件移動(dòng)到新的磁盤上以充分利用新的存儲(chǔ)空間,而是直接擴(kuò)展文件系統(tǒng)跨越磁盤即可。
LUN的全稱是Logical Unit Number,也就是邏輯單元號(hào)。我們知道SCSI總線上可掛接的設(shè)備數(shù)量是有限的,一般為6個(gè)或者15個(gè),我們可以用target ID(也有稱為SCSI ID的)來描述這些設(shè)備,設(shè)備只要一加入系統(tǒng),就有一個(gè)代號(hào),我們?cè)趨^(qū)別設(shè)備的時(shí)候,只要說幾號(hào)幾號(hào)就ok了。
而實(shí)際上我們需要用來描述的對(duì)象,是遠(yuǎn)遠(yuǎn)超過該數(shù)字的,于是我們引進(jìn)了lun的概念,也就是說lun id的作用就是擴(kuò)充了target id。每個(gè)target下都可以有多個(gè)lun device,我們通常簡(jiǎn)稱lun device為lun,這樣就可以說每個(gè)設(shè)備的描述就有原來的target X變成target x lun y了,那么顯而易見的,我們描述設(shè)備的能力增強(qiáng)了。就好比,以前你給別人郵寄東西,寫地址的時(shí)候,可以寫:
xx市人民大街54號(hào) xxx(收)
但是自從高樓大廈越來越多,你不得不這么寫:
xx市人民大街54號(hào)xx大廈518室 xxx (收)
所以我們可以總結(jié)一下,LUN就是我們?yōu)榱耸褂煤兔枋龈嘣O(shè)備及對(duì)象而引進(jìn)的一個(gè)方法而已,一點(diǎn)也沒什么特別的地方。
LUN ID不等于某個(gè)設(shè)備,只是個(gè)號(hào)碼而已,不代表任何實(shí)體屬性,在我們的實(shí)際環(huán)境里,我們碰到的LUN可能是磁盤空間,可能是磁帶機(jī),或者是media changer等等。
LUN的神秘之處(相對(duì)于一些新手來說)在于,它很多時(shí)候不是什么可見的實(shí)體,而是一些虛擬的對(duì)象。比如一個(gè)陣列柜,主機(jī)那邊看作是一個(gè)target device,那為了某些特殊需要,我們要將磁盤陣列柜的磁盤空間劃分成若干個(gè)小的單元給主機(jī)來用,于是就產(chǎn)生了一些什么邏輯驅(qū)動(dòng)器的說法,也就是比target device級(jí)別更低的邏輯對(duì)象,我們習(xí)慣于把這些更小的磁盤資源稱之為L(zhǎng)UN0,LUN1,LUN2……什么的。而操作系統(tǒng)的機(jī)制使然,操作系統(tǒng)識(shí)別的最小存儲(chǔ)對(duì)象級(jí)別就是LUN Device,這是一個(gè)邏輯對(duì)象,所以很多時(shí)候被稱之為L(zhǎng)ogical Device。
物理卷physical volume ,典型的物理卷是硬盤分區(qū),但也可以是整個(gè)硬盤或已創(chuàng)建的Software RAID 卷。
卷組volume group ,卷組是LVM中最高抽象層,是由一個(gè)或多個(gè)物理卷所組成的存儲(chǔ)器池。
邏輯卷logical volume ,邏輯卷相當(dāng)于非LVM系統(tǒng)中的分區(qū),它在卷組上建立,是一個(gè)標(biāo)準(zhǔn)的塊設(shè)備,可以在其上建立文件系統(tǒng)。
查看硬盤空間,并創(chuàng)建分區(qū)(按以下命令逐行執(zhí)行)
為把一個(gè)磁盤或分區(qū)作為PV,首先應(yīng)使用 pvcreate 對(duì)其初始化,如對(duì)IDE硬盤/dev/hdb,
1) 使用整個(gè)磁盤,
這將在磁盤上建立VG的描述符。
2) 使用磁盤分區(qū),如/dev/hdb1。
使用fdisk 的t 命令把/dev/hda1的分區(qū)類型設(shè)為0x8e,然后運(yùn)行:
這將在分區(qū)/dev/hda1上建立VG的描述符。
PV初始化命令pvcreate的一般用法為:
在使用pvcreate 建立了PV后,可以用vgcreate 建立卷組,如有PV1、PV2分別是/dev/hda1與/dev/hdb1,使用
將建立一個(gè)名為testvg的卷組,它由兩個(gè)PV:/dev/hda1與/dev/hdb1組成。vgcreate的一般用法為:
其中的可選項(xiàng)包括設(shè)置VG最大支持的LV數(shù)、PE大小(缺省為4MB)等。
注意:當(dāng)使用devfs系統(tǒng)時(shí),應(yīng)使用設(shè)備的全名而不能是Symbol Link,如對(duì)上例應(yīng)為:
在被激活之前,VG與LV是無法訪問的,這時(shí)可用命令:
激活所要使用的卷組。當(dāng)不再使用VG時(shí),可用
使之不再可用。
vgchange可用來設(shè)置VG的一些參數(shù),如是否可用( -a [y|n]選項(xiàng))、支持最大邏輯卷數(shù)等。
在移除一卷組前應(yīng)確認(rèn)卷組中不再有邏輯卷,首先休眠卷組:
然后可用vgremove移除該卷組:
當(dāng)卷組空間不足時(shí),可以加入新的物理卷來擴(kuò)大容量,這時(shí)可用命令vgextend,如
在移除PV之前,應(yīng)確認(rèn)該P(yáng)V沒用被LV使用,這可用命令pvdisplay查看,如:
如這個(gè)PV仍在被使用,則應(yīng)把數(shù)據(jù)傳移到其它PV上。在確認(rèn)它未被使用后,可用命令vgreduce把它從VG中刪除,如:
在創(chuàng)建邏輯卷前,應(yīng)決定LV使用哪些PV,這可用命令vgdisplay與pvdisplay查看當(dāng)前卷組與PV的使用情況。在已有的卷組上創(chuàng)建邏輯卷使用命令lvcreate,如:
將在卷組testvg上建立一個(gè)1500MB的線性LV,其命名為testlv,對(duì)應(yīng)的塊設(shè)備為/dev/testvg/testlv。
將在卷組testvg上建立名為anothertestlv的LV,其大小為100LE,采用交錯(cuò)方式存放,交錯(cuò)值為2,塊大小為4KB。
如果需要LV使用整個(gè)VG,可首先用vgdisplay 查找 Total PE 值,然后在運(yùn)行l(wèi)vcreate時(shí)指定,如:
將使用卷組testvg的全部空間創(chuàng)建邏輯卷mylv。
在創(chuàng)建邏輯卷后,就可在其上創(chuàng)建文件系統(tǒng)并使用它。
命令lvcreate的常用方法:
為刪除一個(gè)邏輯卷,必須首先從系統(tǒng)卸載其上的文件系統(tǒng),然后可用lvremove刪除,如:
在本節(jié)中,將在3塊SCSI硬盤:/dev/sda,/dev/sdb,/dev/sdc上按步建立LVM。
首先要做的是初始化硬盤,建立PV,這將會(huì)刪除硬盤上的原有數(shù)據(jù)。在此,用整個(gè)硬盤為PV:
利用上面三個(gè)PV建立卷組:
其中最重要的前三條要正確,且VG size是以上三個(gè)硬盤容量之和。
在確定卷組test_vg正確后,就可在其上創(chuàng)建LV。LV的大小可在VG大小范圍內(nèi)任意選擇,如同在硬盤上分區(qū)。
建立線性方式LV
在test_vg上建立一個(gè)大小為1GB的線性方式LV:
建立交錯(cuò)方式LV
在test_vg上建立一個(gè)大小為1GB的交錯(cuò)方式LV,交錯(cuò)參數(shù)為4KB:
注意:如果使用 -i2參數(shù),則LV將僅使用test_vg中的兩塊硬盤。
在LV test_lv創(chuàng)建后,就可在其上建立文件系統(tǒng),
安裝LV:
則可以通過/mnt訪問LV。
每個(gè)籠子有15塊磁盤,分出14塊盤做raid10類的RAID Group,剩下一塊磁盤做Hot Spare盤,當(dāng)RAID Group中的某塊磁盤壞掉的時(shí)候,Hot Spare盤就會(huì)自動(dòng)頂替壞盤,Hot Spare盤是對(duì)所有RAID Group都可用的。
RAID 10(RAIS0 + RAID1)的示意圖:
這個(gè)刀片機(jī)框的后面,刀片機(jī)有自己的管理器,而且有刀片機(jī)的光纖交換機(jī),管理器和光纖交換機(jī)都有主備。
刀片機(jī),PC服務(wù)器器,光纖交換機(jī),磁陣都是連在光纖插線板上的,各部件的連接是在光纖插線板上進(jìn)行的:
上下是主備光纖交換機(jī),在光纖交換機(jī)里劃分ZONE來將主機(jī)的HBA卡跟磁陣的HBA綁定,這樣在磁陣的控制器里就可以看到主機(jī)了
磁陣有自己的管理器,可以用筆記本連上,操作磁陣,做RAID策略和劃分LUN。
磁陣管理器大圖
以MDSP的雙機(jī)腳本VGLVAgent.rar和出差期間的FS雙機(jī)腳本vg.rar為例。從腳本來看雙機(jī)切換對(duì)存儲(chǔ)處理的整個(gè)主體流程為:
1)主機(jī)文件系統(tǒng)解掛載
PS:此操作是main.cf文件里直接調(diào)用命令來執(zhí)行,在上面的腳本里沒有。
2)主機(jī)VG去激活
PS:如果LV綁定了裸設(shè)備需要用raw命令解除綁定
3)備機(jī)VG激活
PS:如果VG的狀態(tài)不是exported狀態(tài)的,則需要導(dǎo)入VG
4)備機(jī)LV激活
5)備機(jī)文件系統(tǒng)掛載
從腳本來看,雙機(jī)操作的對(duì)象是VG和LV,不涉及LUN。
附件: VGLVAgent.rar vg.rar
轉(zhuǎn)載信息:整理自存儲(chǔ)大爆料 之 不能說的秘密,新手必讀!!。
聯(lián)系客服