磁盘管理
磁盘管理
主次设备号与驱动
当内核运行起来之后就会接管所有的硬件,任何程序都不得直接与硬件进行通信,任何程序都要通过内核才可以与硬件进行通信。每一种硬件因为其物理特性的不同,在linux上便有不同的数据标识,比如用2来标识硬件,用3来标识显卡等等,但是如果有多个同样的物理设备呢?所以就有了主次设备号,第一个硬件用2标识,那么第二个硬盘就有可能用2.2来标识,第一个2就是主设备号(major),那么第二个设备号就是次设备号(minor number)。
linux是一切皆文件,每一个硬件也是在linux上映射成一个块文件,用b来标识,这个块设备文件是关联到了内核当中对应的设备的驱动之上了,每当系统想调用某个硬件做某事的时候,就会调用这个块文件,调用这些块文件实际就是调用的硬盘驱动。
磁盘与分区
盘片上有多个嵌套的圆,最外侧的圆就是0磁道(track),不断向内增加,靠外侧的磁道一般都分配给活动分区使用,因为在单位的时间内被磁头读取的数据最多,最流畅,;有的硬盘有多个盘片,而每个盘片上都有相同的磁道,不同的盘片上的相同的编号的磁道就是柱面(cylinder):第个磁道又有扇开的区域又叫做扇区(secotr),每一个扇区能存储512个位。当我们分区的时候其实就是对柱面进行分区的,每个柱面只能属于一个分区。
硬盘的工作效率受到多方面的影响,其主要的是还是其转速与接口的影响。比如每分钟可以转的圈数,主流的7200转/分钟,更高级还有15000转/分钟。硬盘的接口主要是分为二种(除固态):并口与串口,串口是比较快,因为是为时间频率的,提到时钟频率又不得不提一下(同步与异步)。
1. 并行:IDE接口(133M/S)、SCSI接口(MB/S)
2. 串口:SATA(6Gb/s)、SAS(6Gb/s)、USB(480M/s)
0磁道就是最外侧的磁道。0磁道的第一个扇区就是存放着主引导记录,正好占满512位。这512个位存放的是主引导记录(master boot record),其中446位是存放引导加载器(boot loader),还有64位是存在分区表,每个分区表占用16位,所以只能记录4个主分区嘛!还有2位是标识此引导记录的有效性。说白了分区就是在分区表中写入分区所对应的起始与结束柱面而已,并没有对磁盘做物理上的划分,我们所谓的分区不过就是在分区表中写入了一些数据。
linux有多个分区的工具,最常见的就是fdisk这个工具,这个工具可以在一块硬盘上最多分成15个区。分区的时候先分主分区,一般分三个主分区,第四个要分成扩展分区,扩展分区不成直接使用,想要使用的话,需要在扩展分区之间再划分逻辑分区,逻辑分区的标识是从五开始的。使用扩展分区的目的是使用额外的扇区在记录分区信息,因为主引导记录里面只能存放四个分区的地址,想要使用更多的分区就得从别的地方划分空间存放柱面信息,而扩展分区就是这样一个地方。
1. 为什么要分区?
有了分区重装系统之后只会重装系统所有的分区,其余分区的数据不丢失。
2.提高性能
一般分区是都是三个主分区+一个扩展分区,然后在扩展分区里面再划分多个逻辑分区,其实穿上扩展分区也是一段空间,不过这段空间不能存在真正的数据,而是存放的是其它分区的柱面范围。
硬盘设备文件的命名
IDE类型都是用hd命名,第一块使用hda,第二块使用hdb,余下的所有的类型都是用sd命名,第一块叫做sda,第二块sdb……,第一块上的不同的分区用sda1,sda2……;hda1,
不同的接口的硬盘用hd和sd区别,同一种类型的不同硬盘使用a/b/c……,同一块硬盘的不同分区使用数字标识。
查看磁盘分区信息
[root@localhost ~]# fdisk -l /dev/sda #列出磁盘的分区信息 磁盘 /dev/sda:536.9 GB, 536870912000 字节,1048576000 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x00020f59 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 20482047 10240000 83 Linux /dev/sda2 20482048 1048575999 514046976 8e Linux LVM
[root@localhost ~]# fdisk /dev/sda 命令(输入 m 获取帮助):m d delete a partition l list known partition types m print this menu n add a new partition p print the partition table q quit without saving changes t change a partition's system id w write table to disk and exit
创建完后并不意味着大功告成中,创建完成是写入到内存当中,创建完成并按下w意味着向硬盘当中执行,但是常常在执行这一步的出错,所以当我们按下w之后 ,还要查看内核是否已经识别新的分区:
//通过查看/proc/partitions文件,查看分区有没有成功 [root@localhost ~]# cat /proc/partitions //如果没有识别的话我们要通过parts命令通知内核重新读取硬盘的分区表 [root@localhost ~]# partx -a /dev/sda centos5使用partprobb /dev/sda