磁盤陣列(raid),劃分邏輯卷(lvm)
將來我們在生產環境中由于磁盤的來回讀寫量比較大,所以就容易導致磁盤的損壞率比較高。但是,處于生產環境的需求,我們還得保證服務器的正常運行?;蛘哒f我們需要對服務器的讀寫速率進行優化,這樣我們就不得不運用到這個磁盤陣列(raid )。而所謂的磁盤陣列就是使用多個磁盤組成一個陣列,進行對磁盤上的數據進行備份存儲以及分開存儲。這樣在一定的程度上即可以提升我們的讀寫速率,另一方面,也能保證我們某一塊磁盤損壞時讀寫磁盤上的數據還能正常的進行。
磁盤陣列有幾個不同的類型:
在劃分raid之前,我們需要先對不同類型的raid進行了解。raid包括raid 0,raid 1…raid 4,raid 5,raid 6以及組合raid-01 ,raid-10等等。
raid-0 :俗稱 “條帶卷”
這種模式需要相同的型號和等量容量的磁盤進行組成,這種模式下的raid局勢先將磁盤劃分為等量的區塊,如果需要往里面存儲數據的時候,數據會被等量的存儲在不同的磁盤上。比如說:我們使用兩個磁盤組合成raid 0 ,現在有100M的數據需要存儲到磁盤上,那么每個磁盤上將會存儲50M的數據。并且是依次存儲。
raid 0 由于是把數據存儲到了兩塊磁盤或者多個磁盤上了,所以 這樣的話存儲數據是比一塊磁盤的存儲的讀寫速率快的;但是raid 0 由于將數據存儲到了兩塊磁盤上,但是是沒有容錯性的,一旦其中一塊磁盤出現問題那么將不能訪問和讀寫,這樣就加大了磁盤的出錯率。做raid-0最低需要兩塊磁盤。
raid-1:俗稱為“鏡像卷”
raid 1 和raid 0 是不相同的,raid 1 存儲的時候是把數據進行備份然后每個磁盤上進行存儲一份,這樣的話可以提高磁盤的容錯率,其中一塊磁盤出現問題的時候,別外一塊磁盤還可繼續的進行服務,我們還可以正常的進行訪問和讀寫,磁盤的讀性能有所提高,但是磁盤的寫性能略微下降。
缺點就是由于一塊磁盤作為了備份,這樣就減少了磁盤的使用率。 注意: 其中對磁盤進行操作的時候,這兩塊磁盤是并行操作的。比如:往A磁盤上寫一些數據,B磁盤也會同步的進行備份。做raid-1最低需要兩塊磁盤。
raid-2和raid-3因為已經被淘汰,所以這里就不對其做過多的介紹。
raid-4 :
raid-4,是由三塊及三塊以上的磁盤組成,其中會把一個磁盤作為校驗盤,校驗時通過異或運算進行校驗。比如說三塊磁盤組成raid-4,其中兩塊磁盤進行對數據的存儲,而另外的一塊磁盤作為校驗盤,這樣做的好處就是但其中的一塊磁盤出錯的時候,我們可以使用校驗盤與另外一塊可以正常工作的磁盤做異或運算算出出問題的磁盤上的數據。這樣的話磁盤具有一定的容錯率。raid-4的優點就是及提高了讀寫速率也具有一點的容錯性;
缺點就是最低使用三塊磁盤,價格比較高,并且由于校驗盤由于需要做大量的數據校驗,很容易損壞。
raid-5:
raid-5 的出現時基于raid-4的基礎上的,它的運行機制和raid-4的運行機制是類似的。但是與raid-4不同的就是,為了解決raid-4中校驗盤易損壞的問題,raid-5做了一定的修改,raid-5是把三塊盤分別作為校驗盤,輪流做校驗盤,這樣的話在一定的程度上就避免了某一個磁盤一直作為檢驗盤易損壞的問題了。 raid-4 和raid-5都是犧牲了一定的存儲空間作為磁盤的穩定運行,把其中的一塊磁盤作為校驗盤,其磁盤的利用率降低了。
raid-01
raid-01 ,就是把多個磁盤先成對作為raid-0磁盤,然后再將劃分為raid-0的磁盤成半劃分的劃分為raid-1。比如說:我們把使用6個磁盤作為制作raid-01,這樣的話我們就先制作raid-0,進行三個磁盤作為一組,制作raid-0 。然后再把兩組raid-0 制作為raid-1 。其中一組作為存儲數據,另外一組作為
“鏡像卷” 。這樣可以增加磁盤的容錯性,但是兩個鏡像卷 不能有相同的出錯 ,那樣的話就會導致磁盤不能被訪問等。假設:現有a1,b1,c1,a2,b2,c2,6個磁盤,把a1,b1,c1 作為raid1-0,把a2,b2,c2 作為raid2-0,然后把raid1-0和raid2-0 制作raid-1 ,只要a1和a2,b1和b2,c1和c2不同時損壞,磁
盤就能正常訪問。
raid-10:
類似于上面raid-01的運作方式,raid-10,是先將磁盤成對的制作為raid-1,然后將制作成raid-1的磁盤組成raid-0 .還使用上面的例子,將上面的
a1和a2作為raid-1,同理,b1,b1 ;c1,c2 也制作為raid-1, 然后將三組raid-1再制作為raid-0。 只要a1和a2,b1和b2,c1和c2不同時損壞,磁
盤就能正常訪問。
RAID的具體實現:
-
硬件實現方式:通過使用BIOS(基本輸入輸出系統)參數調整來實現
-
軟件實現方式:通過軟件工具mdadm來實現
mdadm:是一個模擬化的工具
用法:mdadm [mode]<raiddevice>[option]<component-devices>
支持的RAID級別有:RAID-0,RAID-1,RAID-4,RAID-5,RAID-6,RAID-10
模式<mode>:創建,裝配,監控,管理
具體的操作過程所涉及的命令以及相關的選項:
1.創建
使用mdadm命令,mdadm支持的選項有:
-C:創建RAID,還有以下的子選項
-n#:使用#個塊設備來創建此RAID
-l#:所創建的RAID的級別
-a{yes|no}:自動創建目標RAID設備的設備文件
-c CHUNK_SIZE:指明塊的大小
-x#:指明空閑盤的個數
-D:顯示RAID的詳細信息
mdadm -D /dev/md#
2.裝配
使用mdadm -A選項
-A:裝配模式,重新識別此前實現的RAID
3.監控
使用mdadm -F:監控模式
4.管理
-f:標記指定磁盤為損壞
-a:添加磁盤
-r:移除指定磁盤
其他管理:
觀察md的狀態:cat /proc/mdstat
停止md設備: mdadm -S /dev/md#
—————————————————————-
下面我們演示一下制作raid-5 的步驟:(設置一塊空余盤作為檢驗盤的預備)
1.首先先在虛擬機上添加再3塊硬盤,演示是在虛擬機上做的 ,如果是在工作環境中,直接在機柜上添加好硬盤就行。如果需要使用分區模擬硬盤,需要
對分區進行劃分,更改其型號以及容量的大小和硬盤的一致 。添加好硬盤之后重啟電腦使硬盤生效,或者使用echo "- – -" > /sys/class/sisc_host/host*
使用后可以強制磁盤刷新 ,但是這樣容易損壞硬盤 ,建議重啟。開啟之后使用fdisk -l 可以查看一下安裝的硬盤是否生效了。
2.使用mdadm -C /dev/md0 – yes -l 5 -n 3 -x 1 /dev/sd{a4,b,c,d}進行制作raid 5,并且三個盤為存儲數據,其中一塊作為預留盤。
3。然后事先創建好一個目錄,把md0設置為開機自動掛載,把其內容信息編輯到/etc/fstab文件里面。
4.然后使用mount -a 進行掛載,因為在fstab里面已經寫好位置,所以直接使用mount-a 就可以把組成md0的各個成員一起掛載。掛載好之后
再使用mdadm -D /dev/md0 可以查看raid 5是否已經成功。下面的一個沒有運行的是作為預留的硬盤,一旦上面三個使用的硬盤出現什么問題,
這個預留的硬盤會自動的補充上去。這樣就增加了磁盤的容錯性。
5.使用mdadm -D /dev/md0 我們可以查看到剛剛創建好的raid5 ,還可以使用進行測試下面備用的磁盤。先把上面的一個磁盤進行停止運行,比如說:使用mdadm /dev/md0 -f /dev/sda4 ,這樣就可以把上面的sda4進行模擬損壞。這個時候,下面備用的sdd將會自動的頂替損壞的sda4磁盤,然后我們可以使用mdadm .dev/md0 -r /dev/sda4,把剛剛模擬損壞的磁盤進行移除,移除后再使用mdadm /dev/md0 -a /dev/sda4 重新把sda4添加到md0里面,這個時候我們再使用mdadm -D /dev/md0進行查看將會發現sda4又被作為預留盤。
6.最后說一下清除這個md0所有的信息。
使用umount /dev/md0 把raid-5的組成md0 進行卸載,這樣先把掛載的內容進行了清除。
卸載了之后進入到/etc/fstab 的編輯頁面把之前設置的開機自動掛載md0 進行刪除。
再使用fdisk /dev/sda,進入到磁盤分區頁面把sda4進行-d刪除(因為這個是使用分區模擬的硬盤)
把sdb,sdc,sdd從虛擬機上移除就行,生產環境中把磁盤彈出即可。
=====================================================================================================
LVM劃分邏輯卷:
在我們使用硬盤的過程中,隨著我們對數據的存儲,我們會發現慢慢的磁盤的空間會不夠用,但是我們之前的數據還是需要保留。如果我們新加一個硬盤,再復制之前的數據,再將之前的硬盤卸載重新掛載到新的硬盤下,就顯得非常的麻煩。這樣的情況下,就需要我們使用到劃分邏輯卷了。劃分邏輯卷其實就是把多個小的磁盤分區(物理卷,這個PV物理卷是磁盤分區或者類似于磁盤分區功能的基本存儲邏輯塊,如:RAID等 。但和基本的物理存儲介質,如分區,磁盤相比,卻包含與LVM相關的管理參數)組合成一個大的物理磁盤。然后,對這個大的物理磁盤(又稱為卷組VG)。對這些卷組再進行劃分為邏輯卷(LV)。
簡單的來說:LVM就是將一些零碎的磁盤分區(PV)合并成為一個大的磁盤(VG),然后再根據需要對這個較大的磁盤(VG)進行劃分為不同的小的分區(LV),需要知道的是,這些小的分區(LV)是可以動態進行擴展和縮小的。(當磁盤的容量又不夠時,我們還可以使用這樣的方法重新加載硬盤,把硬盤再加載到卷組里面,對LV進行擴展等操作)
———————–
下面我們就實現以下邏輯卷的管理:
創建一個10G的VG
1,首先先創建PV,
與PV相關的一些管理命令有:
pvcreate:將實體硬盤創建為PV
pvdisplay:顯示當前系統里面的PV的狀態
pvs,
pvscan:搜尋目前系統里面具有PV的磁碟
pvremove:將PV屬性移除
pvmove;將PV屬性移動
(1),先準備塊設備,使用fdisk調整類型為8e類型,進入fdisk里面之后,我們可一使用l進行查看各個類型,從中可以看到邏輯卷的類型為8e。
(2),然后創建pv:pvcreate [-f] /dev/sda{4,5,6}
(3),查看pv的信息:pvdisplay /dev/sda{4,5,6}
2.創建卷組(VG);
與VG相關的一些管理命令:
vgcreate:就是創建VG的命令,其命令參數比較多
vgscan:搜索系統上是否有VG的存在
vgdisplay:顯示目前系統上的VG的狀態
vgxtend:在VG內部添加額外的PV
vgreduce:在VG內部移除PV
vgchange:配置VG是否啟動
vgremove:刪除一個VG
(1)新增加一個vg,并指明其包含哪個或哪些pv實現:
vgcreate VGNAME /dev/pv1,pv2…
其中可以包含的參數為:
[-s|–physicalextentsize ,指定物理VG的大小
[-t|–test]
[-v|–verbose]
比如:vgcreate -s 20M vg_kk /dev/sda{4,5,6}
(2)此時如果想要增加VG的容量,也可以進行下面的操作:
vgextend vg_kk /dev/sda7 # 這樣就會增加vg_kk這個卷組的大小,大小為sda7的容量
3.創建LV:
與LV選項相關的一些管理命令有:
lvcreate:創建LV
lvscan:查看當前系統上LV的狀態
lvextend:在lv里面添加容量
lvreduce:在lv中減少容量
lvremove:刪除一個lv
lvresize:對lv進行容量大小的調整
lvcreate的使用方法:
lvcreate -L 10G -n kk_lv vg_kk
4.文件系統
要想使用創建好的LVM就必須對lv進行格式化掛載
(1)mkfs.ext4 /dev/vg_kk/kk_lv
(2)mkdir /testdir/lvmtest
(3)mount /dev/vg_kk/kk_lv /testdir/lvmtest
這樣進行格式化之后,創建一個目錄,將創建好的邏輯卷掛載到指定的目錄即可
——————————-
增加LV的容量:
-
用fdisk 配置新的具有8e ID的磁盤
-
利用pvcreate 創建PV(將物理的磁盤等劃分為具有lvm管理的pv)
-
將vgextend 將新建的PV添加到我們的卷組里面
-
利用lvresize將新加入的pv的大小劃分給之前就有的lv(比如例子中的kk_lv)
-
通過使用resize2fs查看文件系統的容量已經增加
減少LV的容量:
-
先卸載已經掛載的lv
-
強制進行磁盤檢測:e2fsck -f /dev/vg_kk/kk_lv
-
resize -L 5000M /dev/vg_kk/kk_lv (之前的kk_lv是10G,上面介紹lvcreate)
4.mount /dev/vg_kk/kk_lv /testdir/lvmtest
這就是我們創建邏輯卷的具體步驟,其步驟比較簡單,內容也是比較好理解的。
原創文章,作者:zhong,如若轉載,請注明出處:http://www.www58058.com/41423
內容很完整,但是同時段落不分明,我已經幫你調整了一部分,后面需要作者自己去調整了,要寫,咱們就認真點,不要太粗心哦。建議每次都預覽一下。