Jak zmienić system plików UUID (2 takie same UUID)?


26

Mam fedora gościa OS w VMware. Chcę rozwinąć /bootpartycję, więc dodaję inny dysk wirtualny do tej maszyny wirtualnej i próbuję sklonować dysk.

Po dd if=/dev/sda1 of=/dev/sdb1, blkiddonoszą, że / dev / sda1 i / dev / sdb1 mają tę samą UUID / GUID.

To dziwne, że we wszechświecie są 2 takie same UUID, jak zmienić jeden z nich na inny UUID?


Zaktualizuj 25.01.2017

Temat zmieniony, UUID oznacza tutaj UUID systemu plików, a nie UUID partycji.

Ponieważ jest to UUID systemu plików, narzędzia specyficzne dla systemu plików są potrzebne do zmiany UUID lub użyj hexeditora do modyfikacji surowych danych na dysku ( NIEBEZPIECZEŃSTWO, nie zalecane, chyba że wiesz, co robisz ).


10
To wcale nie jest dziwne. Kiedy klonujesz partycję za pomocą dd, oczywiście klon będzie miał ten sam UUID co oryginał. UUID to tylko metadane partycji - nie jakaś nieodłączna właściwość dysku fizycznego.
Andrew Medico

Dziękuję Andrew, myślałem, że UUID jest wartością obliczoną przed utworzeniem nowej partycji. Teraz wiem, że to tylko metadane.

Odpowiedzi:


28

Aby wygenerować losowy nowy UUID, można użyć:

$ uuidgen

Rzeczywista zmiana UUID zależy od systemu plików.

Zakładając system plików z rodziny rozszerzeń

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

Lub jeśli masz pewność, że uuidgen zadziała:

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

Zakładając system plików btrfs

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

Identyfikator UUID jest przechowywany w superbloku, więc kopia bajt po bajcie systemu plików będzie miała ten sam identyfikator UUID.


14
Andy, nawet nie potrzebujesz komendy uuidgen: „tune2fs -U random / dev / sdb1” powinno działać dobrze
grzuy

Jak uruchomić na FAT?
CMCDragonkai

@CMCDragonkai, zobacz moją odpowiedź.
LiuYan

13

Posługiwać się:

tune2fs -U random /dev/sdb1

jeśli jest to system plików ext , lub

xfs_admin -U generate /dev/sdb1

jeśli jest to system plików XFS .


Powodem, dla którego druga partycja ma ten sam UUID jest to, że ddpo prostu kopiuje dane z jednego pliku do drugiego ( dd if=/dev/sda1 of=/dev/sdb1= cat /dev/sda1 > /dev/sdb1); ddnie wie, co to jest partycja ani jak wygenerować UUID, więc po prostu skopiował wszystkie dane takie, jakie są, w tym UUID, który jest przechowywany w superbloku systemu plików w pobliżu początku partycji.


Nawiasem mówiąc,
myślę też, że UUID (Universally Unique IDentifier) ​​to dziwna nazwa. Powinien nazywać się PGUID (prawdopodobnie globalnie unikatowy identyfikator), a jeszcze lepiej - tylko ARLN (rozsądnie duża liczba).


Utworzyłem kopię zapasową jednej partycji na / dev / sda6. Pojawia się następujący błąd: xfs_admin -U generuj / dev / sda6 BŁĄD: System plików zawiera wartościowe zmiany metadanych w dzienniku, które należy odtworzyć. Zamontuj system plików, aby odtworzyć dziennik, i odmontuj go przed ponownym uruchomieniem narzędzia xfs_admin. Jeśli nie możesz zamontować systemu plików, użyj opcji xfs_repair -L, aby zniszczyć dziennik i podjąć próbę naprawy. Pamiętaj, że zniszczenie dziennika może spowodować uszkodzenie - przed wykonaniem tej czynności spróbuj zamontować system plików.
stuknąć

+1 za brudne, brudne kłamstwo, którym jest UUID ... czy mogę również zasugerować UNUID dla „Niestety, nie unikalny identyfikator”
Foon

Cóż, sugerowałbym Globalny unikalny identyfikator (GUID) - „Globalnie” jak w „ogólnie” lub „ogólnie”. Och, czekaj ... czy to nie jest tak naprawdę jego pierwotna nazwa? ...
Kwark

11

Oprócz ext2 / ext3 / ex4 i xfs możesz także zmienić UUID następującego systemu plików lub urządzenia blokowego.

Zamiana

swaplabel -U $NEW_UUID

Oprogramowanie RAID (MD Raid)

W przypadku MD RAID należy najpierw zatrzymać RAID, a następnie zaktualizować identyfikator UUID podczas ponownego montażu. Tak więc, jeśli macierz RAID jest zamontowana /, musisz zaktualizować UUID w trybie offline - użyj płyty CD na żywo, aby to zrobić.

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

Przykład:

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

Po aktualizacji UUID może być konieczna aktualizacja grub.cfg( rd.md.uuid=$NEW_UUIDw linux/linuxefi/linux16wierszu poleceń) i / lub fstabi / lub mdadm.confi / lub update-initramfs(rodzina Debian) i / lub dracut --force(rodzina Red Hat), aby można było pomyślnie uruchomić następnym razem.

LUKS (cryptsetup)

cryptsetup luksUUID --uuid=$NEW_UUID $LUKS_DEVICE

Przykład:

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

FAT / NTFS / exFAT

To kolejna historia tutaj obecnie nie ma narzędzi do modyfikowania UUID systemu plików tych systemów plików(Zobacz odpowiedź Reichharta - mlabelnarzędzie), ale możemy zmodyfikować surowe dane na dysku, aby to zrobić.

OSTRZEŻENIE: modyfikowanie surowych danych na dysku jest niebezpieczne i może spowodować utratę danych bez starannej obsługi.

Oto szczegółowe kroki, aby zmodyfikować surowe dane na dysku przy użyciu hexedit.

  1. blkid, zapisz UUID systemu plików na papierze lub zapamiętaj go. Łańcuch UUID FAT / exFAT wygląda 1122-3344, ciąg UUID NTFS 1122334455667788.
  2. Otwórz urządzenie partycji za pomocą hexedit

    hexedit <partition device such as /dev/sda1>

  3. Naciśnij /, wprowadź UUID w odwrotnej kolejności (jeśli blkidzgłoszony 1234-ABCD, a następnie wyszukaj CDAB3412), aby wyszukać dane UUID na dysku.
  4. Po zlokalizowaniu UUID zmień je, naciśnij, F2aby zapisać i wyjść.
  5. blkid aby zweryfikować UUID.
  6. Po zmodyfikowaniu UUID może być konieczna aktualizacja grub.cfgi / lub w fstabcelu ponownego uruchomienia komputera.
  7. Uruchom fsck <partition device such as /dev/sda1>i zobacz komunikat „Istnieją różnice między sektorem rozruchowym a jego kopią zapasową” . Aby go rozwiązać, wybierz „1) Skopiuj oryginał do kopii zapasowej” , a jeśli zostaniesz zapytany „Czy wykonać zmiany? (T / n)” , naciśnij y.

Co z hfs / hfs + lub hfsplus?
Wlad

1
Możesz po prostu użyć mkfs.exfat -i 01234567 /dev/partitionnamemiejsca, w którym mkfs.exfatpolecenie zostało zainstalowane przez pakiet exfat-utils w Fedorze Linux. Może powinieneś dodać to do swojej odpowiedzi, ponieważ wariant hexedit jest dość niebezpieczny!
erik

@erik Dziękujemy za podpowiedź, ale szukamy metody aktualizacji starego UUID do nowego UUID na istniejącym systemie plików lub urządzeniu blokującym.
LiuYan 刘 研

Hej @LiuYan 刘 研 dla NTFS jest ntfslabelnarzędzie. askubuntu.com/questions/642591/…
aaditya1234

6

W przypadku XFS użyj: xfs_admin -U <uuid> <device>

Służy xfs_admin -u <device>do wyświetlania UUID (zwróć uwagę na opcję małych liter, w porównaniu do opcji wielkich liter). W innym poście na temat U&L wskazano blkidpolecenie przeglądania wszystkich lub niektórych identyfikatorów UUID w systemie.


2

Częściowa odpowiedź dla VFAT

W systemach plików ext * i xfs są już dobre odpowiedzi. Ale w przypadku VFAT zdecydowanie zalecam użycie mlabel pakietu mtools. Korzystanie z edytorów szesnastkowych jest NIEBEZPIECZNE.

Użyj czegoś takiego, aby utworzyć nowy identyfikator UUID:

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

Jeśli nie masz nic przeciwko ręcznemu sprawdzaniu wyłącznego dostępu (jak w przypadku wszystkich innych opisanych tutaj poleceń), możesz to zrobić jako pojedyncze polecenie, jakmlabel -n -i /dev/sdb3 ::
telcoM

2

BTRFS

sudo btrfstune -u /dev/sdaX

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

Uruchomienie btrfsckjest zalecane, ponieważ zmiana UUID w BTRFS nie jest operacją atomową.


1

W przypadku systemu plików NTFS sprawdź ten wątek, aby uzyskać szczegółowe informacje.

Podsumowanie:

sudo ntfslabel --new-half-serial /dev/sdXN

0

W Fedorze 27 odkryłem, że kolejność argumentów odgrywa kluczową rolę ... Musisz najpierw napisać urządzenie, w przeciwnym razie identyfikator UUID nie zostanie zmieniony. Na przykład

tune2fs /dev/sdb1 -U random

1
Wygląda na to, że dziwne zachowanie, przynajmniej biorąc pod uwagę strona człowiek oneline „s opis seans -Uprzed device.
Jeff Schaller

0

Aby zmienić wynikową komendę dd, powielony fragment dysku UUID / s - Użyj GParted.

Z interfejsu użytkownika GParted wybierz dysk, wybierz partycję, odmontuj partycję. Z „Folderu partycji” wybierz „NOWY UUID”, powtarzaj, aż wszystkie UuID / s zduplikowanych partycji na dysku dd zostaną oznaczone do wymiany. W przypadku dysków rozruchowych nie zastępuj identyfikatora użytkownika partycji UEFI.

Przejrzyj wybraną literę dysku i partycję / partycje - Wszystko w porządku? ...

Kliknij ikonę „Zastosuj wszystkie operacje” w interfejsie użytkownika GParted.
W przypadku dysków rozruchowych edytuj plik / etc / fstab UUID = ciąg / si punkt montowania:

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.