初始文档

This commit is contained in:
2026-01-14 11:27:47 +08:00
parent 84a58e8daf
commit 564285cf07
62 changed files with 8729 additions and 0 deletions

305
Linux/Linux通用文档.md Normal file
View File

@@ -0,0 +1,305 @@
# 文件管理
## ACL访问控制
# 网络管理
## nmcli命令管理网络配置
### 1.管理网络连接与状态
```sh
# 显示所有连接包括名称、UUID、类型、设备
nmcli connection show
#​仅显示活动连接​
nmcli connection show --active
# 查看所有网络设备及其状态​(如连接状态、类型):
nmcli device status
# 查看指定设备的详细信息​(如 IP、MAC 地址
nmcli device show eth0
# 删除网卡
nmcli conn delete eth0
# 添加物理网卡
nmcli connection add type ethernet ifname ens38 con-name my-ens38
# 添加网桥从接口网卡
nmcli conn add type bridge-slave ifname enp1s0 con-name enp1s0 master bridge0
# ​激活(启用)指定连接
nmcli connection up "Wired connection 1"
# 停用指定连接
nmcli connection down "Wired connection 1"
# 启用所有网络管理
nmcli networking on
# 禁用所有网络管理
nmcli networking off
# 禁用再启用设备​(相当于重启某个网卡
nmcli device disconnect eth0 && nmcli device connect eth0
# 重新加载连接配置​(修改配置文件后
nmcli connection reload
# 检查网络连通性
nmcli networking connectivity
# 监控网络状态变化
nmcli monitor
# 重载配置
nmcli conn reload
# 修改设备名称
sudo nmcli connection modify "旧连接名" connection.id "新连接名"
```
### 2.wifi管理
```sh
# 列出所有可用的 Wi-Fi 网络​
nmcli device wifi list
# 连接到有密码保护的 Wi-Fi 网络
nmcli device wifi connect "SSID名称" password "你的密码"
# 连接到隐藏的 Wi-Fi 网络​
nmcli device wifi connect "SSID名称" password "你的密码" hidden yes
# 断开当前 Wi-Fi 连接​
nmcli device disconnect wlan0 # wlan0 为你的无线设备名
# 打开 Wi-Fi
nmcli radio wifi on
# 关闭 Wi-Fi
nmcli radio wifi off
# 扫描wifi
nmcli device wifi rescan
```
### 3.有线网络管理
```sh
# 配置静态 IP 地址
nmcli connection modify "eth0" ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns 8.8.8.8
# 激活配置使其生效
nmcli connection up "eth0"
# 配置动态 IPDHCP
# 将 IPv4 方法设置为自动以通过 DHCP 获取 IP
nmcli connection modify "eth0" ipv4.method auto
nmcli connection up "eth0"
# 添加多个 IP 地址
# 为连接 eth0 添加一个辅助 IP 地址
nmcli connection modify "eth0" +ipv4.addresses "192.168.1.101/24"
nmcli connection up "eth0"
```
# 磁盘管理
### LVM虚拟磁盘
#### LVM功能介绍
**LVM**Logical Volume Manager逻辑卷管理是Linux系统中一种强大的**磁盘管理机制**,它在物理磁盘和文件系统之间增加了一个抽象层,使管理员能够**灵活地管理存储空间**。LVM通过将物理存储资源虚拟化允许动态调整磁盘容量而无需重新分区或中断系统运行极大提高了存储管理的便捷性和效率。
LVM的核心组件包括**物理卷PV**、**卷组VG**和**逻辑卷LV**。物理卷是LVM的基本存储单元可以是整个物理磁盘或磁盘分区卷组由一个或多个物理卷组成形成一个存储池用于统一管理物理存储资源
逻辑卷是从卷组中划分出的虚拟磁盘分区可以在其上创建文件系统并挂载使用LVM的最小存储单元是**物理扩展块PE**默认大小为4MB物理卷被划分为多个PE逻辑卷则由多个逻辑扩展块LE组成LE与PE一一对应。
LVM的**工作原理**是通过抽象层屏蔽下层物理磁盘的布局,提供统一的存储视图。管理员可以动态调整逻辑卷的大小,添加或移除物理卷,而无需关心数据的物理存储位置,这种机制使得存储管理更加灵活,特别适用于需要频繁调整存储空间的场景。
_表LVM核心组件及其功能
|**组件**|**全称**|**功能描述**|
|---|---|---|
|**PV (Physical Volume)**|物理卷|LVM的基本存储单元可以是物理磁盘或分区被划分为多个PE|
|**VG (Volume Group)**|卷组|由一个或多个PV组成的存储池用于集中管理物理存储资源|
|**LV (Logical Volume)**|逻辑卷|从VG中划分出的虚拟磁盘分区可格式化为文件系统并挂载使用|
|**PE (Physical Extent)**|物理扩展块|PV中可分配的最小存储单元默认大小为4MB|
|**LE (Logical Extent)**|逻辑扩展块|LV中可分配的最小存储单元与PE大小相同且一一对应|
##### LVM分区与传统分区对比
|特性|传统分区|LVM (逻辑卷管理)|
|---|---|---|
|**灵活性**|分区大小固定,调整困难且风险高|**可动态调整**逻辑卷大小,无需重启|
|**存储池**|每个分区独立,无法合并使用|将**多个物理磁盘/分区**整合为单一存储池(卷组)|
|**扩展性**|新增硬盘需手动迁移数据|可轻松将新硬盘加入现有存储池,​**无缝扩展**容量|
|**高级功能**|不支持|支持**快照**​(用于备份)、**条带化、镜像**等|
|**管理复杂度**|简单直观|需要学习额外概念和命令|
|**性能**|无额外开销|有**轻微性能开销**|
|**数据恢复**|相对简单|略复杂,需专用工具|
**✅ 推荐使用 LVM 的场景:​**
- **服务器环境**​:需要灵活调整分区大小,避免因某个分区空间耗尽而停机维护
- **多磁盘系统**​:希望轻松整合多个物理磁盘的容量,并能够从存储池中按需分配空间
- **需要高级功能**​:如使用快照功能进行在线备份
- **不确定未来存储需求时**LVM 提供了未来调整的余地,无需在初始分区时就精确设定不可更改的大小
**❌ 可能无需 LVM 的场景:​**
- **简单的桌面系统**​:磁盘分区结构固定,没有调整需求
- **嵌入式设备或小型系统**​:对存储需求非常固定,且资源有限
- **对 I/O 性能极其敏感的应用**​:希望避免 LVM 可能带来的轻微性能开销
#### 物理卷PV操作
```sh
# pvcreate将物理设备初始化为物理卷
pvcreate /dev/sdb1 #将分区/dev/sdb1初始化为物理卷
# pvdisplay显示物理卷的详细信息
pvdisplay /dev/sdb1 #显示指定物理卷的详细信息
# pvscan扫描系统中所有的物理卷
pvscan #列出系统中所有物理卷
# pvs以简洁格式显示物理卷信息
pvs #提供物理卷的概要信息
# pvremove移除物理卷上的LVM元数据
pvremove /dev/sdb1 #移除/dev/sdb1上的LVM标识使其不再为物理卷
# pvmove在卷组中移动物理卷上的数据
pvmove /dev/sdb1 #将数据从/dev/sdb1移动到卷组中的其他物理卷
# pvchange更改物理卷的属性
pvchange -x n /dev/sdb1 #禁止从物理卷/dev/sdb1分配PE
```
#### 卷组VG操作
```sh
#vgcreate创建卷组
vgcreate my_vg /dev/sdb1 /dev/sdb2 #使用两个物理卷创建名为 my_vg的卷组
# vgdisplay显示卷组的详细信息
vgdisplay my_vg #显示指定卷组的详细信息
# vgscan扫描系统中所有的卷组
vgscan #检测并列出系统中所有卷组
# vgs以简洁格式显示卷组信息
vgs #提供卷组的概要信息
# vgextend扩展卷组容量添加物理卷
vgextend my_vg /dev/sdc1 #将物理卷/dev/sdc1添加到卷组my_vg中
# vgreduce缩减卷组容量移除物理卷
vgreduce my_vg /dev/sdb1 #从卷组my_vg中移除物理卷/dev/sdb1
# vgremove删除卷组
vgremove my_vg #删除名为 my_vg的卷组
# vgchange更改卷组属性如激活/停用)
vgchange -a n my_vg #停用卷组 my_vg
# vgexport导出卷组
vgexport my_vg #将卷组 my_vg从系统中导出常用于系统间移动卷组
# vgimport导入卷组
vgimport my_vg #将卷组 my_vg导入系统
```
#### 逻辑卷LV操作
```sh
# lvcreate创建逻辑卷,大写L指定容量,小写l使用百分比
lvcreate -L 10G -n my_lv my_vg #在卷组 my_vg中创建大小为10G、名为 my_lv的逻辑卷
lvcreate -l 100%FREE -n lv_name vg_name #将卷组所有空间划分给逻辑卷
# lvdisplay显示逻辑卷的详细信息
lvdisplay /dev/my_vg/my_lv #显示指定逻辑卷的详细信息
# lvscan扫描系统中所有的逻辑卷
lvscan # 检测并列出系统中所有逻辑卷
# lvs以简洁格式显示逻辑卷信息
lvs #提供逻辑卷的概要信息
# lvextend扩展逻辑卷容量
lvextend -L +5G /dev/my_vg/my_lv #将逻辑卷 my_lv扩展5G
# lvreduce缩减逻辑卷容量 (需谨慎操作)
lvreduce -L -2G /dev/my_vg/my_lv #将逻辑卷 my_lv缩减2G (务必先备份数据并卸载文件系统)
# lvremove删除逻辑卷
lvremove /dev/my_vg/my_lv #删除逻辑卷 my_lv
# lvresize调整逻辑卷大小扩展或缩减
lvresize -L 15G /dev/my_vg/my_lv #将逻辑卷 my_lv大小调整为15G
# lvrename重命名逻辑卷
lvrename my_vg old_lv_name new_lv_name #将逻辑卷重命名
```
#### 创建新卷组和逻辑卷
```sh
# 1.使用lsblk命令查看磁盘设备树
# 2.将新磁盘初始化为lvm
sudo pvcreate /dev/sdb1
# 3.将一个或多个物理卷加入卷组
sudo vgcreate vg_name /dev/sdb1 /dev/sdc1
# 4.创建一个逻辑卷
sudo lvcreate -L 20G -n lv_name vg_name
# 5.格式化新创建的逻辑卷为ext4
sudo mkfs.ext4 /dev/vg_name/lv_name
# 挂载格式化后的逻辑卷
sudo mkdir /mnt/data && mount /dev/vg_name/lv_name /mnt/data
```
#### 逻辑卷扩容
```sh
# 1.使用lsblk命令查看磁盘设备树
# 2.将新磁盘初始化为lvm
sudo pvcreate /dev/sdb1
# 3.将新的物理卷加入卷组
sudo vgextend vg_name /dev/sdb1
# 4.扩展已有的lv逻辑卷
sudo lvextend -L +10G /dev/my_vg/my_lv
# 扩展逻辑卷后需要更新文件系统,新创建的不需要,否则df命令看不到空间扩容
# 针对ext4格式
resize2fs /dev/vg_data/lv_data
# 针对xfs格式
xfs_growfs /dev/vg_data/lv_data
# xfs系统不支持缩容,ext4缩容风险较高,注意备份
```
#### 移除LVM磁盘步骤
```sh
# 1.确认物理磁盘使用情况
pvs -o+pv_used
# 2.检查其他卷组是否有空间进行数据迁移
vgs
# 均匀迁移sdb1的数据到其他卷组
sudo pvmove /dev/sdb1
# 迁移sdb1的数据到指定卷组
sudo pvmove /dev/sdc1
# 使用pvs -o+used确认卷组清空,然后移除卷组
sudo vgreduce vg_name /dev/sdb1
# 移除物理卷元数据
sudo pvremove /dev/sdb1
```
## 挂载外置存储
```sh
# 挂载nfs存储
showmount -e 服务器地址 # 显示目标服务器的可挂载路径
sudo mkdir /mnt/nfs #创建挂载目录
sudo mount -t nfs 服务器地址:/path/name /mnt/nfs
# 挂载本地iso文件
sudo mkdir /mnt/iso
mount -o loop /path/file.iso /mnt/iso
```
# 安全管理
# 系统管理
# 用户管理
# 软件源管理
## 添加软件源
```sh
# 查看所有软件源
dnf repolist all
# 安装epel源
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
# 启用epel源
subscription-manager repos --enable epel
```