다중 경로를 사용하는 Linux 서버가 있습니다.
다중 경로와 mdadm 사이에 경쟁 조건이 있는 것 같습니다.
/dev/mapper/mpathab..과 같은 powerpath 장치에 raid를 구축하는 경우 재부팅 후 raid는 다운그레이드되거나 /dev/sdX와 같은 장치에 구축되므로 어떤 이유로 초기 구성을 유지하지 않습니다.
san이 vnx이므로 emc powerpath를 설치하고 다음과 같이 raid를 생성했습니다.
mdadm --verbose --create /dev/md0 --level=mirror --raid-devices=2 /dev/emcpowera /dev/emcpowerb
하지만 다시 시작한 후 공격대 상태는 다음과 같습니다.
# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Jun 11 15:14:47 2018
Raid Level : raid1
Array Size : 419298304 (399.87 GiB 429.36 GB)
Used Dev Size : 419298304 (399.87 GiB 429.36 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Tue Jun 12 15:25:02 2018
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : unknown
Name : cjlnwp01:0 (local to host cjlnwp01)
UUID : d2779403:bd8d370b:bdea907e:bb0e3c72
Events : 567
Number Major Minor RaidDevice State
0 65 0 0 active sync /dev/sdq
1 8 160 1 active sync /dev/sdk
mdadm이 재부팅 시 찾은 첫 번째 장치를 가져오는 것 같나요?
장치가 다중 경로의 일부일 때 별도의 /dev/sdX 장치로 표시되지 않는지 확인하는 방법.
장치가 sdc에서 sdq로 마운트될 때마다 아래 lsblk 출력에 표시되어서는 안 됩니다.
sdc 8:32 0 400G 0 disk
sde 8:64 0 400G 0 disk
sdg 8:96 0 400G 0 disk
sdi 8:128 0 400G 0 disk
sdk 8:160 0 400G 0 disk
sdm 8:192 0 400G 0 disk
sdo 8:224 0 400G 0 disk
sdq 65:0 0 400G 0 disk
emcpowera 120:0 0 400G 0 disk
└─md0 9:0 0 399.9G 0 raid1
emcpowerb 120:16 0 400G 0 disk
└─md0 9:0 0 399.9G 0 raid1
mdadm과 다중 경로 사이에 systemd에 종속성을 추가하여 조정할 수 있는 일종의 경쟁 조건이 있습니까?
참고로 HPE Proliant DL380 G9 서버의 운영 체제는 OEL 7.5입니다.
답변1
특정 장치 이름만 고려하고 다른 모든 항목은 무시하도록 DEVICE
항목을 사용할 수 있습니다 . mdadm.conf
기본적으로 mdadm
에 나열된 모든 블록 장치가 허용됩니다 /proc/partitions
.
DEVICE /dev/emc*
불행하게도 이는 좋지 않은 해결 방법으로만 간주될 수 있습니다. 많은 경우 잘못된 장치를 사용하게 될 수 있으므로 이는 여전히 큰 혼란입니다.
이는 루프 장치를 사용할 때 발생하는 문제이기도 합니다.
# losetup --find --show /dev/sdi2
/dev/loop4
이제 /dev/loop4
및 /dev/sdc3
는 동일합니다. 이는 동일한 UUID를 공유한다는 의미이기도 합니다.
# blkid /dev/sdi2 /dev/loop4
/dev/sdi2: UUID="0a73725c-7e29-4171-be5d-be31d56bf8fe" TYPE="ext2"
/dev/loop4: UUID="0a73725c-7e29-4171-be5d-be31d56bf8fe" TYPE="ext2"
이제 언제 어떤 기기를 사용해야 할까요 mount UUID=0a73725c-7e29-4171-be5d-be31d56bf8fe
?
# mount UUID=0a73725c-7e29-4171-be5d-be31d56bf8fe /mnt/tmp
# df -h /mnt/tmp
Filesystem Size Used Avail Use% Mounted on
/dev/loop4 2.0G 490M 1.4G 26% /mnt/tmp
이 경우 결국 루프 장치를 선택하게 되었는데, 이는 내 의도일 수도 있고 아닐 수도 있습니다.
이와 같은 장치를 복제하는 것은 큰 문제입니다. 고유해야 했던 UUID가 갑자기 더 이상 고유하지 않아 잘못된 장치를 사용하게 될 수도 있기 때문입니다.
LVM에서도 이 문제가 발생했습니다. 자세한 내용은 다음과 같습니다.https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/ological_volume_manager_administration/duplicate_pv_multipath
불행하게도 문서에서는 적절한 솔루션을 제공하지 않으며 단지 장치 필터 해결 방법을 제안합니다.
적절한 솔루션을 위해서는 두 개의 서로 다른 블록 장치를 사용하여 동일한 데이터를 모두 표시하지 않는 것이 가장 좋습니다. 일반적으로 여기에는 데이터를 오프셋에 배치하는 작업이 포함됩니다. 다중 경로에 기본적으로 오프셋 기능이 있는지는 모르겠습니다.
파티션 테이블, mdadm, LUKS, LVM의 경우 상위 장치의 시작 부분에 헤더가 있고 제공하는 하위 블록 장치가 해당 헤더에서 오프셋되기 때문에 일반적으로 무료로 오프셋을 얻을 수 있습니다.
따라서 /dev/sdx에서는 파티션 테이블만 볼 수 있고, /dev/sdx1에서는 mdadm 헤더만 볼 수 있고, /dev/md1에서는 LUKS 헤더만 볼 수 있고, /dev/mapper/cryptomd1에서는 LVM 헤더만 볼 수 있습니다. 반면 /dev/VG/LV는 각 장치가 상위 장치로부터 오프셋을 갖기 때문에 파일 시스템만 볼 수 있습니다.
다중 경로 설정으로 동일한 작업을 수행하면 mdadm 메타데이터는 에서만 표시되고 에서는 표시되지 /dev/emcpowera
않으며 /dev/sdk
후자는 RAID로 잘못 조합되지 않습니다.