blkid와 mdadm의 UUID의 차이점은 무엇입니까? mdadm? CentOS 시스템

누군가가 UUID의에 의해보고의 차이 설명 할 수 blkidmdadm? 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/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있습니다.


답변

다른 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-cd36f654020dd8b8b4e5: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 또는 다른 것이어야합니다.