Dosya sistemi UUID (2 aynı UUID) nasıl değiştirilir?


26

VMware'de bir fedora misafir işletim sistemim var. /bootBölümü genişletmek istiyorum , bu yüzden bu VM'ye başka bir sanal disk ekleyip diski klonlamaya çalışıyorum.

Sonra dd if=/dev/sda1 of=/dev/sdb1, blkidRaporda / dev / sda1 ve / dev / sdb1 sahip olduğunuz aynı UUID / GUID.

Evrende aynı 2 UUID'nin olması gariptir, bunlardan birini başka bir UUID değerine nasıl değiştirirsiniz?


Güncelleme 2017-01-25

Konu değişti, UUID burada UUID bölüm değil, dosya sistemi UUID anlamına gelir.

Dosya sistemi UUID'si olduğundan, UUID'yi değiştirmek için dosya sistemine özel araçlar gerekir veya diskteki ham verileri değiştirmek için hexeditor kullanılır ( TEHLİKE, ne yaptığınızı bilmiyorsanız önerilmez ).


10
Hiç de garip değil. Dd ile bir bölümü klonladığınızda, elbette klon orijinaliyle aynı UUID'ye sahip olacaktır. UUID, bölümün yalnızca meta verileridir - fiziksel bir diskin kendine özgü bir özelliği değildir.
Andrew Medico,

Teşekkürler Andrew, yeni bir bölüm oluşturulmadan önce UUID'in hesaplanmış bir değer olduğunu düşündüm. Şimdi bunun sadece bir meta veri olayı olduğunu biliyorum.

Yanıtlar:


28

Rastgele yeni bir UUID oluşturmak için aşağıdakileri kullanabilirsiniz:

$ uuidgen

UUID'yi gerçekten değiştirmek için dosya sistemi bağımlıdır.

Geniş aile dosya sistemini varsayarak

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

Ya da uuidgen'in işe yarayacağına eminseniz:

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

Btrfs dosya sistemini varsayarak

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

UUID süper blokta saklanır, bu nedenle dosya sisteminin bayt bayt kopyası aynı UUID'ye sahip olur.


14
Andy, uuidgen komutuna bile ihtiyacınız yok: "tune2fs -U random / dev / sdb1" iyi çalışmalı
grzuy

FAT'te nasıl çalıştırılır?
CMCDragonkai

@ CMCDragonkai, cevabımı görün.
LiuYan,

13

kullanın:

tune2fs -U random /dev/sdb1

eğer bir ext dosya sistemi ise, veya

xfs_admin -U generate /dev/sdb1

eğer bir xfs dosya sistemi.


İkinci bölümün aynı UUID'ye sahip olmasının nedeni, ddsadece bir dosyadan diğerine veri kopyalamasıdır ( dd if=/dev/sda1 of=/dev/sdb1= cat /dev/sda1 > /dev/sdb1); ddBir bölümün ne olduğunu veya bir UUID'nin nasıl üretileceğini bilmediğinden, bölümün başlangıcına yakın olan filysystem superblock'unda depolanan UUID dahil tüm verileri olduğu gibi kopyaladı.


Bu arada,
ayrıca UUID'nin (Universally Unique IDentifier) ​​çok garip bir isim olduğunu düşünüyorum. PGUID (Muhtemelen Küresel Benzersiz Tanımlayıcı), hatta daha iyisi, sadece ARLN (Oldukça Büyük Bir Sayı) olarak adlandırılmalıdır.


Bölümlerimden birini / dev / sda6'ya yedekledim. Aşağıdaki hatayı alıyorum: xfs_admin -U Oluştur / dev / sda6 HATA: Dosya sistemi, tekrar edilmesi gereken bir günlükte değerli meta veri değişikliklerine sahip. Günlüğü tekrarlamak için dosya sistemini bağlayın ve xfs_admin'i yeniden çalıştırmadan önce bağlantısını kesin. Dosya sistemini bağlayamıyorsanız, günlüğü yok etmek ve bir onarımı denemek için xfs_repair -L seçeneğini kullanın. Günlüğün yok edilmesinin yolsuzluğa yol açabileceğini unutmayın - lütfen bunu yapmadan önce bir dosya sistemi bağlamaya çalışın.
gudge

UUID olan kirli kirli yalan için +1 ... "Maalesef, Benzersiz Kimlik Yok" için UNUID'yi önerebilir miyim
Foon

Genel Olarak Benzersiz Kimlik Belirleyici'yi (GUID) - "Genel olarak" veya "genel olarak" olduğu gibi "Genel olarak" öneririm. Oh bekleyin ... bu aslında orijinal adı değil mi? ...
Quark

11

Ext2 / ext3 / ex4 ve xfs öğelerinin yanı sıra, aşağıdaki dosya sisteminin veya blok aygıtının UUID'sini de değiştirebilirsiniz.

takas

swaplabel -U $NEW_UUID

Yazılım RAID (md baskın)

MD RAID için, önce RAID'i durdurmalı, sonra tekrar monte ederken UUID'yi güncellemelisiniz. Bu nedenle, RAID'iniz takılıysa, /çevrimdışı modda UUID'yi güncellemeniz gerekir - bunu yapmak için canlı bir CD kullanın.

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

Örnek:

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

UUID güncellendikten sonra, güncellemeniz gerekebilir grub.cfg( rd.md.uuid=$NEW_UUIDiçinde linux/linuxefi/linux16ve / veya komut satırı) fstabve / veya mdadm.confve / veya update-initramfs(Debian aile) ve / veya dracut --forcebaşarıyla dahaki sefere önyükleme böylece (Red Hat aile).

LUKS (cryptsetup)

cryptsetup luksUUID --uuid=$NEW_UUID $LUKS_DEVICE

Örnek:

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

FAT / NTFS / exFAT

Bu, burada başka bir hikaye şu anda bu dosya sistemlerinin UUID dosya sistemini değiştirmek için hiçbir yardımcı program bulunmamaktadır.(Bkz. Reichhart'ın cevabı - mlabelaraç), ancak bunu yapmak için diskteki ham verileri değiştirebiliriz.

UYARI, diskteki ham verileri değiştirmek tehlikelidir ve dikkatli bir işlem yapmadan verileri kaybedebilir.

İşte disk kullanarak ham verileri değiştirmek için ayrıntılı adımlar hexedit.

  1. blkid, dosya sisteminin UUID'sini kağıda yazın veya hatırlayın. FAT / exFAT 1122-3344UUID dizesi benziyor, NTFS UUID dizesi benziyor 1122334455667788.
  2. Bölme aygıtını hexedit kullanarak aç

    hexedit <partition device such as /dev/sda1>

  3. Diskte UUID verilerini aramak için tuşuna basın /, UUID'yi ters sırada girin ( blkidbildirildiyse 1234-ABCD, sonra arayın CDAB3412).
  4. UUID bulunduğunda, onları değiştirin, F2kaydetmek ve çıkmak için düğmesine basın .
  5. blkid UUID'yi doğrulamak için.
  6. UUID değiştirildikten sonra, bir dahaki sefere başarılı bir şekilde önyükleme yapabilmeniz için güncelleme grub.cfgve / veya güncelleme yapmanız gerekebilir fstab.
  7. Yürütün fsck <partition device such as /dev/sda1>ve "Önyükleme sektörü ile yedekleme arasında farklılıklar var" iletisini görün. Bunu çözmek için, seçmek "yedek 1) Kopya orijinali" ve sorulması durumunda "Değişiklik gerçekleştirin? (Y / n)" tuşuna y.

Peki ya hfs / hfs + ya da hfsplus?
wlad

1
Komutun Fedora Linux üzerindeki exfat-utils paketi tarafından yüklendiği mkfs.exfat -i 01234567 /dev/partitionnameyeri kullanabilirsiniz . Belki de bunu cevabınıza eklemelisiniz, çünkü onaltılı değişken oldukça tehlikelidir! mkfs.exfat
erik

@erik İpucu için teşekkürler, ancak eski UUID'yi varolan dosya sistemindeki veya blok aygıtınızdaki yeni UUID'ye güncellemek için bir yöntem arıyoruz.
LiuYan,

Hey @LiuYan FS 研 NTFS için bir ntfslabelaraç var. askubuntu.com/questions/642591/…
aaditya1234

6

XFS için şunları kullanın: xfs_admin -U <uuid> <device>

xfs_admin -u <device>Bir UUID görüntülemek için kullanın (görüntülemek için küçük harf seçeneğine, büyük harf seçeneğine göre ayarlayın). U&L'deki bir başka yazı blkid, sistemdeki UUID'lerin tümünü veya bir kısmını görüntülemek için verilen komutu işaret etti .


2

VFAT için Kısmi Cevap

Ext * ve xfs dosya sistemleri için zaten iyi cevaplar vardır. Ancak VFAT için mtools paketinin mlabelini kullanmanızı şiddetle tavsiye ediyorum . Hex editörlerini kullanmak TEHLİKELİDİR.

Yeni bir UUID oluşturmak için böyle bir şey kullanın:

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

Özel erişimin manuel olarak kontrol edilmesini istemiyorsanız (burada açıklanan diğer tüm komutlarda olduğu gibi), bunu tek bir komut olarak yapabilirsinizmlabel -n -i /dev/sdb3 ::
telcoM 23:18

2

btrfs

sudo btrfstune -u /dev/sdaX

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

btrfsckBTRFS'de UUID'yi değiştirmek atomik bir işlem olmadığından çalıştırılması önerilir.


0

Fedora 27 uyarınca, argümanların sırasının çok önemli bir rol oynadığını buldum ... Önce cihazı yazmalısınız, aksi takdirde UUID değişmez. Örneğin

tune2fs /dev/sdb1 -U random

1
Bu alışılmadık davranışlar gibi görünüyor, en azından oneline man sayfasının açıklamasından -Uönce gösterdiği açıklama device.
Jeff Schaller

0

Kopyalanan disk bölümünden elde edilen dd komutunu değiştirmek için UUID / s - GParted kullanın.

GParted kullanıcı arayüzünden, sürücüyü seçin, bölümü seçin, bölümü çıkarın. 'Bölüm klasörü' nden 'YENİ UUID' seçeneğini seçin, tüm dd sürücü kopyalanmış bölüm uuid / s'leri değiştirilmek üzere işaretleninceye kadar tekrarlayın. Önyüklenebilir diskler için, UEFI bölme uuid'ini değiştirmeyin.

Seçilen sürücü harfini ve bölümlerini / bölümlerini gözden geçirin - All OK? ...

GParted kullanıcı arayüzünde 'Tüm İşlemleri Uygula' simgesini tıklayın.
Önyüklenebilir diskler için / etc / fstab dosyasını düzenleyin UUID = string / s ve mount point / s .:


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.