磁盘的动态扩容和缩减

磁盘的动态扩容和缩减在日常运维过程中 经常会出现磁盘爆满 不足以维持未来业务量 或者磁盘太大 造成资源浪费的情况 这种情况下最好的方式就是采用磁盘的动态扩容和缩减

大家好,欢迎来到IT知识分享网。

磁盘的动态扩容和缩减

主旨

在日常运维过程中,经常会出现磁盘爆满,不足以维持未来业务量,或者磁盘太大,造成资源浪费的情况,这种情况下最好的方式就是采用磁盘的动态扩容和缩减。

LVM是什么

在这里我们推荐使用LVM逻辑卷的方式,为什么使用这个方式呢,这个方式有什么值得推崇的呢,我们在这里不进行一堆原理上的介绍,只需要知道如果我们使用了lvm,就可以动态的控制某个磁盘的大小,而不至于每次都要删除重建磁盘即可。话不多说,下面我们直接进入正文。

名词解释

PS:包括但不限于以下三个(因为越多越乱)

PV:物理卷。可以是单独磁盘,也可以是磁盘分区; VG:卷组。是PV的组合,可以看成单独的逻辑磁盘; LV:逻辑分区。相当于物理分区的 /dev/sd*

他们的关系如下图:

磁盘的动态扩容和缩减

环境

一台linux服务器 一个新磁盘

检查

输入 fdisk -l 命令,检查下是否有一块磁盘未使用,如下,“/dev/sdb”就是未被使用的磁盘。

[root@localhost ~]# fdisk -l 磁盘 /dev/sda:21.5 GB,  字节, 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000aa7ff 设备 Boot Start End Blocks Id System /dev/sda1 * 2048   83 Linux /dev/sda2    8e Linux LVM 磁盘 /dev/sdb:10.7 GB,  字节, 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/mapper/centos-root:18.2 GB,  字节, 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/mapper/centos-swap:2147 MB,  字节, 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 [root@localhost ~]#

划分磁盘分区

PS:是否进行此步骤,根据实际情况进行操作,这里是做实验。

将 /dev/sdb 磁盘划分成sdb1、sdb2、sdb3,每个磁盘3g的空间

PS:如果要做 lvm,不需要额外使用mkfs命令进行格式化

[root@localhost ~]# fdisk /dev/sdb  # 开始划分磁盘 /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x6fc1e4e0 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n  # 输入 n 新建磁盘 Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p):   # 直接回车 Using default response p 分区号 (1-4,默认 1):# 直接回车 起始 扇区 (2048-,默认为 2048):# 直接回车 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-,默认为 ):+3G  # 分给 3g 的空间  分区 1 已设置为 Linux 类型,大小设为 3 GiB 命令(输入 m 获取帮助):n  # 输入 n 新建磁盘 Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): # 直接回车 Using default response p 分区号 (2-4,默认 2):# 直接回车 起始 扇区 (-,默认为 ):# 直接回车 将使用默认值  Last 扇区, +扇区 or +size{K,M,G} (-,默认为 ):+3G # 分给 3g 的空间 分区 2 已设置为 Linux 类型,大小设为 3 GiB 命令(输入 m 获取帮助):n # 输入 n 新建磁盘 Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): # 直接回车 Using default response p 分区号 (3,4,默认 3):  # 直接回车 起始 扇区 (-,默认为 ):# 直接回车 将使用默认值  Last 扇区, +扇区 or +size{K,M,G} (-,默认为 ):+3G  # 分给 3g 的空间 分区 3 已设置为 Linux 类型,大小设为 3 GiB 命令(输入 m 获取帮助):p # 查看分区情况,是否和规划的一样 磁盘 /dev/sdb:10.7 GB,  字节, 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x6fc1e4e0 设备 Boot Start End Blocks Id System /dev/sdb1 2048   83 Linux /dev/sdb2    83 Linux /dev/sdb3    83 Linux 命令(输入 m 获取帮助):w # 报错退出 The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@localhost ~]#

创建pv

命令集合:

pvcreate 将物理分区新建为PV pvs/pvscan 查看系统里有pv的磁盘 pvdisplay 显示系统上面的pv状态 pvremove 删除pv

实操:

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2   # 将 sdb2 和 sdb3 变成pv Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdb2" successfully created. [root@localhost ~]# pvs  # 查看系统中pv PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb1 lvm2 --- 3.00g 3.00g /dev/sdb2 lvm2 --- 3.00g 3.00g [root@localhost ~]#

创建vg

命令集合:

vgcreate 新建vg, -s  后面接 pe 的大小 vgextend 扩展vg,就是增加vp vgs/vgscan 查看系统里有 vg 的磁盘 vgdisplay 显示系统上面的 vg 状态 vgremove 删除vg vgreduce 在vg里面删除pv

实操:

[root@localhost ~]# vgcreate jier /dev/sdb1 /dev/sdb2  # 创建一个名为 jier 的vg Volume group "jier" successfully created [root@localhost ~]# vgs  # 查看是否成功,两个 3g 的,就是6g VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 jier 2 0 0 wz--n- 5.99g 5.99g [root@localhost ~]# 

创建lv

命令集合:

lvcreate 新建lv,-L指定容量,M,G lvextent 增加容量 lvs/lvscan 查看系统里有lv的磁盘 lsdisplay 显示系统上面的lv的状态 lsremove 删除lv lvreduce 在lv里减少容量

实操:

[root@localhost ~]# lvcreate -L 500M -n jier01 jier  # 在 jier 卷组上,新建一个名为 jier01 的lv,且容量为 500M Logical volume "jier01" created. [root@localhost ~]# lvs  # 查看是否创建成功 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g jier01 jier -wi-a----- 500.00m [root@localhost ~]# mkfs.ext4 /dev/jier/jier01   # 格式化 jier01 ,推荐使用ext4的格式 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=1024 (log=0) 分块大小=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks  inodes,  blocks 25600 blocks (5.00%) reserved for the super user 第一个数据块=1 Maximum filesystem blocks= 63 block groups 8192 blocks per group, 8192 fragments per group 2032 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, , ,  Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (8192 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 [root@localhost ~]# mkdir /jier01 # 新建目录,此目录为挂载点,名字随意 [root@localhost ~]# mount /dev/jier/jier01 /jier01/  # 将jier01挂载到/jier01目录下 [root@localhost ~]# df -h # 查看容量 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 17G 1.8G 16G 11% / devtmpfs 808M 0 808M 0% /dev tmpfs 820M 0 820M 0% /dev/shm tmpfs 820M 9.6M 810M 2% /run tmpfs 820M 0 820M 0% /sys/fs/cgroup /dev/sda1 1014M 130M 885M 13% /boot tmpfs 164M 0 164M 0% /run/user/0 /dev/mapper/jier-jier01 477M 2.3M 445M 1% /jier01 [root@localhost ~]#

扩容lv/目录

命令集合:

resize2fs 文件系统扩容

实操:

[root@localhost ~]# lvextend -L +200M /dev/jier/jier01 # 磁盘添加200M的空间 Size of logical volume jier/jier01 changed from 500.00 MiB (125 extents) to 700.00 MiB (175 extents). Logical volume jier/jier01 successfully resized. [root@localhost ~]# resize2fs /dev/jier/jier01   # 文件系统重新加载,此部署必须,如果发现报错了,可以使用xfs_growfs试一下,有可能是你格式化的时候,格式化成为额xfs格式 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/jier/jier01 is mounted on /jier01; on-line resizing required old_desc_blocks = 4, new_desc_blocks = 6 The filesystem on /dev/jier/jier01 is now  blocks long. [root@localhost ~]# df -h  # 查看容量,已经新增了200M的内容 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 17G 1.8G 16G 11% / devtmpfs 808M 0 808M 0% /dev tmpfs 820M 0 820M 0% /dev/shm tmpfs 820M 9.6M 810M 2% /run tmpfs 820M 0 820M 0% /sys/fs/cgroup /dev/sda1 1014M 130M 885M 13% /boot tmpfs 164M 0 164M 0% /run/user/0 /dev/mapper/jier-jier01 670M 2.5M 631M 1% /jier01 [root@localhost ~]#

扩容vg/卷组

[root@localhost ~]# pvcreate /dev/sdb3  # 将 sdb3 变成pv Physical volume "/dev/sdb3" successfully created. [root@localhost ~]# vgextend jier /dev/sdb3  # 给 jier 这个卷组,新增一个pv Volume group "jier" successfully extended [root@localhost ~]# vgs  # 查看容量,由6g变成了9g VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 jier 3 1 0 wz--n- <8.99g 8.30g [root@localhost ~]#

缩减lv/目录

PS:缩减必须卸载磁盘挂载,方可进行操作

命令:umount

[root@localhost ~]# umount /jier01/  # 卸载 [root@localhost ~]# e2fsck -f /dev/jier/jier01   # 检查 e2fsck 1.42.9 (28-Dec-2013) 第一步: 检查inode,块,和大小 第二步: 检查目录结构 第3步: 检查目录连接性 Pass 4: Checking reference counts 第5步: 检查簇概要信息 /dev/jier/jier01: 11/ files (0.0% non-contiguous), 33345/ blocks [root@localhost ~]# resize2fs /dev/jier/jier01 400M  # 文件系统缩减 resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/jier/jier01 to  (1k) blocks. The filesystem on /dev/jier/jier01 is now  blocks long. [root@localhost ~]# lvreduce -L 400M /dev/jier/jier01 # 磁盘缩减 WARNING: Reducing active logical volume to 400.00 MiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce jier/jier01? [y/n]: y # 输入 y 回车 Size of logical volume jier/jier01 changed from 700.00 MiB (175 extents) to 400.00 MiB (100 extents). Logical volume jier/jier01 successfully resized. [root@localhost ~]# mount /dev/jier/jier01 /jier01/ # 重新进行挂载 [root@localhost ~]# df -h # 查看容量 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 17G 1.8G 16G 11% / devtmpfs 808M 0 808M 0% /dev tmpfs 820M 0 820M 0% /dev/shm tmpfs 820M 9.6M 810M 2% /run tmpfs 820M 0 820M 0% /sys/fs/cgroup /dev/sda1 1014M 130M 885M 13% /boot tmpfs 164M 0 164M 0% /run/user/0 /dev/mapper/jier-jier01 380M 2.3M 355M 1% /jier01 [root@localhost ~]#

至此,磁盘的动态增大和缩减已经全部实现完毕。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/90413.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信