【Shell 脚本速成】03、Shell 脚本实战案例(一)数据磁盘初始化

news2024/11/18 14:02:17

目录

一、案例应用场景

二、案例需求

脚本所需相关知识点

三、案例算法

四、代码实现

五、实现验证


 

一、案例应用场景

        生产环境中的服务器一般会分为系统盘和数据盘两种磁盘,以dell R730举例,该服务器是一个2U的机架式服务器,满载可以挂载14块磁盘(2块在机箱内做系统盘,12块在面板做数据盘),我们一般的策略是系统盘做raid1,保障系统稳定性12块数据磁盘我们做raid10 或者 raid50,保障数据盘容错的同时还能做到优化IO的效果。

        raid磁盘的容量是一定的,线上的数据又是不断增长的,也就是说总有一天会把你的数据磁盘填满,那怎么办?为了解决这个问题,人们想到了LVM(逻辑卷管理系统),当前数据盘容量不够用的时候,我们可以通过san存储获得网络磁盘,然后将该网络存储动态加入LVM中的卷组后就可以扩大LV了。整个过程采用在线扩容的方式,不会影响线上业务正是基于这个原因,我们又在系统中把raid数据盘在存数据之前做成了LVM磁盘,方便后续的扩容。

        注意:有数据的磁盘不能再做LVM,因为需要格式化,数据会全部丢失。必须提前布局,否则就得提前准备跑路资金了。

二、案例需求

给虚拟机添加一块磁盘(以sdb为例),要求使用脚本对该磁盘分三个区:

 1)主分区 /dev/sdb3 543M 文件系统 ext4 要求开机自动挂载到/data/data1目录

 2) 逻辑分区 /dev/sdb5 2G

 3) 逻辑分区 /dev/sdb6 3G

然后使用/dev/sdb5、/dev/sdb6 新建卷组vg100,并创建一个PE为16M,容量为2.5G的逻辑卷lv100,并格式化为xfs,默认开机自动挂载到/data/data2目录

脚本所需相关知识点

  • fdisk
  • mkfs
  • /etc/fstab
  • lvm(逻辑卷)

可以查看下面两篇文章了解相关知识点:

fdisk 命令实现磁盘分区详细教程_Stars.Sky的博客-CSDN博客_使用fdisk命令进行硬盘分区 

LVM(逻辑卷管理器)_Stars.Sky的博客-CSDN博客_lvm逻辑卷管理器

三、案例算法

算法:完成一个任务的代码思路。

1、分区
2、创建逻辑卷
    2.1  创建物理卷
    2.2  创建卷组
    2.3  创建逻辑卷
3、格式化 /dev/sdb3   /dev/vg100/lv100
4、修改 /etc/fstab文件
5、挂载分区
6、验证并输出挂载结果

四、代码实现

代码实现的要点:要清楚每一步的步骤,不同的系统可能有细微的差别,一味的复制可不行的,需要提前动手做一下fdisk分区,把步骤捋清楚。

注意:我是CentOS 7.6 操作系统,适用于下面这个脚本。其他系统(ubuntu、红帽等)可能不适用。

[root@shell ~]# vi disk_partition.sh
#!/bin/bash

#1、分区
# fdisk 是交互式命令;<< 是追加输出,把fdisk 的问题答案按照顺序提前写好在一个包里或括号里,EOF相当于括号,实现自动回答;
# 3与+543M 中间空一行相当于回车,于此类推;e 创建扩展分区;3、4代表创建sdb3和sdb4分区。

fdisk /dev/sdb <<EOF
n
p
3

+543M
n
e
4


n
l

+2G
n
l

+3G
w
EOF

#2、创建逻辑卷
   #2.1 创建物理卷
    pvcreate /dev/sdb5 /dev/sdb6
   #2.2 创建卷组
    vgcreate -s 16M vg100 /dev/sdb{5..6}
   #2.3 创建逻辑卷
    lvcreate -L 2.5G -n lv100 vg100

#3、格式化
mkfs.ext4 /dev/sdb3
mkfs.xfs /dev/vg100/lv100

#4、修改/etc/fstab,实现自动挂载
echo  "/dev/sdb3   /data/data1 ext4  defaults   0 0" >> /etc/fstab
echo "/dev/vg100/lv100 /data/data2  xfs   defaults 0 0" >> /etc/fstab

#5、创建并挂载分区
mkdir -p /data/data{1..2}
mount -a

#6、验证并输出挂载结果
mount |grep "/dev/sdb3"
test $? -eq 0&&echo "/dev/sdb3 挂载成功" || echo "/dev/sdb3挂载失败"

# 注意检索的时候,mount输出中LV的表示方式,或者直接检索挂载点/data/data2也可以。
mount |grep "vg100-lv100"
test $? -eq 0&&echo "/dev/vg100/lv100 挂载成功" || echo "/dev/vg100/lv100挂载失败"

五、实现验证

# 使用如下命令查看是否挂载成功
[root@sql-master ~]# sh disk_partition.sh

[root@sql-master ~]# ls /data/

[root@sql-master ~]# df -Th

[root@sql-master ~]# fdisk /dev/sdb -l

[root@sql-master ~]# mount

上一篇文章:【Shell 脚本速成】02、Shell 变量详解_Stars.Sky的博客-CSDN博客 

参考文档:shell脚本实战案例-数据磁盘初始化-组团学

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/29812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML+CSS简单的网页制作期末作业——浙江旅游景点介绍网页制作

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

Redisson分布锁原理分析及源码解读

本文源码解读基于Redisson 3.18.0 版本 Redisson分布锁实现原理 Redisson锁实现基本原理大致如下图所示&#xff1a; 客户端执行Lua脚本去获取锁&#xff0c;如果获取失败&#xff0c;则订阅解锁消息&#xff0c;并挂起线程。 客户端解锁时执行一段Lua脚本&#xff0c;删除锁的…

[附源码]计算机毕业设计JAVA课程资源系统管理

[附源码]计算机毕业设计JAVA课程资源系统管理 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybati…

PowerJob 定时从SFTP下载文件拆的坑

一. 业务需求 SFTP上有多个目录, 每小时要下载一次文件, 每个目录的下载任务都是一个独立的工作流任务. 二.问题描述 手动执行每个任务可以正常执行, 但是当所有任务都开启定定时任务执行时(每小时执行一次),任务实例就会报错. 三.问题分析 查看服务端和worker端的日志, …

数据采集-“消防知识网上答题挑战赛”题库

为普及消防法律法规和消防安全知识&#xff0c;提升全员消防安全意识&#xff0c;提高抗御火灾、自防自救和组织疏散能力&#xff0c;集团公司近日部署11月份集中开展消防宣传月活动。 为“全民消防”营造浓厚氛围&#xff0c;集团公司以消防知识为主要内容&#xff0c;整理形…

关于如何快速学好,学懂Linux内核。内含学习路线

学习linux内核&#xff0c;这个可不像学一门语言&#xff0c;c或者java一个月或者3月你就能精通掌握。学习linux内核是需要一步一步循序渐进&#xff0c;掌握正确的linux内核学习路线对学习至关重要&#xff0c;本篇文章就来分享学习linux内核的一些建议吧。 1. 了解操作系统基…

nginx(六十一)proxy模块(二)修改发往上游的请求

一 修改发往上游的请求 重点&#xff1a; 利用指令更改转发给上游服务器的HTTP报文的内容1) 请求行 --> proxy_method、url、proxy_http_version2&#xff09;请求头 --> proxy_set_header、proxy_pass_request_headers3&#xff09;请求体 --> proxy_pass_request_b…

SpringBoot入口深入

这里写目录标题1.run&#xff08;&#xff09;1.1 程序运行监听器 SpringApplicationRunListeners1.2 应用参数 ApplicationArguments启动加载顺序1.run&#xff08;&#xff09; run()方法是一个SpringBoot程序的入口 SpringApplication.run(Application.class, args);看看方…

OVIS数据集代码解析

OVIS数据集代码解析 OVIS数据集格式整体和COCO类似&#xff0c;但是是以video的形式存储的&#xff0c;对应的解析代码见&#xff1a;https://github.com/qjy981010/cocoapi/blob/main/PythonAPI/pycocotools/ovis.py。 由于OVIS仅train提供了标注&#xff0c;因此&#xff0…

前端埋点实现方案

前言 领导今天又来活了&#x1f623;&#xff0c;要记录每个页面的停留时间&#xff0c;以及页面的操作&#xff0c;是由哪个页面跳转过来的&#xff0c;给每个页面生成GUID上报给服务端&#xff0c;并且需要携带设备型号和设备唯一标识&#x1f644; 名称解释 UV&#xff0…

蓝牙运动耳机排行榜,目前排名最好的运动耳机推荐

对于运动人士来说&#xff0c;运动过程中佩戴着耳机听歌&#xff0c;既能让运动变得更加激情有动力&#xff0c;同时还能释放压力&#xff0c;放松心情。在选择运动耳机方面的要求也高&#xff0c;运动耳机不仅需要佩戴稳固舒适&#xff0c;它的防水性能也不能差&#xff0c;当…

Java并发常见面试题(一)

进程和线程 进程 进程是程序的一次执行过程&#xff0c;是系统运行程序的基本单位&#xff0c;因此进程是动态的。系统运行一个程序即是一个进程从创建、运行到消亡的过程。 在Java中&#xff0c;当我们启动main函数其实就是启动了一个JVM进程&#xff0c;而main函数所在的线…

封装自己的 jquery 框架

说到jquery&#xff0c;那就给大家先简单的介绍一下什么是jquery jquery是JavaScript函数的一种封装。jQuery封装了JavaScript常用的功能代码&#xff08;函数&#xff09;&#xff0c;提供一种简便的JavaScript设计模式&#xff0c;优化HTML文档操作、事件处理、动画设计和Aja…

机器人运动学【2】

目录1.刚体状态的表达2.顺向运动学及DH表3.逆向运动学1.刚体状态的表达 我们前面已经学习了刚体移动和转动的表达&#xff0c;那么怎么将两者在数学上结合呢&#xff1f;这里我们开始构造如下矩阵&#xff0c;记作: 下面我们来看一下只有移动情况下的刚体的描述&#xff1a; …

使用canal解决Mysql和Redis数据同步(TCP)

使用canal解决Mysql和Redis数据同步(TCP) 工作原理分析 我们在面试的时候常常听面试官问这么一个问题&#xff1a;你们的Mysql和Redis怎么做数据同步的&#xff0c;根据不同的业务场景又很多方案&#xff0c;你可能会说先写库再删缓存&#xff0c;或者延迟双删或其他方案。今…

springboot集成flowable简单实例入门

此案例是demo。功能有创建流程、完成审批、生成流程图。适合有java基础的人员看。 第一步.画流程图 resources资源包下&#xff0c;新建processes包&#xff0c;新建一个文件&#xff0c;我命名他apply-rest.bpmmn20.xml。bpmn20.xml后缀文件是流程图配置文件。idea的右下角的…

ImageMol

ai圈也是卷的狠啊~~ 又发现一个全球首个分子图像自监督学习框架来也 分子是维持物质化学稳定性的最小单位。对分子的研究&#xff0c;是药学、材料学、生物学、化学等众多科学领域的基础性问题。 分子的表征学习&#xff08;Molecular Representation Learning&#xff09;是…

实践 | 大型基金管理公司数据脱敏体系建设

金融行业数据脱敏安全管理要求高、数据类型复杂、脱敏数据规模庞大。作为业内领先&#xff0c;且支持信创环境的数据安全产品&#xff0c;美创数据脱敏系统在金融行业应用广泛&#xff0c;可满足各类复杂环境下的数据脱敏需求&#xff1a; 台州银行—分布式大数据平台下的及时脱…

SQL Server数据库理论篇(进行时......)

SQL Server数据库理论篇 一. 数据库的关系分类 1.1.0 关系型数据库和非关系数据库区别&#xff1f; 结论&#xff1a;两种数据库的本质在于存储数据的形式不同 1.关系型数据库概念 关系型数据库最大的特征就是表&#xff0c;我们将对象的属性映射为表的一个个列名&#xff…

(九)centos7案例实战——redis一主二从三哨兵高可用服务搭建

前言 本节内容是使用centos服务器搭建一套高可用的redis服务&#xff0c;采用的是一主二从三哨兵的模式。 需要注意的是搭建集群的过程中&#xff0c;我们要保证集群服务器之间可以相互访问&#xff0c;并且redis所需要访问的端口是开放的。我们从redis的下载&#xff0c;源码…