廉價磁盤陣列(RAID)與邏輯卷(lvm)

RAID的作用介紹與LVM的創建分析

  有計算機基礎常識的人們都能了解,現如今生產出來的存儲設備比如機械式磁盤,作為個體它的存儲容量是有上限的,雖然曾經有人開發出大容量磁盤,但是成本太高,無法在社會中普及應用。對于這種大型服務器系統迫切需要的功能,催生出了一個叫做廉價冗余磁盤陣列的技術,歪果仁將它稱為RAID。而后隨著歲月的發展,又產生了邏輯卷lvm的概念。本篇針對于RAID在系統方式上設置以及lvm的詳細分析。

    一.RAID的類型介紹與如何使用命令在系統上設置

  由上可知,RAID是由多個磁盤組成的單一存儲設備方式,這樣我們對這些個磁盤就有多種組合方式,RAID0、RAID1、RAID5、RAID10等,下面結合圖文對各個排列方式進行講解。

  1.RAID0

  RAID0又稱作條帶卷,實際上是將數據分為chunk塊對多塊磁盤分別存儲,可以比喻成多個倉庫同時接收貨物。試想一下,這樣的數據存儲方式大大提高了存儲速率,并且增加了存儲空間。缺點是由于chunk塊分割存儲,如果某塊磁盤遭到破壞,整個RAID存儲的數據就無法重新拼湊起來了。所以說RAID0雖然大大增加了磁盤的讀寫速度與存儲空間,但與之相應承擔的風險也大大增加,RAID0模式無容錯能力,這時在實際生產過程中無法被容忍的。

  2.RAID1

  RAID1又被稱作鏡像卷,實際上是將兩塊磁盤存儲相同的chunk,如果其中一個磁盤損壞,另一個起到了備份的作用。這種RAID方式增加了磁盤陣列的容錯性,但是由于兩塊磁盤同時讀取數據,反而影響到磁盤的讀寫速率。組成RAID1最少有兩塊磁盤,同一組鏡像卷以最小磁盤容量為標準。

  3.RAID5

  RAID5實際上是由RAID4改良而成,RAID4最少有三個磁盤,其中兩個磁盤存儲chunk數據塊,第三塊磁盤存儲前兩塊磁盤同位置的二進制數據異或結果運算,所以三塊磁盤有兩塊磁盤可以存儲數據,如果其中這兩塊磁盤之一損壞,可以根據未損壞的那個數據盤與異或結果盤做運算恢復損壞磁盤的數據。但是由于實際過程中,異或結果盤的操作負擔太大,導致這個盤的損壞概率大大增加,所以在RAID5中,存取異或結果在三個盤之間有規律的輪循,讓每一塊磁盤分擔壓力,這樣就會使其損壞概率大大降低。

  4.RAID10與RAID01

  RAID10是將磁盤先進行RAID1排列,再將多個RAID1進行RAID0排列,這種方式很實用,既能大大增加磁盤容量,也兼備容錯性,除非兩個存儲相同chunk塊的鏡像卷同時損壞,那你只能自認倒霉。RAID01是將磁盤先進行RAID0排列,在進行RAID排列,這種方式不推薦,因為容錯性相比于RAID10大大降低,生產環境所承擔的風險也大大增加。同樣也存在RAID05,RAID50之類的排列方式。

  RAID模式的磁盤在實際生產中都是通過硬件插槽部署實現的,但是在linux系統中,也可以使用命令模式定義RAID。使用mdadm相關命令定義多個磁盤分區排列成RAID。步驟如下:

  (1)mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}1 ;

  此步驟表示創建名為md0的RAID,其中包含4個磁盤分區,排列模式為RAID5,三個分區存儲數據,一個分區做空閑盤,默認回答yes。(前提是分區id改為fd模式)  

  (2)mdadm -D /dev/md0 查看新建的RAID狀態,加選項實現RAID管理

  (3)如果設置開機啟動,在/etc/fstab文件中增加一行:/dev/md0(最好使用blkid查看UUID,在這里使用UUID) /mnt/raid(新建的掛載點文件夾) ext4 defaults 0 0

  (4)mount -a 將/dev/md0掛載

   如此四步之后,即可在分區列表上觀察到增加的RAID分區信息了。

  刪除RAID分區步驟如下:

  (1)首先將/etc/fstab文件中的/dev/md0一行刪除,如過沒有配置文件內容,先取消掛載。

  (2)mdadm -S /dev/md0   停用/dev/md0

  (3)最后刪除RAID信息:mdadm -zero-superbloclk /dev/sd{b,c,d,e}1

    二.LVM的創建和具體使用方法

  首先介紹什么是LVM,LVM就是Logical Volume Manager(邏輯卷管理器)的英文縮寫。它的作用是多個設備組織起來形成一個有邏輯劃分功能的存儲模塊??偟膩碚f分為三層:pv物理卷,vg卷組,lv邏輯卷。下面分別介紹著三種分層。

  

  1.pv:物理卷,多個物理卷能夠組成一個宏大的空間,在創建磁盤分區的時候,如果想要使某分區變為支持LVM模式的pv,要使用fdisk命令修改其分區id為8e。接著使用一系列的pv命令來創建pv。常見pv命令:

  pvcreate:創建pv,前提是分區id為8e。舉例:pvcreate /dev/sdb1 /dev/sdc1 表示將sdb1、sdc1創建為pv

  pvremove:刪除pv

  pvs:簡要格式查看所有pv

  pvdisplay:詳細查看pv

  pvck:檢查pv

  2.vg:vg稱為卷組,其內部需要添加多個pv來構成一個卷組,vg由以可指定pe(物理分區擴展)大小為單位構成,所有pe加在一塊就是vg的總空間。常用命令如下:

  vgcreate:創建卷組,vgcreate vg0 -s 4M /dev/sdb1 /dev/sdc1  表示創建卷組vg0,內部所包含的分區為/dev/sdb1 /dev/sdc1 pe大小為4M

  vgremove:刪除卷組

  vgs:查看所有vg的簡要格式

  vgdisplay:查看所有vg的詳細格式

  vgextend:在某一vg內添加pv,比如:vgextend vg0 /dev/sdd1 表示在vg0中添加pv /dev/sdd1

  vgreduce:移除卷組內的某一pv(前提是這個pv的內存沒有被lv占用)

  

  3.lv

  lv邏輯卷是將一個vg內的所有空間以le的大小為單位劃分出一塊存儲空間,常用命令有:

  lvcreate:創建邏輯卷,舉例:lvcreate -L 10G -n lv1 vg0 表示在卷組vg0基礎上創建大小為10G,名稱為lv1的邏輯卷

  lvremove:刪除邏輯卷,舉例:lvremove lv1 刪除lv1邏輯卷

  lvs,lvdisplay:查看邏輯卷

  lvextend:擴展邏輯卷,注意拓展邏輯卷之后,與之相應的文件系統也要擴展至同等大小。舉例:lvextend -L +2G /dev/vg0/lv1 表示擴展邏輯卷lv1大小增加2G,接著需要使用resize命令擴展lv1文件系統的大?。僭O我們已經創建了ext4文件系統并且掛載完畢):resize2fs /dev/vg0/lv1 即可成功擴展

  lvreduce:縮減邏輯卷,這個步驟相比于擴展邏輯卷更為復雜,因為邏輯卷上可能部分le存儲了一些數據,如果隨意縮減lv大小,可能會造成數據丟失,為了避免這種情況,縮減邏輯卷一般分為如下5個步驟。

 (1)取消掛載:umount /dev/vg0/lv1

 (2)強制檢測邏輯卷的文件系統:e2fsck -f /dev/vg0/lv1 (如果缺少這步,文件系統縮減時會報錯)

 (3)縮減文件系統未指定大?。簉esize2fs /dev/vg0/lv1 5G 縮減文件系統大小為5G

 (4)lvreduce -L 5G /dev/vg0/lv1

 (5)mount /dev/vg0/lv1 /mnt/lv1 重新掛載

  4.lvm快照snapshot

  所謂快照,就是將創建快照當時的系統數據保存下來,如果之后系統數據有變動,則會將變更前的數據放在快照區進行保存,如此之后,快照就會由變更之前的數據和未變更的數據組成。而LVM系統快照只備份變更之前的數據,沒有變更的數據不做快照保存,如果查找,指向未變更的原文件。所以通過LVM作為快照是一個不錯的選擇。由于lv快照與原lv共享許多pe塊,所以lv快照必須與原lv在同一個卷組上,下面是快照創建步驟:

 (1)lvcreate -L 2G -s -n snapshot_lv1 /dev/vg0/lv1 表示為lv1創建一個名為snaoshot_lv1的快照卷

 (2)創建快照目錄并掛載。

  創建完后,在快照的掛載目錄就可以看到lv1的數據信息了,如果lv1中的數據改變,快照內的數據還會保持原樣。

原創文章,作者:mcgeewang,如若轉載,請注明出處:http://www.www58058.com/42845

(1)
mcgeewangmcgeewang
上一篇 2016-09-11
下一篇 2016-09-11

相關推薦

  • Redis基于keepalived的高可用實踐

    接著上一章節來: Redis基于keepalived的高可用實現 方案拓撲圖 測試方案 1.       手動關閉AppM keepalived進程確認keepalived主從變化,AppS1是否變更為主 2.       開啟keepal…

    2015-03-05
  • 任務計劃

    Linux 任務計劃、周期性任務執行 未來的某時間點執行一次任務 at batch :系統 自行選擇空閑時間去執行此處指定的任務 周期性運行某任務 cron [root@localhost ~]# rpm -q at (CentOS6中使用) at-3.1.10-48.el6.x86_64 [root@localhost ~]# rpm -ql at /et…

    Linux干貨 2017-05-13
  • N27_第六周作業

    請詳細總結vim編輯器的使用并完成以下練習題 基本模式:編輯模式(命令模式),輸入模式,末行模式 模式轉換: 編輯模式–輸入模式: i:insert,在光標所在處前方輸入 a:append,在光標所在處后方輸入 o:在光標所在處的下方新建一行 I:在光標所在行行首輸入 A:在光標所在處行尾輸入 O:在光標所在處的上方打開一個新行 輸入模式&#82…

    Linux干貨 2017-10-26
  • shell腳本1

    shell腳本基礎 shell腳本: 包含一些命令或聲明,并符合一定格式的文本文件 格式要求:首行shebang機制 #!/bin/bash #!/usr/bin/python #!/usr/bin/perl shell腳本的用途有: 自動化常用命令 執行系統管理和故障排除 創建簡單的應用程序 處理文本或文件 創建shell腳本 第一步:使用文本編輯器來創建…

    2017-08-05
  • nfs,samba同步LAMP與Mysql

    使用nfs功能實現WEB頁面同步     拓撲圖見NFS實現LAMP冗余:     目的:使用網絡文件系實現LAMP的分步式資源共享    配置步驟:    配置test1:搭建NFS環境:&nbsp…

    2017-04-26
  • 進程和優先級

    ???? 什么是進程?我們先來了解一下進程的概念:我們知道操作系統最核心的概念就是進程。進程簡單來說就是在操作系統中運行的程序,它是操作系統資源管理的最小單位。但是進程是一個動態的實體,它是程序的一次執行過程。進程和程序的區別在于:進程是動態的,程序是靜態的,進程是運行中的程序,而程序是一些保存在硬盤上的可執行代碼。 ?? 當多個任務要執行時怎么辦呢?先執行…

    2017-09-09
欧美性久久久久