blkid와 mdadm의 UUID 차이점은 무엇입니까?

blkid와 mdadm의 UUID 차이점은 무엇입니까?

blkid와 에서 보고한 UUID의 차이점을 설명할 수 있는 사람이 있습니까 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

왜 다르며 에서 사용하는 UUID를 어떻게 변경합니까 mdadm?

파티션의 UUID를 변경하는 데 사용할 것이라는 점을 이해 하지만 tune2fs( 에서 반환되는 내용이 변경됨 blkid) 용도를 변경하는 방법을 잘 모르겠습니다 mdadm.

답변1

첫 번째는 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 어레이를 구성하는 경우. 각각은 RAID 멤버로 md UUID를 얻고 어레이는 md RAID 장치로 UUID를 얻습니다.

/dev/md0MSDOS 또는 GPT 유형 파티셔닝을 사용하여 추가로 파티셔닝할 수 있습니다 . 예를 들어, /dev/md0p1GPT 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/md0p1PV UUID를 제공합니다. 또한 의 GPT 테이블에 파티션 UUID가 있습니다 /dev/md0. /dev/md0자체는 다른 블록 장치로 구성됩니다. blkid /dev/sda1레이드 멤버 UUID를 반환합니다. 또한 의 GPT 테이블에 파티션 UUID가 있습니다 /dev/sda.

답변2

다른 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-cd36f654020dvs.d8b8b4e5:e47b2e45:2093cd36:f654020d

특히 스크립트에서 UUID로 작업하려는 경우 매우 짜증납니다. 한 형식에서 다른 형식으로 변환하는 방법은 명확하지 않습니다.

답변3

"32cb0a6e-8148-44e9-909d-5b23df045bd1" 위의 blkid UUID는 올바른 것입니다. 이는 OS가 RAID 어레이를 찾는 데 사용하는 것입니다.

mdadm에는 OS에서 직접 사용되지 않고 mdadm.conf 파일에서 사용하는 자체 "내부" UUID가 있습니다. 예:

"ARRAY /dev/md1 레벨=raid1 num-devices=2 uuid=f204c558:babf732d:85bd7296:bbfebeea"

mdadm은 blkid와 OS가 인식하는 것과 별개인 UUID를 호출해서는 안 됩니다. 혼동을 피하기 위해 mduuid 또는 다른 이름으로 호출해야 할 수도 있습니다.

관련 정보