云原生俱乐部-RH134知识点总结(2)

这一章的内容也会比较多,因为预期三篇文章更完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 则是用于删除卷组。

相关推荐
小白跃升坊15 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
Gary董15 小时前
高并发的微服务架构如何设计
微服务·云原生·架构
东哥爱编程15 小时前
使用Runpod进行gpu serverless推理
云原生·serverless
跃渊Yuey15 小时前
【Linux】线程同步与互斥
linux·笔记
舰长11515 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
zmjjdank1ng15 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.15 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
VekiSon16 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
zl_dfq16 小时前
Linux 之 【进程信号】(signal、kill、raise、abort、alarm、Core Dump核心转储机制)
linux
Ankie Wan16 小时前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc