参考文章:
Linux主分区,扩展分区,逻辑分区的联系和区别:https://www.cnblogs.com/alexyuyu/articles/3454907.html
centos7挂载新加4T硬盘到/home目录:https://www.cnblogs.com/wq242424/p/9187285.html
CentOS7设置开机自动挂载硬盘:https://blog.csdn.net/tangjuntangjun/article/details/84635259
基本概念
MBR(Master Boot Record)
主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,硬盘的第一个扇区也就是第0扇区是用来存放主引导记录(MBR)的,因此也称MBR扇区。
磁盘分区格式
硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区。
一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且主分区+扩展分区总共不能超过4个。逻辑分区可以有若干个。
在windows下激活的主分区是硬盘的启动分区,他是独立的,也是硬盘的第一个分区,正常分的话就是C区。 在linux下主分区和逻辑分区都可以用来放系统,引导os开机;
分出主分区后,其余的部分可以分成扩展分区,一般是剩下的部分全部分成扩展分区,也可以不全分,那剩的部分就浪费了。
但扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分。
在linux中第一块硬盘分区为hda分区,主分区编号为hda1-4,逻辑分区从5开始。
硬盘的容量=主分区的容量+扩展分区的容量
扩展分区的容量=各个逻辑分区的容量之和
分区划分缘由
一个MBR扇区是512字节,其具体数据结构是:446个字节的引导代码、64个字节的分区表及2个字节的签名值"55AA"。由于MBR的分区表只有64个字节,这决定了它只能 存储4个分区记录。这就是为什么一块硬盘最多只能有4个“主分区"的原因。要划出4个以上的分区一种的思路就是把其中一个主分区再进 行细分,衍生出一个二级分区表。对的,这个被用来二次分区的主分区就是“扩展分区”,它下面的二级分区就是“逻辑分区”。
MBR 2T限制
在使用fdisk建立分区时,我们最大只能建立2TB大小的分区,如果你的磁盘(阵列)大于2TB,只能通过划分多个分区的方法才能充分利用磁盘容量。或者使用GPT分区表,可以支持2T以上的分区;
GPT(GUID Partition Table)
全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体硬盘的分区结构。它是EFI(可扩展固件接口标准)的一部分,用来替代BIOS中的主引导记录分区表。GPT磁盘分区支持最大卷为18 EB(Exabytes)并且每磁盘的分区数没有上限,只受到操作系统限制。
在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。
EFI(Extensible Firmware Interface)
可 扩展固件接口(英文名Extensible Firmware Interface 或EFI)是一种个人电脑系统规格,用来定义操作系统与系统韧体之间的软件界面,为替代BIOS的升级方案。可扩展固件接口负责加电自检(POST)、连 系操作系统以及提供连接操作系统与硬件的接口。
EFI最初由英特尔开发,现时由UEFI论坛来推广与发展。
UEFI是由EFI1.10为基础发展起来的,它的所有者已不再是Intel,而是一个称作Unified EFI Form的国际组织,贡献者有Intel,Microsoft,AMI,等几个大厂,属于open source,目前版本为2.1。
GPT挂载超过2T的磁盘
由于fdisk仅支持2T以内的磁盘分区,大于2T的磁盘要使用parted进行GPT格式分区。分区之前要先确认磁盘其实扇区的位置;
磁盘其实扇区计算:
查看磁盘参数,根据实际参数计算起始扇区的设定值;
# 查看硬盘情况
[root@HZSlave01 ~]# fdisk -l
磁盘 /dev/vda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a6c13
设备 Boot Start End Blocks Id System
/dev/vda1 * 2048 2099199 1048576 83 Linux
/dev/vda2 2099200 209715199 103808000 8e Linux LVM
磁盘 /dev/vdb:8796.1 GB, 8796093022208 字节,17179869184 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-root:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-home:41.9 GB, 41871736832 字节,81780736 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
# vdb 为使用fdisk -l 查看到的未挂载磁盘路径
[root@HZSlave01 ~]# cat /sys/block/vdb/queue/optimal_io_size
0
[root@HZSlave01 ~]# cat /sys/block/vdb/queue/minimum_io_size
512
[root@HZSlave01 ~]# cat /sys/block/vdb/alignment_offset
0
[root@HZSlave01 ~]# cat /sys/block/vdb/queue/physical_block_size
512
如果optimal_io_size为0,那么我们最好直接使用起始扇区的默认值2048。
如果optimal_io_size不为0,则可以用optimal_io_size的值加上alignment_offset的值,然后除以physical_block_size的值,就是起始扇区的位置了。计算公式:(optimal_io_size+alignment_offset)/physical_block_size
# 对磁盘进行格式化
mkfs -t ext4 /dev/vdb
# 使用parted进行GPT格式分区,格式化会清空磁盘中的所有数据,有重要数据要提前做好备份
parted /dev/vdb
# 把vdb改成gpt大分区格式
(parted) mklabel gpt
# 运行分区命令,2048位分区的起始扇区,根据上面的计算方式得来
(parted) mkpart primary 2048 100%
# 查看分区结果
(parted) print
# 检查磁盘是否对齐
(parted) align-check optimal 1
1 aligned
# 退出parted命令
(parted) quit
再次查看磁盘情况:
-> fdisk -l
可以看到 /dev/vdb 已经分区完毕
再次格式化磁盘:
-> mkfs.ext4 -F /dev/vdb
挂载磁盘到制定的系统目录下:
# 要挂载的系统目录不存在则创建
mkdir -p /home/hdfsdata/data1
# 挂载/dev/vdb 磁盘到 /home/hdfsdata/data1路径下
mount /dev/vdb -o noatime /home/hdfsdata/data1
# 查看磁盘是否挂载成功
df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 50G 936M 50G 2% /
devtmpfs devtmpfs 16G 0 16G 0% /dev
tmpfs tmpfs 16G 0 16G 0% /dev/shm
tmpfs tmpfs 16G 8.5M 16G 1% /run
tmpfs tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/vda1 xfs 1014M 142M 873M 14% /boot
/dev/mapper/centos-home xfs 39G 33M 39G 1% /home
tmpfs tmpfs 3.2G 0 3.2G 0% /run/user/0
/dev/vdb ext4 8.0T 93M 7.6T 1% /home/hdfsdata/data
# 设置开机自动挂载
# 查看磁盘UUID和文件类型
sudo blkid /dev/vdb
# 将以上命令获取到的UUID和文件类型作为下面命令的入参
echo "UUID=f6f4e089-24a8-4250-b18b-8a57bff9baba /home/hdfsdata/data1 ext4 defaults 0 0" >> /etc/fstab
/etc/fstab 文件参数解释:
- UUID=f6f4e089-24a8-4250-b18b-8a57bff9baba:要挂载的磁盘分区的UUID
- /home/hdfsdata/data1:挂载文件目录
- ext4:分区格式为ext4
- defaults:挂载时所要设定的参数(只读,读写,启用quota等),输入defaults包括的参数有(rw、dev、exec、auto、nouser、async)
- 0:使用dump是否要记录,0为不需要,1为需要
- 2:2是开机时检查的顺序,boot系统文件为1,其他文件系统都为2,如不要检查就为0
挂载小于2T的磁盘
小于2T的磁盘可以直接使用fdisk 命令进行挂载。
# 查看硬盘情况
fdisk -l
# 使用fdisk 进行分区,运行命令后按照步骤输入 n, p, 1, 其余直接回车使用默认参数,最后输入wq 保存即可
fdisk /dev/vdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x1be9f120 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-209715199,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-209715199,默认为 209715199):
将使用默认值 209715199
分区 1 已设置为 Linux 类型,大小设为 100 GiB
命令(输入 m 获取帮助):wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
# 格式化新分区
mkfs.ext4 /dev/vdb
# 创建需要挂载的文件夹目录
mkdir -p /home/app
# 挂载分区到指定文件夹目录
mount /dev/vdb /home/app
# 查看挂载是否成功
df -hT
# 配置开机自动挂载
echo "/dev/vdb /home/app ext4 defaults 0 0" >> /etc/fstab