Tuesday 16 October 2018

linux - Counting disk capacity using cylinder-head-sector model


Let's look at fdisk -l /dev/sdc output.


# fdisk -l /dev/sdc
Disk /dev/sdc: 786 MB, 786432000 bytes
255 heads, 63 sectors/track, 95 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

I counted capacity for this virtual disk. Check it on image. I got 781401600 bytes instead of 786432000 bytes in upper listing. I have no ideas why it is so. How to get 786432000 bytes(I lost 5030400 bytes)?


enter image description here



Answer



See this answer where it's all authoritatively explained:



In brief, CHS numbers do not have much value these days and are actually reverse-calculated from the actual capacity in bytes. That is, your disk capacity is actually 786432000 bytes. Let's calculate the number of cylinders for your case:


bytes       b/S   H     S    C
786432000 / 512 / 255 / 63 = 95.61157796451914

Now you must somehow get rid of a poor .6 of a cylinder and so you get:


C / H / S = 95 / 255 / 63

Obviously, the rounding error yields the wrong result going back to byte count. Your missing bytes riddle:


C                  S    H     b/S
0.61157796451914 * 63 * 255 * 512 = 5030399.999999992 ~ 5030400

In short - forget about CHS. Even more if you have a SSD. Unless you have a hydra SSD, you'll have a hard time counting how many heads it has anyway...


No comments:

Post a Comment

Where does Skype save my contact's avatars in Linux?

I'm using Skype on Linux. Where can I find images cached by skype of my contact's avatars? Answer I wanted to get those Skype avat...