一、Linux中分区的相关概念
1、几种主要的硬盘接口类型
硬盘的接口主要有IDE、SATA、SCSI 、SAS和光纤通道等五种类型。其中IDE和SATA接口硬盘多用于家用产品中,也有部分应用于服务器,SATA是一种新生的硬盘接口类型,已经取代了大部分IDE接口应用。SCSI 、SAS主要应用于服务器上,普通家用设备一般不支持SCSI和SAS接口。SAS也是是一种新生的硬盘接口类型,可以和SATA以及部分SCSI设备无缝结合。光纤通道最初设计也不是为了硬盘设计开发的接口,是专门为网络系统设计的,但随着存储系统对速度的需求,才逐渐应用到硬盘系统中,并且其只应用在高端服务器上价格昂贵。
2、Linux中的分区类型
Linux的文件系统不同于Windows,Linux中无论有多少个分区,这些分区都会被组织成一个完整的目录树。Linux硬盘的分区主要分为基本分区 / 物理分区(primary partion)和扩展分区(extension partion)两种。基本分区数量不能大于三个,而扩展分区的数最多只能为一个。且基本分区可以马上被挂载使用但不能再分区,扩展分区必须再进行二次分区后才能挂载。扩展分区下的二次分区被称之为逻辑分区,逻辑分区数量限制视磁盘类型而定。
3、Linux中的分区规则
在Linux中会把设备映射成为一个/dev目录下的系统文件,IDE接口类型的硬盘设备映射的文件名称前缀为“hd”,SCSI、SATA、SAS等接口的硬盘设备映射的文件名称前缀为“sd”(部分虚拟机或者云主机的名称可能是其他的,比如“vd”),后面拼接从“a”开始一直到“z”用来区分不同的硬盘设备。在硬盘名称后面拼接数字形式的分区号用来区分不同的分区,其中主分区(包括扩展分区)的分区号号为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个基本分区。想要创建逻辑分区,则必须先将唯一的扩展分区创建出来,并且如果删除了扩展分区,那么它下面的所有逻辑分区也会被自动删除。
4、分区的文件系统
当硬盘分区被创建完成之后,还并不能直接挂载到目录上存储文件,需要选择合适的文件系统进行初始化。常见的分区类型有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。
二、开始分区实战
本文主要以CentOS 7发行版的Linux作为实验
1、创建分区
我们使用Fdisk工具来操作分区,Fdisk 是各种 Linux 发行版本中最常用的分区工具,是被定义为 Expert 级别的分区工具。
输入fdisk命令查看到fdisk的使用帮助:
[root@localhost ~]# fdisk 用法: fdisk [选项] <磁盘> 更改分区表 fdisk [选项] -l <磁盘> 列出分区表 fdisk -s <分区> 给出分区大小(块数) 选项: -b <大小> 扇区大小(512、1024、2048或4096) -c[=<模式>] 兼容模式:“dos”或“nondos”(默认) -h 打印此帮助文本 -u[=<单位>] 显示单位:“cylinders”(柱面)或“sectors”(扇区,默认) -v 打印程序版本 -C <数字> 指定柱面数 -H <数字> 指定磁头数 -S <数字> 指定每个磁道的扇区数
通过fdisk的用使用帮助中,我们可以知道 fdisk -l 命令为查看已有的分区列表信息:
[root@localhost ~]# fdisk -l 磁盘 /dev/sda:161.1 GB, 161061273600 字节,314572800 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x0003537e 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux 磁盘 /dev/mapper/cl-root:53.7 GB, 53687091200 字节,104857600 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/mapper/cl-swap:8455 MB, 8455716864 字节,16515072 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/mapper/cl-home:44.1 GB, 44149243904 字节,86228992 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节
可以看出已经有一块硬盘/dev/sda大小为161.1G,并且该硬盘下有一个分区/dev/sda1,但是/dev/sda1并没有占用所有空间,所以可以在创建一个分区/dev/sda2
输入fdisk /dev/sda命令,对/dev/sda硬盘的分区表进行操作:
[root@localhost ~]# fdisk /dev/sda 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):
我们输入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 获取帮助):
从上面的帮助信息中,可以得知一些选项的用途。
那么首先输入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):
之后再要创建逻辑分区和之前创建分区的步骤一直,最后再执行partprobe命令,让kernel重新读取分区信息,分区完成;
至此CentOS中的分区操作已完成;
2、格式化分区
我们使用mkds进行分区格式化操作:
[root@localhost ~]# mkfs 用法: mkfs [选项] [-t <类型>] [文件系统选项] <设备> [<大小>] 选项: -t, --type=<类型> 文件系统类型; fs-options 实际文件系统构建程序的参数 <设备> 要使用设备的路径 <大小> 要使用设备上的块数 -V, --verbose 解释正在进行的操作; 多次指定 -V 将导致空运行(dry-run) -V, --version 显示版本信息并退出 将 -V 作为 --version 选项时必须是惟一选项 -h, --help 显示此帮助并退出 更多信息请参阅 mkfs(8)。
交互界面显示为mkfs的使用帮助;
使用mkfs -t xfs /dev/sda2 进行格式化分区:
[root@localnat201 ~]# mkfs -t xfs /dev/sda2 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=624936 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=2499744, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
注:格式化成xfs时,若提示分区已存在文件系统,则需要在分区前面加上-f选项强行覆盖;
若要查看所有分区的文件格式则如下:
[root@localnat201 ~]# parted -l Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 32.2GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system 标志 1 1049kB 1075MB 1074MB primary xfs 启动 2 1075MB 32.2GB 31.1GB primary lvm Model: Linux device-mapper (linear) (dm) Disk /dev/mapper/cl-swap: 2147MB Sector size (logical/physical): 512B/512B Partition Table: loop Disk Flags: Number Start End Size File system 标志 1 0.00B 2147MB 2147MB linux-swap(v1) Model: Linux device-mapper (linear) (dm) Disk /dev/mapper/cl-root: 29.0GB Sector size (logical/physical): 512B/512B Partition Table: loop Disk Flags: Number Start End Size File system 标志 1 0.00B 29.0GB 29.0GB xfs
至此格式化分区完成;
3、挂载分区
在系统重创建一个用户挂载分区的目录
[root@localhost ~]# mkdir /data
将分区挂载到目录上:
mount /dev/sda2 /data/
设置开机自动挂载分区到挂载点,编辑 vim /etc/fstab :
# # /etc/fstab # Created by anaconda on Sun Jun 25 07:16:25 2017 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=eb697457-a097-4263-8bbf-a75aa632d27c / ext4 defaults 1 1 /dev/sda2 /data xfs defaults 0 0
如果想要卸载挂载点:
[root@localnat201 ~]# umount /dev/sda2
至此挂载分区已完成;