누군가가 UUID의에 의해보고의 차이 설명 할 수 blkid
와 mdadm
? CentOS 시스템 중 하나에서
[root@server ~]# blkid | grep /dev/md1
/dev/md1: UUID="32cb0a6e-8148-44e9-909d-5b23df045bd1" TYPE="ext4"
[root@server ~]# mdadm --detail /dev/md1 | grep UUID
UUID : f204c558:babf732d:85bd7296:bbfebeea
왜 다른 mdadm
가요? 그리고 우리가 사용하는 UUID를 어떻게 바꿀 까요?
나는 우리가 사용하는 것이 이해 tune2fs
(에 의해 반환되는 것을 바꿀 것있는 파티션의 UUID를 변경 blkid
)하지만 확실히 무엇을 변경하는 방법을 mdadm
사용합니다.
답변
첫 번째는 md
블록 장치 에서 ext4 파일 시스템의 UUID를보고합니다 . 시스템이 시스템에서 사용 가능한 파일 시스템 중에서 파일 시스템을 고유하게 식별하는 데 도움이됩니다. 이는 파일 시스템의 구조, 즉 md 장치에 저장된 데이터에 저장됩니다.
두 번째는 RAID 장치의 UUID입니다. md 서브 시스템이 특정 RAID 장치를 고유하게 식별하는 데 도움이됩니다. 특히 RAID 어레이에 속하는 모든 블록 장치를 식별하는 데 도움이됩니다. 배열의 메타 데이터 (각 멤버)에 저장됩니다. 배열 구성원은 또한 자체 UUID를 갖습니다 (md 시스템에서는 GPT 파티션 (GPT 파티션 테이블에 저장 됨) 또는 LVM 볼륨 인 경우 파티션 UUID도 가질 수 있음).
blkid
반환되는 것은 장치에 저장된 구조의 ID이기 때문에 약간 오해의 소지가 있습니다 (대부분의 파일 시스템, LVM 멤버 및 스왑 장치와 같은 구조에 대해 알고 있습니다). 또한 동일한 UUID를 갖는 구조 (예 : LVM 스냅 샷)를 가진 블록 장치를 갖는 것은 드문 일이 아닙니다. 그리고 블록 장치는 UUID를 포함하지 않는 구조를 포함하여 무엇이든 포함 할 수 있습니다.
예를 들어, GPT 파티션을 사용하여 3 개의 드라이브가있는 시스템을 만들 수 있습니다. 해당 드라이브는 고유하게 식별 할 수있는 월드 와이드 이름 을 가질 수 있습니다 . 3 개의 드라이브가 각각 하나의 파티션 ( /dev/sd[abc]1
)으로 파티션되었다고 가정 해 봅시다 . 각 파티션에는 GPT 파티션 테이블에 GPT UUID가 저장되어 있습니다.
해당 파티션이 md RAID5 어레이를 구성하는 경우. 각각은 md UUID를 RAID 멤버로 가져오고 어레이는 UUID를 md RAID 장치로 가져옵니다.
이는 /dev/md0
MSDOS 또는 GPT 유형 파티셔닝으로 추가 파티셔닝 될 수 있습니다. 예를 들어, /dev/md0p1
GPT UUID (/ dev / md0의 데이터에 저장된 GPT 파티션 테이블에 저장) 가있는 파티션이 있을 수 있습니다 .
이는 LVM의 물리적 볼륨 일 수 있습니다. 따라서 PV UUID를 얻게됩니다. 볼륨 그룹에도 VG UUID가 있습니다.
해당 볼륨 그룹에서 각각 LV UUID를 가져 오는 논리 볼륨을 작성합니다.
LV 중 하나 (예 🙂 /dev/VG/LV
에서 ext4 파일 시스템을 만들 수 있습니다. 해당 파일 시스템은 ext4 UUID를 갖습니다.
blkid /dev/VG/LV
해당 파일 시스템의 (ext4) UUID를 얻을 수 있습니다. 그러나 VG 볼륨 내부의 파티션으로 파티션 UUID도 얻습니다 (MSDOS / MBR과 같은 일부 파티션 구성표에는 UUID가 없음). 해당 볼륨 그룹은 다른 블록 장치 인 구성원 PV로 구성됩니다. blkid /dev/md0p1
PV UUID를 제공합니다. 또한의 GPT 테이블에 파티션 UUID가 /dev/md0
있습니다. /dev/md0
자체는 다른 블록 장치로 만들어집니다. blkid /dev/sda1
레이드 멤버 UUID를 반환합니다. 또한의 GPT 테이블에 파티션 UUID가 /dev/sda
있습니다.
답변
다른 UUID에 대해서는 이미 설명했습니다. 파일 시스템 만이 아닙니다. RAID 어레이, 장치, 파티션, LUKS 컨테이너, LVM PV 및 파일 시스템과 같은 다양한 요소에 대한 UUID가 있습니다.
개인적으로 저를 괴롭히는 것은 UUID의 형식화 방식이 다르다는 것입니다.
블리드 :
# blkid /dev/sda1
/dev/sda1:
UUID="d8b8b4e5-e47b-2e45-2093-cd36f654020d"
UUID_SUB="3c3e6eac-2139-3f7a-16b7-57280934d88e"
PARTUUID="6a89cedf-69e1-40db-b08c-1c8e45af59f5"
mdadm :
# mdadm --examine /dev/sda1 | grep UUID
Array UUID : d8b8b4e5:e47b2e45:2093cd36:f654020d
Device UUID : 3c3e6eac:21393f7a:16b75728:0934d88e
당신이 볼 수 있듯이, 그들은 같은 UUID가 있지만 blkid
대시를 인쇄 -
하는 반면 mdadm
용도의 콜론 :
. 당신이 얻을 그래서는 d8b8b4e5-e47b-2e45-2093-cd36f654020d
대 d8b8b4e5:e47b2e45:2093cd36:f654020d
.
특히 스크립트에서 UUID로 작업하려는 경우 매우 성가시다. 한 형식에서 다른 형식으로 변환하는 방법은 명확하지 않습니다.
답변
“32cb0a6e-8148-44e9-909d-5b23df045bd1″위의 blkid UUID가 올바른 것입니다. 즉, OS가 RAID 배열을 찾는 데 사용합니다.
mdadm에는 OS에서 직접 사용하지 않는 자체 “내부”UUID가 있으며 mdadm.conf 파일에서 사용하는 것입니다. 예 :
“ARRAY / dev / md1 level = raid1 num-devices = 2 uuid = f204c558 : babf732d : 85bd7296 : bbfebeea”
mdadm은 blkid 및 OS가 인식하는 UUID와 분리 된 경우 UUID를 호출하지 않아야합니다. 혼동을 피하기 위해 mduuid 또는 다른 것이어야합니다.