当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [交流]发现一个造成分区表错误的初步原因!
帖子发表于 : 2010-11-21 1:24 
头像

注册: 2010-01-03 10:55
帖子: 255
送出感谢: 0 次
接收感谢: 1
书接上文:[分享]俺今天遇到的无数多的分区表问题,感谢fdisk,感谢熊哥,会用fdisk了

话说上回说到我的160G最后一个分区(ext4)的,尾部被不明原因从19457缩到19440,开始我以为是分区工具欺负linux分区来者,今天用DiskGenius的时候,工具提示分区(2)越界,仔细查看发现工具识别硬盘的柱面直到19440,所以可能是PM自动修复了该问题?是这个硬盘的问题还是分区工具的问题?

另一块硬盘没有问题,是那个硬盘的问题还是那系列硬盘的问题?话说160G虽然饱受我的摧残,但是SMART显示还是很健康的,而500G已经有一个坏扇区了(被电击穿的非机械坏道)。

另外DiskGenius显示500G硬盘尾部有2.49MB未分配空间,类似160G第一次发生的现象,于是用其他的分区工具:PM、GParted,都没问题。

还显示160G的附加扇区数是11962个,而500G的是5103个,反而少了!

在fdisk -lu下查看,160G和500G尾部都有5103个扇区未用,看来是修复坏扇区用备份扇区。

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
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x24597c87

Device Boot Start End Blocks Id System
/dev/sda1 * 63 8385929 4192933+ 7 HPFS/NTFS
/dev/sda2 8385930 10586834 1100452+ 7 HPFS/NTFS
/dev/sda3 10586835 312576704 150994935 83 Linux

因为fdisk下,扇区貌似是从0开始算(不是扇区编号1~63,DiskGenius显示sda1其实为0柱1头1扇,也就是64,而这里显示63),柱面是从1开始算,所以硬盘的扇区就是0~312581807。
而PM、SPFDisk、DiskGenius下,扇区和柱面都是从0开始算(柱面编号都比这里显示的少一位)。

另外用PM的调整分区大小和资讯功能查看柱面大小得到结论:
1柱面=16065扇区=16065*512 bytes ≈ 7.844238281 MB
又想起:1柱面=255磁头=255*63扇区=16065扇区
又想起:PM显示160G信息 19440磁柱 255磁头 63扇区(看来只有fdisk和parted)

Model: ATA ST3160815AS (scsi)
磁盘 /dev/sda: 160GB
Sector size (logical/physical): 512B/512B
分区表:msdos

数字 开始: End 大小 类型 文件系统 标志
1 32.3kB 4294MB 4294MB primary ntfs 启动
2 4294MB 5420MB 1127MB primary ntfs
3 5420MB 160GB 155GB primary ext4

经过计算发现parted print的进制不一样:1GB=1000MB 1MB=1000KB 1KB=1000B
63*512/1000=32.256≈ 32.3kB

如果大家发现自己的linux分区被其他分区工具欺负了,用fdisk、DiskGenius检查一下,是不是识别不统一!

——————————以上是昨天的——————————

补充:发现DiskGenius确实如忘了是谁所说的,识别磁头是240而非255!
另发现如图:
附件:
Screenshot.jpg
Screenshot.jpg [ 87.46 KiB | 被浏览 3005 次 ]


这个小尾巴是怎么出现的呢?如果确实是隐藏扇区,又是因为什么而出现的呢?
另发现GParted分区居然能无视柱面!最小分区为1MB。



引用:
【话题】FAT文件系统高手来帮忙解答,小弟将不胜感激涕零
2010-01-09 23:57:15 来自:yanglanying 浏览数:386次
我在嵌入式平台上移植的FAT32文件系统,自己写MBR区域以及DBR区域和后继的文件系统等。
发现一个问题,实在不知道如何解答和处理。
首先说一下,我的MBR区域、DBR区域以及相关情况:
1.我用的是80G的硬盘,扇区总数为156301488.
2.我在MBR区域第一个分区表中建立的是一个扩展分区,它的(1c6偏移位置)sectors preceding partition 为16065,(1ca)sectors in partition 1 我写的是156285423(156301488-16065=156285423)
3.跟到16065号扇区,我的扩展分区表的内容是,sectors preceding partition 为63,sectors in partition 1我写的是156285360(156301488-16065-63=156285360).
4.跟到16128号扇区,也就是我写的DBR区域,hidden sector是16128,sectors(on large volumes)156285360.
5.根据我的理解,这样写完全可以,因为它总的来说,是一环扣一环,不应该有问题的。我在嵌入式平台上,在我的硬盘里建立一个FAT32文件目录(文件夹),插在我的个人PC上面完全可以识别,可以识别我写的文件系统是FAT32的,可以看到我建立的文件目录(文件夹),对这个文件夹操作也没有问题。


但是,我用一个软件时却发现了问题,它是Norton Partition Magic 8.0,它提示我说:
已检测到起始于磁盘2 扇区16065上的分区有错误110.
分区表中的长度不正确。
CHS长度为156296385 LBA长度为156285423.
Norton Partition Magic已经决定长度可以更改为正确的值156280320.
并且提示我修改与否。

如果我修改的话,它就将我的MBR区域的,(1ca)sectors in partition 1 我写的是156285423(156301488-16065=156285423)给改写为156280320,它还是显示说我的硬盘为坏,而且用它格式化的时候显示说论据错误格式化不了。

如果我不修改的话,它就显示我的这个硬盘为坏,不予识别,格式化的时候显示说论据错误格式化不了。


后来我通过WINHEX工具观测我的硬盘数据,发现它在hard disk 1显示的磁盘空间分配有一行是 unpartitionable space 大小是2.5兆,起始于156296385号扇区到156301488,共计大小为5103个扇区,2551.5k,等于2.491兆,约等于2.5兆。
然后我联想到魔法分区师的提示,CHS长度为156296385 ,而我在MBR区域写的是 (1ca)sectors in partition 1156285423(156301488-16065=156285423) ,它减去5103就是正确的魔法分区师写的正确的数值156280320,我个人认为这不是巧合,肯定是什么地方出了问题,因为我不理解winhex显示的 unpartitionable space 是什么东西,它的空间应该排除在分区之外,我没有排除,我不知道这个空间它是从哪儿来,如何计算,还有就是CHS长度和硬盘的总共扇区数 156301488,之间有什么关系,看魔法分区师的意思是应该在CHS长度范围内分区,它们之间的差值为不可分区区域的长度也就是5103
不可分区的长度应该排除在分区长度之外.


现提出以下问题,望大家能给与意见和建议,懂的高手能予以解答:
(1)、CHS如何计算,我读到的硬盘参数是,heads = 16,cylinders = 16383,sectors pe track = 63,它们的乘积是16514064不等于CHS长度(156296385),它到底如何计算还是说我的硬盘参数读取有误。

(2)、unpartitionable space 具体是什么区域,位于硬盘数据区具体的什么地方,它如何产生,如何就不能分区,我知道有一句话:分区不能跨柱面,是否和这句话有关,它的大小如何计算,是否像我看到的那样由总共扇区数156301488和CHS长度之差。

(3)、我在用魔法分区师修改完之后,在工具里看到的还是说的硬盘为坏,格式化不了,它是否还是由空间分配引发的问题分配的空间都多了5103个扇区,而只修改了MBR中的错误,扩展分区表和DBR的大小都没改。

(4)、我上面写的各个字段分配的空间有和不妥的地方,可以指出来,大家可以讨论一下,这还是很有意义的。


我现在分区时多考虑了这个。

CHS_Space(CHS大小) = 16065(柱面大小)*(156301488/16065)(总扇区大小对柱面大小取整数) = 156296385 这个计算出来的结果是整数个柱面。


unpartitionable-space(不可分区空间) = 156301488(总扇区大小)- CHS_Space(CHS大小) = 5103.


我下午在我工作用的嵌入式平台试了一次 也就是我的MBR区域的,原来写的是(1ca)sectors in partition 1 我写的是156285423(156301488-16065=156285423), 现在我把它改写为(156285423 - unpartitionable-space = 156280320) ,对应的16065号扩展扇区的也改了,同样减去了unpartitionable-space,以及后面的DBR中的参数都减去了这个 unpartitionable-space。

我执行了上面的操作之后,操作系统识别硬盘和文件系统没有问题,那个该死的魔法分区师也不提示我的错误了,看来我的操作应该是对的。


你说我的分析不对,你可以说说你认为的观点。


引用:
这个“原则”只是虚构的,没有任何权威文档作为依据。因为从DOS到Windows XP,MS操作系统中附带的分区工具做出来的分区都符合这个“原则”,所以会有人认为分区一定要这样分,那个分区魔法师就是其中之一。从Windows Vista开始,MS打破了这个“原则”。


引用:
我的回答你看看对不对

我的硬盘是samsung hd321kj 号称320g
实际用winhex看有扇区625142448(*512=320072933376字节)

对于大硬盘(用扩展int13) 其扇区/磁道=63 磁头=255

我的硬盘是
625142448/63/255=38913.317647058823529411764705882=柱面数

由于分区柱面不可跨越 (柱面应是整数)
0.317647058823529411764705882柱面里的扇区就是剩余扇区


剩余扇区=625142448-38913*63*255=5103

试试你的硬盘看看如何
我公司的十多块硬盘(都大于80g) 我看了看都是这样


今天无意中操作,发现末尾的2MB没了,或者说隐身了,可能是YLMFDOS工具箱fdisk的功劳,很久前的XPSP3VOL刻的一张磨损的盘,现在只当工具盘使用!
PM能显示19457个柱面,YLMF的fdisk仍认为是19440,其他方面和linux的fdisk一样!

diskgenius 3.2根本就是个墙头草,刚被fdisk修复的,DG就认为是19457,一被其他工具否定,又认为是19440!


最后由 一心月 编辑于 2010-11-22 23:54,总共编辑了 3 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: [交流]发现一个造成分区表错误的初步原因!
帖子发表于 : 2010-11-21 10:16 

注册: 2010-04-27 21:37
帖子: 236
送出感谢: 0 次
接收感谢: 0 次
刚刚在IRC上有人向我推荐diskgenius,看你这么说,我不敢用diskgenius了,还是试试用fdisk修复吧

我的移动硬盘250G识别为2.2T…… :em20


_________________
作为一名维基人,我追求用理性客观的眼光看待问题,说出的话有理有据;作为一名ubuntu用户,我相信我的存在离不开万物,和谐相处才是生存之道。海纳百川,文明用语。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: [交流]发现一个造成分区表错误的初步原因!
帖子发表于 : 2011-08-03 18:37 

注册: 2011-07-01 11:49
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
golden2007 写道:
刚刚在IRC上有人向我推荐diskgenius,看你这么说,我不敢用diskgenius了,还是试试用fdisk修复吧

我的移动硬盘250G识别为2.2T…… :em20

我也遇到过这种情况,肯定是分区表已坏,最好重分.其他的麻烦不说还容易失败.


页首
 用户资料  
 
4 楼 
 文章标题 : Re: [交流]发现一个造成分区表错误的初步原因!
帖子发表于 : 2012-07-23 6:36 
头像

注册: 2010-05-05 14:24
帖子: 132
送出感谢: 0 次
接收感谢: 0 次
这个跟磁盘精灵(Diskgenius)没有关系,在主板的基本输入输出上可以设置为逻辑区块位址模式。

如果硬盘在LRG模式下工作,硬盘磁头将定义为240个。
如果磁盘工作在LBA模式下,磁盘磁头定义为255个。

维基百科参考资料
逻辑区块位址:http://zh.wikipedia.org/zh-cn/%E9%82%8F%E8%BC%AF%E5%8D%80%E5%A1%8A%E4%BD%8D%E5%9D%80
C/H/S位址:http://en.wikipedia.org/wiki/Cylinder-head-sector


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译