RAID and LVM

RAID

         Redundant Arrays of  inexpensive(Independent)Disks,RAID:容錯式廉價磁盤陣列,容錯式獨立磁盤陣列,簡稱RAID,由加利福尼亞大學伯克利分校(University of California-Berkeley)在1988年,發表的文章:“A Case for Redundant Arrays of Inexpensive Disks”。文章中,談到了RAID這個詞匯,而且定義了RAID的5層級。

    獨立磁盤冗余陣列(RAID,redundant array of independent disks)是把相同的數據存儲在多個硬盤的不同的地方(因此,冗余地)的方法。通過把數據放在多個硬盤上,輸入輸出操作能以平衡的方式交疊,改良性能。(即把多塊硬盤通過某種方法組織成一個存儲設備來使用的技術)。這中技術表現在兩個方面,提高IO能力(通過多個磁盤并行讀寫來實現,但是對于磁盤IO能力的提升是有限的,所以有些RAID廠商采用給RAID控制器額外添加內存,CPU,IO,專用RAID自己的來提高性能)和提高耐用性(通過磁盤冗余來實現)。

    RAID的實現方式有三種

        外接式磁盤陣列:(在當前主機上提供一個專門的控制器可以接在PCI或PCI-E的接口上作為一個擴展卡)通過擴展卡提供適配能力

        內接式磁盤陣列:主板上有自己集成RAID控制器

        Software:軟件仿真的方式來實現

    RAID在組織多塊硬盤時的這種技術分為多個級別:此級別僅用于標識多塊磁盤組織在一起的工作方式有所不同

    常用的有RAID0-6

    RAID0:條帶卷

blob.png

        工作特性:需要最少兩塊磁盤或兩塊以上,把幾個相同的容量的磁盤合并在一起(磁盤容量必須相等,否則以最小容量磁盤為準,即磁盤A,10G大小,磁盤B,20G大小,那么磁盤B的實際做RAID的可用空間大小僅為10G)。將寫入的數據分割成數個塊,依次寫入的每個硬盤中,那么RAID0的可用空間為N*min(s1,s2..磁盤個數*空間最小的那顆磁盤的大?。R源颂岣咦x寫能力。一旦其中一塊硬盤損壞,那么數據自然就不完整了,所以說RAID0提高了IO能力,但是沒有冗余和錯誤修復能力。

    RAID1:鏡像卷

blob.png

        工作特性:一般都用兩塊磁盤,根據其特性來定兩個以上做RAID1沒有必要,把兩個相同容量的磁盤合并在一起(磁盤容量必須相等,否則以最小容量磁盤為準,即磁盤A,10G大小,磁盤B,20G大小,那么磁盤B的實際做RAID的可用空間大小僅為10G),將寫入的數據分別完整備份寫入每個磁盤,那么RAID0的可用空間為1*min(s1,s2…1*空間最小的那顆磁盤的大小)。以此提高冗余能力,一旦其中一塊硬盤損壞,可以繼續使用另一塊硬盤上的數據,所有說RAID1提高了冗余能力,但是沒有提高IO性能,反而略微下降,因為每次寫入的數據都要分別存儲兩份。

    

    RAID4:

        工作特性:一般需要3塊或3塊以上磁盤組織成一個RAID,好比現在分別有磁盤A,B,C,然后存數據時其中磁盤C用來存儲校驗碼,其他盤用來存儲數據,寫入數據的過程是,磁盤A存儲chunk1,磁盤B存儲chunk2,磁盤C用來存儲chunk1和chunk2的校驗碼。校驗碼可以在磁盤A或磁盤B其中之一損壞時使用異或運算的方式將數據算出來(這樣帶來的結果就是讀取速度變慢)剩余兩塊磁盤的壓力比較大,但是此時磁盤還可以進行讀寫工作,這種情況下的工作模式被稱為“降級模式” 如果要是磁盤A和磁盤B同時損壞了的話,就沒有辦法恢復數據了?;趦杀P磁盤同時損壞的風險太大,所有要在其中一塊損壞時,及時更換損壞了的硬盤,安裝上去的新硬盤會利用現有的兩塊硬盤計算出數據放入新硬盤中進行數據恢復。當然也不排除在數據恢復的時候再一次有磁盤發生損壞,那么就徹底崩盤了,考慮發生此類事件的可能性,很多RAIN控制器有內置的接口用來監控磁盤是否損壞,或者控制器支持多接一塊磁盤用來做熱備,當有一塊盤壞了,熱備盤就自動啟用取代損壞了的磁盤。鑒于RAID4校驗盤的機制,無論哪一個數據盤讀寫數據,都要經過校驗盤,所以校驗盤的壓力比其他盤的壓力都大的多。就因為此一個原因,就徹底拉低了RAID4的整體性能。

    RAID5:

        工作特性:與RAID4的區別在與,RAID4是專門取用一個盤來放校驗碼,而RAID5是分布式的校驗機制,即每塊磁盤上有有校驗碼信息,比如有磁盤A,B,C。當對DRID5寫入數據時,會把數據分割然后數據塊1寫入磁盤A,數據塊2寫入磁盤B,把數據1,2的校驗碼寫入磁盤C。簡單的說就是數據寫入的同時還會在這3塊硬盤上寫入校驗信息。RAID5的讀寫性能提升,可用空間為N-1*min(s1,s2…)磁盤數n-1,Raid 5 沒有獨立的校驗盤,所有校驗信息分散放在所有磁盤上, 只占用一個磁盤的容量.

        

    RAID6:

        工作特性:在RAID5的基礎上增加了一層分布式校驗,即每次寫入數據都寫入兩次校驗信息,雙保險,需要使用最少4塊磁盤來組建,因為每次寫入數據都要存儲校驗信息兩次,所以可用空間為(N-2)*min(s1,s2,…),讀寫性能提升有冗余能力,允許損壞兩塊磁盤。 

    RAID1+0:

blob.png

        底層是RAID1上次是RAID0!

        工作特性:先兩兩一組將磁盤制作成(鏡像卷)RAID1,然后再把多組RAID1做成(條帶卷)RAID0。工作模式就是先啟用RAID0的機制把數據依次分塊寫入每個RAID1中,而RAID的機制又把每個塊寫了兩次到不同的磁盤中。讀寫性能提升,有冗余能力,每組鏡像最多只能壞一塊,可用空間為N*min(s1,s2…)/2,最少需要4塊硬盤組建。

        Raid 10其實結構非常簡單,首先創建2個獨立的Raid1,然后將這兩個獨立的Raid1組成一個Raid0,當往這個邏輯Raid中寫數據時,數據被有序的寫入兩個Raid1中。磁盤1和磁盤2組成一個Raid1,磁盤3和磁盤4又組成另外一個Raid1;這兩個Raid1組成了一個新的Raid0。如寫在硬盤1上的數據1、3、5、7,寫在硬盤2中則為數據1、3、5、7,硬盤3中的數據為0、2、4、6,硬盤4中的數據則為0、2、4、6,因此數據在這四個硬盤上組合成Raid10,且具有raid0和raid1兩者的特性。

        雖然Raid10方案造成了50%的磁盤浪費,但是它提供了200%的速度和單磁盤損壞的數據安全性,并且當同時損壞的磁盤不在同一Raid1中,就能保證數據安全性。假如磁盤中的某一塊盤壞了,整個邏輯磁盤仍能正常工作的。

        當我們需要恢復RAID 10中損壞的磁盤時,只需要更換新的硬盤,按照RAID10的工作原理來進行數據恢復,恢復數據過程中系統仍能正常工作。原先的數據會同步恢復到更換的硬盤中。

    RAID0+1: 

        底層是RAID0,上層是RAID1

        工作特性:是先做RAID0,在做RAID1,工作模式就是先啟用RAID1機制將每塊數據分別存儲到RAID0中,然后RAID0再次把數據分割分別存儲到RAID0下的磁盤中,這樣看就有些不符合邏輯了,因為在寫入RAID1的時候數據已經被分割,在RAID0階段又要進行一次數據塊分割。每個RAIN0分割出來的數據都不一樣,而且每個RAID0不止只有兩塊硬盤。這樣RAID0+1允許壞多個磁盤,但是只能壞在同一個RAID0中。

=================================================================== 

注意

    Raid 10 和 Raid01的區別:

    RAID10又稱為RAID1+0,先進行鏡像(RAID1),再進行條帶存放(RAID0)。

        允許壞多個盤,只要不是一對磁盤壞就可以

    RAID01又稱為RAID0+1,先進行條帶存放(RAID0),再進行鏡像(RAID1)。

        允許壞多個盤,但只能在壞在同一個RAID0中,不允許兩個RAID0都有壞盤

========================================================================

JBOD:

    嚴格意義上不輸入RAID范圍呢,功能是將多個磁盤空間合并成一個大的連續空間來使用,可以空間為所有磁盤空間大小的和

========================================================================

常用級別

RAID-0,RAID-1,RAID-5,RAID-10,RADI-50,JBOD



在CentOS6上有軟件方式實現RAID    

結合內核中的md(multi devices)

mdadm:模式化的工具

命令的語法格式:mdadm[mode]<raiddevice>[option]<component-devices>

        命令 模式  要管理的設備 選項   指定設備的組成部分

支持的RAID級別:LINEAR(線性方式),RAID0,RAID1,RAID4,RAID5,RAID6,RAID10;

模式:

創建模式:-C

裝配模式: -A

監控模式: -F

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

]# cat /proc/mdstat  :查看md類型的設備狀態
]# ls /dev |grep "md"
]# mdadm -C /dev/md0 -l 5 -x 1 -n 3 /dev/sdc1 /dev/sdc2 /dev/sdc3 /dev/sdc4
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
]# mke2fs -t ext4 /dev/md0
]# mount /dev/md0 /mydata
]# df -h /dev/md0
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        9.7G   23M  9.2G   1% /mydata
]#vim /etc/fstab 寫入以下信息實現開機自動掛載
UUID="3d876103-f1fe-4b14-ab01-f98e5c46c76c" /mydata ext4 nosuid,nouser,noexec,noatime,async 0 0

<raiddevice>:/dev/md#(centos6重啟后名字會發生變化)

<component-devices>:任意塊設備

-C:創建模式

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

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

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

-c chunk_size:指明塊大小

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

例如:創建一個10G可用空間的RAID5:

-D:顯示raid的詳細信息

mdadm -D /dev/md#

管理模式

-f:標記指定磁盤為損壞

]# mdadm /dev/md0 -f /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0

-a:添加磁盤

]# mdadm /dev/md0 -a /dev/sdc1
mdadm: added /dev/sdc1

-r:移除磁盤

]# mdadm /dev/md0 -r /dev/sdc1
mdadm: hot removed /dev/sdc1 from /dev/md0

觀察md的狀態

cat /proc/mdstat

停止md設備

mdadm -S /dev/md#

watch命令

-n #:刷新時間,單位是秒;

watch -n# 'cmd'



LVM

    LVM 的全名是 Logical Volume Manager,中文可以翻譯作邏輯卷。之所以稱為“卷”可能是因為可以將filesystem 像卷軸一樣伸長或縮短之故吧!LVM 的作法是將幾個實體的分區或 磁盤 通過軟件組合成為一塊看起來是獨立的大磁盤 (VG) ,然后將這塊大磁盤再經過分區成為可使用分區 (LV), 最終就能夠掛載使用了(依賴與device mapper模塊)。系統可以進行filesystem 的擴充或縮小,其實與一個稱為 PE 的項目有關.

    PV:實際的分區或磁盤,在經過fdisk調整分區類型為(8eLinux LVM)后,使用pvcreate命令將其生成為LVM最底層的實體設備(PV),然后才可以加以利用。

    VG:將一個或一個以上的物理PV組合成一個整體的邏輯設備(卷組),這個設備就叫VG,VG的存儲空間大小是基于PV的,VG有些類似與我們給磁盤分區時候的擴展分區,擴展分區是不能用來存儲數據的,要向在其上存儲設備就必須將其再此劃分為多個邏輯分區;VG的空間支持動態擴展和收縮。

    PE:VG也會在一個邏輯層次上將每一個PV所提供的空間劃分成多個固定大小的塊(PE),PE的大小默認為4M,大小可以根據VG的定義進行設定。一旦PE被分配給LV后他就不被叫做PE而被叫做LE。

    LV:指定特定數量的PE進行創建多個邏輯卷(LV)來實現存儲數據的功能,每一個LV都是一個獨立的文件系統,可以被格式化,并且掛載至指定位置使用,LV的大小可以是VG內任意可用的空間的大小,即可以在VG空間的基礎上隨意增加縮減,而且不會對里邊的數據造成損害。

blob.png


    設備名稱:    

    /dev/mapper/VG_NAME-LV_NAME;

比如 /dev/mapper/vol0-root

    /dev/vg_name/lv_name;鏈接指向–》 /dev/mapper/VG_NAME-LV_NAME

比如 /dev/vol0/root

    /dev/dm-# (真正的設備名)

pv管理工具:

  pvs:簡要pv信息顯示

blob.png

  pvdisplay:詳細pv信息顯示

blob.png

  pvcreate /dev/DEVICE:創建pv

fdisk /dev/sdb 創建分區 并且將各分區類型改為8e LVM

blob.png 

刪除pv

blob.png

vg管理工具

  vgs

  vgdisplay

  vgcreate  創建VG [-s #[kKmMgGtTpPeE]]Vol-umeGroupName PhysicalDevicePath [PhysicalDevicePath…]

blob.png

  vgextend  增加一個PV到VG中。Vol-umeGroupName PhysicalDevicePath [PhysicalDevicePath…]

blob.png

  vgreduce  從vg中移除一個pv,移除之前要先做pvmove。把pv上的pe移動至同一個卷組上的其他pv上去。。Vol-umeGroupName PhysicalDevicePath [PhysicalDevicePath…] 

blob.png

  vgremove :刪除卷組 

 vgremove vg_name

 lv管理命令:

  lvs

  lvdispaly

  lvcreate -L #[mMgGtT] -n NAME volumegroup : -L 指明LV大小,-n 指明LV名稱, volmegroup 指明在哪個卷組中創建 

blob.png

blob.png

blob.png創建完成后就可以格式化文件系統然后掛載使用了

  lvremove /dev/VG_NAME-LV_NAME :刪除邏輯卷

 擴展邏輯卷:(步驟)

 1 lvextend -L [+]#[mMgGtT] /dev/VG_NAME-LV_NAME  -L 指明要擴展的大小

blob.png

擴展完邏輯卷之后需要繼續擴展文件系統大小,才能在df -lh 命令下看到邏輯卷的實際大小。

 2 resize2fs /dev/VG_NAME-LV_NAME 擴展文件系統大小(至實用與ext系列文件系統)

blob.png

擴展時不指明大小 即表示擴展至LV最大化

擴展后使用df -lh就可看到邏輯卷的實際大小了

blob.png

 縮減邏輯卷:(步驟)

  1 umount /dev/VG_NAME-LV_NAME:先卸載設備

  2 e2fsck -f /dev/VG_NAME-LV_NAME:強制檢測修復文件系統

  3 resize2fs /dev/VG_NAME-LV_NAME #[mMgmtT]:縮減邏輯邊界大小 需要指明縮減大小

  4 lvreduce -L [-]#[mMgGtT] /dev/VG_NAME-LV_NAME:縮減物理邊界大小 需要指明縮減大小

  5 mount /dev/VG_NAME-LV_NAME:重新掛載使用

 

 快照:snapshot:快照卷和原卷必須在同一卷組中

  lvcreate -L [mMgGtT] -p r -s -n lv_name_snapshot original_lv_name

-s 指明要創建快照 -L 指明快照大小 -p 指明快照只讀類型 -n 快照名 原卷名

-L 指明快照大小:即快照的存活時間,如果我指定快照500M 那么原卷的增長在500M之內 快照就會存活,如果原卷數據增長到500M以上,那么快照卷就完蛋了。




創建一個可用空間為1G的RAID1設備,文件系統為ext4,有一個空閑盤,開機可自動掛載至/backup目錄

1:fdisk t fd

fdisk /dev/sdb  首先創建分區,并且設置分區類型為fd RAID

2: 創建raid設備

mdadm -C /dev/md0 -l1 -a yes -n2 -x1 /dev/sdb{1,2,3} 使用/dev/sdb1,2制作raid1,/dev/sdb3做熱備盤

3:mkfs.ext4 /dev/md0 :給raid設備創建文件系統

mkfs.ext4 /dev/md0

4:vim /etc/fstab:編輯默認掛載配置信息

UUID="c2b98bb8-ce52-436e-83a6-2b8f53971972" /backup ext4 defaults 0 0 :添加此段信息

5:確保掛載點存在,然后掛載設備

mount -a /dev/md0

6:mdadm -Ds /dev/md0 > /etc/mdadm.conf:生成配置文件

mdadm -Ds /dev/md0 > /etc/mdadm.conf

mdadm -A /dev/md0 啟動raid

mdadm -A /dev/md0

7:測試

mdadm /dev/md0 -f /dev/sdf1 模擬損壞

]# mdadm /dev/md0 -f /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0

mdadm /dev/md0 -r /dev/sdf1 刪除成員

]# mdadm /dev/md0 -r /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md0

mdadm /dev/ma0 -a /dev/sdf1 增加

]# mdadm /dev/md0 -a /dev/sdb1
mdadm: added /dev/sdb1

8:刪除raid

umount /dev/raid

]# umount /dev/md0

mdadm -S /dev/md0 停止raid

]# mdadm -S /dev/md0
mdadm: stopped /dev/md0

vim /etc/fstab:刪除默認掛載配置信息

fdisk /dev/sda:刪除raid 物理盤

mdadm –zero-superblock /dev/sda 清除在blkid中的信息



創建由三塊硬盤組成的可用空間為2G的RAID5設備,要求其chunk大小為256k,文件系統為ext4,開機可自動掛載至/mydata目錄

先fdisk t fd 三個磁盤分區 各為1G

]# mdadm -C /dev/md1 -l5 -a yes -n3 -c 256K /dev/sd{c1,d1,e1}

blob.png

blob.png

]# vim /etc/fstab 添加UUID="2398a15f-9510-472d-8166-3278f1aee579" /mydata ext4 defaults 0 0 進配置文件
]# mkdir /mydata 創建掛載點
]# mount -a 掛載
]# mdadm -Ds /dev/md1 > /etc/mdadm.conf 生成配置文件
]# mdadm -A /dev/md1 開始raid1
]# cat /proc/mdstat  查看raid狀態
Personalities : [raid1] [raid6] [raid5] [raid4] 
md1 : active raid5 sde1[3] sdd1[1] sdc1[0]
      2118144 blocks super 1.2 level 5, 256k chunk, algorithm 2 [3/3] [UUU]
      
unused devices: <none>


創建和擴扎邏輯卷

]# fdisk /dev/sdd 分區并設備類型為lvm
]# pvcreate /dev/sdc1 創建物理卷 
]# vgcreate myvg /dev/sd{c1,d1} 創建卷組 默認pe大小為4M
  Physical volume "/dev/sdd1" successfully created
  Volume group "myvg" successfully created
 ]# lvcreate -n mylv -L 1G myvg 創建邏輯卷
 ]# lvextend -L 2G /dev/myvg/mylv 擴展邏輯卷
 ]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/myvg/mylv
  LV Name                mylv
  VG Name                myvg
  LV UUID                6usI4w-rzFS-zCsA-DWTj-2kDI-1JD2-W7wiPJ
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2016-08-26 11:53:12 +0800
  LV Status              available
  # open                 0
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:4

blob.png

1、創建一個至少有兩個PV組成的大小為20G的名為testvg的VG;要求PE大小為16MB, 而后在卷組中創建大小為5G的邏輯卷testlv;掛載至/users目錄

2、新建用戶archlinux,要求其家目錄為/users/archlinux,而后su切換至archlinux用戶,復制/etc/pam.d目錄至自己的家目錄

3、擴展testlv至7G,要求archlinux用戶的文件不能丟失

4、收縮testlv至3G,要求archlinux用戶的文件不能丟失

5、對testlv創建快照,并嘗試基于快照備份數據,驗正快照的功能

blob.png

blob.png

原創文章,作者:M20-1馬星,如若轉載,請注明出處:http://www.www58058.com/40760

(0)
M20-1馬星M20-1馬星
上一篇 2016-09-02
下一篇 2016-09-02

相關推薦

  • N25期第一周作業

    計算機的組成與功能  一臺能正常工作的計算機有硬件和軟件組成,計算機的硬件就好比人的軀體,計算機的軟件就好比人的思想,人的思想控制指揮人的軀體,計算機有了軟件才能進行工作。 硬件大致由CPU,內存,輸入輸出設備,存儲設備組成,各個部件的主要作用流程是:由輸入設備(例如:鍵盤)輸入數據, 數據暫時出入內存, 而后由內存傳到CPU(CPU又由運算器+控…

    Linux干貨 2016-12-05
  • Linux的哲學思想

    Linux的哲學思想 一切皆文件  幾乎把所有的資源系統抽象為文件形式:包括硬件設備,甚至通信接口等 由眾多功能單一的程序組成:一個程序只做一件事,并且做好;組合小程序完成復雜任務  力求使程序精簡凝練,出現地完成最核心的需求;盡量避免使其膨脹成為一個臃腫的程序,致使大部分代碼很少被需要和執行。 小程序易于理解,維護,消耗系統資源較少,易…

    Linux干貨 2017-07-03
  • 搭建yum倉庫

    搭建yum倉庫 背景: 在學習完如何搭建yum倉庫后,覺得搭建yum倉庫很有意義,將自己學習中的感悟和理解記錄下來,以備日后復習。 介紹: yum:全稱是Yellow dog Updater, Modified。它是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器?;赗PM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可…

    2017-08-05
  • Linux Services and Security–part1

    一、詳細描述一次加密通訊的過程,結合圖示最佳 以Bob和Alice安全通訊為例: Bob<———>Alice 1. Bob要和Alice安全通信首先要取得對方的公鑰,即對方的證書,并驗證證書的合法性。驗證過程和內容: 1)、用CA的公鑰(雙方已知)解密對方證書中CA的簽名;能解密說明證書來原可靠; 2)、用證書中標記的“簽名算法”來計算證書的相關…

    2017-10-17
  • N25-第三周博客作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@node1 ~]# who | cut -d" " -f1 | uniq (unknown) root 2、取出最后登錄到當前系統的用戶的相關信息…

    Linux干貨 2016-12-17
  • linux學習總結-linux基礎(之一)

    一、計算機的組成及其功能 馮諾依曼結構的計算機由運算器、控制器、存儲器和輸入設備、輸出設備五部分組成。馮諾依曼理論的要點是:數字計算機的數制采用二進制;計算機應該按照程序順序執行。 控制器:控制程序執行; 存儲器:記憶程序和數據; 輸入設備:輸入數據和程序; 輸出設備:輸出處理結果。 二、Linux發行版 Linux的發型版本眾多,大體可以分為兩類,一類是商…

    Linux干貨 2016-09-23
欧美性久久久久