硬盘的接口主要有 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 命令查看帮助信息:
[[email protected] ~]# 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 命令可查看分区表信息:
[[email protected] ~]# 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 硬盘的分区表进行操作:
[[email protected] ~]# 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 中的分区操作已完成
来源: http://www.bubuko.com/infodetail-3170908.html