发生问题时在Debian中保存分区

下午好,亲爱的!

我将告诉您一种可能导致虚拟机上完全数据丢失的快速方法,但是仍然找到了解决方法:parted

源数据:
操作系统: Debiab 9 64bit
FS:没有LVM的ext4
目的:将虚拟机上的FS从14GB扩展到60GB

原则上,对于管理员来说,此任务是微不足道的,但有时星星可以收敛,因此一切都不会像我们希望的那样进行。 在削减的情况下,我将尝试恢复事件的进程,这导致一个事实,即第一位管理员几乎没有收到任何可用的VM。


第一天:
管理员的任务非常简单-您需要在VM上扩展FS的大小。 以前,已经完成了为该VM扩展磁盘映像的工作,因此事情仍然很小-在VM上扩展FS的大小。

VM上的FS结构:
/开机-56Mb
/-所有剩余空间-ext4

由于虚拟机是通过模板创建的,因此没有LVM,这当然会简化整个过程。

因此,管理员在星期四晚上开始执行任务。 他的第一步是使用iso映像-SystemRescue引导VM。 在通过iso-image成功加载VM之后,管理员开始工作,并在fdisk的帮助下删除/(/ dev / vda2)部分 ,这是正确的,因为需要对其进行扩展。 删除分区(/ dev / vda2)后,管理员创建一个新分区-/ dev / vda2,并且在这里出现第一个错误-管理员首先创建一个扩展分区,然后才创建主分区,然后在比较新标记后退出fdisk并尝试安装该分区:

图片

由于磁盘布局已更改并且/ dev / vda5分区的开头和结尾已更改,因此出现了预期的错误,指示未找到超级块或错误。 该错误非常严重,如果错误地采用该解决方案,则可能会丢失文件或使文件遭到殴打。 您当然可以回滚,但是问题还在于管理员在工作之前没有对以前的磁盘布局进行截图。

由于无法挂载分区...管理员试图通过删除他创建的分区并创建新的主分区来纠正这种情况,但是由于这并不意味着批处理已结束,因此他的所有尝试都将导致相同的结果:
超级块无效

多次尝试自行还原分区后,第一位管理员向第二位管理员寻求帮助。

首先,第二个管理员离开虚拟机并复制名为vm_bad_disk的当前磁盘映像。 接下来,VM从相同的OS版本-Debian 9 64bit升起,并与第二个磁盘vm_bad_disk连接。

通过ssh进入新的虚拟机-我们看一下虚拟机中的磁盘列表:
root@recovery:~# fdisk -l
Disk /dev/vda: 4.9 GiB, 5242880000 bytes, 10240000 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: dos
Disk identifier: 0x09dea38e

Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 499711 497664 243M 83 Linux
/dev/vda2 501758 10237951 9736194 4.7G 5 Extended
/dev/vda5 501760 10237951 9736192 4.7G 83 Linux

Disk /dev/vdb: 58.6 GiB, 62914560000 bytes, 122880000 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: dos
Disk identifier: 0xe8c76303

Device Boot Start End Sectors Size Id Type
/dev/vdb1 * 2048 194559 192512 94M 83 Linux
/dev/vdb2 196606 30717951 30521346 14.6G 5 Extended
/dev/vdb5 198656 30717951 30519296 14.6G 83 Linux


这是/ dev / vdb-这是我们的vm_bad_disk。 第二个管理员的第一件事是删除/ dev / vdb2和/ dev / vdb5,并尝试以194560开始并以近似结尾创建/ dev / vdb2,但同时得到:
超级块无效

要使用/ dev / vdb分区,将安装parted实用程序,以便更方便地使用该分区。
我们重复执行删除部分中的/ dev / vdb2并执行帮助的操作。

引起管理员注意的是救援命令,该命令可让您设置分区的开始和结束以在其上找到FS。 命令语法没有什么复杂的:
只需输入parted:
>营救
系统将询问:
开始-指示194560
现在,管理员需要计算End(分区结束)。 由于管理员最初知道整个磁盘的大小为14GB,而1个扇区为512字节,因此进行了以下计算:
14 GB约为15032385536字节,我们计算扇区数:
15032385536/512 = 29360128
此值必须在parted中指定:
结束29360128

大胆地按Enter键,然后等待结果...在这种情况下,我不必等待很长时间,也不必分开显示FS已找到以及是否值得进行更改-我们回答是

分手将进行必要的更改,管理员将退出分手。

管理员返回系统的命令行并执行以下操作:
挂载/ dev / vdb2 / mnt

该分区已安装,没有任何问题,并且表明其大小约为14GB,这是正确的,因为尚未扩展FS。 管理员快速检查了文件,乍看之下所有内容都表明没有工件和损坏的文件。

由于分区看起来是活动的,因此管理员执行: umount / dev / vdb2并启动:
检查完成后, e2fsck / dev / vdb2-运行命令以扩展该部分:
resize2fs / dev / vdb2

操作顺利通过,管理员再次安装了该分区,以确保一切正常:
挂载/ dev / vdb2 / mnt

分区已正确安装,并使用df -p命令,它可以看到已经扩展的分区。

管理员再次检查该批处理中的文件和目录,并确定FS和文件一切正常。

管理员执行命令:shutdown -p now,然后从执行操作的VM中删除映射的驱动器。

它将原始VM磁盘映像保存起来,所有内容均从该原始VM磁盘映像开始存储在单独的存储中,并用正确的磁盘映像替换它,然后将VM发送至启动。

虚拟机启动时没有任何问题,所有数据都就位。

道德:
1)在采取行动之前先拍快照
2)截取所需设置的屏幕截图(在这种情况下,为分区标记)
3)上班前,备份重要文件

Source: https://habr.com/ru/post/zh-CN446252/


All Articles