首页 > 代码库 > 硬盘分区管理

硬盘分区管理

                            硬盘分区管理

                                            作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

  在了解文件系统之前,我们要学习一下磁盘存储数据的方式,大家都知道文件从内存若要持久化存储的话就得把它存到硬盘上,想毕都知道文件存入磁盘都是二进制存取的。那么硬盘是如何存储的呢?我们现在标配基本上都是1T呢,现在都是2017了,500G的硬盘都已经遭嫌弃了。
                      技术分享
1.生活小知识。
  上面是一幅图可以看到,有磁头,而且这个磁头是悬浮在盘面上的,如果这个盘面有震动,很可能直接滑到盘面,导致上面写的数据被划掉,造成数据丢失,因此,我们在购买硬盘的时候都写着不能强剧烈震动。硬盘在工作的时候,这个盘面一直在转,如果访问里面的数据,需要一定时间,我们称之为“平均寻道时间”。把不同盘面上的相同磁道(可以理解就是盘面上的一个圈,整个盘面有好多个这个样的打圈小圈形成的)划分成同一个分区内部。那么这些维护不同盘面的相同编号的磁道我们成为柱面(cylinder).磁盘划分实际上是按照柱面划分的,那么很显然在最外层的柱面划分出来的分区的性能是最好的,你可能会问为什么?原因很简单,就是在相同的角速度中,最外层的周长是最大(也就意味着它存储的数据将越多)。因此我们在划分分区的时候依次划分C,D,E硬盘,最先划分的是C盘(分区软件默认把C盘划分到最外层),因此大家都用C盘做系统盘是有原因的哟!
 
2.MBR分区
在整块硬盘的最外侧磁道上,在第零("0")个扇区上,这个扇区是不能用来划分区的,因为这个扇区上存放着整块磁盘的分区信息。这个分区通常被称作为MBR(Master Boot Record,主引导记录 )分区(现在都流行GPT分区了),这个扇区仅仅占用了512个字节(bytes),你可别小看这512bytes,
a>.它保函了引导加载器(bootloader,其占用了446bytes);
b>.fat,即分区表,其占用了64bytes,每16bytes一个分区,总共只能分区4个[据说比尔盖茨层发表过言论:“硬盘这么小,有谁能用到多余4个分区呢?)【当时的硬盘都很小而且特别贵,只有几百兆(M)大小】”;
c>.5A,其为十六进制的“5A”,占用最后2个字节,用来标记这个MBR分区是否是有效数据的(2个字节被填充了2个5A,MBR有效性标记)。
硬盘内部都是真空的,为什么呢?因为它要旋转,有的硬盘的转速高达1.5w/m,如果不坐车真空的这么高的转速很容易和真空中的微粒发生碰撞,导致温度过高!所以不要轻易拆开硬盘,基本上你拆开就不是真空了,即使拆开后能用,也用不了多长时间就会坏掉的。
 
3.扩展分区与逻辑分区
随着硬盘的存储数据进一步的增长,我们分区4个是远远够用的,因此需要从4个主分区中拿出一个分区单独,用来存放其他的分区信息我们叫它为“扩展分区”,如果这个扩展分区足够大,就可以对其进行划分多个分区让不同用户使用。因此这个扩展分区(引用额外的分区表)是不能被格式化的,这样它就不能被使用,需要额外划分出一个或多个逻辑分区才能被使用。
 
4.MBR分区方法
a>.4个主分区
b>.3个主分区和一个扩展分区。
注意:MBR最大支持2T的硬盘。大于2TB就得使用GPT分区格式!
 
5.硬盘接口:
DMA:Direct Memory Access (直接内存访问机制)
磁盘设备存放于/dev/文件夹下,
IDE接口的磁盘:/dev/hda、/dev/hdb、/dev/hdc、/dev/hdd
SCSI接口的磁盘:/dev/sda、/dev/sdb、/dev/sdc、/dev/sdd
/dev/XdYZ
/dev/ 表示的是一个设备目录
X h IDE硬盘
s SATA、SISC、U盘
Y a 第一块硬盘
b 第二块硬盘
c 第三块硬盘
。。。。。。。。。。
 
Z 1-3表示主分区,4一般为扩展分区
5是逻辑分区第一个分区
6是逻辑分区第二个分区
。。。。。。。。。。
a>.IDE(ATA):并口,每个控制器可接两个硬盘,master/slave,133MB/S(这个速率就是被淘汰的根部原因)
/dev/hd[a-z](注意:在Centos6.x版本以后,所有的硬盘即便是IDE接口的都被识别为sd,早起的设备被设置为hd)
/dev//hda[1-4](标识4个主分区)
/dev/hda[5+](逻辑分区5开始)
b>.SCSI:Small Computer System Interface (小型计算机接口,在读取数据上效率很高,因为它有单独的SCSI控制器,容错能力强且抗衰老【但是价格贵啊,相同存储空间是机械硬盘的8倍价格呢!】) 速率:320mb/s 也是并口的 (有的人为了省钱用IDE做raid阵列)
c>.SATA(Serial):300Mbps,600Mbps,6Gbps
d>.SAS:6Gbps
e>.USB:2.0接口: 3.0接口:

 

6.查看系统是如何识别磁盘分区的
 1 [root@yinzhengjie ~]# cat /proc/partitions  #查看系统识别的分区
 2 major minor  #blocks  name
 3 
 4    8        0  292968750 sda
 5    8       16  292968750 sdb
 6    9      127  278290432 md127
 7  259        0     512000 md127p1
 8  259        1  277777408 md127p2
 9  253        0   52428800 dm-0
10  253        1   33038336 dm-1
11  253        2  192307200 dm-2
12 [root@yinzhengjie ~]# 
  注意:如果你对你的硬盘剩余的空间进行分区后,新加的分区信息内核是不能识别的,需要内核去重读硬件的分区表,重启是不顶事的!我在生产环境中就遇到过这么一个坑。
 
7.根在内核
  根做为访问文件的入口,那么这个根到底在硬盘上呢?还是在操作系统上呢?根实际上是在内核中,我们访问数据都是操作系统将这个硬盘挂在到了根下,然后我们去访问它而已。那你又会问了,那内核在哪啊?答案是在磁盘上。
实际上,在装载内核之前,先启动的是bootloader(内核未启动就还没有文件系统存在),bootloader区磁盘上找到内核并启动,内核启动后会自动生成一个“/”(根),并将磁盘的文件都挂在到“/”下,这就形成了文件系统。
 
8.linux目录
 1 /bin,/sbin                         #存放系统自身完成自己的启动和基本运行机制索要提供的程序;。
 2 /usr/bin,/usr/sbin                  #存放完成操作系统基本功能的所提供的二进制程序;
 3 /usr/local/bin,/usr/local/sbin      #存放第三方程序;
 4 /lib,/lib64,/usr/lib,/usr/lib64     #存放库文件的;
 5 /etc/                             #存放配置文件的;
 6 /media,/mnt                      #用于挂在的目录,当然你也可以自定义的;
 7 /dev                             #存放各种设备文件;
 8 /proc,/sys                         #存放运行中的内存映射数据;
 9 /home,/root                      #存放各普通用户的家目录,比如 /home/yinzhengjie;
10 /var                               #存放日志的目录;
11 /opt,/misc                         #触发挂在目录;
12 /srv                             #存放服务相关数据的;
13 /tmp                             #存放各种临时文件,每次关机时自动清理;
14 /boot                           #存放内核、引导菜单等启动文件;
9.用来对设备进行分区的命令
用于分区的管理工具:fdisk,sfdisk,parted
a>.查看分区信息
 1 [root@yinzhengjie ~]# fdisk -l /dev/[sh]d[a-z]  #使用文件名通配过滤掉没有用的信息(不是正则表达式哟),可以看出下面只有2个硬盘
 2 
 3 Disk /dev/sda: 21.5 GB, 21474836480 bytes
 4 255 heads, 63 sectors/track, 2610 cylinders
 5 Units = cylinders of 16065 * 512 = 8225280 bytes
 6 Sector size (logical/physical): 512 bytes / 512 bytes
 7 I/O size (minimum/optimal): 512 bytes / 512 bytes
 8 Disk identifier: 0x00059922
 9 
10    Device Boot(是否可引导)      Start         End      Blocks   Id(对应文件系统的ID)  System
11 /dev/sda1   *(*表示可以引导)           1          39      307200   83  Linux
12 Partition 1 does not end on cylinder boundary.
13 /dev/sda2              39        2358    18631680   83  Linux
14 /dev/sda3            2358        2611     2031616   82  Linux swap / Solaris
15 
16 Disk /dev/sdb: 10.7 GB, 10737418240 bytes
17 255 heads, 63 sectors/track, 1305 cylinders
18 Units = cylinders of 16065 * 512 = 8225280 bytes
19 Sector size (logical/physical): 512 bytes / 512 bytes
20 I/O size (minimum/optimal): 512 bytes / 512 bytes
21 Disk identifier: 0x00000000
22 
23 [root@yinzhengjie ~]# 
b>虚拟文件系统
              技术分享

 

 
VFS:(Virtual File System)#虚拟文件系统
基本文件系统:Ext3,Ext3,Ext4,Reiserfs(早起的suse用的就是该文件系统哟),xfs(支持单个巨大的文件),JFS(日志文件系统,IBM开发的),vfat,NTFS
交换分区:swap
集群文件系统:GFS2(红帽系统研发,谷歌都再用呢),OCFS2(甲骨文公司研发,用的人不多)
网络文件系统:NFS,smbfs(window是CIFS)
光盘:iso9660
 
 

 

硬盘分区管理