目录
一、简介
1)分区简介
linux磁盘分区主要分为基本分区(primary partion)和扩充分区(extension partion)两种,基本分区和扩充分区的数目之和不能大于四个。且基本分区可以马上被使用但不能再分区。扩充分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。在 Linux 中,每一个硬件设备都映射到一个系统的文件,对于硬盘、光驱等 IDE 或 SCSI 设备也不例外。Linux把各种 IDE 设备分配了一个由 hd 前缀组成的文件;而对于各种 SCSI 设备,则分配了一个由 sd 前缀组成的文件
2)磁盘的组成
磁盘由盘片,机械手臂,磁头,主轴马达组成,而数据的写入主要是在盘片上面,盘片上又细分为扇区与柱面两种单位,扇区每个为512bytes那么大 [2] ,其中,磁盘的第一个扇区特别重要,因为磁盘的第一个扇区记录了两个重要的信息:
- 主引导分区(BMR):可以安装引导加载程序的地方,有446bytes。
- 分区表:记录整块硬盘分区的状态,有66bytes。
3)磁盘分区表
在分区表所在的64bytes容量中,总共分为四组记录区,每组记录区记录了该区段的起始与结束的柱面号码。
假设上面的硬盘设备文件名为/dev/hda时, 那么这四个分区在Linux系统中的设备文件名如下所示,重点在于文件名后面会再接一个数字,这个数字与该分区所在位置有关:
由于分区表只有64bytes而已,最多只能容纳四个分区,这四个分区被称为主或扩展分区 [3] 。根据上面的图示与说明,我们可以得到几个重要信息:
- 磁道:上图中硬盘被一圈圈分成18等分的同心圆,这些同心圆就是磁道,但打开硬盘,用户不能看到这些,它实际上是被磁头磁化的同心圆.这些磁道是有间隔的,因为磁化单元太近会产生干扰。
- 扇区:每个磁道中被分成若干等份的区域.扇区是硬盘数据存储的最小单位。
- 柱面:假如一个硬盘只有上图中的3个磁盘片,每一片中的磁道数是相等的.从外圈开始,这些磁道被分成了0磁道、1磁道、2磁道...具有相同磁道编号的同心圆组成面就称作柱面.为了便于理解,柱面可以看作没有底的铁 桶.从上图可以看出,柱面数就是磁盘上的磁道数.柱面是硬盘分区的最小单位.因此,一个硬盘的容量=柱面*磁头*扇区*512。
- 簇:扇区是硬盘数据存储的最小单位,但操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理.每个簇可以包括2、4、8、16、32、64个扇区。
- P1:/dev/hda1
- P2:/dev/hda2
- P3:/dev/hda3
- P4:/dev/hda4
- 其实所谓分区,只是针对那个64bytes的分区表进行设置而已。
- 硬盘默认的分区表仅能写入四组分区信息。
- 这四组分区信息我们称为主或扩展分区
- 分区的最小单位为柱面
- 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理。
二、为什么分区?
① 优化I/O 性能
② 实现磁盘空间配额限制
③ 提高修复速度
④ 隔离系统和程序
⑤ 安装多个OS
⑥ 采用不同文件系统
三、MBR和GPT的优缺点
【参考】https://blog.csdn.net/z_yttt/article/details/53020797
1)MBR优缺点
MBR全称为Master Boot Record
优点:
1、主引导记录,是传统的分区机制,应用于绝大多数使用BIOS的PC设备
2、MBR+BIOS
3、MBR支持32位和64位系统。
缺点:
1、MBR支持分区数量有限。
2、MBR(主引导记录),最大分区不能超过2T,4个主分区,3个主分区+1个扩展分区-逻辑分区。
2)GPT的优缺点
GPT全程GUID Partition Table
【参考】https://www.linuxidc.com/Linux/2013-06/85717.htm
优点:
1、全局唯一标识分区表,是一个较新的分区机制,解决了MBR很多缺点。
2、支持超过2T的磁盘(64位寻址空间)。fdisk最大只能建立2TB大小的分区,创建一个大于2TB的分区使用parted。
3、向后兼容MBR。
4、GPT(全局统一资源定位符),超过2T 使用该分区模式,最大支持128分区
缺点:
1、必须在支持UEFI的硬件上才能使用(Intel提出,用于取代BIOS)。
2、GPT+UEFI必须使用64位系统。
3、Mac、Linux系统都能支持GPT分区格式。
4、Windows 7/8 64bit、Windows Server 2008 64bit支持GPT。
四、分区命令fdisk之MBR
【分区】http://man.linuxde.net/fdisk
fdisk 是Linux下硬盘的分区工具,是一个非常实用的命令,但是fdisk只能划分小于2T的分区。 语法 : fdisk [-l ] [设备名称] 选项只有一个。 b 编辑bsd disklabel; c 切换dos兼容性标志; d 删除一个分区; g 创建一个新的空GPT分区表; G 创建一个IRIX(SGI)分区表; l 列出已知的分区类型; m 打印帮助菜单; n 添加一个新分区; o 创建一个新空DOS分区表; p 打印分区表信息; q 退出而不保存更改; s 创建一个新的空的Sun磁盘标签; t 更改分区的系统ID; u 更改显示/输入单位; v 验证分区表; w 将分区表写入磁盘并退出; x 额外功能。
五、MBR分区演练
1)磁盘主分区分区
第一步:添加磁盘
实验环境:centos7.4 IP:192.168.80.120 新增磁盘:2T
第二步、识别磁盘
!!!重启虚拟机才能看见新增磁盘
#扫描 SCSI总线并添加 SCSI 设备 for host in $(ls /sys/class/scsi_host) ; do echo "- - -" > /sys/class/scsi_host/$host/scan; done #重新扫描 SCSI 总线 for scsi_device in $(ls /sys/class/scsi_device/); do echo 1 > /sys/class/scsi_device/$scsi_device/device/rescan; done #查看已添加的磁盘,能够看到sdb说明添加成功 lsblk
第三步、主分区分区
yum install util-linux-ng
[root@localhost ~]# fdisk /dev/sdb
命令(输入 m 获取帮助):m
重要命令
d delete a partition #删除分区
l list known partition types #显示已知的分区类型
m print this menu #显示帮助菜单
n add a new partition #添加分区
p print the partition table #查看分区表
q quit without saving changes #不保存退胡
t change a partition's system id #该表分区的系统id
w write table to disk and exit #保存分区并退出
命令(输入 m 获取帮助):
命令(输入 m 获取帮助)n #添加一个分区
Partition type:
p primary (0 primary, 0 extended, 4 free) #主分区
e extended #扩展分区
Select (default p):
Using default response p
分区号 (1-4,默认 1): #1-4个主分区
#选择分区起点柱面 (默认为2G,如果选择2048就是2048到多少,如果选择其它数字,例如+200,然后分区区+200G,意思就是200G-400G分一个区
起始 扇区 (2048-104857599,默认为 2048): #默认开始最合适
将使用默认值 2048
#!!!#设置分区大小20G,+表示往起点后添加,-表示往起点前添加分区
Last 扇区, +扇区 or +size{K,M,G} (2048-104857599,默认为 104857599):+20G
分区 1 已设置为 Linux 类型,大小设为 20 GiB
#修改磁盘格式
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):L
。。。
8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt
9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问
。。。
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
#查看
命令(输入 m 获取帮助):p
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41945087 20971520 8e Linux LVM
#保存退出
命令(输入 m 获取帮助):w
第三步:分扩展分区
1、分200G扩展分区
2、输入l开始逻辑分区
分区完毕w保存
2)格式化
mkfs
fs #指定建立文件系统时的参数;
-t<文件系统类型> #指定要建立何种文件系统;
-v #显示版本信息与详细的使用方法;
-V #显示简要的使用方法;
-c #在制做档案系统前,检查该partition是否有坏轨。
#查看分区的磁盘
[root@localhost ~]# lsblk |grep sdb
sdb 8:16 0 50G 0 disk
└─sdb1 8:17 0 20G 0 part
#格式化
[root@localhost ~]# mkfs -t ext3 /dev/sdb1
3)挂载
#创建挂载目录
[root@localhost ~]# mkdir -p /jia-test/
#挂载
[root@localhost ~]# mount /dev/sdb1 /jia-test/
[root@localhost ~]# lsblk |grep sdb1
└─sdb1 8:17 0 20G 0 part /jia-test
4)永久挂载
[root@localhost ~]# umount --help
用法:
umount [-hV]
umount -a [选项]
umount [选项] <源> | <目录>
选项:
-a, --all 卸载所有文件系统
-A, --all-targets 卸载当前名字空间内指定设备
对应的所有挂臷点
-c, --no-canonicalize 不对路径规范化
-d, --detach-loop 若挂臷了回环设备,也释放该回环设备
--fake 空运行;跳过 umount(2) 系统调用
-f, --force 强制卸载(遇到不响应的 NFS 系统时)
-i, --internal-only 不调用 umount.<类型> 辅助程序
-n, --no-mtab 不写 /etc/mtab
-l, --lazy 立即断开文件系统,所有清理以后执行
-O, --test-opts <列表> 限制文件系统集合(和 -a 选项一起使用)
-R, --recursive 递归卸载目录及其子对象
-r, --read-only 若卸载失败,尝试以只读方式重新挂臷
-t, --types <列表> 限制文件系统集合
-v, --verbose 打印当前进行的操作
-h, --help 显示此帮助并退出
-V, --version 输出版本信息并退出
#永久挂载
# vim /etc/fstab 设置系统自动挂载硬盘,加入一行:
cat >>/etc/fstab<<EOF
/dev/sdb1 /jia-test ext3 defaults 0 0
#设备(UUID或路径指定) 挂载点 文件系统类型 defaults 转储标志 fsck顺序
EOF
cat >>/etc/fstab<<EOF
UUID="d17e3928-e858-4b3b-8716-22c2d08b8f13" /jia-test ext3 defaults 0 0
EOF
【挂载参数详解】
- 第一列可以是实际分区名,也可以是实际UUID。
- 第二列为挂载目录
- 第三列为此分区的文件系统类型
#Linux可以使用ext2、ext3等类型,此字段须与分区格式化时使用的类型相同。也可以使用 auto 这一特殊的语法,使系统自动侦测目标分区的分区类型。auto通常用于可移动设备的挂载
- 第四列是挂载的选项,用于设置挂载的参数。
- 第五列是dump备份设置
#当其值设置为1时,将允许dump备份程序备份;设置为0时,忽略备份操作;
- 第六列是fsck磁盘检查设置。
#其值是一个顺序。当其值为0时,永远不检查;而 / 根目录分区永远都为1。其它分区从2开始,数字越小越先检查,如果两个分区的数字相同,则同时检查。
#第一个字段最好用UUID,因为路径中块设备标识符可能会发生变化。
sudo blkid 路径
#查看最新挂载磁盘UUID
[root@localhost ~]# sudo blkid /dev/sdb1
/dev/sdb1: UUID="d17e3928-e858-4b3b-8716-22c2d08b8f13" TYPE="ext3"
UUID查看方法如下:
- 第二个字段要先手动创建挂载点目录,不会自动创建。
- 第三个字段为文件系统类型,由之前的mkfs确定。
- 第四个字段为挂载时应该应用于设备以便自定义行为的选项列表。defaults为常用选项,其他记录在mount man page中。
- 第五个为转储标志,与dump命令结合生成备份。
- 第六个为fsck顺序字段,确定了文件系统未完全卸载时是否启动时运行fsck以及检查多个磁盘时检查的顺序。
#不开机使得配置生效
mount -a
- 此命令会挂载/etc/fstab中新文件系统,如该文件存在错误,会无法启动计算机
- 所以重启前必须输入此命令,如果报错应在重启前改正错误。
#重启
[root@localhost ~]# reboot
#查看
[root@localhost ~]# lsblk |grep sdb
sdb 8:16 0 50G 0 disk
└─sdb1 8:17 0 20G 0 part /jia-test
#闲着没事,检测一下硬盘坏道吧
badblocks -v /dev/sdb1 > result.txt
5)卸载永久挂载磁盘(待测试)
- umount 存储设备位置
- umount 挂载点 目录
#先通过umount命令卸载掉挂载目录
[root@localhost ~]# umount -l /jia-test/
#修改/etc/fstab里面逻辑卷的挂载信息,否则系统有可能启动不起来
vim /etc/fstab
将永久挂载干掉,防止不能开机启动。
#UUID="d17e3928-e858-4b3b-8716-22c2d08b8f13" /jia-test ext3 defaults 0 0
#生效
[root@localhost ~]#mount -a
#清楚磁盘数据
[root@localhost ~]# dd if=/dev/sdb1 of=devdir bs=512 count=1
#删除分区,保存退出
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x16f4960f
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41945087 20971520 8e Linux LVM
命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x16f4960f
设备 Boot Start End Blocks Id System
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
#查看是否删除成功
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 474M 0 part /boot
└─sda2 8:2 0 49.5G 0 part
├─centos-root 253:0 0 40G 0 lvm /
├─centos-swap 253:1 0 512M 0 lvm [SWAP]
└─centos-data 253:2 0 9G 0 lvm /data
sdb 8:16 0 50G 0 disk #磁盘并为分区
sr0 11:0 1 4.2G 0 rom
六、分区命令之parted之GPT
parted用法和常用选项:
用法:parted [选项]... [设备 [命令 [参数]...]...]
将带有“参数”的命令应用于“设备”。如果没有给出“命令”,则以交互模式运行.
-h --help显示此求助信息
-l --list列出所有设别的分区信息
-i --interactive在必要时,提示用户
-s --script从不提示用户
-v --version显示版本
GPT(全局统一资源定位符),超过2T 使用该分区模式,最大支持128分区
help:
检查 MINOR #对文件系统进行一个简单的检查
cp [FROM-DEVICE] FROM-MINOR TO-MINOR #将文件系统复制到另一个分区
help [COMMAND] #打印通用求助信息,或关于 COMMAND 的信息
mklabel 标签类型 #创建新的磁盘标签 (分区表)
mkfs MINOR 文件系统类型 #在 MINOR 创建类型为“文件系统类型”的文件系统
mkpart 分区类型 [文件系统类型] 起始点 终止点 #创建一个分区
mkpartfs 分区类型 文件系统类型 起始点 终止点 #创建一个带有文件系统的分区
move MINOR 起始点 终止点 #移动编号为 MINOR 的分区
name MINOR 名称 #将编号为 MINOR 的分区命名为“名称”
print [MINOR] #打印分区表,或者分区
quit #退出程序
rescue 起始点 终止点 #挽救临近“起始点”、“终止点”的遗失的分区
resize MINOR 起始点 终止点 #改变位于编号为 MINOR 的分区中文件系统的大小
rm MINOR #删除编号为 MINOR 的分区
select 设备 #选择要编辑的设备
set MINOR 标志 状态 #改变编号为 MINOR 的分区的标志
七、参考网址
【MBR参考】
https://blog.csdn.net/u010000716/article/details/50043757?utm_source=blogxgwz8
https://blog.csdn.net/zhuyingqingfen/article/details/8126282?utm_source=blogxgwz0
http://www.cnblogs.com/brianyi/p/7937633.html
https://www.linuxidc.com/Linux/2015-11/125397.htm
https://www.linuxidc.com/Linux/2015-11/125398.htm
https://blog.csdn.net/pi9nc/article/details/21740319?utm_source=blogxgwz1
https://blog.csdn.net/ggxiaobai/article/details/59114740
https://blog.csdn.net/xyang81/article/details/51745683
https://www.cnblogs.com/vathe/p/6748131.html
https://www.linuxidc.com/Linux/2013-06/85717.htm
【重点参考】https://www.cnblogs.com/jackadam/p/8213712.html#_label0_6
【GPT参考】http://man.linuxde.net/parted
https://www.cnblogs.com/onlybobby/p/7018788.html
https://www.jianshu.com/p/8b13f4459a83
此文章是学习笔记,发布时复制粘贴,读者如果发现问题请留言,我会及时更正。