`

linux磁盘分区详解

 
阅读更多

参考资料

http://blog.csdn.net/freexploit/article/details/961330

http://soft.yesky.com/os/lin/74/2155574.shtml

 

 

linux分区规定:

1 设备管理

在linux中,每一个硬件设备都映射到一个系统的文件.

 

linux把各种ide设备分配了一个由hd前缀组成的文件.

而对于各种scsi设备.则分配了一个由sd前缀组成的文件.

对于scsi硬盘则标识为"sdx~".scsi硬盘是用sd来表示分区所在设备的类型.

“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),

“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,

从5开始就是逻辑分区。

例,

IDE设备:一台PC上可以有两个ide接口.

我们称其为第一IDE第二IDE.每个ide上有两个ide设备.

我们将其称为主盘,从盘.其中硬盘和光驱都是IDE设备。

linux命名规则:

第一IDE的主盘:/dev/hda

第二IDE的主盘:/dev/hdb

第二IDE的主盘:/dev/hdc
第二IDE的从盘:/dev/hdd

这是因为,在UNIX/LINUX系统中,将所有的设备都当做一个文件,放在/dev目录下.

故所有文件都放到/dev目录下.

2 分区数量 

硬盘分区是针对一个硬盘进行的操作.

关于一个磁盘的分区,一个磁盘应该有四个主分区,其中扩展也算一个主分区

主分区.1-3个

扩展分区.0-1个

逻辑分区.无限制

 扩展分区本身无法用来存放数.要使用它必须将其分成若干个<1-n个>逻辑分区.

 

最合理的分区结构

主分区在前,扩展分区在后,然后在扩展分区中划分逻辑分区;主分区的个数+扩展分区个数要控制在四个之内;比如下面的分区是比较好的;

 

[主|分区1] [主|分区2] [主|分区3] [扩展分区]
                                                            |
             [逻辑|分区5] [逻辑|分区6] [逻辑|分区7] [逻辑|分区8] ... ... 

 

[主|分区1] [主|分区2] [扩展分区]
                                          |        
   [逻辑|分区5] [逻辑|分区6] [逻辑|分区7] [逻辑|分区8] ... ... 

      

[主|分区1] [扩展分区]
                        |        
[逻辑|分区5] [逻辑|分区6] [逻辑|分区7] [逻辑|分区8] ... ...

3 各分区的作用

在linux中规定.每一个硬盘设备最多能有4个主分区<其中包含扩展分区>.也就是在一个硬盘中,主分区和扩展分区一共最多是4个.

主分区的作用是计算机用来进行启动操作系统的,

因此每一个操作系统的启动.或者称作引导程序都应该放在主分区上.

<这是主分区和扩展分区以及逻辑分区最大的区别>

4 其他理解

 对主要分区、扩展分区与逻辑分区的特性做一个简单的定义:

 

  • 主要分区和扩展分区最多可以有四个
  • 扩展分区最多只能有一个
  • 逻辑分区是有扩展分区持续切割出来的分区槽
  • 磁盘被格式化后,作为数据存取的分割槽为主要分区与逻辑分区,扩展分区无法格式化

 5 磁盘容量以及分区大小的算法

Js代码 复制代码
  1. #fdisk -l  
  2. Disk /dev/hda: 80.0 GB, 80026361856 bytes  
  3. 255 heads, 63 sectors/track, 9729 cylinders  
  4. Units = cylinders of 16065 * 512 = 8225280 bytes  
  5.    Device Boot Start End Blocks Id System  
  6. /dev/hda1 * 1 765 6144831 7 HPFS/NTFS  
  7. /dev/hda2 766 2805 16386300 c W95 FAT32 (LBA)  
  8. /dev/hda3 2806 9729 55617030 5 Extended  
  9. /dev/hda5 2806 3825 8193118+ 83 linux  
  10. /dev/hda6 3826 5100 10241406 83 linux  
  11. /dev/hda7 5101 5198 787153+ 82 linux swap / Solaris  
  12. /dev/hda8 5199 6657 11719386 83 linux  
  13. /dev/hda9 6658 7751 8787523+ 83 linux  
  14. /dev/hda10 7752 9729 15888253+ 83 linux  
#fdisk -l
Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot Start End Blocks Id System
/dev/hda1 * 1 765 6144831 7 HPFS/NTFS
/dev/hda2 766 2805 16386300 c W95 FAT32 (LBA)
/dev/hda3 2806 9729 55617030 5 Extended
/dev/hda5 2806 3825 8193118+ 83 linux
/dev/hda6 3826 5100 10241406 83 linux
/dev/hda7 5101 5198 787153+ 82 linux swap / Solaris
/dev/hda8 5199 6657 11719386 83 linux
/dev/hda9 6658 7751 8787523+ 83 linux
/dev/hda10 7752 9729 15888253+ 83 linux

 heads:磁盘面

sectors:扇区 每个扇区大小512byte

 cylinders:柱面

 整个磁盘体积换算公式:

         磁面个数*扇区个数*每个扇区的大小512*柱面个数

            = 磁盘体积(单位 bytes)

255 x 63 x 512 x 9729 = 80023749120 bytes

 

 

        /dev/hda1 主分区 

       /dev/hda2  主分区

       /dev/hda3 扩展分区

                <相当于一个容器.从属它的逻辑分区有:

                      hda5,hda6,hda7,hda8,hda9,hda10>

磁盘总容量 = 主分区(包括扩展分区)总容量

扩展分区容量=逻辑分区总容量

hda=hda1+hda2+hda3

hda3=hda5+hda6+hda7+hda8+hda9+hda10

 

 计算磁盘剩余空间:

实际已经分区的体积

 hda1+hda2+hda3=

6144831+16386300+39728745

= 62259876 (b)

=60800.67 (M)

 整个磁盘的大小

80.0gb=78150.744M

未分区的可用空间

17350.074M

6 计算每个分区大小的三种方法

1

从下面的命令中可以得出 /dev/sda1 大小是245M

[root@localhost Desktop]# df -lh|grep /dev/sda1
/dev/sda1             291M   31M  245M  12% /boot

下面的命令是查看磁盘整体情况

[root@localhost Desktop]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x000f1e94

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          39      307200   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              39        2354    18598912   83  Linux
/dev/sda3            2354        2611     2064384   82  Linux swap / Solaris

 

一个分区容量的值是由下面的公式而来的;

Blocks = (相应分区End数值 - 相应分区Start数值)x 单位cylinder(磁柱)的容量

 

sda1的大小:

(39-1)*8225280 bytes = 312560640 bytes = 约为312M

3
注:换算单位以硬盘厂家提供的10进位算起,如果以操作 系统二进制来算,这个分区容量应该更少一些,得出的这个值和我们通过 fdisk -l 看到的 /dev/sda1的值是大体相当的,因为换算方法不一样,所以也不可能尽可能的精确;再加上分区时的一点损失之类,有时或大或小是存在的;

 7 估算一个存储设备是否被完全划分
只要看 fdisk -l 输出的内容中的 cylinders(柱体) 上一个分区的End 和 下一个分区的Start是不是一个连续的数字.
Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
   Device Boot Start End Blocks Id System
/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)
/dev/sda2 26 125 806400 5 Extended
/dev/sda5 26 50 201568+ 83 linux
/dev/sda6 51 76 200781 83 linux
 

sda有 125个cylinders (柱体),有一个主分区和一个扩展分区构成;在扩展分区中,我们看到End的值为125,而这个移动硬盘的cylinder也是125,这能说明这个硬盘 不可能再添加任何主分区了;根据我们上面所说的 sda1 sda2 sda5 sda6 之间未有任何未划分空间,但sda6 的cylinders (柱体)的End值却是 76 ,而 sda总的cylinders (柱体)有125个,由此看来sda 在 sda6后面有未划分区域;

至于sda 有多少未划分空间,我们算一下就知道了;扩展分区总容量是 806400 K ,大约是 806.400M左右,而逻辑分区 sda5 和sda6 的大小加起来是 400M左右,所以还仍有400M左右未划分空间,并且只能划分为链逻辑分区;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics