作者:我不是咸鱼仔 | 来源:互联网 | 2017-07-08 06:23
应用场景和已知存在的问题:适用于CentOS6或CentOS7(可能适用于CentOS4或5等早些版本)根文件系统(被扩展的文件系统)采用LVM进行管理,例如mount命令输出“/dev/mapper/vg_$hostname-lv_rooton/typeext4(rw)”中含有“ma
应用场景和已知存在的问题:
-
适用于CentOS6或CentOS7(可能适用于CentOS4或5等早些版本)
-
根文件系统(被扩展的文件系统)采用LVM进行管理,例如mount命令输出“/dev/mapper/vg_$hostname-lv_root on / type ext4 (rw)”中含有“mapper”关键词
-
自动扩容根文件系统,如果想扩展其他文件系统,例如有的业务应用数据目录不在根分区中,则需要修改Shell脚本代码中的VG_PATH_TO_EXTEND变量(约78行)。
-
仅支持ext2、ext3、ext4、xfs等分区格式的文件系统
-
可能不支持某些过多自定义的CentOS系统,但核心步骤相似
-
脚本中仅添加了scsi磁盘支持,如需要管理其他磁盘,则需要自己扩充脚本
-
为了简化脚本,避免执行多次(本程序没有写执行锁),先前已经存在的磁盘名已经设定为sda,见Shell脚本代码中第45行的ONLINE_SCSI_DISK_PRESENT变量
考虑点:
由于CentOS6和CentOS7在默认根文件系统的文件系统格式存在差异,需要判断是否为xfs,如果是xfs则应该使用xfs_growfs而不是一味的使用resize2fs。
使用resize2fs扩展ext2、ext3、ext4格式的文件系统,使用xfs_growfs扩展xfs格式的文件系统
同一脚本在同一系统多次被执行可能引发的错误,可以考虑使用文件锁来解决这个问题
编程思路:
-
(之前应该准备或检查Shell脚本运行环境)获取当前使用中的块设备文件名
-
获取新添加scsi磁盘的文件名
-
获取LVM卷组名(vg)、将被扩展的卷组名的文件路径
-
将新添加磁盘使用fdisk创建分区并格式化为LVM格式
-
创建物理卷,pvcreate
-
扩展卷组,vgextend
-
调节逻辑卷大小,lvresize
-
判断是否是xfs文件系统
-
同步文件系统,使得扩容生效
-
返回系统磁盘使用情况
Shell代码:
#!/bin/bash
function check_execution_result(){
if [[ ! -z $RETVAL ]]; then
unset RETVAL
fi
RETVAL=$?
if [[ $RETVAL - ne 0 ]]; then
echo execution failed!
exit $RETVAL
else
echo execution successfully!
fi
unset RETVAL
}
推荐阅读
-
docker容器的数据管理一:数据卷实现数据的永久化,完全独立于容 ...
[详细]
蜡笔小新 2023-10-17 15:59:03
-
本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ...
[详细]
蜡笔小新 2023-12-13 09:26:47
-
-
本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ...
[详细]
蜡笔小新 2023-12-12 03:02:49
-
本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ...
[详细]
蜡笔小新 2023-12-11 17:35:39
-
本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ...
[详细]
蜡笔小新 2023-12-11 16:34:22
-
蜡笔小新 2023-12-10 21:14:20
-
为什么80%的码农都做不了架构师?最近在工作中需要使用crontab执行定时任务,处理memcacheq消息队列里的数据,但是发现在 ...
[详细]
蜡笔小新 2023-12-09 18:43:51
-
本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ...
[详细]
蜡笔小新 2023-12-09 10:11:06
-
本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ...
[详细]
蜡笔小新 2023-12-09 05:31:17
-
1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ...
[详细]
蜡笔小新 2023-10-17 19:29:00
-
其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ...
[详细]
蜡笔小新 2023-10-17 19:20:12
-
homemyUserscript.sh>>homemyUserlog.txt2>&1在script.sh ...
[详细]
蜡笔小新 2023-10-17 19:09:31
-
systemd-nspawn可以创建最轻量级的容器(ns的意思就是namespace),本文的实验平台是Ubuntu16.04,x86_64机器。本文的目的是:在Ubuntu中用syst ...
[详细]
蜡笔小新 2023-10-17 14:49:15
-
本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ...
[详细]
蜡笔小新 2023-10-17 14:46:37
-
本文介绍shell中的expr和bash自带的 ...
[详细]
蜡笔小新 2023-10-17 13:09:38
-
|