การลบ vg และ lv หลังจากลบฟิสิคัลไดร์ฟแล้ว


32

เรามีดิสก์ที่ล้มเหลวในเซิร์ฟเวอร์และแทนที่ก่อนที่จะลบไดรฟ์ออกจาก LVM

เซิร์ฟเวอร์มีไดรฟ์ทางกายภาพ 4 ตัว (PV's) แต่ละตัวมีกลุ่มวอลุ่มของตัวเอง (VG) VG แต่ละตัวมีโลจิคัลวอลุ่ม 2 ตัวหรือมากกว่า (LV) ตอนนี้ LVM กำลังบ่นเกี่ยวกับไดรฟ์ที่หายไป ดังนั้นเราจึงมี VG (vg04) ที่มี LV สองตัวที่กลายเป็นเด็กกำพร้าเกินกว่าที่เราจะต้องกำจัดออกจากระบบ

ปัญหาคือทุกครั้งที่เราเรียกใช้คำสั่ง LVM ใด ๆ ที่เราได้รับข้อผิดพลาด 'อ่านล้มเหลว' เหล่านี้:

# lvscan
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error

# vgreduce vg04 --removemissing --force
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found

# vgchange -a n /dev/vg04
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found

# lvchange -a n /dev/vg04/vz
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found
  Skipping volume group vg04

VG และ LV ที่หายไปนั้นไม่สำคัญเราแค่ต้องการลบออก

อย่างที่คุณเห็นเราได้ลองทำตามคำแนะนำทั้งหมดแล้วโดยที่ไม่มีโชค

สามารถตรวจสอบเอาต์พุตจาก 'lvm dumpconfig' ได้ที่http://pastebin.com/MHiBzrLJ

คำตอบ:


46

การแก้ปัญหาคือการเรียกใช้ dmsetup ในกรณีนี้ทั้งสองคำสั่ง

dmsetup remove vg04-vz
dmsetup remove vg04-swap

ก่อนที่จะทำสิ่งนี้ฉันตรวจสอบกับคำสั่ง 'ข้อมูล dmsetup' ว่า 'จำนวนที่เปิด' สำหรับ LV ทั้งสองรายการเป็นศูนย์

คำเตือน: dmsetup สามารถทำลายความเสียหายอย่างร้ายแรงกับดิสก์ของคุณดังนั้นใครก็ตามที่ใช้ข้อมูลนี้ในอนาคตโปรดตรวจสอบให้แน่ใจว่าคุณได้อ่าน man page


3
นั่นเป็นการหลอกลวง มันแย่มากที่ LVM เป็นสิ่งที่เป็นนามธรรม แต่ฉันคิดว่ามันดีเท่าที่ควร
Navin

1
โทรดีพร้อมคำเตือนนั้น ถ้าฉันเข้าใจถูกต้องชื่อที่คล้ายกันremove_all --force --deferred --retryจะพัดไปทุกไดรฟ์ที่มีการจัดการ LVM ไม่ไกลเกินเอื้อม มันจะพยายามและไม่ยอมแพ้เหมือน Terminator ฉันสงสัยอย่างยิ่งว่าทำไมปืนลูกซองแบบนี้จึงได้รับการรับประกัน
Dan Ross

นอกจากนี้ยังมีอุปกรณ์เดียว "ยุติด้วยอคติที่รุนแรง" (และ / หรือการล้างผลาญหากอุปกรณ์ทำให้คุณยุ่งตลอดทั้งคืน): # dmsetup --force --retry --deferred remove <YOURVG>-<YOURLV>สิ่งนี้เป็นความจริงโดยเฉพาะอย่างยิ่งหากอุปกรณ์ iscsi ถูกแขวนอยู่และคุณลบมันด้วย# iscsiadm -m node -U all -T <FQDN>
AdamKalisz

9

/dev/sdbผมมีประสบการณ์ที่คล้ายกันหลังจากที่ถอดดิสก์ VMware

ใช้lsscsiเพื่อตรวจสอบว่ามีการใช้อุปกรณ์ใด (คุณอาจต้องติดตั้งโปรแกรม) จากนั้นเรียกใช้lsscsi:

# lsscsi
[1:0:0:0]    cd/dvd  NECVMWar VMware IDE CDR10 1.00  /dev/sr0
[2:0:0:0]    disk    VMware   Virtual disk     1.0   /dev/sda
[2:0:1:0]    disk    VMware   Virtual disk     1.0   /dev/sdb <== the removed physical disk
[2:0:2:0]    disk    VMware   Virtual disk     1.0   /dev/sdc

ตอนนี้เขียนไฟล์ลบด้วย

# echo 1 > /sys/class/scsi_device/2\:0\:1\:0/device/delete

อุปกรณ์หายไปทันที


1
ขอขอบคุณ!! สิ่งนี้ทำงานได้อย่างสมบูรณ์แบบสำหรับฉันในการกำจัดข้อผิดพลาดเช่น "/ dev / sdb: read ล้มเหลวหลังจาก 0 ของ 4096 ที่ 0: ข้อผิดพลาดอินพุต / เอาต์พุต" หลังจากลบ vg1-xyz ค้างผ่าน dmsetup
กางเกงแมว

1
เฉพาะอันนี้ใช้ได้สำหรับฉัน คุณทำวันของฉัน
odiszapc

2

vgchange -an / dev / vg04

หากคุณยังคงใช้งานโลจิคัลวอลุ่มอยู่คุณอาจต้อง

lvchange -a n /dev/vg04/swap
lvchange -a n dev/vg04/vz

เป็นต้น


2
โชคไม่ดีที่ไม่สามารถแก้ไขได้เช่นกันเพียงแค่โยนข้อผิดพลาดเดิม:
RCD

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