설정: DELL PowerEdge R520, oVirt Node 4.4.1 x86_64
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 onn_ovirt01 lvm2 a-- 105.26g 20.77g
/dev/sda3 VG_he_nfs lvm2 a-- <100.00g <10.00g
/dev/sda4 VG_data_nfs lvm2 a-- <1.50t <206.00g
# lsblk
...
sdb 8:16 0 1.4T 0 disk
└─sdb1 8:17 0 1.4T 0 part /exports/nfs/backups
문제: 시스템이 재부팅되면 sata-to-usb로 연결된 1.4T 백업 드라이브가 sda가 됩니다. 여기서 lvm은 물리 볼륨에 필요한 파티션을 찾지 못합니다. 그런 다음 시스템은 연결된 모니터/키보드를 통해 로그인하고 SATA-USB 드라이브를 마운트 해제 및 꺼내고 fstab에서 해당 항목에 대해 주석을 달고 플러그를 뽑은 다음 시스템을 재부팅해야 하는 복구 모드로 부팅됩니다. 그런 다음 올바른 장치를 sda로 올바르게 부팅한 후에는 SATA-USB 장치를 사용하여 복구 모드에서 수행한 모든 작업을 실행 취소해야 합니다.
모든 것은 fstab이 이미 UUID 또는 /dev/mapper/에 의해 마운트되도록 정의되어 있다는 것입니다.
질문: 어떤 장치가 sda가 되는지에 상관없이 시스템에 적합한 물리적 볼륨을 얻을 수 있도록 LVM 구성을 변경할 수 있습니까? 재생성 및 마이그레이션 없이 가능합니까(핫 스페어가 있는 RAID 1(미러링)에 시스템 데이터가 있으므로 교체 드라이브 배열을 위한 섀시에 더 이상 공간이 없습니다)? 저는 데이터를 삭제하거나 교체를 위해 새로운 RAID 배열을 생성할 필요가 없는 모든 솔루션에 열려 있습니다. 이것이 가능하지 않다면 실제로 무엇이든 열려 있습니다. 아니면 예기치 않게 재부팅될 때마다 복구 모드에서 계속해서 정렬하겠습니다.
답변1
LVM은 장치 경로를 저장하지 않습니다. 구성 요소 UUID는 LVM 수퍼 블록에 저장되며 이러한 UUID는 구성 요소(PV, VG, LV)를 식별하는 데만 사용됩니다. LVM은 사용 가능한 모든 블록 장치(스캔이 허용된 블록 장치는 /etc/lvm/lvm.conf에 구성되어 있음)를 스캔하고 물리 볼륨을 감지하고 그로부터 볼륨 그룹을 어셈블합니다. 이번에는 물리 볼륨이 어떤 유형/장치 경로를 가지고 있는지 확인하지 않습니다. 장치 재인덱싱 등에 매우 강력합니다. 따라서 볼륨을 /dev/cciss/cXdYpZ(이전 HP/Compaq SmartArray 블록 드라이버가 이러한 장치를 생성함)나 /dev/hdXY, /dev/sdXY 또는 /dev/mapper/...로 이동하면 데이터를 찾을 수 있습니다. (DM을 기반으로 구축된 모든 것은 거기에 장치 노드를 배치합니다 — 암호화, 다중 경로 등), /dev/md/... (Linux MD RAID) 등. 귀하의 우려는 잘못된 것이며 귀하의 문제는 다른 곳에 있습니다.
문제의 원인은 USB의 속도 저하일 수 있습니다. 대기 시간이 깁니다. 또한 외장 하드 드라이브는 시작 속도가 매우 느립니다(이는 스핀업 중 전력 사용량 급증을 제한하기 위해 수행됩니다). USB는 성능이 아니라 경험이 없는 사용자가 사용할 수 있는 견고성에 관한 것입니다. 그래서 초기화가 느립니다. 큰 지연/시간 초과를 허용하도록 초기화 스크립트(예: initramfs 초기화 스크립트)를 구성해야 USB 장치가 회전하고 안정화될 충분한 시간을 확보할 수 있습니다.
또 다른 일반적인 원인은 부트로더의 잘못된 구성입니다. 예를 들어, "첫 번째 하드 드라이브의 첫 번째 파티션"에서 데이터를 찾을 것으로 예상할 수 있으며, "첫 번째 하드 드라이브"가 잘못된 장치인 경우 부팅할 구성과 커널 이미지가 없습니다. 당신을 던진다부트로더구조 껍질. 커널의 명령줄 또는 initramfs에 포함된 항목은 일부 구체적인 장치 경로에 연결될 수 있으므로 장치를 교환하면 장치를 찾을 수 없게 되고 사용자를 다음으로 빠뜨립니다.initramfs구조 껍질. 이것들은 다음과 같습니다.다른구출 포탄 및 이해어느 것중요하다고 보십니까?
예비 RAID0은 모순입니다. RAID0에는 중복성이 없고 정의된 저하 상태가 없으며 장치 오류로부터 어레이를 최적의 상태로 복구할 수 있는 것이 없으므로 스페어가 도움이 될 수 없습니다. 구성 요소 장치 문제로 인해 일반적으로 전체 어레이가 직접 오류 상태로 전환됩니다. 다른 RAID 레벨에는 중복성이 있으므로 구성 요소 오류가 발생할 경우 먼저 저하된 상태로 전환되므로 예비 부품의 이점을 얻을 수 있지만 RAID0은 그렇지 않습니다.
답변2
문제를 해결했습니다. 내가 해야 할 일은 다음의 필터에 sdb 파티션을 추가하는 것뿐이었습니다 /etc/lvm/lvm.conf
.
였다:
filter = ["a|^/dev/sda2$|", "a|^/dev/sda3$|", "a|^/dev/sda4$|", "r|.*|"]
로 변경:
filter = ["a|^/dev/sda2$|", "a|^/dev/sda3$|", "a|^/dev/sda4$|", "a|^/dev/sdb2$|", "a|^/dev/sdb3$|", "a|^/dev/sdb4$|", "r|.*|"]
이것을 시도하는 다른 사람은 변경 사항을 확인하고 다음을 사용하여 캐시를 다시 생성하십시오.vgscan
내 첫 번째 방문( |
이후를 잊어버렸습니다 $
):
[root@host lvm]# vgscan
Invalid separator at end of regex.
Invalid filter pattern "a|^/dev/sdb2$".
Failed to create regex device filter
내 두 번째 방문:
[root@host lvm]# vgscan
Found volume group "VG_data_nfs" using metadata type lvm2
Found volume group "VG_he_nfs" using metadata type lvm2
Found volume group "onn_ovirt01" using metadata type lvm2
SATA-to-USB 드라이브는 여전히 sda로 표시되지만 문제가 되지 않습니다. LVM은 sda에서 아무것도 발견되지 않으면 sdb 파티션으로 건너뜁니다. SATA-USB 드라이브를 수동으로 마운트해야 했지만 /etc/fstab
올바르게 삽입되었기 때문에 mount -a
. 나중에 이 문제를 해결하고 지금은 이 승리를 거두어야 할 것입니다.