在linux服务器上,我使用PXE引导加载ubuntu仿生文件,然后在本地磁盘上创建分区,无论我使用哪种工具(sgdisk,parted)创建分区,都会发生令人难以置信的事情,新创建的分区将自动
root@:server1~# sgdisk /dev/sda --zap-all && partprobe /dev/sda && lsblk /dev/sda
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
root@server1:~# parted /dev/sda mklabel gpt mkpart P1 ext3 1MiB 8MiB
Information: You may need to update /etc/fstab.
root@server1:~# partprobe /dev/sda && udevadm settle && lsblk /dev/sda && sh -c 'blkid /dev/sda*'
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
└─sda1 8:1 0 7M 0 part
/dev/sda: PTUUID="f6e23816-0f58-4fa1-88a7-9663274d21b4" PTTYPE="gpt"
/dev/sda1: LABEL="uefi-boot" UUID="CF08-DFE8" TYPE="vfat" PARTLABEL="P1" PARTUUID="e5a560cd-4f40-4771-a219-771f3ed061a1"
uefi-boot
在最后一行看到了吗?
如果我使用sgdisk,
root@server1:~# sgdisk /dev/sda --zap-all && partprobe /dev/sda && lsblk /dev/sda
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
root@server1:~# sgdisk /dev/sda --new=3:4080:10000
Creating new GPT entries.
Information: Moved requested sector from 4080 to 2048 in
order to align on 2048-sector boundaries.
The operation has completed successfully.
root@server1:~# partprobe /dev/sda && udevadm settle && lsblk /dev/sda && sh -c 'blkid /dev/sda*'
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
└─sda3 8:3 0 3.9M 0 part
/dev/sda: PTUUID="4e2442b2-632a-43d5-9bf4-01d2fd21ce00" PTTYPE="gpt"
/dev/sda3: LABEL="uefi-boot" UUID="CF08-DFE8" TYPE="vfat" PARTUUID="7f564a33-855e-468f-a69e-1467974bb8df"
分区的开始位置和结束位置很重要,如果我指定了很大的大小,那么它将成为'cloudimg-rootfs'标签,哇!
root@server1:~# sgdisk /dev/sda --zap-all && partprobe /dev/sda && lsblk /dev/sda
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
root@server1:~# sgdisk /dev/sda --new=3:1052672:3749640191
Creating new GPT entries.
The operation has completed successfully.
root@server1:~# partprobe /dev/sda && udevadm settle && lsblk /dev/sda && sh -c 'blkid /dev/sda*'
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
└─sda3 8:3 0 1.8T 0 part
/dev/sda: PTUUID="dd1266c5-e82b-4027-a423-94d7acd5b0d5" PTTYPE="gpt"
/dev/sda3: LABEL="cloudimg-rootfs" UUID="b000940e-c4fa-46d5-83bf-6cbef593300e" TYPE="ext4" PARTUUID="3b5806e1-3789-4caa-807f-8b9c7257009b"
我已经确认在普通的linux系统中,这个问题不存在。
也许是因为某些udev规则仍在检查中。
有人遇到这个问题吗?
编辑:对于任何想要尝试的人,运行
sgdisk /dev/sda --zap-all && partprobe /dev/sda && lsblk /dev/sda
sgdisk /dev/sda --new=3:4080:10000
partprobe /dev/sda && udevadm settle && lsblk /dev/sda && sh -c 'blkid /dev/sda*'
EDIT2:最初,我发现grub_bios分区已被自动格式化为vfat,从而引起问题。所以我做了上面的测试。
root@server1:~# blkid
/dev/loop0: TYPE="squashfs"
/dev/sda1: LABEL="uefi-boot" UUID="4DC8-5F56" TYPE="vfat" PARTLABEL="bios_grub" PARTUUID="5d073c88-54aa-4b75-9eb8-baf62cde6cbd"
/dev/sda2: LABEL="uefi-boot" UUID="A224-71F4" TYPE="vfat" PARTLABEL="efi" PARTUUID="9a315cf9-413f-406b-8830-373630d7ebba"
/dev/sda3: LABEL="cloudimg-rootfs" UUID="0a5121c4-256d-4a87-96e4-8b7ec5b8a2d5" TYPE="ext4" PARTLABEL="root" PARTUUID="6786acc3-20b9-4f07-881a-5ddb1dd38f7a"
这似乎并不令人惊讶...
我希望您已经在磁盘上安装了这两个文件系统,实际上您是否正在看到它们。
别忘了parted
/ sgdisk
/之类的工具fdisk
只会编辑分区表,而不会触及其余磁盘...当您“删除”分区(或分区表)时,您实际上只是删除分区的位置和大小,而不删除文件系统。
您从未打电话给这个mkfs.*
家庭中的一个,因此我不希望在这种情况下为您创建文件系统。
例如,磁盘状态如下:
您运行sgdisk /dev/sda --zap-all
,而您真正要做的就是清除分区表:
-Z,-zap-all
中断(销毁)GPT和MBR数据结构,然后退出。此选项的工作原理与-z相似,但是由于它擦除了MBR和GPT,因此,如果您希望在使用此选项后对磁盘进行重新分区,则它更适合;如果您已经对磁盘进行了重新分区,则完全不合适。
分区表不见了,但是数据仍然在磁盘上。
当您随后再次创建分区时,如果它恰好与现有数据对齐,那么您将能够像以前一样访问文件系统:
parted /dev/sda mklabel gpt mkpart P1 ext3 1MiB 8MiB
注意:新分区可能小于文件系统,在这种情况下,可以进行指纹识别,但是您可能无法挂载文件系统,或者在访问内容时可能遇到错误。大小相同或更大的分区将始终能够访问文件系统。
在第二个例子中,请注意,正如你希望你的操作没有完成-具体而言,4080您要求的起始扇区被改为2048,以保持对齐...即:该分区实际上是在同一个地方的您举的第一个例子。
root@server1:~# sgdisk /dev/sda --new=3:4080:10000 --typecode=3:ef02
Creating new GPT entries.
Information: Moved requested sector from 4080 to 2048 in
order to align on 2048-sector boundaries.
The operation has completed successfully.
尝试擦除磁盘的前100MiB,然后重试步骤:
dd if=/dev/zero of=/dev/sda bs=1M count=100
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句