Як змінити файлову систему UUID (2 ж UUID)?


26

У мене є гостьова ОС Fedora у VMware. Я хочу розгорнути /bootрозділ, тому я додаю ще один віртуальний диск до цієї ВМ і намагаюся клонувати диск.

Після того, як dd if=/dev/sda1 of=/dev/sdb1, blkidповідомляють , що / DEV / sda1 і / DEV / sdb1 Have ж UUID / GUID.

Дивно, що у Всесвіті є два однакових UUID, як змінити один з них на інше значення UUID?


Оновлення 2017-01-25

Тема змінена, UUID тут означає файлову систему UUID, а не UUID розділу.

Оскільки це файлова система UUID, для зміни UUID потрібні спеціальні утиліти для файлової системи або використовувати hexeditor для зміни необроблених даних на диску ( НЕБЕЗПЕЧНО, не рекомендується, якщо ви не знаєте, що ви робите ).


10
Це зовсім не дивно. Коли ви клонуєте розділ з dd, звичайно, у клона буде той самий UUID, що і оригінал. UUID - це лише метадані розділу, а не певна властива фізичному диску.
Ендрю Медіко

Дякую, Ендрю, я вважав, що UUID - це обчислене значення до створення нового розділу. Тепер я знаю, що це лише метадані.

Відповіді:


28

Щоб генерувати випадковий новий 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

якщо це файлова система ext , або

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 (Universal Unique IDentifier) ​​- дивна назва. Його слід назвати PGUID (можливо, глобально унікальний ідентифікатор), а ще краще, просто ARLN (Розумно велика кількість).


Я створив резервну копію одного з моїх розділів на / dev / sda6. Я отримую таку помилку: xfs_admin -U generator / dev / sda6 ПОМИЛКА: Файлова система має цінні зміни метаданих у журналі, які потрібно повторно відтворити. Встановіть файлову систему для відтворення журналу та відключіть його перед повторним запуском xfs_admin. Якщо ви не можете встановити файлову систему, то використовуйте параметр xfs_repair -L, щоб знищити журнал і спробувати відновити. Зауважте, що знищення журналу може спричинити пошкодження - будь ласка, спробуйте встановити файлову систему перед цим.
gudge

+1 за брудну брудну брехню, яка є UUID ... чи можу я також запропонувати UNUID за "На жаль, не унікальний ідентифікатор"
Foon

Ну, я б запропонував глобально унікальний ідентифікатор (GUID) - "глобально", як в "загально", або "взагалі". О, зачекайте ... це насправді не його початкова назва? ...
Кварк

11

Крім ext2 / ext3 / ex4 та xfs, ви також можете змінити UUID наступної файлової системи або блокувати пристрій.

Зміна

swaplabel -U $NEW_UUID

Програмний RAID (md raid)

Для MD RAID потрібно спочатку зупинити RAID, а потім оновити UUID при повторній збірці. Отже, якщо ваш RAID встановлений /, вам потрібно оновити UUID в автономному режимі - використовуйте живий компакт-диск для цього.

  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_UUIDу linux/linuxefi/linux16командному рядку) та / або fstabта / або mdadm.confта / або update-initramfs(сім'я Debian) та / або dracut --force(сім'я Red Hat), щоб наступного разу ви могли успішно завантажуватися.

ЛУКС (cryptsetup)

cryptsetup luksUUID --uuid=$NEW_UUID $LUKS_DEVICE

Приклад:

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

FAT / NTFS / exFAT

Це вже інша історія, на даний момент утиліти для зміни UUID файлової системи цих файлових систем немає(Див . Відповідь рейххарта - mlabelінструмент), але ми можемо змінити необроблені дані на диску для цього.

ПОПЕРЕДЖЕННЯ, змінювати необроблені дані на диску небезпечно, і вони можуть втратити дані без ретельної роботи.

Ось детальні кроки для зміни необроблених даних на диску за допомогою hexedit.

  1. blkid, запишіть UUID файлової системи на папір або запам'ятайте її. Рядок UUID FAT / exFAT виглядає так 1122-3344, як виглядає рядок UUID NTFS 1122334455667788.
  2. Відкрийте пристрій розділів за допомогою hexedit

    hexedit <partition device such as /dev/sda1>

  3. Натисніть /, введіть UUID у зворотному порядку (якщо blkidповідомляється 1234-ABCD, тоді шукайте CDAB3412) для пошуку даних UUID на диску.
  4. Як тільки UUID знайдеться, змініть їх, натисніть, F2щоб зберегти та вийти.
  5. blkid для підтвердження UUID.
  6. Після того, як UUID буде змінено, вам може знадобитися оновити grub.cfgта / або fstabзробити так, щоб ви могли успішно завантажуватися наступного разу.
  7. Виконайте fsck <partition device such as /dev/sda1>та перегляньте повідомлення "Є відмінності між завантажувальним сектором та його резервною копією" . Для того, щоб вирішити це, виберіть "1) Скопіювати оригінал в резервну копію" , і якщо вас запитають "Внести зміни? (У / н)", ви натискаєте y.

Що з hfs / hfs + або hfsplus?
Вів

1
Ви можете просто використовувати mkfs.exfat -i 01234567 /dev/partitionnameтам, де mkfs.exfatкоманда була встановлена ​​пакетом exfat-utils у Fedora Linux. Можливо, ви повинні додати це до своєї відповіді, оскільки варіант із гекседитом є досить небезпечним!
erik

@erik Дякуємо за підказку, але ми шукаємо спосіб оновити старий UUID до нового UUID на існуючій файловій системі або блоковому пристрої.
Люйян 刘 研

Привіт @LiuYan 刘 研 для NTFS є ntfslabelінструмент. askubuntu.com/questions/642591/…
aaditya1234

6

Для XFS використовуйте: xfs_admin -U <uuid> <device>

Використовуйте xfs_admin -u <device>для перегляду UUID (зверніть увагу на нижній регістр, щоб переглянути, а у верхньому регістрі встановити варіант). Ще одна публікація про U&L вказала blkidкоманду для перегляду всіх або деяких UUID в системі.


2

Часткова відповідь на VFAT

Для файлових систем ext * і xfs вже є точні відповіді. Але для VFAT я настійно рекомендую використовувати mlabel пакету mtools. Використання шестигранних редакторів НЕБЕЗПЕЧНО.

Використовуйте щось подібне, щоб створити новий UUID:

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

Якщо ви не проти перевірити ексклюзивний доступ вручну (як і всі інші описані тут команди), ви можете виконати це як окрема команда якmlabel -n -i /dev/sdb3 ::
telcoM

2

BTRFS

sudo btrfstune -u /dev/sdaX

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

Запуск btrfsckрекомендується, оскільки зміна UUID в BTRFS не є атомною операцією.



0

У Fedora 27 я виявив, що порядок аргументів відіграє вирішальну роль ... Спочатку потрібно написати пристрій, інакше UUID не буде змінено. Наприклад

tune2fs /dev/sdb1 -U random

1
Це здається незвичною поведінкою, принаймні враховуючи опис чоловічої сторінки в одному рядку , що відображається -Uперед цим device.
Джефф Шаллер

0

Щоб змінити команду dd, отриману в результаті повторюваного поділу диска UUID / s - Використовуйте GParted.

У користувальницькому інтерфейсі GParted виберіть диск, виберіть розділ, відключіть розділ. У папці «Розділ» виберіть «NEW UUID», повторіть, поки всі дистрибутивні диски, що дублюються, uuid / s не будуть позначені для заміни. Для завантажувальних дисків не замінюйте розділ UEFI uuid.

Перегляньте вибрані літери диска та розділи / сек - Все гаразд? ...

Клацніть піктограму «Застосувати всі операції» в інтерфейсі користувача GParted.
Для завантажувальних дисків відредагуйте файл / etc / fstab UUID = string / s та точку монтажу / s .:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.