我刚刚覆盖了系统硬盘的分区表。我cfdisk
在错误的设备(/dev/sda
而不是/dev/sdd
)上创建了,删除了所有分区,创建了一个覆盖整个设备的新主分区,将其类型设置为07
(NTFS)并点击write
。
现在我的系统正在运行。在重新启动之前,我希望/猜测不会发生任何变化 - 意思是:我的所有数据都可以访问(我目前正在对dd
整个设备进行备份,并计划.tar.gz
稍后对最重要的数据进行备份)。我还备份了/proc/partitions
,/proc/diskstats
(尽管我猜这更多是关于吞吐量和类似的东西...)和/sys/block/sda/sda?/{start,size}
。
我还知道一些其他的事情:
- 4 个主分区
- 第一个分区:~100Mb,ext3,/boot
- 第二个分区:~100Mb,“Win7 启动分区”,ntfs(?)
- 第三个分区:~20...30GB,Win7,ntfs
- 第四个分区:~20...30GB,luks 加密设备
- 卢克斯德加密设备是 LVM-PV
/
、/home
&分区swap
均为上述 PV 上的 LV(VG 上的)
我的问题是:
- 将内核分区表写入磁盘的最简单方法是什么?
- 获取上述(也许还有其他我不知道的......)数据并生成分区表的最简单方法是什么?
- 关于 luks 和/或 lvm 是否存在什么问题需要处理?
- 在重新启动之前我应该备份什么数据吗(比如内核[/sys/..., /proc/...]等等中的内容,它们可以帮助我重新生成分区表)?
答案1
希望不是太难。
首先,请注意 /dev/sda 上所有分区的大小和顺序:
challenger:/home/michael # grep . /sys/block/sda/sda*/{start,size}
/sys/block/sda/sda1/start:63
/sys/block/sda/sda2/start:228690000
/sys/block/sda/sda3/start:257040
/sys/block/sda/sda1/size:256977
/sys/block/sda/sda2/size:83885760
/sys/block/sda/sda3/size:228432960
在 /dev/sda 上运行 fdisk 并将单位更改为扇区:
Command (m for help): u
Changing display/entry units to sectors
然后开始创建分区。为每个分区使用适当的数字start
和。size
避免出现差一错误 - 在size
将其输入到 fdisk 之前减一。
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First sector (63-312581807, default 63):
Using default value 63
Last sector, +sectors or +size{K,M,G} (63-312581807, default 312581807): +256976
Command (m for help): p
Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x02b002af
Device Boot Start End Blocks Id System
/dev/sda1 63 257039 128488+ 83 Linux
不要忘记设置分区 ID 并在正确的分区上切换启动标志
现在重新安装你的 MBR,你就可以开始了。
当然,您可以使用您最喜欢的分区编辑器完成所有这些操作...parted 也可以很好地工作。
如果您丢失了有关分区开始/结束的信息 - parted 有“救援”选项来搜索磁盘中丢失的分区。但您不需要这些。
答案2
如果分区表损坏,我建议使用 RIP 的启动盘(Linux 可以进行救援)来运行 testdisk。哎呀,您可能能够从正在运行的系统运行 testdisk 以扫描和恢复分区,但我不会尝试这样做,因为我不知道它会对正在运行且打开文件的系统造成什么影响。
如果您想尝试备份重要数据(您还没有备份?),现在正是时候......