我有一个 CentOS7 虚拟机。
在fdisk /dev/sda
删除以调整分区大小的过程中,我们删除了主分区,并且在重新创建过程中选择了扩展分区而不是主分区。更改已保存并重新启动。
所有操作如下所示,系统启动时控制台上会显示以下内容。
我正在寻找一种方法使系统再次可启动,并更好地了解发生了什么。
1. 控制台输出:
[ OK ] Started Show Plymouth Boot Screen.
[ OK ] Reached target Paths.
[ OK ] Started Forward Password Requests to Plymouth Directory Watch.
[ OK ] Reached Target Basic System.
....
dracut-initqueueu[262] Warning: dracut-initqueueu timeout - starting timeout scripts
....
Starting Dracut Emergency Shell...
Warning /dev/mapper/rootvg-rootlv does not exist
Warning /dev/rootvg/rootlv does not exist
2. 对虚拟机执行的操作导致虚拟机无法启动:
[root@Server ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 25G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 1G 0 part
│ └─swapvg-swaplv 253:1 0 1G 0 lvm [SWAP]
└─sda3 8:3 0 23G 0 part
└─rootvg-rootlv 253:0 0 23G 0 lvm /
sr0 11:0 1 1024M 0 rom
[root@Server ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/sda: 26.8 GB, 26843545600 bytes, 52428800 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
Disk label type: dos
Disk identifier: 0x000ea6ab
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 4202495 1051648 8e Linux LVM
/dev/sda3 4202496 52428799 24113152 8e Linux LVM
Command (m for help): d
Partition number (1-3, default 3):
Partition 3 is deleted
Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): e
Partition number (3,4, default 3):
First sector (4202496-52428799, default 4202496):
Using default value 4202496
Last sector, +sectors or +size{K,M,G} (4202496-52428799, default 52428799):
Using default value 52428799
Partition 3 of type Extended and of size 23 GiB is set
Command (m for help): t
Partition number (1-3, default 3):
Hex code (type L to list all codes): 8e
You cannot change a partition into an extended one or vice versa.
Delete it first.
Type of partition 3 is unchanged: Extended
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@Server ~]# reboot
答案1
发生了什么?
的布局扩展分区引导记录与主分区不同:它是洋葱分层的,导致分区内有分区,从而产生不同的数据偏移量。
另外,创建一个扩展分区而不在内部添加一个(不要添加它!)是没有用的:操作系统只是看到没有任何可用的分区,因为它只是一个容器,与其他可用的存储容器(例如逻辑卷管理器你正在使用。 Linux 还会从第 5 个分区开始在 EPBR 内命名此类新分区(例如:/dev/sda5
),只要 LVM 仍然被自动检测到,就不会造成太大麻烦。您随后没有创建扩展类型分区的事实可能会阻止进一步的损坏。
该怎么办?
由于它是虚拟机并且很容易,因此您应该首先进行备份,包括完整的磁盘映像,以防进一步的操作导致额外的损坏。
您应该恢复更改并再次使用主分区,就像您所做的那样:删除分区并使用以前的偏移量和长度就地重新创建它,希望实际上没有发生实际数据覆盖(这不能保证)。您拥有按原样恢复此主分区所需的所有数据。
您无法轻松地从主要切换到扩展,因为磁盘驱动器工具发出警告并正如您所发现的那样。
无法启动怎么办?
就像处理出现问题的真实系统一样:如果无法启动,请使用救援磁盘。任何 Live CD/USB 发行版都可以,不一定是 CentOS,也可以是 Debian Live CD 映像。
您必须获取此类实时磁盘映像,并将其作为磁盘附加到虚拟机,并使其可启动。然后启动它,找到一个菜单来获取 shell 并成为 root,找到你的磁盘:例如,它可能已被重命名为/dev/sda
或/dev/sdb
不重命名,具体取决于这是如何完成的,然后fdisk
再次运行。如果fdisk
不可用,请找到一种获取该命令或等效命令的方法。请小心,较新的工具版本提供擦除分区/文件系统签名,但不允许它擦除任何内容。