注意:
- 下面的命令都以/dev/vdb为操作目标,请按照实际情况调整。
- 我们假设扇区大小为512字节。如果有不同,请调整。
- 部分系统,fdisk命令默认的单位不是扇区大小。所以使用fdisk命令时,我们总是使用-u选项。如果使用parted,则进入后先执行unit s命令。
- (较新)fdisk工具默认分区位置是2048。如果需要定制分区的起始扇区,请使用parted工具。
如果需要从Ext3/4文件系统托定分区位置,简单、实用的方法是检查文件系统模数所在位置。熟练的同学可以手工检测。把检测到的结果与完好的文件系统数据对比分析,推断分区位置是很简单的过程。
这里,操作比较麻烦的是寻找模数所在位置和从之推算分区的其实位置。那么,能不能自动化这个检测过程呢?答案是肯定的。
dd if=/dev/vdb bs=512 count=4096 2>/dev/null | \
od -tx1 | perl -ne '
chomp;
if (/^([0-7]+)\s # 磁盘数据的位置
([0-9a-f][0-9a-f]\s){8} # 越过无关数据
53\sef\s # 模数
0[124]\s00\s0[123]\s00\s # 文件系统状态和出错后的行为配置
/x) {
my $s=int((oct $1)/512)-2;
print qq[$s $_\n];
}'
先确认分区情况。这里提醒大家总是记得使用-u选项。这样我们得到磁盘和分区信息都是以扇区(512byte)为单位的。
fdisk -l -u /dev/vdb
我们给出一个分区和文件系统完好的例子
祝大家玩的愉快。