ファイルシステムのUUID(2つの同じUUID)を変更するには?


26

VMwareにfedoraゲストOSがあります。/bootパーティションを拡張したいので、このVMに別の仮想ディスクを追加し、ディスクのクローンを作成しようとします。

の後dd if=/dev/sda1 of=/dev/sdb1/ dev / sda1/ dev / sdb1に同じUUID / GUIDがあるblkidことを報告します。

ユニバースに同じUUIDが2つあるのは奇妙ですが、それらの1つを別のUUID値に変更する方法は?


更新2017-01-25

件名が変更されました。ここのUUIDは、パーティションUUIDではなく、ファイルシステムUUIDを意味します。

ファイルシステムUUIDであるため、UUIDを変更したり、hexeditorを使用してディスク上の未加工データを変更したりするには、ファイルシステム固有のユーティリティが必要です(危険です。何をしているのかわからない場合はお勧めしません)。


10
まったく変ではありません。ddを使用してパーティションを複製すると、もちろん複製のUUIDは元のものと同じになります。UUIDはパーティションの単なるメタデータであり、物理ディスクの固有のプロパティではありません。
アンドリューメディコ

Andrewに感謝します。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
Andy、uuidgenコマンドさえ必要ありません。「tune2fs -U random / dev / sdb1」は
正常に

FATで実行する方法は?
CMCDragonkai

@CMCDragonkai、私の答えをご覧ください。
LiuYan刘研

13

つかいます:

tune2fs -U random /dev/sdb1

それはだ場合のextファイルシステム、または

xfs_admin -U generate /dev/sdb1

それはだ場合のXFSファイルシステム。


2番目のパーティションが同じUUIDを持っている理由はdd、あるファイルから別のファイルにデータをコピーするだけだからです(dd if=/dev/sda1 of=/dev/sdb1= cat /dev/sda1 > /dev/sdb1)。ddパーティションが何であるか、またはUUIDを生成する方法がわからないため、パーティションの開始近くにあるfilysystemスーパーブロックに格納されているUUIDを含むすべてのデータをそのままコピーしました。


ところで、
UUID(Universally Unique IDentifier)も奇妙な名前だと思います。PGUID(おそらくグローバルに一意の識別子)またはさらに良いことに、単にARLN(かなり大きな数)と呼ばれるべきです。


/ dev / sda6にパーティションを1つバックアップしました。次のエラーが表示されます。xfs_admin -U generate / dev / sda6 ERROR:ファイルシステムの重要なメタデータの変更がログに記録されているため、再生する必要があります。ファイルシステムをマウントしてログを再生し、アンマウントしてからxfs_adminを再実行します。ファイルシステムをマウントできない場合は、xfs_repair -Lオプションを使用してログを破棄し、修復を試みます。ログを破壊すると破損する可能性があることに注意してください。これを行う前にファイルシステムのマウントを試みてください。
gudge

UUIDで汚れた汚れた嘘のための+1 ...私はまた、「残念ながら、ユニークID」のUNUIDを提案することができる
FOON

さて、Globally Unique IDentifier(GUID)-「一般的に」または「一般的に」のように「グローバルに」をお勧めします。ああ待って...これは実際には元の名前ではありませんか?...
The Quark

11

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.cfgrd.md.uuid=$NEW_UUIDlinux/linuxefi/linux16および/またはコマンドライン)fstabおよび/またはmdadm.confおよび/またはupdate-initramfs(Debianの家族)、および/またはdracut --forceあなたが成功した次の時間をブートできるように(Red Hatの家族)。

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-ABCD場合は検索CDAB3412)、ディスク上のUUIDデータを検索します。
  4. UUIDが見つかったら、それらを変更し、を押しF2て保存して終了します。
  5. blkid UUIDを確認します。
  6. UUIDを変更したら、更新する必要がある場合grub.cfgfstab、次回の起動に成功する必要がある場合があります。
  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ヒントをありがとう。ただし、既存のファイルシステムまたはブロックデバイスで古いUUIDを新しいUUIDに更新する方法を探しています。
LiuYan刘研

ちょっと@LiuYan NT研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では、mtoolsパッケージのmlabel使用することを強くお勧めします。16進エディターの使用は危険です。

次のようなものを使用して、新しいUUIDを作成します。

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

手動で(他のすべてのコマンドは、ここで説明のように)排他的アクセスをチェックする気にしない場合は、あなたに単一のコマンドとしてそれを行うことができますmlabel -n -i /dev/sdb3 ::
テレコム

2

BTRFS

sudo btrfstune -u /dev/sdaX

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

btrfsckBTRFSのUUIDの変更はアトミック操作ではないため、実行することをお勧めします。


0

Fedora 27では、引数の順序が重要な役割を果たすことがわかりました...最初にデバイスを作成する必要があります。そうしないと、UUIDは変更されません。例えば

tune2fs /dev/sdb1 -U random

1
少なくともの前に表示されるonelineのmanページの説明を考えると、これは異常な動作のように思われます-Udevice
ジェフシャラー

0

重複したディスクパーティションUUID / sを生成するddコマンドを変更するには-GPartedを使用します。

GPartedユーザーインターフェイスから、ドライブを選択し、パーティションを選択し、パーティションをアンマウントします。「Partition folder」から「NEW UUID」を選択し、すべてのddドライブの複製パーティションuuid / sが交換用にマークされるまで繰り返します。起動可能なディスクの場合、UEFIパーティションuuidを交換しないでください。

選択したドライブ文字とパーティションを確認します-すべてOK?...

GPartedユーザーインターフェイスの[すべての操作を適用]アイコンをクリックします。
起動可能なディスクの場合、/ etc / fstabファイルのUUID = string / sおよびマウントポイント/ sを編集します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.