저는 sfdisk를 시작으로 Linux에서 파티셔닝을 공부하고 있습니다. 한 드라이브에서 다른 드라이브로 파티션 테이블을 복사하면 각 파티션의 장치 UUID 및 PTUUID가 복사되지만, 새 장치를 생성하려는 경우 GPT 드라이브에는 UUID를 지정할 수 있지만 MBR 드라이브에는 지정할 수 없습니다. 이로 인해 MBR 드라이브에는 UUID와 PTUUID가 필요하지 않다고 생각됩니다. 무슨 일이야?
드라이브의 UUID와 파티션의 PTUUID가 필요한 경우 어떻게 수동으로 수행합니까? sfdisk를 사용하면 GPT 장치에 대해 UUID를 지정할 수 있지만 MBR 장치에 대해서는 레이블만 지정할 수 있습니다. MBR용 UUID를 만드는 방법은 무엇입니까? 장치 UUID를 기반으로 파티션 PTUUID가 생성되었는지 확인하는 방법은 무엇입니까? 장치에 대한 기본 UUID를 생성하는 방법이나 이를 기반으로 파티션에 대한 PTUUID를 생성하는 방법을 모르겠습니다.
답변1
"파티션의 PTUUID"와 같은 것이 없기 때문에 "디스크의 PTUUID와 파티션의 PARTUUID"를 의미한다고 가정합니다.
질문 제목에 답하려면:아니요, MBR은 128비트 UUID 개념이 흔하지 않았던 1980년대에 개발되었기 때문에 PTUUID와 PARTUUID는 MBR에 중요하지 않습니다.. MBR 파티션 테이블의 단일 기본 파티션 항목은 16바이트에 불과했습니다. 긴 식별자를 위해 각 파티션에 16바이트를 추가한다는 아이디어는 당시에는 엄청난 공간 낭비로 간주되었습니다. 메인 MBR 파티션 테이블은 실제 부트 레코드 코드와 동일한 512바이트 디스크 블록에 맞아야 하기 때문에 나중에 추가할 공간이 없습니다.
실제 UUID는 12345678-9abc-def0-1234-56789abcdef0 형식인 경향이 있지만 MBR 파티션 디스크에서는 PTUUID와 PARTUUID(실제로 보고된 경우)가 훨씬 짧은 문자열입니다. PTUUID는 각각 12345678 및 PARTUUID 12345678일 수 있습니다. -01?
이는 MBR 파티션 디스크의 PTUUID 및 PARTUUID에 의해 표시되는 식별자가 실제 UUID가 아니기 때문입니다. 이는 Windows NT 3.5에 의해 MBR에 처음 추가된 32비트 디스크 식별자를 기반으로 합니다. 원래는 "Windows 디스크 서명"이라고 불렸지만 "디스크 식별자"는 공급업체 중립적인 용어인 것 같습니다. Windows NT 3.5 이전 운영 체제에는 이러한 디스크 식별자가 없기 때문에 PTUUID 및 PARTUUID가 파티션 구성표의 필수 부분인 GPT 파티션 디스크와 달리 선택적 식별자로 처리되어야 합니다.
MBR 파티션 디스크의 "PTUUID 문자열"은 그 자체가 32비트 디스크 식별자이며, 끝에 대시와 두 자리 파티션 번호를 추가하면 "PARTUUID"가 파생됩니다. 이러한 문자열은 고유성을 보장할 만큼 길지 않고 동일한 규칙을 사용하여 생성되지 않기 때문에 실제 UUID의 사양을 충족하지 않습니다. 실제 UUID에 대한 최고의 대안입니다.
완전히 사용되지 않은 디스크에 새 MBR 파티션 테이블 생성을 시작하면 최신 Linux에는 fdisk
다음과 같은 초기 메시지가 포함됩니다.
Device does not contain a recognized partition table.
Created a new DOS (MBR) disklabel with disk identifier 0x1234abcd.
Command (m for help):
따라서 새 MBR 파티션 테이블을 생성하면 자동으로 디스크 식별자가 생성됩니다. 디스크의 "PTUUID"는 1234abcd이고 첫 번째 파티션의 "PARTUUID"는 1234abcd-01입니다.
MBR 디스크의 기존 디스크 식별자를 변경하려면 Philip Couling이 언급한 방법을 사용하거나 sfdisk --disk-id
디스크에 대해 최신 Linux 버전을 부팅하고 다음을 입력할 수 있습니다.fdisk
x
전문가 명령 메뉴i
을 입력한 다음디스크 식별자 변경행동.
MBR 파티션 디스크에서 디스크 식별자/PTUUID를 변경하면 모든 PARTUUID가 모두 동일한 디스크 식별자에서 나오므로 반드시 변경됩니다.
만약에파티션 내의 파일 시스템blkid
및 와 같은 Linux 도구로 lsblk
표시되는 UUID도 지원됩니다 UUID
. 형식과 존재 여부는 파일 시스템 유형에 따라 다릅니다. FAT 계열 파일 시스템의 경우 UUID=1A2B-3C4D
실제 128비트 UUID 대신 짧은 식별자가 표시될 수 있습니다 . 이건 정말 뚱뚱해볼륨 일련 번호(또한 ~으로 알려진볼륨 ID)은 파일 시스템이 생성될 때 할당됩니다. 이 설정을 변경하려면 tune2fs -U
ext2/ext3/ext4 파일 시스템, xfs_admin -U
XFS 또는 mlabel -N
FAT 파일 시스템 계열 과 같은 파일 시스템별 도구를 사용하십시오 .
답변2
이로 인해 MBR 드라이브에는 UUID와 PTUUID가 필요하지 않다고 생각됩니다.
이것은 기본적으로 정확합니다. 파티션 테이블 자체의 PTUUID는 MBR 자체에는 영향을 미치지 않지만 시스템에서는 사용됩니다. 파티션에는 PARTUUID가 전혀 없고 테이블에서의 위치만 있습니다.
드라이브의 UUID와 파티션의 PTUUID가 필요한 경우 어떻게 수동으로 수행합니까? sfdisk를 사용하면 GPT 장치에 대해 UUID를 지정할 수 있지만 MBR 장치에 대해서는 레이블만 지정할 수 있습니다.
실제로 sfdisk
"디스크 ID"를 설정할 수 있습니다. MBR 파티션 UUID는 단순히 디스크 ID와 테이블의 위치로 구성됩니다. 따라서 디스크 ID를 첫 번째 PARTUUID로 설정하면 .Look 12345
이 됩니다 .12345-1
SF디스크 매뉴얼:
--disk-id device [id] Change the disk identifier. If id is not specified, then print the current identifier. The identifier is UUID for GPT or unsigned integer for MBR.
배경
Linux에서 사용하는 명명 규칙은 "UUID"라는 용어를 잘못 사용하여 매우 오해를 불러일으킵니다. 유보편적으로유건강 상태ID엔터티 단어다음에 따라 엄격하게 표준화된 생성 규칙을 사용하는 매우 구체적이고 표준화된 고유 식별자 형식입니다.버전각 ID에 삽입됩니다. 혼란을 피하기 위해 Linux 파티셔닝 이외의 다른 용어에는 "UUID"라는 약어를 사용하지 않겠습니다.
Linux 명명 규칙은 다음과 같습니다.
- "PTUUID"는 파티션 테이블 자체에 대해 테이블 자체에 포함된 고유 식별자입니다. GPT는 이러한 목적으로 범용 고유 식별자를 사용하지만 MBR은 그렇지 않습니다. 그러나 인간은 드라이브의 고유한 이름을 선택하는 데 능숙하지 않기 때문에 MBR의 PTUUID는 짧습니다.
- "PARTUUID"는 파티션 테이블 내 파티션의 고유 식별자입니다.
- MBR은 그러한 ID를 기록하지 않습니다. 그러나 최대 4개의 파티션만 있습니다. 따라서 관례에 따라 파티션은 테이블(1, 2, 3, 4)에서의 위치로 쉽게 참조될 수 있습니다. 따라서 시스템에서 MBR 파티션을 식별하려면 MBR 테이블의 PTUUID와 테이블의 위치가 필요합니다. 예를 들어, 내 가상 머신에는
ee7273d0
파티션이 있는 드라이브가 있습니다ee7273d0-1
. 이는 아래에서 확인할 수 있습니다/dev/disk/by-partuuid/ee7273d0-1
. - GPT는 이를 기록하고 이에 대해 보편적으로 고유한 식별자를 사용합니다. 따라서 범용 고유 식별자에 대한 엄격한 규칙으로 인해 PTUUID는 파티션을 식별하는 데 필요하지 않습니다. PTUUID는 올바르게 생성되는 한 항상 고유합니다.
- MBR은 그러한 ID를 기록하지 않습니다. 그러나 최대 4개의 파티션만 있습니다. 따라서 관례에 따라 파티션은 테이블(1, 2, 3, 4)에서의 위치로 쉽게 참조될 수 있습니다. 따라서 시스템에서 MBR 파티션을 식별하려면 MBR 테이블의 PTUUID와 테이블의 위치가 필요합니다. 예를 들어, 내 가상 머신에는
- "UUID"는 파일 시스템, LUKS 헤더 또는 LVM 물리 볼륨 등에 내장된 고유 식별자입니다. 포맷되지 않은 파티션은 분리된 헤더가 있는 LUKS 암호화 드라이브도 마찬가지입니다.
- ext4 파일 시스템은 UUID로 범용 고유 식별자를 사용합니다.
- FAT 및 FAT32는 다른 드라이브와 동일할 수 있는 더 짧은 ID를 사용합니다.
- LVM은 보편적으로 고유한 식별자를 사용하지 않는 것으로 보이지만 ID가 매우 길고 무작위이며 다른 드라이브와 충돌할 위험은 무시할 수 있습니다.