云原生俱樂部-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 則是用于刪除卷組。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處: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; 文件路徑或名稱包含中文、日文、韓文等…