这一章的内容也会比较多,因为预期三篇文章更完RH134系列,所以每章安排的内容都比较多,并且RH134上面的都是重点,一点也不好写。昨天一天将RH124系列写完了,今天争取将RH134系列写完。至于我为什么要着急将这些写完,那是因为还有很多内容没写。

包括之前说的docker、mysql、shell系列,这些课程我已经学完了,只是还没有做归纳总结。而且之前的k8s系列只写了一半,还有一半内容没写。后面还会增加ansible的系列,和k8s一样内容很多。但是乐观一点,九月份之前一定能够全写完的。

九月份之后,我的云原生俱乐部生涯也要结束了,整个云原生俱乐部系列也就要完结了。计划后面写go语言相关的内容,并争取在b站上更新视频,但是学习是没有止境的,希望我的博客也是没有尽头的。


这一篇主要讲RH134中调优系统性能,管理SELinux安全性,管理基本存储,管理存储堆栈这四部分内容。第一部分主要是和tuned守护进程相关,SELinux上下文会比较难理解一点,至于后两部分则是紧密相关的,会用到fdisk或者parted分区工具以及逻辑卷的概念。

调优系统性能

这节的内容是将如何通过选择由tuned守护进程管理的调优配置集来优化系统性能,tuned守护进程会利用反映特定工作负载要求的调优配置集,以动态和静态两种方式应用调优调整。

[1]动态调优

其中,tuned守护进程附带了三个监控器插件,分别用于监控磁盘负载,监控网络负载,监控cpu负载,并且附带相应的调优插件。这些插件都用于动态调优,默认情况下是处于禁用状态。不过需要注意的是,动态调优会从选定调优配置集的初始值开始,不断调整适应当前工作负载。

[2]调优配置集

可以通过tuned-adm客户端工具和tuned守护进程进行交互,使用tuned-adm active可以查看当前使用的调优配置集,使用tuned-adm list则是列出系统中所有的调优配置集。

使用tuned-adm profile_info name可以查看指定调优配置集的信息,如果不指定调优配置集,默认是当前活跃的配置集。使用tuned-adm recommend可以为系统推荐调优配置集,然后可以使用tuned-adm profile name来切换调优配置集。

[3]进程调度--优先级

用户可以给进程设置nice值,范围是-20~19,值越低优先级越高。只有root可以降低进程的nice值,其他用户只能提高。可以使用nice -n设置值,如nice -15 sleep 15 &,当然也可以重新设置进程nice值,如使用renice -n <PID>。

但是这些进程都是普通进程,而进程分实时进程和普通进程,只有普通进程能够设置nice值。实时进程使用pr值,实际上cpu调度的时候参考的是pr值,pr=nice+20,内核调度器实际使用的是pr值来确定CPU的时间分配顺序。

管理SELinux安全性

SELinux强制执行一组访问规则,明确定义进程和资源之间允许的操作,未经允许的操作都会视为非法。由于仅允许定义的操作,所以使得安全性较差的应用依旧能够得到受到保护。

[1]更改SELinux模式

SELinux具有Enforing、Permissive、Disabled三种模式,在Permissive模式下,非法的访问不会被阻止但会记录,至于Disabled模式下,则既不阻止也不记录。红帽9开始,只能在系统启动时设置内核参数selinux=0来完全禁用。

SELinux的配置文件是/etc/selinux/config,有一个字段是SELINUX,可以设置为enforcing或者permissive,系统会在启动时读取该配置文件(所以修改后需重启才能生效)。

如果在红帽9中将配置文件设置SELINUX=disabled,则会让所有的操作都被拒绝,因此在文件中禁用selinux会导致SELinux拒绝加载任何任何策略,而策略定义了允许的操作。

除了修改配置文件外,还可以使用setenforce 0或者1来设置模式(临时切换,无需重启系统),0代表Permissive,1代表Enforcing,后面可以使用getenforce来查看selinux模式

[2]设置SELinux上下文

SELinux安全上下文的格式有user、role、type、secure level,使用chcon可以临时修改文件上下文,使用restorecon(-R选项用于递归还原)将文件上下文还原成数据库中定义的上下文。

其中我们最需要关注的就是type,如果类型不对就会拒绝进程访问该类型资源。比如设置网站文件,如果文件的类型不对,访问网站时会报403的错误。文件的selinux上下文默认会继承父目录的,比如在目录下touch文件,便会继承目录的selinux。

保留selinux上下文

如果使用mv移动文件,会保留原来的selinux上下文(mv的两个文件目录必须处于同一个文件系统,否则相当于cp+rm),但是通过cp默认就不会保留selinux上下文,除非是用-a选项来保留文件的权限、时间戳以及selinux上下文。

还有创建tar归档的时候默认保留原始上下文(通过 --xattrs 隐式启用),除非是用--no-xattrs来不保留selinux上下文,解压文件时默认恢复原来的seinux上下文。-p选项(归档和解压的时候都要用)则是保留文件的权限、所有者和时间戳。

rsync同步文件的时候也需要注意selinux上下文是否需要保留,通过-a来保留文件权限,-X来保留selinux上下文,两者需要起来使用。

selinux策略规则

可以通过semanage fcontext -a -t type file来给file文件添加上下文策略(修改数据库中的定义),并通过restorecon来应用该selinux上下文策略。

在selinux中由一种动态调整规则,就是​在保持上下文不变的前提下,通过布尔值控制是否允许某些上下文之间的交互,每个布尔值背后关联一组 SELinux 策略规则。

例如当 `httpd_enable_homedirs`为 `on`时,策略允许 `httpd_t`进程访问 `user_home_t`类型的文件,使用getsebool -a 可以显示所有布尔值及其状态。

管理基本存储

这里会讲到分区方案GPT和MBR两种方案,以及介绍分区工具fdisk以及parted等,我对parted比较熟悉一点,并且喜欢用命令式而不是交互式的进行分区。

[1]GPT分区和MBR分区

MBR分区方案是运行在BIOS固件的系统的标准分区方案,对于运行UEFI固件的系统,GPT分区方案则是标准。前者可以划分四个主分区,最后一个分区可以作为逻辑分区扩展,在第一个扇区存储分区表,占512kb大小;而后者在磁盘首尾各存储一份分区表,分区表支持CRC检验,支持128个主分区。

[2]parted分区工具

可以使用parted /dev/vdb print来查看该磁盘的分区表情况,如果不接子命令而是parted /dev/vdb则是进入交互式分区会话。默认是使用十进制单位查看分区表情况,可以使用unit s(B、MiB、MB来指定单位),如parted /dev/vdb unit MiB print。

使用parted /dev/vdb mklabel msdos(gpt)写入磁盘标签(会擦除现有分区表),然后可以使用parted /dev/vdb mkpart primary ext4 1MiB 100MiB来创建分区,在MBR方案中,primary后面表示使用主分区还是扩展分区(extended),对于GPT方案来说,则是指的主分区名称。

如果要创建的分区是要作为交换分区的,可以使用parted /dev/vdb mkpart primary linux-swap 1MiB 100MiB来创建分区,同样如果是MBR分区方案,primary表示主分区,GPT分区方案,primary表示分区名称。

创建分区之后,运行udevadm settle等待系统检测新分区并在/dev目录下创建关联的设备文件,之后就可以使用parted /dev/vdb print来查看分区情况了,每个分区会有对应编号,可以通过parted /dev/vdb rm n 删除对应编号的分区。

[3]创建文件系统

此时创建的分区还不能进行挂载,因为parted只是给分区打上文件系统的标签,并没有在该分区创建文件系统。可以通过mkfs.ext4 /dev/vdb1来创建文件系统,如果是交换分区的话,使用mkswap /dev/vdb1来格式化分区。

创建文件系统或者格式化之后,就可以通过/etc/fstab永久挂载或激活了,通过lsblk -fp可以查看设备文件的UUID,推荐使用UUID来持久挂载或激活。编写/etc/fstab文件之后使用mount -a或者swapon -a来验证是否正确挂载或激活(如果不对会报错)。

当然,单独使用mount /dev/vdb1 /mnt/data也可以临时挂载,或者使用swapon /dev/vdb1来临时激活,如果要取消挂载用unmount,取消激活交换空间用swapoff。

管理存储堆栈

这一部分就要讲到LVM逻辑卷管理器的概念了,但还是有相当一部分和上一章的内容相关。首先要讲讲物理卷(PV)、卷组(VG)、逻辑卷(LV)、物理区块(PE)、逻辑区块(LV)等概念,接着讲如何创建逻辑卷。

[1]基本概念

​物理卷​是实际的磁盘或分区,LVM 允许直接将未分区的磁盘初始化为物理卷,无需预先创建分区表。LVM 会在磁盘的开头写入 ​​LVM 元数据​​(而非传统分区表),标记该磁盘为物理卷。

LVM工具会将物理卷划分为物理区块PE,默认是4MB大小(不过也可以指定大小),VG 和 LV 的空间分配基于 PE。卷组则由一个或多个PV组成,逻辑卷则从VG中的空闲物理区块创建,LV是逻辑区块的的集合,而LE映射到物理区块PE,两者大小相等。

[2]创建逻辑卷

步骤的话也很简单,就是三步走,主要创建逻辑卷时使用-L选项是绝对大小(默认单位是MB),而使用-l选项是相对大小(PE为单位),如-l 40就是用40个物理区块PE。

先创建物理卷,使用pvcreate /dev/vdb1,可以使用pvs或者pvdisplay来查看;然后创建卷组,使用vgcreate vgname /dev/vdb1,可以使用vgs或者vgdisplay来查看;最后创建逻辑卷,使用lvcreate -L 100MiB -n lvname vgname,通过lvs或者lvdisplay可以查看。

注意这里使用/dev/vdb1分区,虽然创建分区的步骤区别不大(可以不指定文件系统类型,如parted /dev/vdb mkpart primary 1MiB 100MiB),但是多了一步,最后使用parted /dev/vdb set n lvm on来给分区贴lvm标签(其实也可以不写)。

同样需要给逻辑卷创建文件系统,使用mkfs -t xfs /dev/vgname/lvname来创建文件系统,如果要格式化交换分区,则可用mkswap /dev/vgname/lvname,然后就是正常挂载或者激活步骤了。

[3]扩缩逻辑卷

使用lvextend -L +20MiB /dev/vgname/lvname 来扩展20MiB(不使用+就是重新设置大小),如果要同时应用上文件系统,需要加-r选项,否则就需要额外配置,使用unmount在mount是脱机处理的办法,当然也提供不脱机命令,不过还是推荐使用-r选项。

如果要扩展卷组的话,使用vgextend vgname /dev/vdb2命令,缩减逻辑卷的话步骤不一样,先缩减文件系统大小,然后再使用lvreduce来缩减逻辑卷大小。lvremove /dev/vgname/lvname则是用于删除逻辑卷,vgemove 则是用于删除卷组。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习-计算机视觉-微调 Fine-tune

1. 迁移学习迁移学习&#xff08;transfer learning&#xff09;是一种机器学习方法&#xff0c;通过将源数据集&#xff08;如ImageNet&#xff09;上训练得到的模型知识迁移到目标数据集&#xff08;如特定场景的椅子识别任务&#xff09;。这种方法的核心在于利用预训练模型…

STL库——string(类函数学习)

ʕ • ᴥ • ʔ づ♡ど &#x1f389; 欢迎点赞支持&#x1f389; 个人主页&#xff1a;励志不掉头发的内向程序员&#xff1b; 专栏主页&#xff1a;C语言&#xff1b; 文章目录 前言 一、STL简介 二、string类的优点 三、标准库中的string类 四、string的成员函数 4.1、构造…

登上Nature!清华大学光学神经网络研究突破

2025深度学习发论文&模型涨点之——光学神经网络光学神经网络的基本原理是利用光的传播、干涉、衍射等特性来实现神经网络中的信息处理和计算。在传统神经网络中&#xff0c;信息以电信号的形式在电子元件之间传输和处理&#xff0c;而在光学神经网络中&#xff0c;信息则以…

【java】对word文件设置只读权限

文件流输出时 template.getXWPFDocument().enforceCommentsProtection(); 文件输出时 //打开己创建的word文档 XWPFDocument document new XWPFDocument(new FileInputStream("output.docx")); //设置文档为只读 document.enforceReadonlyProtection(); //保存文…

Zookeeper 在 Kafka 中扮演了什么角色?

在 Apache Kafka 的早期架构中&#xff0c;ZooKeeper 扮演了分布式协调服务角色&#xff0c;负责管理和协调整个 Kafka 集群。 尽管新版本的 Kafka 正在逐步移除对 ZooKeeper 的依赖&#xff0c;但在许多现有和较早的系统中&#xff0c;了解 ZooKeeper 的作用仍然非常重要。 Zo…

什么叫做 “可迭代的产品矩阵”?如何落地?​

“可迭代的产品矩阵” 不是静态的产品组合&#xff0c;而是围绕用户需求与商业目标构建的动态生态。它以核心产品为根基&#xff0c;通过多维度延伸形成产品网络&#xff0c;同时具备根据市场反馈持续优化的弹性&#xff0c;让产品体系既能覆盖用户全生命周期需求&#xff0c;又…

Nginx代理配置详解:正向代理与反向代理完全指南

系列文章索引&#xff1a; 第一篇&#xff1a;《Nginx入门与安装详解&#xff1a;从零开始搭建高性能Web服务器》第二篇&#xff1a;《Nginx基础配置详解&#xff1a;nginx.conf核心配置与虚拟主机实战》第三篇&#xff1a;《Nginx代理配置详解&#xff1a;正向代理与反向代理…

Vue3 Element-plus 封装Select下拉复选框选择器

废话不多说&#xff0c;样式如下&#xff0c;代码如下&#xff0c;需要自取<template><el-selectv-model"selectValue"class"checkbox-select"multiple:placeholder"placeholder":style"{ width: width }"change"change…

jenkins 自动部署

一、win10 环境安装&#xff1a; 1、jdk 下载安装&#xff1a;Index of openjdk-local 2、配置环境变量&#xff1a; 3、jenkins 下载&#xff1a;Download and deploy 下载后的结果&#xff1a;jenkins.war 4、jenkins 启动&#xff1a; 5、创建管理员用户 admin 登录系统…

2020 GPT3 原文 Language Models are Few-Shot Learners 精选注解

本文为个人阅读GPT3&#xff0c;部分内容注解&#xff0c;由于GPT3原文篇幅较长&#xff0c;且GPT3无有效开源信息 这里就不再一一粘贴&#xff0c;仅对原文部分内容做注解&#xff0c;仅供参考 详情参考原文链接 原文链接&#xff1a;https://arxiv.org/pdf/2005.14165 语言模…

设计模式笔记_行为型_迭代器模式

1. 迭代器模式介绍迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为设计模式&#xff0c;旨在提供一种方法顺序访问一个聚合对象中的各个元素&#xff0c;而又不需要暴露该对象的内部表示。这个模式的主要目的是将集合的遍历与集合本身分离&#xff0c;使得用户可…

【Part 4 未来趋势与技术展望】第一节|技术上的抉择:三维实时渲染与VR全景视频的共生

《VR 360全景视频开发》专栏 将带你深入探索从全景视频制作到Unity眼镜端应用开发的全流程技术。专栏内容涵盖安卓原生VR播放器开发、Unity VR视频渲染与手势交互、360全景视频制作与优化&#xff0c;以及高分辨率视频性能优化等实战技巧。 &#x1f4dd; 希望通过这个专栏&am…

mac查看nginx安装位置 mac nginx启动、重启、关闭

安装工具&#xff1a;homebrew步骤&#xff1a;1、打开终端&#xff0c;习惯性命令&#xff1a;brew update //结果&#xff1a;Already up-to-date.2、终端继续执行命令&#xff1a;brew search nginx //查询要安装的软件是否存在3、执行命令&#xff1a;brew info nginx4. …

网络通信的基本概念与设备

目录 一、互联网 二、JAVA跨平台与C/C的原理 1、JAVA跨平台的原理 2、C/C跨平台的原理 三、网络互连模型 四、客户端与服务器 五、计算机之间的通信基础 1、IP地址与MAC地址 2、ARP与ICMP对比 ①ARP协议&#xff08;地址解析协议&#xff09; ②ICMP协议&#xff08…

云原生俱乐部-k8s知识点归纳(1)

这篇文章主要是讲讲k8s中的知识点归纳&#xff0c;以帮助理解。虽然平时也做笔记和总结&#xff0c;但是就将内容复制过来不太好&#xff0c;而且我比较喜欢打字。因此知识点归纳总结还是以叙述的口吻来说说&#xff0c;并结合我的理解加以论述。k8s和docker首先讲一讲docker和…

基于Node.js+Express的电商管理平台的设计与实现/基于vue的网上购物商城的设计与实现/基于Node.js+Express的在线销售系统

基于Node.jsExpress的电商管理平台的设计与实现/基于vue的网上购物商城的设计与实现/基于Node.jsExpress的在线销售系统

Git 对象存储:理解底层原理,实现高效排错与存储优化

### 探秘 Git 对象存储&#xff1a;底层原理与优化实践#### 一、Git 对象存储的底层原理 Git 采用**内容寻址文件系统**&#xff0c;核心机制如下&#xff1a; 1. **对象类型与存储** - **Blob 对象**&#xff1a;存储文件内容&#xff0c;通过 git hash-object 生成唯一 SHA-…

【2025CVPR-目标检测方向】RaCFormer:通过基于查询的雷达-相机融合实现高质量的 3D 目标检测

1. 研究背景与动机​ ​问题​:现有雷达-相机融合方法依赖BEV特征融合,但相机图像到BEV的转换因深度估计不准确导致特征错位;雷达BEV特征稀疏,相机BEV特征因深度误差存在畸变。 ​核心思路​:提出跨视角查询融合框架,通过对象查询(object queries)同时采样图像视角(原…

【每日一题】Day 7

560.和为K的子数组 题目&#xff1a; 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2 示例 2&#x…

3ds MAX文件/贴图名称乱码?6大根源及解决方案

在3ds MAX渲染阶段&#xff0c;文件或贴图名称乱码导致渲染失败&#xff0c;是困扰众多用户的常见难题。其背后原因多样&#xff0c;精准定位方能高效解决&#xff1a;乱码核心根源剖析字符编码冲突 (最常见)非ASCII字符风险&#xff1a; 文件路径或名称包含中文、日文、韩文等…