[bug报告] 兼容性问题,mbr硬盘使用分区扩容后linux系统不认分区
diskgenius吧
全部回复
仅看楼主
level 1
kappa_00000 楼主
原本机械硬盘A装了windows+linux双系统(mbr)如下:
sda1:充当windows系统的C盘
sda2:充当windows系统的D盘
sda3:充当linux系统的启动盘 /boot
sda4:充当linux系统的根目录 /
后来买了一个固态硬盘B,分gpt格式,重装系统如下:
sdb1:recovery
sdb2:esp
sdb3:msr
sdb4:windows系统C盘
sdb5:windows reserve
sdb6:linux系统根目录 /
然后将sda2挂载到windows的D盘,将sda4挂载到linux系统的/home目录。两系统能正常运行。
然后将在linux系统下将sda1和sda3删除了,此时sda结构如下:
(未分区数据)
sda2:windows系统的D盘
(未分区数据)
sda4:linux系统的 /home目录(将原本/home里的文件移动到了sda4的根目录,但无关紧要)
两系统能正常运行。
接下来是悲剧的开始:
用pe系统登入windows系统,下载最新版的diskgenius,将sda2前后的两段未分区区域扩容给了sda2。
重启进入windows系统没有任何问题,但进入重启进入linux系统,系统认不出sda的所有分区了。
用lsblk命令,只看到/dev/sda,无法看到原本的/dev/sda2和/dev/sda4。
进入pe系统,发现当时分区扩容时,diskgenius自动重设了分区序号,现在的sda结构变成如下:
sda1
sda2
我的linux系统是用uuid来辨识分区的,uuid并没有改变,理论上可以正常检测,可是linux系统就是无法检测分区,所以假设有可能是你们更新mbr表时不知道把mbr表写到了哪里去,或者写入的内容有问题。
最气人的是分区扩容可以给我做,可是搞出问题了之后我想恢复之前的分区表却竟然要注册会员购买软件。
最后我是在linux下用parted找到了diskgenius写入的新分区信息,重新写入到了mbr信息中。这才让两系统都正常启动。
想去报告bug还要注册论坛,我就不注册了,爱看不看。
2020年08月15日 13点08分 1
level 1
哥们我最近也遇到这个问题。磁盘在win下是gpt的用diskgen分的区好好的检查也没报错但是在linux下fdisk死活认不出来,一个3T和4T的盘非要说是16T的把sector size(logical/phycal)认成是4096/4096的. 其它盘都是512/4096就好好的。在linux下parted和gdisk能认出是2.7TB但是分区读不出来,请问你最后parted怎么搞的啊?
2022年03月11日 07点03分 3
level 1
kappa_00000 楼主
@terry6871
1. 这已经是很久之前的贴子了,当年我用的时候fdisk应该还不能正常读GPT的分区表,如果你用的linux是那些旧的长期支持版,那不确定你的fdisk是不是还是那个样子。
2. 你给的信息太少了,在硬盘出问题前你用diskgen做过些什么,这些完全没有说。我判断不出你是哪个环节出问题。你的硬盘在用diskgen之前就已经是gpt硬盘了?还是说你用diskgen将mbr表改成了gpt表?我原本4个分区的硬盘我单纯将前3个合并了,第4个的分区起始位置完全没有变动,恢复起来很简单。你呢?你在扩容的同时有更改过分区的起始位置吗?
3. 正常的gpt硬盘应该是前63还是64个lba是用作分区表的,之后的才是可用空间。但看你的gdisk输出却是从第6个开始就是可用空间了,你用diskgen的时候有没有填错了什么?
如果我的语气太阴阳怪气请你不要介怀,问别人系统相关的问题的话,确实应该给多点信息,而不是只甩几张系统输出信息给别人看。
以上几个问题也不需要回答我。说来也挺碰巧的我几个月才用一次百度,就算我看到消息有数字我也不会点进去看的,幸好不是过了几个月才发现你的评论。以上几个问题是给你一些方向,你可以顺着这些方向看一下能不能解决你的部分疑问。
至于你最关心的解决方法:
4. 就算我现在看我的1楼,我也不记得我当时是怎么搞的,但如果是现在的我遇到这样的情况,我想我会先转回windows系统,打开diskgen,看diskgen还能不能认出这几个分区,如果能认出的话就将每个分区的起始和结束的扇区sector编号记下来。然后转到linux,打开parted,用rescue模式扫描曾经有过的分区,看到扫描到的分区的起始和结束位置能对应上的话就按确认同意加入分区表。仅供参考,记得该备份的东西先备份好。
2022年03月11日 20点03分 4
感谢回复。其实问题也发到CHH了但是也没人答复。我这是个叫“我家云”的矿渣,用的armbian+OMV系统,linux内核5.4和5.7都试了。如方便请看看下面帖子的细节。
2022年03月19日 16点03分
level 1
我这是个叫“我家云”的矿渣,用的armbian+OMV系统,linux内核5.4和5.7都试了。最终目标是linux下直接读取这个ntfs盘。
这个盘其实也不算扩容调整分区吧,应该是台式机win下clean过重新分区的。从软件层面看奇怪的是同样这个3T或4T盘接到外置USB口时linux就很正常读出GPT而且里面是NTFS分区可以mount的,而插在内置sata线就识别是个16T的空盘,那个从first usable sector 6的说法其实我也不是很懂,这个sector和LBA如果是一回事的话那可能真是gpt分区表有点问题令linux读不出来。因为每次gdisk看那个gpt都是not present,感觉问题出在这里,但是usb转接sata就可读确实令人费解。然后另有几个250/500G磁盘的ntfs分区也可以内置sata线直接读取和mount(忘了看这两货是不是mbr分区了),感觉linux内核方面没问题。
这两个盘在win下是可以正常使用读取的,而且在linux下用parted和gdisk的mklabel gpt等命令操作把分区表(即gpt表?)屡屡数次搞坏后都是可以回到win下diskgenius专业版扫描并重建分区表救回来的,diskgen第一次读取坏盘时会报告gpt分区表有误并修复,但是回到linux下还是认不出来,因为有3T备份数据在上面希望可以直接读取而不重新耗时拷贝一次而且问题挺古怪的就和它耗上了。一点想法是可能主gpt表没有正常写在LBA1-32导致linux认不出来,但是win为啥好好的,而且插在usb转sata是linux也是可以正常mount的,应不会是只读取最后32个LBA的那个后备分区表来瘸腿使用吧,按道理这样的话diskgen应该主动给修复的。
写了一下顺便整理了一下思路,如果你能方便看看再给点建议就更好了,第4点办法应该有可行性,过一阵如还是没没进展的话我再试试在linux下rescue重建分区表,谢谢。
2022年03月19日 16点03分 5
补充一下,在台式机ubuntu试用版下是正常读取到那个盘的,gdisk看GPT是present
2022年03月19日 16点03分
1