Bagaimana cara mengubah filesystem UUID (2 UUID yang sama)?

26

Saya memiliki OS tamu fedora di VMware. Saya ingin memperluas /bootpartisi, jadi saya menambahkan disk virtual lain ke VM ini, dan mencoba untuk mengkloning disk.

Setelah itu dd if=/dev/sda1 of=/dev/sdb1, blkidlaporkan bahwa / dev / sda1 dan / dev / sdb1 memiliki UUID / GUID yang sama.

Sungguh aneh bahwa ada 2 UUID yang sama di alam semesta, bagaimana cara mengubah salah satunya menjadi nilai UUID yang lain?


Pembaruan 2017-01-25

Subjek berubah, UUID di sini berarti filesystem UUID, bukan partisi UUID.

Karena itu adalah filesystem UUID, utilities khusus filesystem diperlukan untuk mengubah UUID, atau menggunakan hexeditor untuk memodifikasi data mentah pada disk ( BERBAHAYA, tidak disarankan kecuali Anda tahu apa yang Anda lakukan ).

LiuYan 刘 研
sumber
10
Sama sekali tidak aneh. Ketika Anda mengkloning partisi dengan dd, tentu saja klon akan memiliki UUID yang sama seperti aslinya. UUID hanyalah metadata partisi - bukan properti inheren dari disk fisik.
Andrew Medico
Terima kasih Andrew, saya pikir UUID adalah nilai yang dihitung sebelumnya ketika partisi baru dibuat. Sekarang saya tahu itu hanya hal-hal metadata.

Jawaban:

28

Untuk membuat UUID baru secara acak, seseorang dapat menggunakan:

$ uuidgen

Untuk benar-benar mengubah UUID tergantung pada sistem file.

Dengan asumsi filesystem ext-family

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

Atau jika Anda yakin uuidgen akan berfungsi:

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

Dengan asumsi filesystem btrfs

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

UUID disimpan di superblock, sehingga salinan sistem file byte-demi-byte akan memiliki UUID yang sama.

Andy
sumber
14
Andy, Anda bahkan tidak memerlukan perintah uuidgen: "tune2fs -U random / dev / sdb1" harus berfungsi dengan baik
grzuy
Bagaimana cara menjalankannya pada FAT?
CMCDragonkai
@ CMCDragonkai, lihat jawaban saya.
LiuYan 刘 研
13

Menggunakan:

tune2fs -U random /dev/sdb1

apakah itu sistem file ext , atau

xfs_admin -U generate /dev/sdb1

jika itu adalah sistem file xfs .


Alasan partisi kedua memiliki UUID yang sama adalah karena ddhanya menyalin data dari satu file ke file lainnya ( dd if=/dev/sda1 of=/dev/sdb1= cat /dev/sda1 > /dev/sdb1); ddtidak tahu apa itu partisi, atau bagaimana menghasilkan UUID, jadi itu hanya menyalin semua data apa adanya, termasuk UUID, yang disimpan di sistem file superblock dekat awal partisi.


Ngomong-ngomong,
saya juga menganggap UUID (Pengenal Unik Unik) adalah nama yang aneh. Itu harus disebut PGUID (Kemungkinan IDentifier Global unik), atau bahkan lebih baik, hanya ARLN (A Reasonably Number Besar).

Zaz
sumber
Saya telah mencadangkan satu partisi saya di / dev / sda6. Saya mendapatkan kesalahan berikut: xfs_admin -U menghasilkan / dev / sda6 ERROR: Filesystem memiliki perubahan metadata yang berharga dalam log yang perlu diputar ulang. Pasang sistem file untuk memutar ulang log, dan unmount sebelum menjalankan kembali xfs_admin. Jika Anda tidak dapat me-mount sistem file, maka gunakan opsi xfs_repair -L untuk menghancurkan log dan mencoba perbaikan. Perhatikan bahwa memusnahkan log dapat menyebabkan korupsi - coba lakukan mount dari filesystem sebelum melakukan ini.
gudge
+1 untuk kebohongan kotor kotor yaitu UUID ... bolehkah saya juga menyarankan UNUID untuk "Sayangnya, Bukan ID Unik"
Foon
Yah, saya akan menyarankan IDentifier Global Unik (GUID) - "Secara global" seperti dalam "umumnya", atau "secara umum". Oh, tunggu ... bukankah ini sebenarnya nama aslinya? ...
The Quark
11

Selain dari ext2 / ext3 / ex4 dan xfs, Anda juga dapat mengubah UUID dari sistem file berikut atau memblokir perangkat.

Menukar

swaplabel -U $NEW_UUID

RAID Perangkat Lunak (md raid)

Untuk MD RAID, Anda harus menghentikan RAID terlebih dahulu, lalu memperbarui UUID saat merakit ulang. Jadi jika RAID Anda sudah di-mount /, Anda perlu memperbarui UUID dalam mode offline - gunakan CD langsung untuk melakukannya.

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

Contoh:

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

Setelah UUID diperbarui, Anda mungkin perlu memperbarui grub.cfg( rd.md.uuid=$NEW_UUIDdalam linux/linuxefi/linux16baris perintah) dan / atau fstabdan / atau mdadm.confdan update-initramfs(keluarga Debian) dan / atau dracut --force(keluarga Red Hat) agar Anda dapat boot dengan sukses di lain waktu.

LUKS (cryptsetup)

cryptsetup luksUUID --uuid=$NEW_UUID $LUKS_DEVICE

Contoh:

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

FAT / NTFS / exFAT

Ini adalah kisah lain di sini, saat ini tidak ada utilitas untuk memodifikasi UUID sistem file dari filesystem ini(Lihat jawaban reichhart - mlabelalat), tetapi kita dapat memodifikasi data mentah pada disk untuk melakukan ini.

PERINGATAN, berbahaya untuk memodifikasi data mentah pada disk, dan dapat kehilangan data tanpa operasi yang cermat.

Berikut langkah-langkah detail untuk memodifikasi data mentah menggunakan disk hexedit.

  1. blkid, tulis UUID sistem file ke kertas, atau ingat. String UUID FAT / exFAT terlihat seperti 1122-3344, string UUID NTFS terlihat seperti 1122334455667788.
  2. Buka perangkat partisi menggunakan hexedit

    hexedit <partition device such as /dev/sda1>

  3. Tekan /, masukkan UUID dalam urutan terbalik (jika blkiddilaporkan 1234-ABCD, lalu cari CDAB3412) untuk mencari data UUID pada disk.
  4. Setelah UUID ditemukan, ubahlah, tekan F2untuk menyimpan dan keluar.
  5. blkid untuk memverifikasi UUID.
  6. Setelah UUID dimodifikasi, Anda mungkin perlu memperbarui grub.cfgdan / atau fstabagar Anda dapat melakukan booting dengan sukses di lain waktu.
  7. Jalankan fsck <partition device such as /dev/sda1>dan lihat pesan "Ada perbedaan antara sektor boot dan cadangannya" . Untuk menyelesaikannya, pilih "1) Salin sumber asli ke cadangan" , dan jika Anda ditanya "Lakukan perubahan? (Y / n)" Anda menekan y.
LiuYan 刘 研
sumber
Bagaimana dengan hfs / hfs + atau hfsplus?
Wlad
1
Anda bisa menggunakan di mkfs.exfat -i 01234567 /dev/partitionnamemana mkfs.exfatperintah itu diinstal oleh paket exfat-utils di Fedora Linux. Mungkin Anda harus menambahkannya ke jawaban Anda, karena varian hexedit cukup berbahaya!
erik
@ erik Terima kasih atas tipnya, tetapi kami sedang mencari metode untuk memperbarui UUID lama ke UUID baru pada sistem file yang ada atau memblokir perangkat.
LiuYan 刘 研
Hei @LiuYan 刘 研 untuk NTFS ada ntfslabelalat. askubuntu.com/questions/642591/…
aaditya1234
6

Untuk XFS, gunakan: xfs_admin -U <uuid> <device>

Gunakan xfs_admin -u <device>untuk melihat UUID (perhatikan opsi huruf kecil untuk melihat, versus opsi huruf besar untuk ditetapkan). Pos lain tentang U&L menunjukkan blkidperintah untuk melihat semua atau sebagian UUID pada sistem.

vimmar
sumber
2

Jawaban Parsial untuk VFAT

Untuk sistem file ext * dan xfs sudah ada jawaban yang bagus. Tetapi untuk VFAT saya sangat merekomendasikan untuk menggunakan mlabel dari paket mtools. Menggunakan hex editor adalah BERBAHAYA.

Gunakan sesuatu seperti ini untuk membuat UUID baru:

echo 'drive d: file="/dev/sdb3" exclusive' >>/etc/mtools.conf
mlabel -n d:
reichhart
sumber
Jika Anda tidak keberatan memeriksa akses eksklusif secara manual (seperti dengan semua perintah lain yang dijelaskan di sini), Anda dapat melakukannya sebagai perintah tunggal sebagaimlabel -n -i /dev/sdb3 ::
telcoM
2

BTRFS

sudo btrfstune -u /dev/sdaX

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

Menjalankan btrfsckdianjurkan karena mengubah UUID di BTRFS bukan operasi atom.

Avio
sumber
0

Di bawah Fedora 27 saya menemukan bahwa urutan argumen memainkan peran penting ... Anda harus menulis perangkat terlebih dahulu, jika tidak UUID tidak diubah. Sebagai contoh

tune2fs /dev/sdb1 -U random
Erich Küster
sumber
1
Itu tampak seperti perilaku yang tidak biasa, setidaknya diberikan deskripsi halaman manual oneline yang ditampilkan -Usebelum device.
Jeff Schaller
0

Untuk mengubah perintah dd yang menghasilkan duplikat disk partisi UUID / s - Gunakan GParted.

Dari antarmuka pengguna GParted, pilih drive, pilih partisi, unmount partisi. Dari 'Folder partisi', pilih 'UUID BARU', ulangi sampai semua dd drive duplikasi partisi uuid / s ditandai untuk penggantian. Untuk disk yang dapat di-boot, jangan ganti uuid partisi UEFI.

Tinjau huruf drive dan partisi yang dipilih - Semua OK? ...

Klik ikon 'Terapkan Semua Operasi' pada antarmuka pengguna GParted.
Untuk disk yang dapat di-boot, edit file / etc / fstab UUID = string / s dan mount point / s .:

eromana
sumber
0

Untuk NTFS periksa utas ini untuk detailnya.

Ringkasan:

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