Linux‎ > ‎儲存技術‎ > ‎

實作LVM Raid-6

目的

RHEL 6.3 發行版起,LVM 開始支援 RAID4/5/6 以及新的鏡像實作。最新的鏡像實作與先前的鏡像實作有著以下的不同:

1.      新的鏡像實作之磁區類型為 raid1。先前實作的磁區類型則為 mirror

2.      新的鏡射實作採用了 MD 軟體 RAIDRAID 4/5/6 實作亦然。

3.      鏡像的實作為各個 mirror image 保有了完全冗余的 bitmap 區域,這會增強其錯誤處理的能力。這代表以此磁區類型建立的鏡像沒有 --m irrorlog 或是 --corelog 選項。

4.      新的鏡像實作可處理暫時性的錯誤。

5.      新的鏡射實作支援 snapshot(較高等級的 RAID 實作亦如此)。目前尚不支援針對於磁區類型為mirror 的鏡像製作 snapshot(儘管可建立)。

6.      鏡像映像檔能暫時性地由陣列中分割,並事後合併回陣列中。

7.      新的 RAID 實作無法偵測到叢集。您無法在叢集卷冊群組中建立 LVM RAID 邏輯卷冊。

 

 

測試環境

作業系統

Red Hat Enterprise Linux 6.4 x86_64

DISK

1.      (VOL101): 18000.0 GB

2.      (VOL102): 18000.0 GB

3.      (VOL103): 18000.0 GB

4.      (VOL104): 18000.0 GB

5.      (VOL105): 18003.6 GB

6.      (VOL106): 18003.6 GB

LVM

PV

 

VG

jvg

LV

jlv

 

設定Multipath

1.      在本系統中,伺服器端安裝了2single portHBA卡,連接至SAN Switch,目的是當單一條線路fail時,可讓另一線路接手,預防單點錯誤發生。但此方法會讓伺服器同時間抓到2組相同的裝置,因此需透過multipath軟體產生一組虛擬裝置,使此虛擬裝置自動連接到這2組相同的裝置。

2.      開始安裝multipath套件,並進行設定與配置。

[root@ JLAB ~]# yum -y install device-mapper-multipath.x86_64 device-mapper-multipath-libs.x86_64

 

[root@ JLAB ~]# vim /etc/multipath.conf

blacklist {

#devnode ".*"

}

defaults {

user_friendly_names yes

#path_grouping_policy multibus

#failback immediate

#no_path_retry fail

}

 

3.      啟動multipath daemon,並設定開機自動啟動。

[root@ JLAB ~]# service multipathd start

 

[root@ JLAB ~]# chkconfig multipathd on

 

4.      確認已成功產生multipath磁碟

[root@ JLAB ~]# multipath -d -l

mpathe (36001b4d8000162580000000000000000) dm-3 CT-2123-,VOL104

size=16T features='0' hwhandler='0' wp=rw

|-+- policy='round-robin 0' prio=0 status=active

| `- 0:0:2:0 sdd 8:48  active undef running

`-+- policy='round-robin 0' prio=0 status=enabled

  `- 1:0:2:0 sdi 8:128 active undef running

mpathd (36001b4d800009f520000000000000000) dm-2 SB-2123-,VOL105

size=16T features='0' hwhandler='0' wp=rw

|-+- policy='round-robin 0' prio=0 status=active

| `- 0:0:3:0 sde 8:64  active undef running

`-+- policy='round-robin 0' prio=0 status=enabled

  `- 1:0:3:0 sdj 8:144 active undef running

mpathc (36001b4d80001191d0000000000000000) dm-1 CT-2123-,VOL103

size=16T features='0' hwhandler='0' wp=rw

|-+- policy='round-robin 0' prio=0 status=active

| `- 0:0:1:0 sdc 8:32  active undef running

`-+- policy='round-robin 0' prio=0 status=enabled

  `- 1:0:1:0 sdh 8:112 active undef running

mpathb (36001b4d0894757930000000000000000) dm-0 CT-2123S,VOL102

size=16T features='0' hwhandler='0' wp=rw

|-+- policy='round-robin 0' prio=0 status=active

| `- 0:0:0:0 sdb 8:16  active undef running

`-+- policy='round-robin 0' prio=0 status=enabled

  `- 1:0:0:0 sdg 8:96  active undef running

mpathg (36001b4d0838458110000000000000000) dm-5 CT-2123S,VOL101

size=16T features='0' hwhandler='0' wp=rw

|-+- policy='round-robin 0' prio=0 status=active

| `- 0:0:7:0 sdl 8:176 active undef running

`-+- policy='round-robin 0' prio=0 status=enabled

  `- 1:0:7:0 sdm 8:192 active undef running

mpathf (36001b4d800009fee0000000000000000) dm-4 SB-2123-,VOL106

size=16T features='0' hwhandler='0' wp=rw

|-+- policy='round-robin 0' prio=0 status=active

| `- 0:0:4:0 sdf 8:80  active undef running

`-+- policy='round-robin 0' prio=0 status=enabled

  `- 1:0:4:0 sdk 8:160 active undef running

 

實作LVM (Logical Volume Manager)

1.      建立PV (Physical Volume)

        i.                PV相關指令

      ii.                pvcreate : 將實體磁碟或Partition建立成PV

    iii.                pvremove : 將實體磁碟或Partition移除PV屬性

    iv.                pvscan : 搜尋系統內具有PV屬性的磁碟

      v.                pvdisplay : 顯示PV狀態

    vi.                pvs : 產生PV標準化輸出的資訊

  vii.                建立PV

[root@JLAB ~]# pvcreate /dev/dm-{0,1,2,3,4,5}

  Physical volume "/dev/dm-0" successfully created

  Physical volume "/dev/dm-1" successfully created

  Physical volume "/dev/dm-2" successfully created

  Physical volume "/dev/dm-3" successfully created

  Physical volume "/dev/dm-4" successfully created

  Physical volume "/dev/dm-5" successfully created

viii.                搜尋已建立的PV

[root@JLAB ~]# pvscan

  PV /dev/mapper/mpathc   VG     lvm2 [16.37 TiB / 16.37 TiB free]

  PV /dev/mapper/mpathe   VG     lvm2 [16.37 TiB / 16.37 TiB free]

  PV /dev/mapper/mpathk   VG     lvm2 [16.37 TiB / 16.37 TiB free]

  PV /dev/mapper/mpathm   VG    lvm2 [16.37 TiB / 16.37 TiB free]

  PV /dev/mapper/mpathd   VG     lvm2 [16.37 TiB / 16.37 TiB free]

  PV /dev/mapper/mpathf   VG     lvm2 [16.37 TiB / 16.37 TiB free]

  Total: 6 [98.23 TiB] / in use: 6 [98.23 TiB] / in no VG: 0 [0   ]

    ix.                顯示每個PV的個別資訊

[root@ JLAB ~]# pvdisplay

  --- Physical volume ---

  PV Name               /dev/mapper/mpathc

  VG Name               tsmvg

  PV Size               16.37 TiB / not usable 8.50 MiB

  Allocatable            yes

  PE Size               16.00 MiB

  Total PE              1072883

  Free PE               27888

  Allocated PE          1044995

  PV UUID               dq6H7W-DlG4-jlkZ-K5Ge-I5zY-oezf-jLukI9

 

  --- Physical volume ---

  PV Name               /dev/mapper/mpathe

  VG Name               tsmvg

  PV Size               16.37 TiB / not usable 8.50 MiB

  Allocatable           yes

  PE Size               16.00 MiB

  Total PE              1072883

  Free PE               27888

  Allocated PE          1044995

  PV UUID               E4hDhH-Mkk4-TfwC-53Bc-FQ59-NUkf-tcvU7Y

 

  --- Physical volume ---

  PV Name               /dev/mapper/mpathk

  VG Name               tsmvg

  PV Size               16.37 TiB / not usable 6.25 MiB

  Allocatable           yes

  PE Size               16.00 MiB

  Total PE              1072883

  Free PE               27888

  Allocated PE          1044995

  PV UUID               2N7j1y-SXOk-2ctB-Ypt1-vtdU-2MmL-1mx8pS

 

  --- Physical volume ---

  PV Name               /dev/mapper/mpathm

  VG Name               tsmvg

  PV Size               16.37 TiB / not usable 6.25 MiB

  Allocatable           yes

  PE Size               16.00 MiB

  Total PE              1072883

  Free PE               27888

  Allocated PE          1044995

  PV UUID               pfnYpq-6udk-BDp8-52yI-Qhpk-XQzI-vvk1r4

 

  --- Physical volume ---

  PV Name               /dev/mapper/mpathd

  VG Name               tsmvg

  PV Size               16.37 TiB / not usable 6.75 MiB

  Allocatable           yes

  PE Size               16.00 MiB

  Total PE              1073097

  Free PE               28102

  Allocated PE          1044995

  PV UUID               Bh9KpG-LkBB-W590-7MFK-Yyo9-ska7-hpqsRo

 

  --- Physical volume ---

  PV Name               /dev/mapper/mpathf

  VG Name               tsmvg

  PV Size               16.37 TiB / not usable 6.75 MiB

  Allocatable           yes

  PE Size               16.00 MiB

  Total PE              1073097

  Free PE               28102

  Allocated PE          1044995

  PV UUID               zX8p2L-jraT-dBgd-oy8r-phEZ-Rtbn-gR6ED4

I.       產生PV標準化輸出的資訊

[root@JLAB ~]# pvs

        PV           VG    Fmt  Attr PSize  PFree

  /dev/mapper/mpathc  tsmvg  lvm2 a--  16.37t 435.75g

  /dev/mapper/mpathd  tsmvg  lvm2 a--  16.37t 439.09g

  /dev/mapper/mpathe  tsmvg  lvm2 a--  16.37t 435.75g

  /dev/mapper/mpathf  tsmvg  lvm2 a--  16.37t 439.09g

  /dev/mapper/mpathk  tsmvg  lvm2 a--  16.37t 435.75g

  /dev/mapper/mpathm  tsmvg  lvm2 a--  16.37t 435.75g

 

2.      組成VG (Volume Group)

II.    VG相關指令

        i.                vgcreate : 建立VG

      ii.                vgremove : 刪除VG

    iii.                vgextend : VG內新增額外的PV

    iv.                vgreduce : VG內移除PV

      v.                vgchange : 設定VG是否啟動 (active)

    vi.                vgscan : 搜尋系統上是否有VG

  vii.                vgdisplay : 顯示VG狀態

viii.                vgs : 產生VG標準化輸出的資訊

III. 建立VG

          i.                指令: vgcreate [-s N[mgt]] VG名稱 PV名稱

        ii.                -s :後面接 PE 的大小 (size) ,單位可以是 m, g, t (大小寫均可)

[root@JLAB ~]# vgcreate -s 16M jvg /dev/md{0,1,2}

  Volume group "jvg" successfully created

IV. 搜尋剛建立好的VG

[root@JLAB ~]# vgscan

  Reading all physical volumes.  This may take a while...

  Found volume group "jvg" using metadata type lvm2

V.    再搜尋一次PV,可看到每個PV後面都接了VG的字串。

[root@JLAB ~]# pvscan

  PV /dev/md0   VG jvg   lvm2 [15.98 GiB / 15.98 GiB free]

  PV /dev/md1   VG jvg   lvm2 [12.98 GiB / 12.98 GiB free]

  PV /dev/md2   VG jvg   lvm2 [9.98 GiB / 9.98 GiB free]

  Total: 3 [38.95 GiB] / in use: 3 [38.95 GiB] / in no VG: 0 [0   ]

VI. 顯示VG狀態

[root@JLAB ~]# vgdisplay

  --- Volume group ---

  VG Name               jvg

  System ID

  Format                lvm2

  Metadata Areas        3

  Metadata Sequence No  1

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                0

  Open LV               0

  Max PV                0

  Cur PV                3

  Act PV                3

  VG Size               38.95 GiB

  PE Size               16.00 MiB

  Total PE              2493

  Alloc PE / Size       0 / 0

  Free  PE / Size       2493 / 38.95 GiB

  VG UUID               tTE4e1-vwrb-P8nH-fXlF-3h2P-v0Xm-mvaaIE

VII.  產生VG標準化輸出的資訊

[root@JLAB ~]# vgs

  VG    #PV #LV #SN  Attr   VSize  VFree

  tsmvg   3   1   0   wz--n-  38.95g    0

VIII.               VG上增加PV

[root@JLAB ~]# vgextend jvg /dev/hda9

Volume group "jvg" successfully extended

 

3.      建立LV (Logical Volume)

I.       LV相關指令

      x.                lvcreate : 建立LV

    xi.                lvremove : 移除LV

  xii.                lvextend : LV裡增加容量

xiii.                lvreduce : LV裡減少容量

xiv.                lvresize : LV進行容量大小調整

  xv.                lvscan : 搜尋系統內的LV

xvi.                lvdisplay : 顯示LV狀態

xvii.                lvmdiskscan: 搜尋所有的Block裝置

xviii.                lvs : 產生LV標準化輸出的資訊

II.    建立LV

     i.                指令: lvcreate [-L N[mgt]] [--type raid[6] –i argument] [-n LV名稱] VG名稱

   ii.                指令: lvcreate [-l N] [--type raid[6] –i argument] [-n LV名稱] VG名稱

 iii.                –L : 後面接容量,容量的單位可以是 M,G,T

 iv.                –l : 後面可以接 PE 的數量。PE數量乘上PE大小(16M)就是可用容量了。

   v.                --type raid[6]: 指定RAID-6等級

 vi.                –i argument : 指定 RAID 4/5/6 邏輯卷冊的 stripe 數量

[root@JLAB ~]# lvcreate --type raid6 -i 4 -L 60T -n jlv jvg

上列-i引數為4,代表6PV volumes中,有4組作Stripe volume,剩餘2組作parity check volume

III. 在系統上可看到建立好的LV磁碟

[root@JLAB ~]# ll /dev/jvg/jlv

lrwxrwxrwx 1 root root 7 Jul 10 15:43 /dev/jvg/jlv -> ../dm-0

 

[root@JLAB ~]# fdisk -l /dev/mapper/jvg-jlv

Disk /dev/mapper/jvg-jlv: 41.8 GB, 41825599488 bytes

255 heads, 63 sectors/track, 5085 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

 

IV. 搜尋已建立好的LV

[root@JLAB ~]# lvscan

  ACTIVE            '/dev/jvg/jlv' [38.95 GiB] inherit

V.    顯示LV資訊

[root@JLAB ~]# lvdisplay

  --- Logical volume ---

  LV Path                /dev/jvg/jlv

  LV Name                jlv

  VG Name                jvg

  LV UUID                tk6dUY-bRuU-p9Z3-RnXh-j8Yf-i9LX-JGwR3R

  LV Write Access        read/write

  LV Creation host, time JTSM, 2013-07-10 15:43:21 +0800

  LV Status              available

  # open                 0

  LV Size                38.95 GiB

  Current LE             2493

  Segments               3

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:0

 

IX. 產生LV標準化輸出的資訊

[root@JLAB ~]# lvs

  LV    VG    Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert

  jlv  jvg  -wi-ao---  38.95g

 

格式化並掛載檔案系統

1.      格式化並掛載檔案系統

[root@JLAB ~]# mkfs.ext4 /dev/jvg/jlv

[root@JLAB ~]# mkdir /JLVM

[root@JLAB ~]# mount /dev/jvg/jlv /JLVM

 

2.      設定開機後自動掛載

[root@JLAB ~]# vim /etc/fstab

加入下列一行

/dev/jvg/jlv        /JLVM                 ext4    defaults        0 1

 

LVM Configuration Metadata備份

1.      LVM Configuration metadata備份檔案預設會被存放至 “/etc/lvm/backup/” ,此備份檔並不包含使用者及系統資料。

2.      若要手動執行Metadata設定檔的備份,可使用下列指令。

I.           vgcfgbackup

3.      手動還原Metadata的設定檔,可使用下列指令。

I.           vgcfgrestore

 

LVM 問題診斷

1.      LVM發生未預期問題時,透過以下指令及方法可搜集LVM的診斷資訊。

I.           lvmdump : LVM相關資訊及診斷訊息打包成一個tar

II.        lvs –vpvs –admsetup info –c : 可取得額外的資訊

III.     lvm dumpconfig : 確認目前的配置資訊

IV.     檢測 /etc/lvm/backup/ 目錄底下的metadata配置檔資訊

 

Comments