Linux的磁盘存储管理实操——(下一)——标准分区扩容
一、标准分区与逻辑卷管理
1.1、标准分区简介
Linux的标准分区是指直接在物理硬盘上划分出固定的存储区域(这些划分区域的大小在创建时就确定了)若要对这些划分的存储区域进行【扩容】或【缩容】通常需要重新格式化或使用复杂的工具(如:fdisk或parted)进行操作。建议在读写性能要求比较高的场景使用标准分区。常见的Linux标准分区示意图如下:
1.2、逻辑卷管理简介
逻辑卷管理(LVM)是Linux下对磁盘分区管理的一种机制,是建立在磁盘分区和文件系统之间的一个逻辑层,可在磁盘不用分区的情况下动态在线调整磁盘大小,十分方便灵活。但与标准分区相比则由于【创建逻辑卷的流程是:物理卷(PV)-->卷组(VG)-->逻辑卷(LV)】经过这三层,逻辑卷的读写性能可能会比标准分区存在一些差距,但是这种差距不大。逻辑卷组的示例图如下:
Linux的磁盘存储管理实操——(中)——逻辑卷管理实战https://coffeemilk.blog.csdn.net/article/details/149471808
1.3、标准分区与逻辑卷管理的对比
序号 | 说明 |
1 | 标准分区的读写性能优于逻辑卷管理(LVM) |
2 | 标准分区的扩容、缩容没有逻辑卷管理的简单 |
3 | 标准分区可以实现变相的扩容和缩容 |
4 | 使用逻辑卷管理时,最底层的物理硬盘必须做RAID(如:2块硬盘做Raid1、3块硬盘可做Raid5等) |
综合比较下来,建议在生产环境直接使用标准分区 |
二、GPT格式的标准分区扩容
2.1、硬盘基于GPT格式的标准分区简介
GPT(GUID Partition Table)全局唯一标识分区表,是UEFI标准的一部分,它主要是用来替代BIOS中的主引导记录分区表MBR(Mater Boot Record)。GPT格式可支持128个主分区,且突破了MBR格式单个磁盘分区最大为2TB的限制,可以支持几十几百TB的分区(这主要取决于硬盘的物理大小和文件系统限制)。
GPT格式在硬盘上有两份分区表,一份位于硬盘的开始位置,另一份位于硬盘的末尾位置(这样的设计提供了数据冗余【即:当其中的一份分区表损坏时,还可以通过另一份分区表来恢复分区信息】)。
2.2、硬盘基于GPT格式的标准分区扩容实操
2.2.1、硬盘有剩余空间的扩容
【硬盘有剩余空间扩容】这种标准分区的扩容限制:①单块硬盘还有剩余空间;②最后一个硬盘分区才可以使用该硬盘剩余的空间进行扩容。 这种标准分区的扩容使用场景是【云主机、虚拟机】这样的扩容情况。
场景描述:现有【/dev/sda】硬盘总容量为100GB,最后一个分区为【/dev/sda6】,当前对这个硬盘分区完成后,还有剩余的空间(如:剩余64GB左右)。现在可以实现对最后的【/dev/sda6】分区进行扩容。
《1》现在对硬盘的情况和分区格式进行确认:
#1-查看Linux系统上的所有硬盘信息命令(可用于查看有哪些硬盘;每个硬盘分了几个区;每个区的容量是多少;是否还有剩余容量【硬盘剩余容量=硬盘总容量-所有分区的容量之和】;硬盘是否是标准分区(如果类型[TYPE]列不含有lvm标识的则说明该硬盘的分区都是标准分区))【注意:硬盘分区只有两种情况:《1》全部是标准分区;《2》标准分区与逻辑卷LVM分区同时存在。不可能全部是逻辑卷分区,这是因为/boot分区必须存放在标准分区中】
lsblk #2-查看Linux系统上的所有硬盘格式类型命令(可以查看到硬盘标签类型显示的内容就是该硬盘的格式类型)
fdisk -l
通过如上两个命令就可以确认硬盘是否有剩余空间,且硬盘是否为GPT分区格式(我们这里如上图所示硬盘【/dev/sda】存在剩余空间=100GB-(0.195+1+10+10+4+10)GB=64.805GB;且是GPT格式分区;【/dev/sda】硬盘的最后分区是【/dev/sda6】并且是/根分区)。
《2》已经确认了【/dev/sda】硬盘有剩余空间,且是GPT分区格式,那么就可以对该硬盘的最后一个分区【/dev/sda6】进行扩容了,扩容流程如下:
#1-查看当前Linux系统硬盘的空间占用情况
df -hT#2-使用fdisk命令进入指定硬盘(如进入/dev/sda硬盘)
fdisk /dev/sda#3-查看当前/dev/sda硬盘的分区信息
p$4-删除最后的分区(如:/dev/sda6)
d#5-再次查看当前/dev/sda硬盘的分区信息
p#6-创建新分区(使用默认的值为分区编号、可根据需要是否使用完空余的所有空间【不输入值表示使用所有的剩余空间给该新分区】若需要设置该分区的容量(如设置分区容量为50g则输入+50g))
n#7-保留该分区的原有签名
N#8-保存对硬盘的分区操作并退出
w#9-再次查看当前Linux系统硬盘的空间占用情况
df -hT#10-刷新文件系统对应硬盘分区元数据完成容量扩展(若硬盘分区对应的文件类型是ext4则使用【resize2fs 分区】命令刷新;若硬盘分区对应的文件类型是xfs则使用【xfs_growfs 分区】命令刷新)
resize2fs /dev/sda6#11-再次查看当前Linux系统硬盘的空间占用情况(刷新后此时硬盘的最后一个分区容量应该是扩展了)
df -hT
2.2.2、硬盘没有剩余空间的扩容
场景描述:Linux系统中已有一个分区快满了,且这个分区不是最后一个分区,现在需要实现对这个分区扩容。
#0-查看Linux系统的所有硬盘信息
parted -l#1-格式化新硬盘(由于我们这里的硬盘空间不大,就直接对这个硬盘格式化;实际业务环境硬盘容量较大,建议先进行分区后在操作)
mkfs.ext4 /dev/sdb#2-创建硬盘需要挂载的目录(如:创建/data2目录)
mkdir /data2#3-手动挂载硬盘或硬盘分区到指定目录(如:将/dev/sdb硬盘挂载到/data2上)【注意:这里手动挂载的硬盘或分区只是当前挂载上;系统重启后就消失了】
mount /dev/sdb /data2#4-实现系统开机后硬盘或分区的自动挂载(《1》先获取指定硬盘或分区的UUID和类型内容可确保该硬盘或分区唯一;《2》打开/etc/fstab文件将需要开机自动挂载的硬盘或分区配置上)
#4.1-先获取指定硬盘或分区的UUID和类型内容(如:获取/dev/sdb设备的UUID和类型内容【UUID=476a71d3-e945-4107-a9e5-d959bed6bd4d Type=ext4】)
blkid /dev/sdb
#4.2-将需要配置的硬盘或分区配置到开机自动挂载文件中(如:将/dev/sdb设备配置到开机自动挂载文件中)
vi /etc/fstab
UUID=476a71d3-e945-4107-a9e5-d959bed6bd4d /data2 ext4 defaults 0 0#5-检测配置的开机自动挂载硬盘或分区是否配置正确命令(执行该命令后若不报错,表示配置正确;否则就需要根据提示检查内容重新配置)【注意:修改这个开机自动挂载硬盘或分区的文件后一定要检测成功,不然下次重启可能系统就无法启动了】
mount -a#6-检测指定路径下子目录所有文件的空间占用信息,方便查找出最大的文件或文件夹进行转移到新硬盘中(如:查看/var目录下的所有内容查看它们所占用的空间情况)
du -sh /var/*#7-根据检测出来最大的几个文件夹或文件进行迁移(如:我们这里需要将检测出的最大目录/var/cache内容及其子内容包含属性权限内容不变的异步增量迁移到我们的新硬盘空间/data2目录下【由于该命令是增量同步,因此可以多次执行而不用担心混乱异常等情况】)【注意:这里不建议使用mv命令进行移动,因为若移动的内容太大若中途移动中断等异常发生时,会导致迁移的数据可能混乱异常】
rsync -avpz /var/cache /data2#8-创建软链接(如:我们将/data2/cache的内容创建一个软链接到/var/cache)【注意:若创建的软链接名称与现有目录下的名称一致,则需要修改原有路径下的名称(验证没有问题一段时间后可以将修改原有路径下名称的内容删除释放空间)】
ln -s /data2/cache /var
mv /var/cache /var/cache_bak
ln -s /data2/cache /var
ll -al /var
rm -rf /var/cache_bak
三、MBR格式的标准分区扩容
3.1、硬盘基于MBR格式的标准分区简介
MBR(Master Boot Record)主引导记录分区格式是传统的硬盘分区格式,被广泛应用于早起计算机系统中。MBR格式主要由【主引导程序】【硬盘分区表】【硬盘有效标识】三个部分组成。
MBR格式【最多支持4个主分区】或者【3个主分区+1个扩展分区】若需要创建更多的分区,则可以通过创建扩展分区来实现【注意:扩展分区本身不用于存储数据,只是用于进一步划分多个逻辑分区的容器(真正存储数据的是逻辑分区)】。
MBR格式分区支持的最大容量为2TB(若一块6TB的硬盘使用MBR格式时,只能被识别为2TB,剩余的4TB空间将无法使用)。
Linux的磁盘存储管理实操——(上)https://coffeemilk.blog.csdn.net/article/details/149436660
3.2、硬盘基于MBR格式的标准分区扩容实操
3.2.1、硬盘有剩余空间的扩容
场景描述:现在Linux系统的硬盘使用了MBR格式,且该硬盘的挂载的逻辑分区容量快满了,现在需要对这个逻辑分区进行扩容操作(如:本例中是需要对/dev/vda硬盘挂载的/dev/vda4扩展容器下的/dev/vda5逻辑分区进行扩容)。
《1》现在对硬盘的情况和分区格式进行确认:
#1-查看Linux系统所有硬盘信息(用来查看每个硬盘属于什么格式【若显示的“磁盘标签类型”值为dos则表示该硬盘是MBR格式】)
fdisk -l#2-查看磁盘是否属于标准分区(不带LVM则表示是标准分区)
lsblk
《2》已经确认了【/dev/vda】硬盘有剩余空间,且是MBR分区格式,那么就可以对该硬盘的最后一个逻辑分区【/dev/sda5】进行扩容了,扩容流程如下:
#1-使用fdisk命令进入指定硬盘进行分区操作(如:进入/dev/vda硬盘)
fdisk /dev/vda#2-查看当前硬盘的信息
p#3-删除逻辑分区和扩展分区(需要将扩展分区容器及其下面包含的所有逻辑分区都删除)
d#4-创建新的扩展分区(注意创建的新分区的扇区编号必须与删除前对应的扇区编号一致【一般都是使用默认值即可】、容量大小根据需求设置,也可以直接将所有剩余空间都设置上【即使用默认值即可】)
n
e#5-创建新的逻辑分区(注意创建的新分区的扇区编号必须与删除前对应的扇区编号一致【一般都是使用默认值即可】、容量大小根据需求设置,也可以直接将所有剩余空间都设置上【即使用默认值即可】)
n#6-保存当前配置的硬盘分区信息并退出
w#7-刷新当前硬盘分区配置信息
partprobe#8-查看当前Linux的磁盘使用情况
df -hT#9-刷新硬盘分区挂载到文件系统的原数据(比如:刷新/dev/vda5分区对应的文件系统原数据)
resize2fs /dev/vda5#10-再次查看当前Linux的磁盘使用情况确认刷新的硬盘分区对应的挂载的文件系统空间是否改变
df -hT
注意:当我们保存当前硬盘的分区配置信息并退出后提示“更新系统中有关分区4的信息时失败:Device or resource busy。内核仍在使用旧分区。新分区表将在下次重启后生效。正在同步磁盘”的错误提示信息时,解决方法有两个(建议使用方法二):
方法一:直接重启该Linux服务器(但一般生产环境基本不能够立刻就重启Linux服务器)。
方法二:直接刷新让刚才修改的硬盘分区内容生效,然后执行刷新/dev/vda5分区对应的文件系统挂载的容量