【转】Linux下的磁盘分区方法

转自:https://www.cnblogs.com/lbole/p/8904298.html

一、硬盘接口类型

  硬盘的接口主要有IDE、SATA、SCSI 、SAS和光纤通道等五种类型。其中IDE和SATA接口硬盘多用于家用产品中,也有部分应用于服务器,SATA是一种新生的硬盘接口类型,已经取代了大部分IDE接口应用。SCSI 、SAS主要应用于服务器上,普通家用设备一般不支持SCSI和SAS接口。SAS也是是一种新生的硬盘接口类型,可以和SATA以及部分SCSI设备无缝结合。光纤通道最初设计也不是为了硬盘设计开发的接口,是专门为网络系统设计的,但随着存储系统对速度的需求,才逐渐应用到硬盘系统中,并且其只应用在高端服务器上价格昂贵。

二、硬盘和分区

  Linux中主要有两种分区类型,分别为MBR(Master Boot Record)和GPT(GUID Partition Table),是在磁盘上存储分区信息的两种不同方式。这些分区信息包含了分区从哪里开始的信息,这样操作系统才知道哪个扇区是属于哪个分区的,以及哪个分区是可以启动的。在磁盘上创建分区时,你必须在MBR和GPT之间做出选择。

  在Linux中会把设备映射成为一个/dev目录下的系统文件,IDE接口类型的硬盘设备映射的文件名称前缀为“hd”,SCSI、SATA、SAS等接口的硬盘设备映射的文件名称前缀为“sd”(部分虚拟机或者云主机的名称可能是其他的,比如“vd”),后面拼接从“a”开始一直到“z”用来区分不同的硬盘设备,在硬盘名称后面拼接数字形式的分区号用来区分不同的分区。

1、MBR分区
  MBR的意思是“主引导记录”,它是存在于驱动器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统的启动加载器和驱动器的逻辑分区信息。MBR支持最大2TB磁盘,它无法处理大于2TB容量的磁盘。MBR格式的磁盘分区主要分为基本分区(primary partion)和扩展分区(extension partion)两种主分区和扩展分区下的逻辑分区。主分区总数不能大于4个,其中最多只能有一个扩展分区。且基本分区可以马上被挂载使用但不能再分区,扩展分区必须再进行二次分区后才能挂载。扩展分区下的二次分区被称之为逻辑分区,逻辑分区数量限制视磁盘类型而定。

  MBR的主分区号为1-4,逻辑分区号为从5开始累加的数字。比如设备主板上装了4块硬盘,分别为2块IDE接口硬盘,1块SCSI接口硬盘和一块SATA接口硬盘。其中2块IDE接口硬盘的分区策略为2个主分区和2个逻辑分区,SCSI分区策略为3个主分区和3个逻辑分区,SATA分区策略为4个主分区。硬盘文件和分区名称如下:

  硬盘  主分区1 主分区2 主分区3  主分区4  逻辑分区1  逻辑分区2  逻辑分区3 ......  逻辑分区n
IDE1 /dev/hda /dev/hda1(p) /dev/hda2(p) /dev/hda3(e) / /dev/hda5(l) /dev/hda6(l) / ...... /
IDE2 /dev/hdb /dev/hdb1(p) /dev/hdb2(p) /dev/hdb3(e) / /dev/hdb5(l) /dev/hdb6(l) / ...... /
SCSI /dev/sda /dev/sda1(p) /dev/sda2(p) /dev/sda3(p) /dev/sda4(e) /dev/sda5(l) /dev/sda6(l) /dev/sda7(l) ...... /
SATA /dev/sdb /dev/sdb1(p) /dev/sdb2(p) /dev/sdb3(p) /dev/sdb4(p) / / / ...... /

  其中分区名称后面的(p)代表基本分区,(e)代表扩展分区,(l)代表逻辑分区。需要注意的是,如果分区策略中存在逻辑分区,则说明一定会有扩展分区,那么基本分区数则最多只能有3个,扩展分区数最多只能是1个,如果没有扩展分区则可以创建4个基本分区。想要创建逻辑分区,则必须先将唯一的扩展分区创建出来,并且如果删除了扩展分区,那么它下面的所有逻辑分区也会被自动删除。

  如果是SCSI接口硬盘则最多只能有15(其中扩展分区不能直接使用所以不计算)个分区,其中主分区最多4个,逻辑分区最多12个。IDE接口硬盘最多只能有63(其中扩展分区不能直接使用所以不计算)个分区,其中主分区最多4个,逻辑分区最多60个。

2、GPT分区

  GPT意为GUID分区表,驱动器上的每个分区都有一个全局唯一的标识符(globally unique identifier,GUID)。支持的最大磁盘可达18EB,它没有主分区和逻辑分区之分,每个硬盘最多可以有128个分区,具有更强的健壮性与更大的兼容性,并且将逐步取代MBR分区方式。GPT分区的命名和MBR类似,只不过没有主分区、扩展分区和逻辑分区之分,分区号直接从1开始累加一直到128。

三、逻辑卷

   LVM(逻辑卷)的产生是因为传统的分区一旦分区好后就无法在线扩充空间,也存在一些工具能实现在线扩充空间但是还是会面临数据损坏的风险;传统的分区当分区空间不足时,一般的解决办法是再创建一个更大的分区将原分区卸载然后将数据拷贝到新分区,但是在企业的生产系统往往不允许停机或者允许停机的时间很短,LVM就能很好的解决在线扩充空间的问题,而且不会对数据造成影响,LVM还能通过快照在备份的过程中保证日志文件和表空间文件在同一时间点的一致性。

  在LVM中PE(Physical Extend)是卷的最小单位,默认4M大小,就像我们的数据是以页的形式存储一样,卷就是以PE的形式存储。PV(Physical Volume)是物理卷,如果要使用逻辑卷,首先第一步操作就是将物理磁盘或者物理分区格式化成PV,格式化之后PV就可以为逻辑卷提供PE了。VG(Volume Group)是卷组,VG就是将很多PE组合在一起生成一个卷组,当然这里的PE是可以跨磁盘的,如果当前服务器磁盘空间不足就可以增加一个新磁盘对当前系统不会产生任何影响。LV(Logical Volume)是逻辑卷,逻辑卷最终是给用户使用的,前面几个都是为创建逻辑卷做的准备,创建逻辑卷的大小只要不超过VG剩余空间就可以。

四、文件系统

  当硬盘分区被创建完成之后,还并不能直接挂载到目录上存储文件,需要选择合适的文件系统进行格式化。常见的分区类型有FAT32、FAT16、NTFS、HP-UX等,而专供Linux使用的主流的一些分区有ext2/3/4、physical volume (LVM) 、softwareRAID、swap、vfat、xfs等。其中:

  1、ext2/3/4:是适合Linux的文件系统类型,由于ext3文件系统多了日志记录功能,因此系统恢复起来更加快速,ext4是ext3的升级,效率更加高,因此建议使用默认类型ext4类型,而不要使用ext2/3;

  2、physical volume (LVM):这是一种弹性调整文件系统大小的机制,即可以让文件系统变大或变小,而不改变原文件数据的内容,功能不错,但性能不佳。

  3、softwareRAID:利用Linux系统的特性,用软件仿真出磁盘阵列功能。

  4、swap:就是内存交换空间。由于swap并不会使用到目录树的挂载,因此用swap就不需要指定挂载点。

  5、vfat:同时被Linux与windows所支持的文件系统类型。如果主机硬盘同事存在windows和linux两种操作系统,为了进行数据交换,可以使用该文件系统。

  6、xfs:也是一个文件系统类型,在centos7中将被作为默认的文件系统类型,替换ext4。

五、使用fdisk操作分区

  本文主要以CentOS 7发行版的Linux作为实验,我们使用Fdisk工具来操作分区,Fdisk 是各种 Linux 发行版本中最常用的分区工具。

  首先输入 fdisk -h 命令查看帮助信息:

复制代码
[root@localnat201 ~]# fdisk -h
用法:
fdisk [选项] <磁盘> 更改分区表
fdisk [选项] -l <磁盘> 列出分区表
fdisk -s <分区> 给出分区大小(块数)

选项:
-b <大小> 扇区大小(512、1024、2048或4096)
-c[=<模式>] 兼容模式:“dos”或“nondos”(默认)
-h 打印此帮助文本
-u[=<单位>] 显示单位:“cylinders”(柱面)或“sectors”(扇区,默认)
-v 打印程序版本
-C <数字> 指定柱面数
-H <数字> 指定磁头数
-S <数字> 指定每个磁道的扇区数
复制代码

  从中我们可以看出,使用 fdisk -l 命令可查看分区表信息:

复制代码
[root@localnat201 ~]# fdisk -l

磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000b1bc3

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    62914559    30407680   8e  Linux LVM

磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/cl-root:29.0 GB, 28982640640 字节,56606720 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/cl-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
复制代码

  从中我们可以看出,有4个设备,分别为/dev/sda、/dev/sdb、/dev/mapper/cl-root、/dev/mapper/cl-swap。其中/dev/sda硬盘已经有2个分区分区为:/dev/sda1和/dev/sda2。/dev/mapper/cl-root和/dev/mapper/cl-swap两个设备是/dev/sda2分区创建的逻辑卷。这里的/dev/sdb硬盘设备并没有被分区,我们则是需要来操作这个硬盘,至于如何操作逻辑卷后面会讲到。

  输入 fdisk /dev/sdb 命令,对/dev/sda硬盘的分区表进行操作:

复制代码
[root@localnat201 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xc72a6f6a 创建新的 DOS 磁盘标签。
复制代码

  我们输入"m"选项可以查看到帮助信息:

复制代码
命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag 切换可引导标志
   b   edit bsd disklabel 编辑BSD磁盘标签
   c   toggle the dos compatibility flag 切换DOS兼容性标志
   d   delete a partition 删除分区
   g   create a new empty GPT partition table 创建一个新的空GPT分区表
   G   create an IRIX (SGI) partition table 创建一个ILIX(SGI)分区表
   l   list known partition types 列出已知分区类型
   m   print this menu 打印此菜单
   n   add a new partition 添加新分区
   o   create a new empty DOS partition table 创建一个新的空DOS分区表
   p   print the partition table 打印分区表
   q   quit without saving changes 不保存更改退出
   s   create a new empty Sun disklabel 创建一个新的空太阳标签
   t   change a partition's system id 更改分区的系统ID
   u   change display/entry units 更改显示/输入单元
   v   verify the partition table 验证分区表
   w   write table to disk and exit 将表写入磁盘并退出
   x   extra functionality (experts only) 额外功能(仅专家)

命令(输入 m 获取帮助):
复制代码

  从上面的帮助信息中,可以得知一些选项的用途。这里主要注意"d"、"n"、"q"、"g"、"w"等选项。首先要明确分区格式,fdisk默认的分区格式是msdos(mbr),在此可输入"g"选项,将分区格式修改为GPT,不过在修改完保存退出之后,在输入 fdisk /dev/sdb 命令进入分区模式,会出现 WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion. 信息,提示fdisk gpt分区是新的功能,目前还在实验阶段。所以如果要进行GPT分区,那么推荐使用 parted 命令,后面会介绍到。

  那么首先输入"n"选项来开始创建分区:

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): 

  可以看到交互界面打印的信息,提示需要选择一个分区类型,"p":为基本分区(默认);"e":为扩展分区。在此我们选择"p",创建一个基本分区:

Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p 分区号 (2-4,默认 2):

  交互界面提示需要选择一个分区号,范围为2-4。由于已经存在了一个基本分区,所以只可选择2、3、4(默认2,顺序累加)。在此我们输入2:

复制代码

Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (2099200-314572799,默认为 2099200):

复制代码

  可以看到交互界面提示序号选择其实扇区,默认为剩余未被分配的最小扇区,推荐选择默认(直接点击回车);

复制代码
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (2099200-314572799,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-314572799,默认为 314572799):
复制代码

  交互界面提示,要输入需要分配的截止扇区,默认为未被分配的最小扇区,此处推荐默认(直接点击回车):

复制代码
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (2099200-314572799,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-314572799,默认为 314572799):
将使用默认值 314572799
分区 2 已设置为 Linux 类型,大小设为 149 GiB

命令(输入 m 获取帮助):
复制代码

  可以看到又回到了最初的交互界面,这表示分区表已经设置成功,输入选项q表示要放弃本次分区表的修改并退出,w选项表示保存本次分区表的修改并退出,此处选择w表示将分区信息写入到磁盘,此次分区完成;

  回到最初操作分区表的地方,选择"d"选项,删除分区的功能:

命令(输入 m 获取帮助):d
分区号 (1,2,默认 2):

  交互界面提示输入要删除的分区的分区号,此处选择2:

命令(输入 m 获取帮助):d
分区号 (1,2,默认 2):2
分区 2 已删除

命令(输入 m 获取帮助):

  交互界面提示本次分区表操作成功,输入选项"w",表示将分区信息写入到磁盘,此次删除分区完成。回到最初选择分区类型的地方,选择"e",创建扩展分区:

Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
分区号 (2-4,默认 2):

  交互界面提示要输入扩展分区的分区号,可选范围为2-4,此处选择2:

复制代码
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
分区号 (2-4,默认 2):2
起始 扇区 (2099200-314572799,默认为 2099200):
复制代码

  交互界面提示输入要分配给扩展分区的起始扇区,此处选择默认:

复制代码
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
分区号 (2-4,默认 2):2
起始 扇区 (2099200-314572799,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-314572799,默认为 314572799):
复制代码

  交互界面提示输入要分配给扩展分区的截止扇区,此处选择默认:

复制代码
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
分区号 (2-4,默认 2):2
起始 扇区 (2099200-314572799,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-314572799,默认为 314572799):
将使用默认值 314572799
分区 2 已设置为 Extended 类型,大小设为 149 GiB

命令(输入 m 获取帮助):
复制代码

  交互界面提示本次对分区表的操作已完成,输入"w"选项,保存本次对分区表的操作;当再次创建分区的时候,交互界面就会将扩展分区的选项"e"替换成为逻辑分区的选项"l":

Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): 

  之后再要创建逻辑分区和之前创建分区的步骤一致,分区完成。至此CentOS中的分区操作已完成

原文地址:https://www.cnblogs.com/eleclsc/p/11413890.html