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

发布于:2025-08-18 ⋅ 阅读:(10) ⋅ 点赞:(0)

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


网站公告

今日签到

点亮在社区的每一天
去签到