一、磁盘分区概述

如果想在同一台计算机上安装WindowsLinux两种操作系统,不进行磁盘分区将无法实现,因为LinuxWindows所需的磁盘格式不一样;更重要的是,磁盘分区能够将每一个分区当做一个文件系统来使用,每一个文件系统都可以格式化。这里引入了两个概念:

 

文件系统:打个比方,一个仓库中存放有很多货架,每个货架上堆放了很多货物,为了便于管理而建立了一套索引,来对应仓库里每个货架上的货物。类似于这样的货架以及货架的索引,就相当于文件系统。故文件系统就是用来管理一个分区上的文件,能够实现按名存取并提供索引供用户查找的机制

 


 2. 文件系统——磁盘分区、查看分区_磁盘分区 

常见的文件系统有:

    WindowsNTFSFAT32

Linuxext2ext3ext4xfsreiserfsnfsiso9600jfsbrtfs...

文件系统本身通常由内核提供,故访问文件系统上的文件,必须由内核来完成;而用来管理文件系统的工具,如格式化工具,都是由用户空间中的文件提供的。

 

格式化:硬盘在出厂时,要对其进行低级格式化低格是用来创建磁道、磁盘扇区的。除非是硬盘出现了严重故障,否则轻易不要自行低格硬盘,因为自行使用的低格工具不一定和硬盘属性相匹配,会损害硬盘的使用寿命。

我们通常所说的格式化,是高级格式化对分区进行格式化的过程,就是创建文件系统的过程。故在进行分区格式化的时候,需要指明创建成一个什么样的文件系统。如果不对分区进行格式化,而直接往分区上存放数据,通常情况下数据会杂乱无章,但也有例外情况,因为有些软件,如MysqlOracle等软件本身具备文件组织管理能力,可以使用裸设备(RAW)来进行存取,除此之外,绝大多数情况下都必须先对分区进行格式化,再用来存储数据。

 


前文中提到过,磁盘是由一组同轴盘片构成的,数个盘片的扇区构成了一个柱面(Cylinder),进行磁盘分区时,便是以柱面为单位来进行划分的,例如某个硬盘一共有1000个柱面,那么0-100个柱面可以划分为一个分区,101-600个柱面可以划分为一个分区,601-1000个柱面也可以划分为一个分区。

2. 文件系统——磁盘分区、查看分区_ 文件系统 _02 

如果要划出一个10G空间的分区,现有空闲的柱面为60-160,如果使用60-160101个柱面,则有10.1G,而使用60-159个柱面则只有9.8G,因此在实际操作中,划分出10G空间,最终结果可能不够精确。

 

    主引导扇区(MBR:需要注意的是,无论怎样划分区,0磁道0扇区是无法划入任何一个分区的,0磁道0扇区被称为MBR,即主引导记录Master Record),它是用来存放boot loader的,一共有512个字节。如果该区域损坏了,那么即使此硬盘还能存放数据,也无法作为启动项了,故无法将操作系统安装在此硬盘上。这里提到MBR一共有512bytes,其中:前 446bytes:存放bootloader;接下来的64bytes为分区表,其中每16bytes标识一个分区,故一块硬盘最多只能有4分区;最后2bytes通常用5A表示(两位16进制数)用来标示此设备是否可引导,是否可启动,通常称为魔数。由于一块硬盘最多只能有4个主分区,那么要创建更多分区,就需要通过扩展分区来实现。扩展分区只是一个逻辑概念,使用时需要再次将其划分为逻辑分区。扩展分区不限定大小。

 2. 文件系统——磁盘分区、查看分区_ 文件系统 _03 

完成了分区之后,就可以进行文件系统的创建了。文件系统创建之后,必须关联到根目录/上,让根目录下的某个文件作为此文件系统的访问入口,它才能被访问到。

 

二、查看磁盘分区

Linux下进行磁盘分区的命令有fdisksfdiskpart等,其中最常用的命令为fdiskfdisk最多可以支持15个分区,使用该命令加上-l选项,还可以查看当前磁盘上所有的分区相关信息。其格式如下:

 

fdisk -l [DEVICE] 

 

[root@localhost ~]# fdisk -l


——————————————运行结果————————————————— 

Disk /dev/sda: 128.8 GB, 128849018880 bytes     
 # 分区大小
255 heads, 63 sectors/track, 15665 cylinders   
 # 每个磁道上有63个扇区一共有15665个柱面
Units = cylinders of 16065 * 512 = 8225280 bytes   
# 柱面大小
Sector size (logical/physical): 512 bytes / 512 bytes  
# 每个扇区是512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes   
# I/O大小以扇区为单位,最小扇区为512 bytes,即读一个数据,最小必须是512个字符,
# 即使该文件中只有1个字符,也必须读一个完整的扇区。
Disk identifier: 0x0008a622
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
#  /dev/sda1 从柱面1开始,到64柱面结束,包括512000个磁盘块
Partition 1 does not end on cylinder boundary.
# 提示信息,没有包含整个柱面。一个柱面要么属于一个分区,
#要么不属于,如果分区时不是按照这个原则,那么就会出现这样的警告信息
/dev/sda2              64       15666   125316096   8e  Linux LVM
 
Disk /dev/mapper/VolGroup-lv_root: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 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
 
 
Disk /dev/mapper/VolGroup-lv_swap: 2113 MB, 2113929216 bytes
255 heads, 63 sectors/track, 257 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
 
 
Disk /dev/mapper/VolGroup-lv_home: 72.5 GB, 72519516160 bytes
255 heads, 63 sectors/track, 8816 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


如果只想查看某一个磁盘的分区信息,则可以在该命令后面加上具体的设备名称,如fdisk -l /dev/sda就可以只查看/dev/sda这个磁盘的分区信息。

 

[root@localhost ~]# fdisk -l /dev/sda


 ——————————————运行结果————————————————— 

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 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: 0x0008a622
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        7858    62606361   83  Linux


 

如果想查看某一个磁盘上具体某一块分区的信息,还可以进一步指定磁盘的分区编号。Linux中具体的分区可以表示为如下形式:

sda[1-]

故可以指定具体的分区:sda1, sda2, sda3, sda4, sda5(第一个逻辑分区)...这里无论前面的主分区有多少个,逻辑分区一定是从sda5开始的

 

[root@localhost ~]# fdisk -l /dev/sda1


——————————————运行结果—————————————————

Disk /dev/sda1: 524 MB, 524288000 bytes
255 heads, 63 sectors/track, 63 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