ค้นหาเว็บไซต์

ตั้งค่า Thin Provisioning Volumes ในการจัดการ Logical Volume Management (LVM) - ส่วนที่ 4


การจัดการ Logical Volume มีคุณสมบัติที่ยอดเยี่ยม เช่น สแน็ปช็อตและ Thin Provisioning ก่อนหน้านี้ใน (ตอนที่ 3) เราได้เห็นวิธีการสแน็ปช็อตโลจิคัลวอลุ่มแล้ว ในบทความนี้ เราจะดูวิธีการตั้งค่าไดรฟ์ข้อมูลการจัดเตรียมแบบบางใน LVM

Thin Provisioning คืออะไร

Thin Provisioning ใช้ใน lvm สำหรับการสร้างดิสก์เสมือนภายใน Thin Pool สมมติว่าฉันมีความจุ 15GB ในเซิร์ฟเวอร์ของฉัน ฉันมีไคลเอนต์ 2 รายซึ่งแต่ละรายมีพื้นที่เก็บข้อมูล 5GB คุณเป็นลูกค้ารายที่สาม คุณขอพื้นที่เก็บข้อมูล 5GB ก่อนหน้านี้เราใช้เพื่อให้พื้นที่ทั้งหมด 5GB (Thick Volume) แต่คุณสามารถใช้ 2GB จากพื้นที่เก็บข้อมูล 5GB นั้นได้ และ 3GB จะว่างซึ่งคุณสามารถเติมได้ในภายหลัง

แต่สิ่งที่เราทำใน Thin Provisioning คือ เราใช้เพื่อกำหนดพูลแบบบางภายในกลุ่มวอลุ่มขนาดใหญ่กลุ่มใดกลุ่มหนึ่ง และกำหนดปริมาตรแบบบางภายในพูลแบบบางนั้น ดังนั้นไฟล์ใดก็ตามที่คุณเขียนจะถูกจัดเก็บและพื้นที่เก็บข้อมูลของคุณจะแสดงเป็น 5GB แต่พื้นที่เต็ม 5GB จะไม่จัดสรรดิสก์ทั้งหมด กระบวนการเดียวกันนี้จะดำเนินการกับลูกค้ารายอื่นเช่นกัน อย่างที่ฉันบอกไปแล้วว่ามีลูกค้า 2 ราย และคุณคือลูกค้ารายที่ 3 ของฉัน

ลองสมมุติดูว่าฉันได้กำหนด GB ทั้งหมดให้กับลูกค้าเป็นจำนวนเท่าใด ครบ 15GB แล้ว ถ้าใครมาขอ 5GB ขอได้ไหม? คำตอบคือ “ใช่“ ในการจัดเตรียมแบบบาง ฉันสามารถให้ 5GB สำหรับลูกค้ารายที่ 4 แม้ว่าฉันจะกำหนดไว้ 15GB แล้วก็ตาม

คำเตือน: ตั้งแต่ 15GB หากเรากำลังจัดสรรมากกว่า 15GB จะเรียกว่าการจัดสรรมากเกินไป

มันทำงานอย่างไร? และเราจัดเตรียมพื้นที่จัดเก็บข้อมูลให้กับลูกค้าใหม่อย่างไร?

ฉันให้คุณ 5GB แต่คุณสามารถใช้เพียง 2GB และ 3GB อื่น ๆ จะฟรี ใน Thick Provisioning เราไม่สามารถทำเช่นนี้ได้ เนื่องจากมันจะจัดสรรพื้นที่ทั้งหมดตั้งแต่แรก

ในการจัดเตรียมแบบบาง หากฉันกำหนด 5GB ให้กับคุณ มันจะไม่จัดสรรพื้นที่ดิสก์ทั้งหมดในขณะที่กำหนดโวลุ่ม แต่จะขยายเป็น 5GB ตามการเขียนข้อมูลของคุณ หวังว่าคุณจะเข้าใจ เช่นเดียวกับคุณ ไคลเอนต์อื่นๆ ก็จะไม่ใช้วอลุ่มเต็ม ดังนั้นจึงมีโอกาสที่จะเพิ่ม 5GB ให้กับไคลเอนต์ใหม่ ซึ่งเรียกว่าการจัดเตรียม

แต่จำเป็นต้องติดตามการเติบโตของปริมาณแต่ละครั้ง หากไม่เป็นเช่นนั้น มันจะจบลงด้วยหายนะ แม้ว่าการจัดสรรเกินจะเสร็จสิ้นหากไคลเอนต์ทั้ง 4 เขียนข้อมูลลงดิสก์อย่างไม่ดี คุณอาจประสบปัญหาเนื่องจากจะทำให้พื้นที่ 15GB ของคุณเต็มและล้นเพื่อให้ดิสก์โวลุ่มลดลง

ความต้องการ

  1. สร้างที่เก็บข้อมูลดิสก์ด้วย LVM ใน Linux – ส่วนที่ 1
  2. วิธีขยาย/ลด LVM ใน Linux - ตอนที่ II
  3. วิธีสร้าง/กู้คืนสแนปชอตของโลจิคัลวอลุ่มใน LVM – ตอนที่ 3
การตั้งค่าเซิร์ฟเวอร์ของฉัน
  1. ระบบปฏิบัติการ – CentOS 6.5 พร้อมการติดตั้ง LVM
  2. IP เซิร์ฟเวอร์ – 192.168.0.200

ขั้นตอนที่ 1: ตั้งค่า Thin Pool และ Volumes

มาดูวิธีการตั้งค่าพูลแบบบางและวอลุ่มแบบบางในทางปฏิบัติกันดีกว่า ก่อนอื่นเราต้องการกลุ่มวอลุ่มขนาดใหญ่ ที่นี่ ฉันกำลังสร้างกลุ่มวอลุ่มที่มี 15GB เพื่อวัตถุประสงค์ในการสาธิต ตอนนี้ แสดงรายการกลุ่มวอลุ่มโดยใช้คำสั่งด้านล่าง

vgcreate -s 32M vg_thin /dev/sdb1

ถัดไป ตรวจสอบขนาดของความพร้อมใช้งานของโลจิคัลวอลุ่ม ก่อนที่จะสร้างพูลและวอลุ่มแบบบาง

vgs
lvs

เราจะเห็นว่ามีเพียงวอลุ่มลอจิคัลเริ่มต้นสำหรับระบบไฟล์และมีการแลกเปลี่ยนอยู่ในเอาต์พุต lvs ข้างต้น

การสร้างสระน้ำแบบบาง

หากต้องการสร้าง Thin Pool สำหรับ 15GB ในกลุ่มวอลุ่ม (vg_thin) ให้ใช้คำสั่งต่อไปนี้

lvcreate -L 15G --thinpool tp_tecmint_pool vg_thin
  1. -L – ขนาดของกลุ่มวอลุ่ม
  2. –thinpool – เพื่อสร้างทินพูล
  3. tp_tecmint_pool– ชื่อพูลแบบบาง
  4. vg_thin – เราจำเป็นต้องใช้ชื่อกลุ่มวอลุ่มเพื่อสร้างพูล

หากต้องการดูรายละเอียดเพิ่มเติม เราสามารถใช้คำสั่ง 'lvdisplay'

lvdisplay vg_thin/tp_tecmint_pool

ที่นี่เราไม่ได้สร้าง Virtual Thin Volumes ใน Thin-Pool นี้ ในภาพเราจะเห็นข้อมูลพูลที่จัดสรรซึ่งแสดง 0.00%

การสร้างวอลุ่มแบบบาง

ตอนนี้เราสามารถกำหนดไดรฟ์ข้อมูลแบบบางภายในพูลแบบบางได้ด้วยความช่วยเหลือของคำสั่ง 'lvcreate' พร้อมตัวเลือก -V (เสมือน)

lvcreate -V 5G --thin -n thin_vol_client1 vg_thin/tp_tecmint_pool

ฉันได้สร้างไดรฟ์ข้อมูลเสมือน Thin ด้วยชื่อ thin_vol_client1 ภายใน tp_tecmint_pool ในกลุ่มวอลุ่ม vg_thin ของฉัน ตอนนี้ แสดงรายการวอลุ่มลอจิคัลโดยใช้คำสั่งด้านล่าง

lvs 

ตอนนี้เราได้สร้างปริมาณน้อยด้านบน นั่นเป็นสาเหตุที่ไม่มีข้อมูลแสดง เช่น 0.00%M

ได้เลย ฉันขอสร้าง Thin Volumes เพิ่มเติมอีก 2 สำหรับไคลเอ็นต์อีก 2 ราย คุณจะเห็นได้ว่าตอนนี้มีไดรฟ์ข้อมูลแบบบาง 3 ที่สร้างขึ้นใต้พูล (tp_tecmint_pool) จากจุดนี้เราจึงได้รู้ว่าฉันใช้พูลขนาด 15GB ทั้งหมดแล้ว

การสร้างระบบไฟล์

ตอนนี้ สร้างจุดเมานต์และเมานต์ไดรฟ์ข้อมูลแบบบางทั้งสามนี้ และคัดลอกไฟล์บางไฟล์ในนั้นโดยใช้คำสั่งด้านล่าง

mkdir -p /mnt/client1 /mnt/client2 /mnt/client3

แสดงรายการไดเร็กทอรีที่สร้างขึ้น

ls -l /mnt/

สร้างระบบไฟล์สำหรับวอลุ่มบางที่สร้างขึ้นเหล่านี้โดยใช้คำสั่ง 'mkfs'

mkfs.ext4 /dev/vg_thin/thin_vol_client1 && mkfs.ext4 /dev/vg_thin/thin_vol_client2 && mkfs.ext4 /dev/vg_thin/thin_vol_client3

เมานต์วอลลุ่มไคลเอนต์ทั้งสามตัวไปยังจุดเมานท์ที่สร้างขึ้นโดยใช้คำสั่ง 'เมานต์'

mount /dev/vg_thin/thin_vol_client1 /mnt/client1/ && mount /dev/vg_thin/thin_vol_client2 /mnt/client2/ && mount /dev/vg_thin/thin_vol_client3 /mnt/client3/

แสดงรายการจุดเมานต์โดยใช้คำสั่ง 'df'

df -h

ที่นี่ เราจะเห็นว่าวอลลุมไคลเอนต์ทั้ง 3 วอลลุมถูกเมาท์แล้ว ดังนั้นจึงมีการใช้ข้อมูลเพียง 3% ในทุกวอลลุมไคลเอนต์ ดังนั้น มาเพิ่มไฟล์เพิ่มเติมให้กับจุดเมานท์ทั้ง 3 จุดจากเดสก์ท็อปของฉันเพื่อเติมเต็มพื้นที่

ตอนนี้แสดงรายการจุดเมานต์และดูพื้นที่ที่ใช้ในทุกวอลุ่มบาง & แสดงรายการพูลบางเพื่อดูขนาดที่ใช้ในพูล

df -h
lvdisplay vg_thin/tp_tecmint_pool

คำสั่งด้านบนจะแสดงไพนต์เมานท์สามอันพร้อมกับขนาดเป็นเปอร์เซ็นต์

13% of datas used out of 5GB for client1
29% of datas used out of 5GB for client2
49% of datas used out of 5GB for client3

ในขณะที่มองเข้าไปในพูลขนาดเล็ก เราจะเห็นเพียง 30% ของข้อมูลที่ถูกเขียนทั้งหมด นี่คือผลรวมของวอลลุมเสมือนของไคลเอนต์สามตัวข้างต้น

การจัดสรรมากเกินไป

ตอนนี้ไคลเอนต์ ตัวที่ 4 มาหาฉันและขอพื้นที่เก็บข้อมูล 5GB ฉันให้ได้ไหม? เพราะฉันได้มอบพูล 15GB ให้กับลูกค้า 3 รายแล้ว เป็นไปได้ไหมที่จะมอบเพิ่มอีก 5GB ให้กับลูกค้ารายอื่น? ใช่ เป็นไปได้ที่จะให้ นี่คือตอนที่เราใช้ การจัดสรรมากเกินไป ซึ่งหมายถึงการให้พื้นที่มากกว่าที่ฉันมี

ให้ฉันสร้าง 5GB สำหรับลูกค้ารายที่ 4 และตรวจสอบขนาด

lvcreate -V 5G --thin -n thin_vol_client4 vg_thin/tp_tecmint_pool
lvs

ฉันมีขนาดพูลเพียง 15GB แต่ฉันได้สร้างโวลุ่ม 4 วอลุ่มภายในพูลแบบบางสูงสุด 20GB หากลูกค้าทั้งสี่รายเริ่มเขียนข้อมูลลงในไดรฟ์ข้อมูลของตนเพื่อเติมเต็ม ในเวลานั้น เราจะเผชิญกับสถานการณ์วิกฤติ ถ้าไม่เช่นนั้นก็จะไม่มีปัญหา

ตอนนี้ฉันได้สร้างระบบไฟล์ใน thin_vol_client4 จากนั้นติดตั้งภายใต้ /mnt/client4 และคัดลอกไฟล์บางไฟล์ลงไป

lvs

เราเห็นในภาพด้านบนว่าขนาดที่ใช้ในไคลเอนต์ที่สร้างขึ้นใหม่ 4 สูงถึง 89.34% และขนาดของพูลแบบบาง 59.19% ที่ใช้ หากผู้ใช้เหล่านี้ไม่ได้เขียนในปริมาณที่ไม่ดี ก็จะปราศจากการล้นหรือดรอป เพื่อหลีกเลี่ยงไม่ให้น้ำล้น เราจำเป็นต้องขยายขนาดพูลแบบบาง

ข้อสำคัญ: Thin-pools เป็นเพียงลอจิคัลวอลุ่ม ดังนั้นหากเราจำเป็นต้องขยายขนาดของ Thin-pool เราก็สามารถใช้คำสั่งเดียวกันกับที่เราเคยใช้ สำหรับการขยายโลจิคัลวอลุ่ม แต่เราไม่สามารถลดขนาดของพูลแบบบางได้

lvextend

ที่นี่เราจะดูวิธีขยาย Thin-Pool แบบลอจิคัล (tp_tecmint_pool)

lvextend -L +15G /dev/vg_thin/tp_tecmint_pool

ถัดไป แสดงรายการขนาดพูลแบบบาง

lvs

ก่อนหน้านี้ขนาด tp_tecmint_pool ของเราคือ 15GB และไดรฟ์ข้อมูลแบบ Thin 4 วอลุ่ม ซึ่งเกินการจัดสรรไป 20GB ขณะนี้ได้ขยายเป็น 30GB แล้ว ดังนั้นการจัดสรรส่วนเกินของเราจึงได้รับการปรับให้เป็นมาตรฐาน และวอลุ่มแบบบางจะปราศจากการล้นหรือดรอป วิธีนี้จะทำให้คุณสามารถเพิ่มปริมาตรลงในสระได้มากขึ้น

ที่นี่ เราได้เห็นวิธีการสร้างพูลแบบบางโดยใช้กลุ่มวอลุ่มขนาดใหญ่ และสร้างวอลุ่มแบบบางภายในพูลแบบบางโดยใช้การจัดเตรียมมากเกินไปและการขยายพูล ในบทความถัดไป เราจะมาดูวิธีการตั้งค่า lvm Striping