LINUX磁盘分区和扩容见解

      前段时间项目频繁出现了服务器磁盘不足的情况,领导把这个磁盘扩容的情况安排给了我,花了五天的时间,终于搞定了。搞完之后,发现了好多坑,服务器部署时就存在的坑,分区扩容时的坑。

一、磁盘分区的原理

       磁盘分区的大致意思就是把物理层面的磁盘统一用逻辑层的分组管理起来,可以做到跨物理磁盘的享受磁盘容量,即两个50G的物理磁盘,可以做成一个100G的逻辑层的磁盘容量。

        上图是三个物理磁盘,分别是100G、200G和300G。首先对三个物理磁盘进行物理分区,物理分区也可以分配容量大小,大小可随意分配,如下图:

我对三个磁盘做了三种情况的物理分区,大小和数量都可以随意,只要不超过父磁盘的容量就可以。

     物理层的分区已经做好了,下面是逻辑层分区了。首先创建两个卷组:260G的VG1和200G的VG2,如下图:

       有了卷组后,就实现了逻辑层对物理磁盘的容量操作,后续对卷组的扩容,或添加了新的物理磁盘需要管理,直接使用卷组vg命令,就可以实现逻辑层对物理磁盘的容量统一管理了。

      下面根据我的业务需求,来进行最后的逻辑层分区操作。我们的项目需求是,需要有两个lv分区:160G的LV1和100G的LV2,LV1分区挂载docker程序的运行,LV2分区挂载项目下载的文件和日志等。如下图:

      卷组VG只是一个逻辑层的磁盘容量容器,而真正的业务需要挂载目录的分区,则需要从卷组VG里面拿出自己需要的容量的LV分区,来挂载目录。

二、分区操作命令

1.创建物理分区,(sda1,sda2,sdb1...)

      命令:fdisk /dev/sda,此命令会进入到物理分区操作界面,根据里面的提示,创建物理分区,最后保存即可。

具体操作可以特意搜索下这个命令的内容。创建完后,会根据物理分区数量n自动的分为sda1...sdan,接下来需要把这些放到pv里,命令:pvcreate /dev/sda1,分别把所有的物理分区都放到pv里,如果忘了有多少物理分区,命令:lsblk,可以看到具体分区情况,再使用命令:pvs,可以查看所有的已经放在pv里的物理分区,两者做个对比,就知道哪些物理分区还没有放在pv里。

2.创建逻辑层卷组VG,(VG1,VG2)

       命令:vgcreate VG1 /dev/sda1 /dev/sdb1 /dev/sdc1,这个命令就是创建了名称为VG1的逻辑层卷组,统计管理了物理层分区的sda1、sdb1和sdc1,VG1的大小也是这三个容量相加。

命令:vgs,可查看VG创建情况,如下图:

vg名称是centos,统一管理了1个PV,下面分了3个LV,容量是3.72T。

3.创建逻辑层卷层LV,(LV1,LV2)

       命令:lvcreate -L 160G -n LV1 VG1,创建了一个LV1,大小是160G,属于卷曾VG1。卷组VG1总共是260G,拿出了160G分给了LV1,还剩下100G可用。

        命令:lvs,可查看卷层lv的情况,如下图:

项目服务器上的情况是,创建了三个lv:home root swap,都属于名为centos的vg,大小分别为2.93T、800G、4G。

4.挂载目录

       命令:mount /dev/VG1/LV1 /test,此命令是把/test目录挂载到LV1分区,如果提示错误,可以把LV1格式化下,命令:mkfs.ext4 /dev/VG1/LV1。

       命令:lsblk,就能查看分区和挂载情况了,如下图:名为root的lv,挂在了/目录;名为home的lv。挂载了/home目录。

5.服务器重启自动挂载

     虽然已经挂载成功,但仍需要改一些配置,让重启时能自动挂载。进入/etc/fstab,写入挂载内容,如下图:

三、分区扩容

1.分区扩容的理念

      逻辑层存在的意义就是统一管理多个硬盘的容量,分区扩容就是把逻辑层的卷组vg纳管新的物理层分区,卷组就会增加相应的容量,就可以按需分配给下面的lv,至于pv的来源,可以是新增硬盘,也可以是之前没有使用完的磁盘容量。

2.vg扩容

      命令:vgextend VG1 /dev/sda2,把sda2纳管到VG1卷组,这样就给VG1增加了sda2的容量90G。

3.lv扩容

       命令:lvextend -L +50G /dev/VG1/LV1,这个命令只是增加了lv的容量,如果lv已经挂载了目录,还需要再更新下文件目录,命令:resize2fs /dev/VG1/LV1,会更新容量,如果此命令出现错误,还需要取消挂载,格式化lv分区,重新执行下命令。

四、分区扩容的一些坑

1.有时候扩容还需要取消挂载,这就很难受了,取消挂载会丢失该目录下文件,需要提前做好备份。当真正取消挂载时,还会提醒该目录下有程序运行,无法取消挂载,需要自己手动删除线程,如果遇到自动启动的程序,更麻烦,只能格式化该目录了,再取消挂载。

2.更难受的是,vg和lv的命令有的服务器并没有,这还需要安装插件,这个时候如果懒得操作,可以在pvcreate /dev/sda1之后,直接把文件目录挂载到/dev/sda1,如:mount /dev/sda1 /test,就像下图,直接挂载到pv上面了,

后续扩容的话会很麻烦事。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值