LVM และการกู้คืนความเสียหาย


13

ฉันเข้าใจว่าLVMคืออะไรและทำอะไรให้สำเร็จ แต่ฉันรู้สึกว่าฉันขาดอะไรบางอย่างไป

ให้บอกว่าเรามีไดรฟ์ทางกายภาพสองตัวคือ sda และ sdb ทั้งคู่มี 100 Megs ฉันวางมันลงใน VolumeGroup1 และสร้างหนึ่ง LogicalVolume1 หนึ่งเมกะ

จะเกิดอะไรขึ้นถ้าฉันสร้างไฟล์ 150 เมกะไบต์ 100 megs ทางกายภาพจะอยู่บน sda และ 50 ใน sdb หรือไม่ ถ้าเป็นเช่นนั้นอะไรจะบอกระบบปฏิบัติการว่าชิ้นส่วนของไฟล์อยู่ในไดรฟ์หนึ่งและอีกอันหนึ่งอยู่อีกอันหนึ่ง?

แล้วความล้มเหลวของไดรฟ์ล่ะ? สมมติว่าไม่มี RAID ถ้า sdb ล้มเหลวข้อมูลทั้งหมดใน sda จะหายไปหรือไม่ อย่างไรก็ตามมีการควบคุมว่าไฟล์ใดอยู่บนฟิสิคัลไดรฟ์

โดยทั่วไปคุณจัดการ LVM อย่างไร คุณสร้างกลุ่มวอลุ่มขนาดใหญ่หนึ่งหรือสองกลุ่มจากนั้นสร้างพาร์ติชันตามที่เหมาะสม เคล็ดลับอื่น ๆ ?


1
หากคุณต้องการหลีกเลี่ยงความซ้ำซ้อนของการจู่โจมซึ่งเป็นสื่อขนาดใหญ่และสามารถใช้งานได้กับความล้มเหลวของดิสก์เดียวสิ่งนี้อาจใช้ได้สำหรับคุณ: serverfault.com/a/543684/165065
DennisH

คำตอบ:


15

ให้บอกว่าเรามีไดรฟ์ทางกายภาพสองตัว sda และ sdb ทั้งคู่มี 100 Megs ฉันใส่มันลงใน VolumeGroup1 และสร้างหนึ่ง LogicalVolume1 หนึ่งเมกะ
จะเกิดอะไรขึ้นถ้าฉันสร้างไฟล์ 150 เมกะไบต์ 100 megs ทางกายภาพจะอยู่บน sda และ 50 ใน sdb หรือไม่

ถูกต้อง (สมมติว่าระบบไฟล์ว่างเปล่าก่อนที่จะสร้างไฟล์)

ถ้าเป็นเช่นนั้นอะไรจะบอกระบบปฏิบัติการว่าชิ้นส่วนของไฟล์อยู่ในไดรฟ์หนึ่งและอีกอันหนึ่งอยู่อีกอันหนึ่ง?

LVM บอกระบบปฏิบัติการว่ามีดิสก์ 200MB เดียว ส่วน LVM ของเคอร์เนล (ประกอบด้วยสองส่วนคือเครื่องมือการจัดการผู้ใช้และไดรเวอร์เคอร์เนล) จะแมปสิ่งที่ระบบปฏิบัติการเห็นกับตำแหน่ง / บล็อกทางกายภาพบนดิสก์

แล้วความล้มเหลวของไดรฟ์ล่ะ? สมมติว่าไม่มี RAID ถ้า sdb ล้มเหลวข้อมูลทั้งหมดใน sda จะหายไปหรือไม่ อย่างไรก็ตามมีการควบคุมว่าไฟล์ใดอยู่บนฟิสิคัลไดรฟ์

ใช่พิจารณาข้อมูลที่หายไป

หากคุณสร้างโลจิคัลวอลุ่มที่เล็กกว่าคุณสามารถใช้pvmoveคำสั่งเพื่อย้ายโลจิคัลจากดิสก์ไปยังดิสก์

โดยทั่วไปคุณจัดการ LVM อย่างไร คุณสร้างกลุ่มวอลุ่มขนาดใหญ่หนึ่งหรือสองกลุ่มจากนั้นสร้างพาร์ติชันตามที่เหมาะสม เคล็ดลับอื่น ๆ ?

ฉันมักจะสร้างกลุ่มวอลุ่มที่มีขนาดใหญ่แล้วสร้างปริมาณตรรกะตามต้องการ ไม่จำเป็นต้องจัดสรรพื้นที่ทั้งหมดในกลุ่มวอลุ่มอย่างเต็มที่ จัดสรรเมื่อจำเป็น มันง่ายที่จะเพิ่มขนาดของ Logical Volume และระบบไฟล์ที่ทันสมัยทั้งหมดก็สามารถเติบโตได้อย่างง่ายดายเช่นกัน


คุณแน่ใจเกี่ยวกับอันแรกไหม ฉันคิดว่า LVM มักจะผิดนัด striping เพื่อให้ไฟล์ 150 MEG จะมีแนวโน้มที่จะมีประมาณ 75 MEG ในแต่ละไดรฟ์
Freiheit

2
แถบจะไม่ถูกสร้างขึ้นเว้นแต่ว่าคุณจะระบุ--stripes <num>(สั้น-i <num>) เมื่อคุณสร้าง Logical Volume
pgs

PS, คำตอบของฉันที่นี่มีสคริปต์ที่จะแสดง PV ที่แต่ละ LV ใช้: serverfault.com/questions/28592/…
pgs

@freiheit, pgs ถูกต้องค่าเริ่มต้นคือการขยายไม่ใช่สตริปโวลุ่ม
Avery Payne

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

4

สิ่งพื้นฐานที่ทำให้ LVM และ Software Raid ใน Linux ทำงานได้คือส่วนของอุปกรณ์ทำแผนที่ของเคอร์เนล นี่คือสิ่งที่เป็นนามธรรมบล็อกที่อยู่ของอุปกรณ์ทางกายภาพกับอุปกรณ์บล็อกเสมือนที่คุณใช้

เมื่อใช้ LVM เช่นเดียวกับสิ่งใดก็ตามที่เกี่ยวข้องกับข้อมูลคุณจำเป็นต้องทราบถึงผลกระทบของความพร้อมใช้งานของข้อมูล ไม่ได้หมายความว่า LVM เป็นอันตรายจริง ๆ แล้วเมื่อมีการใช้วิธีปฏิบัติที่เหมาะสมผลกระทบต่อความพร้อมใช้งานมีเพียงเล็กน้อย

ในสถานการณ์ที่คุณแนะนำในคำถามของคุณความพร้อมใช้งานของข้อมูลของคุณจะเหมือนกับ RAID0 ซึ่งหากไดรฟ์ใด ๆ ล้มเหลวมันจะทำให้ข้อมูลสูญหาย

ในทางปฏิบัติฉันจะไม่ใช้ LVM โดยไม่เรียกใช้กับ RAID บางประเภท ฉันใช้ LVM บนเซิร์ฟเวอร์ไฟล์ 30TB ที่มีโวลุ่มฮาร์ดแวร์ RAID5 ประมาณ 20 ตัวใน VG หนึ่งอัน แต่ถ้าคุณมี Extents ฟรีมากพอคุณสามารถใช้ pvmove เพื่อย้ายข้อมูลออกจาก PV อย่างน้อยหนึ่งตัวมันควรจะเริ่มให้ปัญหากับคุณ

แต่มักจะมีกลยุทธ์การสำรองข้อมูลในสถานที่ที่มีการทดสอบเป็นครั้งคราว


3

โดยทั่วไปคุณจัดการ LVM อย่างไร คุณสร้างกลุ่มวอลุ่มขนาดใหญ่หนึ่งหรือสองกลุ่มจากนั้นสร้างพาร์ติชันตามที่เหมาะสม

กลยุทธ์ทั่วไปของฉันคือการนำฟิสิคัลวอลุ่มที่อาจถูกโอนย้าย (รวมเป็นชุด) ไปยังระบบอื่น

หากคุณมีที่เก็บข้อมูลภายนอกเป็นความคิดที่ดีที่จะใส่ไว้ในกลุ่มวอลุ่มที่แยกต่างหาก เป็นการง่ายที่จะตัดการเชื่อมต่อจากคอมพิวเตอร์เครื่องนี้และเชื่อมต่อกับอีกเครื่องหนึ่งดังนั้นจึงควรส่งออก / นำเข้าใน LVM ในลักษณะเดียวกับที่มีเหตุผล

หากคุณมี vg00 บนดิสก์ภายในแล้วจากนั้นคุณซื้อดิสก์ภายในเครื่องอื่นสำหรับเครื่องของคุณให้ถามคำถามตัวคุณเอง: ข้อมูลบนดิสก์ใหม่จะถูกผูกไว้กับ vg00 และจะไม่มีความรู้สึกใด ๆ ในการเคลื่อนย้าย ข้อมูลไปยังระบบอื่น? ในกรณีนี้ควรเป็นส่วนหนึ่งของ vg00 มิฉะนั้นฉันจะสร้าง vg01 เนื่องจากสามารถส่งออก / นำเข้าได้อย่างง่ายดายด้วยตัวเอง


0

หากคุณมีสองไดรฟ์เป็นฟิสิคัลวอลุ่มในกลุ่มเช่นนั้นสิ่งที่คุณมีคืออาร์เรย์ JBOD (Just a Bunch Of Disks) หากไดรฟ์ตัวใดตัวหนึ่งล้มเหลวคุณจะไม่ได้รับการปกป้องที่ดีไปกว่าการจัดเรียงไดรฟ์ในอาร์เรย์ RAID0

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

ฉันเชื่อว่า PV แต่ละตัวใน VG มีสำเนาของเลย์เอาต์ LV และข้อมูลไม่ได้ถูกปล้นเหมือน RAID0 ดังนั้นคุณจะมีโอกาสมากขึ้นในการกู้คืนบางอย่างถ้าไดรฟ์ตัวใดตัวหนึ่งของคุณล้มเหลว แต่ถ้าข้อมูลสูญหาย ฉันจะไม่พิจารณาใช้สองไดรฟ์ด้วยวิธีนี้เลย (ผ่าน LVM หรือ RAID0)


0

จะเกิดอะไรขึ้นถ้าฉันสร้างไฟล์ 150 เมกะไบต์ 100 megs ทางกายภาพจะอยู่บน sda และ 50 ใน sdb หรือไม่ ถ้าเป็นเช่นนั้นอะไรจะบอกระบบปฏิบัติการว่าชิ้นส่วนของไฟล์อยู่ในไดรฟ์หนึ่งและอีกอันหนึ่งอยู่อีกอันหนึ่ง?

LVM (Logical Volume Manager) รวบรวมฟิสิคัลวอลุ่มในกลุ่มวอลุ่ม ฟิสิคัลวอลุ่มทุกตัว (ตัวขับ) มีชิ้นเล็ก ๆ ที่เรียกว่าส่วนต่อขยายทางกายภาพ ส่วนขยายเหล่านี้มีตัวระบุ uniq ในดิสก์ ที่จริงแล้วพวกเขามีหมายเลขตามลำดับ เมื่อคุณสร้างโลจิคัลวอลุ่มมันถูกสร้างขึ้นจากส่วนขยายตรรกะซึ่งจับคู่กับส่วนขยายทางกายภาพ ส่วนขยายแบบลอจิคัลมี uniq ID ในโลจิคัลวอลุ่ม ใน HP-UX คุณสามารถตรวจสอบขอบเขตเชิงตรรกะที่จับคู่กับขอบเขตทางกายภาพ ใน SLES11 ฉันไม่สามารถหาวิธีตรวจสอบได้ lvdisplay --mapsควรจะดี แต่ไม่เหมาะสม (สำหรับฉัน)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.