我正在为有两个不同磁盘的人修理一台计算机。填充和分区如下:
- 多个分区上充满了多个操作系统
- 是具有单个分区(即未分区)的内部数据驱动器
现在不幸的是数据驱动器是获取分区表的驱动器。
- 我的理解是,他们首先安装 Windows,然后安装 arch linux,但由于他们将数据驱动器插入,最终导致错误的驱动器获取分区表。
- 他们好几个月都没有注意到,继续在 Windows 上并排安装 arch linux,直到最近当他们拔掉数据驱动器时才注意到分区表消失了。
- 在尝试复制然后删除分区表之前我遇到的问题是,我没有空间提前备份数据以防万一
我的问题:
所以我很好奇在磁盘之间复制分区表然后通过重置/随机化 GUID 使两个磁盘都可用的一般过程是否安全并且独立于所有现有数据?
sgdisk -R=/dev/sdb /dev/sda sgdisk -G /dev/sdb
sgdisk
我从这个答案中得到了两个命令:https://unix.stackexchange.com/a/60393/173317
设置细节
结果lsblk -fa
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1
└─sda2 ntfs COMPUTER 16 digit alpha numeric code
sdb
├─sdb1 ntfs System Reserved 16 digit alpha numeric code
├─sdb2 ntfs 16 digit alpha numeric code
├─sdb3 ntfs 16 digit alpha numeric code
├─sdb4
├─sdb5 swap SWAP 8 digits-4 digits-4 digits-4 digits-12 digits [SWAP]
├─sdb6 ext4 BOOT 8 digits-4 digits-4 digits-4 digits-12 digits /boot
├─sdb7 ext4 ROOT 8 digits-4 digits-4 digits-4 digits-12 digits /
└─sdb8 ext4 HOME 8 digits-4 digits-4 digits-4 digits-12 digits /home
sr0
结果parted -l
Model: ATA ST3500320AS (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 1018kB 1000kB bios_grub
2 1049kB 500GB 500GB ntfs Basic data partition msftdata
Model: ATA ST2000DX001-1CM1 (scsi)
Disk /dev/sdb: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 106MB 105MB primary ntfs boot
2 106MB 107GB 107GB primary ntfs
3 107GB 107GB 472MB primary ntfs diag
4 107GB 2000GB 1893GB extended lba
5 107GB 116GB 8590MB logical linux-swap(v1)
6 116GB 117GB 1074MB logical ext4 boot
7 117GB 139GB 21.7GB logical ext4
8 139GB 192GB 53.7GB logical ext4
结果fdisk -l
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 8 digits-4 digits-4 digits-4 digits-12 digits
Device Start End Sectors Size Type
/dev/sda1 34 1987 1954 977K BIOS boot
/dev/sda2 2048 976771071 976769024 465.8G Microsoft basic data
Disk /dev/sdb: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 10 alpha numeric (hex) digits
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 206847 204800 100M 7 HPFS/NTFS/exFAT
/dev/sdb2 206848 208795647 208588800 99.5G 7 HPFS/NTFS/exFAT
/dev/sdb3 208795648 209717247 921600 450M 27 Hidden NTFS WinRE
/dev/sdb4 209717248 3907026943 3697309696 1.7T f W95 Ext'd (LBA)
/dev/sdb5 209719296 226496511 16777216 8G 82 Linux swap / Solaris
/dev/sdb6 * 226498560 228595711 2097152 1G 83 Linux
/dev/sdb7 228597760 271032319 42434560 20.2G 83 Linux
/dev/sdb8 271034368 375891967 104857600 50G 83 Linux
从家里运行sgdisk -p
和数据驱动器的根目录运行都不会返回任何内容。
答案1
你应该对 GUID 没问题磁盘但要小心。分区和文件系统的 UUID 更常用,交换它们可能很危险。 GUID 通常由引导加载程序用来识别磁盘类型/用途(Windows、FreeBSD、CoreOS Linux 等)。根据你的描述,应该是安全的。为了更加安全,请将分区表备份到 USB 驱动器,以便在需要时恢复它们。 ( sgdisk -b
)。这是因为编辑分区表不会修改数据块,只会修改它们所在位置的边界。
要详细了解分区/文件系统的 UUID:
文件系统的 UUID 通常可用于识别 Linux 系统上的引导设备。例如:
BOOT_IMAGE=/vmlinuz-4.4.14-200.fc22.x86_64 root=/dev/mapper/f20-root ro rd.lvm.lv=f20/root vconsole.font=latarcyrheb-sun16 rd.luks.uuid=luks-8cf2f2dc-5a3d-4cb4-9c09-e036b3812eac rd.lvm.lv=f20/swap rhgb quiet LANG=en_US.UTF-8
如果更改该磁盘上的 UUID,事情就会变得混乱。另一个事情可能变得不稳定的地方分割事情的一面在于/etc/fstab
:
#
# /etc/fstab
# Created by anaconda on Fri Dec 20 18:47:10 2013
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/f20-root / ext4 defaults,x-systemd.device-timeout=0 1 1
UUID=44450fe5-24d0-468b-b20b-10c0127308dd /boot ext4 defaults 1 2
/dev/mapper/f20-home /home ext4 defaults,x-systemd.device-timeout=0 1 2
/dev/mapper/f20-swap swap swap defaults,x-systemd.device-timeout=0 0 0
要获得更好的调查,请先运行:
lsblk -fa
这将向您显示所有 UUID 信息,以便您可以根据需要进行交换。