使用條塊化I/O管理多個LVM磁碟(第五部分)

贊 回覆發表於2014-12-15

在本文中,我們將瞭解邏輯卷是如何通過條塊化I/O來寫入資料到磁碟的。邏輯卷管理的酷炫特性之一,就是它能通過條塊化I/O跨多個磁碟寫入資料。

LVM條塊化是什麼?

LVM條塊化是LVM功能之一,該技術會跨多個磁碟寫入資料,而不是對單一物理卷持續寫入。

Manage LVM Disks Using Striping I/O

使用條塊化I/O管理LVM磁碟

條塊化特性

  • 它會改善磁碟效能。
  • 避免對單一磁碟的不斷的大量寫入。
  • 使用對多個磁碟的條塊化寫入,可以減少磁碟填滿的機率。

在邏輯卷管理中,如果我們需要建立一個邏輯卷,擴充套件的卷會完全對映到卷組和物理卷。在此種情形中,如果其中一個PV(物理卷)被填滿,我們需要從其它物理卷中新增更多擴充套件。這樣,新增更多擴充套件到PV中後,我們可以指定邏輯卷使用特定的物理卷寫入I/O。

假設我們有四個磁碟驅動器,分別指向了四個物理卷,如果各個物理卷總計可以達到100 I/O,我們卷組就可以獲得400 I/O

如果我們不使用條塊化方法,檔案系統將橫跨基礎物理卷寫入。例如,寫入一些資料到物理卷達到100 I/O,這些資料只會寫入到第一個PV(sdb1)。如果我們在寫入時使用條塊化選項建立邏輯卷,它會分割100 I/O分別寫入到四個驅動器中,這就是說每個驅動器中都會接收到25 I/O。

這會在迴圈過程中完成。如果這些邏輯卷其中任何一個需要擴充套件,在這種情形下,我們不能新增1個或2個PV,必須新增所有4個pv來擴充套件邏輯卷大小。這是條塊化特性的缺點之一,從中我們可以知道,在建立邏輯卷時,我們需要為所有邏輯卷分配相同的條塊大小。

邏輯卷管理有著這些特性,它使我們能夠同時在多個pv中條塊化資料。如果你對邏輯卷熟悉,你可以去設定邏輯卷條塊化。反之,你則必須瞭解邏輯卷管理的基礎知識了,請閱讀更基礎的文章來了解邏輯卷管理。

我的伺服器設定

這裡,我使用CentOS6.5用作練習。下面這些步驟也適用於RHEL、Oracle Linux以及大多數發行版。

作業系統:    CentOS 6.5
IP地址:     192.168.0.222
主機名:        tecmint.storage.com

條塊化I/O的邏輯卷管理

出於演示目的,我已經準備了4個硬碟驅動器,每個驅動器1GB大小。讓我用下面的‘fdisk’命令來列給你看看吧。

# fdisk -l | grep sd

List Hard Drives

列出硬碟驅動器

現在,我們必須為這4個硬碟驅動器sdbsdcsddsde建立分割槽,我們將用‘fdisk’命令來完成該工作。要建立分割槽,請遵從本文第一部分步驟#4的說明,並在建立分割槽時確保你已將型別修改為LVM(8e)

# pvcreate /dev/sd[b-e]1 -v

Create Physical Volumes in LVM

在LVM中建立物理卷

PV建立完成後,你可以使用‘pvs’命令將它們列出來。

# pvs

Verify Physical Volumes

驗證物理卷

現在,我們需要使用這4個物理捲來定義卷組。這裡,我定義了一個物理擴充套件大小(PE)為16MB,名為vg_strip的卷組。

# vgcreate -s 16M vg_strip /dev/sd[b-e]1 -v

上面命令中選項的說明:

  • [b-e]1 – 定義硬碟驅動器名稱,如sdb1,sdc1,sdd1,sde1。
  • -s – 定義物理擴充套件大小。
  • -v – 詳情。

接下來,驗證新建立的卷組:

# vgs vg_strip

Verify Volume Group

驗證卷組

要獲取VG更詳細的資訊,可以在vgdisplay命令中使用‘-v’選項,它將給出vg_strip卷組中所使用的全部物理卷的詳細情況。

# vgdisplay vg_strip -v

Volume Group Information

卷組資訊

回到我們的話題,現在在建立邏輯卷時,我們需要定義條塊化值,就是資料需要如何使用條塊化方法來寫入到我們的邏輯卷中。

這裡,我建立了一個名為lv_tecmint-strp1,大小為900MB的邏輯卷,它需要放到vg_strip卷組中。我定義了4個條塊,就是說資料在寫入到我的邏輯卷時,需要條塊化分散到4個PV中。

# lvcreate -L 900M -n lv_tecmint_strp1 -i4 vg_strip
  • -L –邏輯卷大小
  • -n –邏輯卷名稱
  • -i –條塊化

Create Logical Volumes

建立邏輯卷

在上面的圖片中,我們可以看到條塊尺寸的預設大小為64 KB,如果我們需要自定義條塊值,我們可以使用-I(大寫I)。要確認邏輯卷已經是否已經建立,請使用以下命令。

# lvdisplay vg_strip/lv_tecmint_strp1

Confirm Logical Volumes

確認邏輯卷

現在,接下來的問題是,我們怎樣才能知道條塊被寫入到了4個驅動器。這裡,我們可以使用‘lvdisplay’和-m(顯示邏輯卷對映)命令來驗證。

# lvdisplay vg_strip/lv_tecmint_strp1 -m

Check Logical Volumes

檢查邏輯卷

要建立自定義的條塊尺寸,我們需要用我們自定義的條塊大小256KB來建立一個1GB大小的邏輯卷。現在,我打算將條塊分佈到3個PV上。這裡,我們可以定義我們想要哪些pv條塊化。

# lvcreate -L 1G -i3 -I 256 -n lv_tecmint_strp2 vg_strip /dev/sdb1 /dev/sdc1 /dev/sdd1

Define Stripe Size

定義條塊大小

接下來,檢查條塊大小和條塊化的卷。

# lvdisplay vg_strip/lv_tecmint_strp2 -m

Check Stripe Size

檢查條塊大小

是時候使用裝置對映了,我們使用‘dmsetup’命令來完成這項工作。它是一個低階別的邏輯卷管理工具,它用於管理使用了裝置對映驅動的邏輯裝置。

# dmsetup deps /dev/vg_strip/lv_tecmint_strp[1-2]

Device Mapper

裝置對映

這裡,我們可以看到strp1依賴於4個驅動器,strp2依賴於3個裝置。

希望你已經明白,我們怎樣能讓邏輯卷條塊化來寫入資料。對於此項設定,必須掌握邏輯卷管理基礎知識。

在我的下一篇文章中,我將給大家展示怎樣在邏輯卷管理中遷移資料。到那時,請靜候更新。同時,別忘了對本文提出有價值的建議。


via: http://www.tecmint.com/manage-multiple-lvm-disks-using-striping-io/

作者:Babin Lonston 譯者:GOLinux 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

相關文章