파일 시스템 UUID를 변경하는 방법 (2 개의 동일한 UUID)?


26

VMware에 페도라 게스트 OS가 있습니다. /boot파티션 을 확장하고 싶기 때문에이 VM에 다른 가상 디스크를 추가하고 디스크를 복제하려고합니다.

dd if=/dev/sda1 of=/dev/sdb1, blkid보고서 그 는 / dev / sda1을 하고 는 / dev / sdb1로 유무 동일한 UUID / GUID.

우주에 같은 UUID가 2 개 있다는 것이 이상합니다. 하나를 다른 UUID 값으로 변경하는 방법은 무엇입니까?


2017-01-25 업데이트

주제가 변경되었습니다. 여기서 UUID는 파티션 UUID가 아닌 파일 시스템 UUID를 의미합니다.

파일 시스템 UUID이므로 UUID를 변경하거나 hexeditor를 사용하여 디스크의 원시 데이터를 수정하려면 파일 시스템 특정 utils가 필요합니다 ( 위험, 수행중인 작업을 모르면 권장하지 않음 ).


10
전혀 이상하지 않습니다. dd로 파티션을 복제 할 때 물론 복제본은 원본과 동일한 UUID를 갖습니다. UUID는 파티션의 메타 데이터 일 뿐이며 실제 디스크의 고유 속성이 아닙니다.
Andrew Medico

Andrew에게 감사합니다. 새 파티션을 만들 때까지 UUID가 계산 된 값이라고 생각했습니다. 이제는 그것이 메타 데이터 일뿐이라는 것을 알고 있습니다.

답변:


27

임의의 새로운 UUID를 생성하려면 다음을 사용할 수 있습니다.

$ uuidgen

실제로 UUID를 변경하는 것은 파일 시스템에 따라 다릅니다.

ext-family 파일 시스템 가정

# tune2fs -U <output of uuidgen> /dev/sdb1

또는 uuidgen이 작동한다고 확신하는 경우 :

# tune2fs -U $(uuidgen) /dev/sdb1

BTRFS 파일 시스템 가정

# btrfstune -U $(uuidgen) /dev/sdb1

UUID는 수퍼 블록에 저장되므로 파일 시스템의 바이트 단위 사본은 동일한 UUID를 갖습니다.


14
앤디, uuidgen 명령도 필요 없습니다 : "tune2fs -U random / dev / sdb1"가 제대로 작동해야합니다
grzuy

FAT에서 실행하는 방법?
CMCDragonkai

@ CMCDragonkai, 내 대답을 참조하십시오.
LiuYan 刘 研

13

용도:

tune2fs -U random /dev/sdb1

그것이 있다면 내선 , 파일 시스템 또는

xfs_admin -U generate /dev/sdb1

xfs 파일 시스템 인 경우


두 번째 파티션이 동일한 UUID를 갖는 이유는 dd한 파일에서 다른 파일로 데이터를 복사 하기 때문입니다 ( dd if=/dev/sda1 of=/dev/sdb1= cat /dev/sda1 > /dev/sdb1). dd파티션이 무엇인지 또는 UUID를 생성하는 방법을 모르므로 UUID를 포함하여 파티션의 시작 부분 근처에있는 파이버 시스템 수퍼 블록에 저장된 모든 데이터를 그대로 복사했습니다.


그건 그렇고,
UUID (Universally Unique IDentifier)는 이상한 이름이라고 생각합니다. PGUID (전역 적으로 고유 한 ID) 또는 ARLN (합리적으로 큰 숫자)이라고합니다.


/ dev / sda6에 파티션 하나를 백업했습니다. 다음과 같은 오류가 발생합니다. xfs_admin -U generate / dev / sda6 오류 : 파일 시스템의 로그에 중요한 메타 데이터 변경 사항이있어 재생해야합니다. 파일 시스템을 마운트하여 로그를 재생하고 xfs_admin을 다시 실행하기 전에 마운트 해제하십시오. 파일 시스템을 마운트 할 수없는 경우 xfs_repair -L 옵션을 사용하여 로그를 삭제하고 복구를 시도하십시오. 로그를 삭제하면 손상 될 수 있습니다.이 작업을 수행하기 전에 파일 시스템 마운트를 시도하십시오.
20:03에

UUID입니다 더러운 더러운 거짓말 +1 ... 나는 또한 "불행히도, 고유 ID"를 UNUID을 제안 할 수 있습니다

글쎄, 나는 "일반적으로"또는 "일반적으로"와 같이 GUID (Globally Unique IDentifier)- "글로벌"을 제안 할 것이다. 아 잠깐만 ..이게 원래 이름이 아닌가? ...
쿼크

10

ext2 / ext3 / ex4 및 xfs 외에도 다음 파일 시스템 또는 블록 장치의 UUID를 변경할 수도 있습니다.

교환

swaplabel -U $NEW_UUID

소프트웨어 RAID (md raid)

MD RAID의 경우 먼저 RAID를 중지 한 다음 다시 조립할 때 UUID를 업데이트해야합니다. 따라서 RAID가에 마운트 된 경우 /오프라인 모드에서 UUID를 업데이트해야합니다. 라이브 CD를 사용하여 업데이트하십시오.

  1. mdadm --stop $RAID_DEVICE
  2. mdadm --assemble $RAID_DEVICE --update=uuid --uuid=$NEW_UUID $MEMBER_DEVICES...

예:

  1. mdadm --stop /dev/md127
  2. mdadm --assemble /dev/md127 --update=uuid --uuid=2A1D2A1D-2A1D-2A1D-2A1D-2A1D2A1D2A1D /dev/sda2 /dev/sdb2

UUID가 업데이트 된 후 업데이트해야 할 수 있습니다 grub.cfg( rd.md.uuid=$NEW_UUIDlinux/linuxefi/linux16및 / 또는 명령 줄) fstab및 / 또는 mdadm.conf및 / 또는 update-initramfs(데비안 계열) 및 / 또는 dracut --force당신이 성공적으로 다음 번 부팅 할 수 있도록 (레드햇 계열).

LUKS (cryptsetup)

cryptsetup luksUUID --uuid=$NEW_UUID $LUKS_DEVICE

예:

cryptsetup luksUUID --uuid=e0c0e0c0-e0c0-e0c0-e0c0-e0c0e0c0e0c0 ~/encrypted-LUKS.loop

FAT / NTFS / exFAT

이것은 또 다른 이야기입니다. 현재 이러한 파일 시스템의 파일 시스템 UUID를 수정하는 유틸리티가 없습니다(참조 reichhart의 대답 - mlabel도구),하지만 우리는이 일을 디스크에 원시 데이터를 수정할 수 있습니다.

경고, 디스크의 원시 데이터를 수정하는 것은 위험하므로주의해서 조작하지 않으면 데이터가 손실 될 수 있습니다.

다음을 사용하여 디스크에서 원시 데이터를 수정하는 세부 단계가 hexedit있습니다.

  1. blkid파일 시스템의 UUID를 종이에 기록하거나 기억하십시오. FAT / exFAT의 1122-3344UUID 문자열은 다음과 같고 NTFS의 UUID 문자열은 다음과 같습니다 1122334455667788.
  2. hexedit를 사용하여 파티션 장치 열기

    hexedit <partition device such as /dev/sda1>

  3. 을 누르고 /UUID를 역순으로 입력하고 ( blkid보고 된 경우 1234-ABCDsearch CDAB3412) 디스크에서 UUID 데이터를 검색하십시오.
  4. UUID를 찾으면 변경 한 후 F2를 눌러 저장하고 종료하십시오.
  5. blkid UUID를 확인하십시오.
  6. UUID가 수정되면 다음에 성공적으로 부팅 할 수 있도록 업데이트 grub.cfg및 / 또는 업데이트가 필요할 fstab수 있습니다.
  7. "부트 섹터와 백업 사이에 차이점이 있습니다" 메시지를 실행 fsck <partition device such as /dev/sda1>하고 참조하십시오 . 그것을 해결하기 위해 선택 "백업 1) 복사 원본" , 당신이 요청하는 경우 "변경을 수행? (Y / N)" 당신은 누르십시오 .y

hfs / hfs + 또는 hfsplus는 어떻습니까?
Wlad

1
Fedora Linux에서 exfat-utils 패키지로 명령이 설치된 mkfs.exfat -i 01234567 /dev/partitionname위치 만 사용할 수 있습니다 . hexedit 변형이 매우 위험하므로 답변에 추가해야 할 수도 있습니다! mkfs.exfat
erik

@erik 팁을 주셔서 감사하지만 기존 파일 시스템 또는 블록 장치에서 기존 UUID를 새로운 UUID로 업데이트하는 방법을 찾고 있습니다.
LiuYan 刘 研

6

XFS의 경우 다음을 사용하십시오. xfs_admin -U <uuid> <device>

xfs_admin -u <device>UUID를 보는 데 사용 합니다 (대소 문자 옵션과 대문자 옵션 설정). U & L의 다른 게시물 blkid은 시스템에서 UUID 전체 또는 일부를 볼 수 있는 명령을 지적했습니다 .


2

BTRFS

sudo btrfstune -u /dev/sdaX

sudo btrfstune -U 0de6bd81-7013-49a8-bdc5-d832ed209d2c /dev/sdaX

btrfsckBTRFS에서 UUID를 변경하는 것은 원 자성 작업이 아니므로 실행하는 것이 좋습니다.


1

VFAT에 대한 부분 답변

ext * 및 xfs 파일 시스템에는 이미 정답이 있습니다. 그러나 VFAT 의 경우 mtools 패키지의 mlabel사용 하는 것이 좋습니다 . 16 진 편집기 사용은 위험합니다.

다음과 같이 새로운 UUID를 만드십시오 :

echo 'drive d: file="/dev/sdb3" exclusive' >>/etc/mtools.conf
mlabel -n d:

수동 (다른 모든 명령은 여기에 설명과 같은) 단독 액세스를 확인 괜찮다면, 당신은 하나의 명령으로 할 수있는mlabel -n -i /dev/sdb3 ::
텔레콤

0

Fedora 27에서 나는 인수의 순서가 결정적인 역할을한다는 것을 알았습니다. 먼저 장치를 작성해야합니다. 그렇지 않으면 UUID가 변경되지 않습니다. 예를 들어

tune2fs /dev/sdb1 -U random

1
적어도 oneline 맨 페이지 의 설명이 -U앞에 표시 되어 있으면 비정상적인 동작처럼 보입니다 device.
Jeff Schaller

0

중복 된 디스크 파티션 UUID / s를 초래하는 dd 명령을 변경하려면-GParted를 사용하십시오.

GParted 사용자 인터페이스에서 드라이브를 선택하고 파티션을 선택한 다음 파티션 마운트 해제를 선택하십시오. '파티션 폴더'에서 '신규 UUID'를 선택하고 모든 dd 드라이브 복제 파티션 uuid / s가 교체 용으로 표시 될 때까지 반복하십시오. 부팅 가능한 디스크의 경우 UEFI 파티션 uuid를 바꾸지 마십시오.

선택한 드라이브 문자 및 파티션을 검토하십시오-모두 확인? ...

GParted 사용자 인터페이스에서 '모든 작업 적용'아이콘을 클릭하십시오.
부팅 가능한 디스크의 경우 / etc / fstab 파일 UUID = string / s 및 마운트 지점 / s를 편집하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.