Linux基础全套(未优化,但很全)
linux全称GNU/unix,是一种免费使用和自由传播的类unix操作系统,是一种多任务,多用户,支持多线程和多cpu的操作系统,如Debian,Rhel,SUSE,Oracle Linux。
unix也是一种操作系统,但是其商业化后变得非常封闭且昂贵,且都和价格较高的机器绑定,而linux开源且免费,可靠稳定,性价比很高。
操作系统是连接软硬件的中间层,软件上执行的操作通过操作系统传递给硬件进行响应。
Linux特点:
免费开源,可靠稳定安全,多平台(手机,数码相机等),多用户多任务,多线程多cpu
安卓系统是基于linux开发的系统,主要用于便携设备手机,数码相机,平板电脑等,由google公司开发
红帽是一家开源软件方案供应商,总部位于美国,主要为操作系统,储存,中间件,虚拟化和云计算提供支持服务,红帽的开发源码模式为企业提供跨物理,虚拟,云平台的企业运算解决方案,帮助企业降本增效。也同时和全球用户合作提供技术支持,咨询培训服务
2018年10月29日,ibm以340亿美元收购red hat,其设计领域包括操作系统,储存,云计算,中间件和虚拟化
1.红帽企业Linux7 2014年6月发布,基于rhel7操作系统,企业可整合裸机服务器,虚拟机,基础设施即服务,平台即服务,构建一个强大的数据中心,满足各式各样的需求,最后的版本是7.9
2.红帽企业linux8 2019年5月发布,基于rhel8操作系统,针对混合云时代重新设计的操作系统,旨在支持从企业数据中心到多个公共云的负载和操作,最后的版本是8.5
3.红帽企业Linux9 2022年5月发布,第一个基于centos stream 构建的rhel9操作系统,从裸机服务器,云提供商,到最边缘的企业网络,该系统能跨越混合云环境,推动更加一致的创新,最后的版本是9.6
4.红帽企业Linux10 2025年5月21日发布,基于linux6.12内核开发,是一款企业级操作系统,该系统整合了红帽的云原生技术,安全架构,和ai方面的创新技术,专为混合云和企业运算技术设计
Centos Linux发行版是一款稳定的,可预测的,可复现的,可管理的平台,源于RHEL基于开放源代码规定释出的源码编译的,它是一款开源项目,旨在与RHEL在功能上兼容
Centos完全免费,可以在它的基础上构筑和rhel一样的企业级linux操作系统,不需要向其支付费用
每个版本的Centos都可以通过安全更新获得10年的支持,大概每两年发布一次的新的Centos系统,每个版本大概6个月更新一次以便支持新的硬件,通过这样建立一个安全稳定,高预测性,高重复性的linux环境
CentOS Linux、CentOS Stream 和 RHEL 同属红帽生态,核心差异在于开发位置、更新模式、支持与稳定性,三者是上下游与商业/社区的关系。
一、三者的核心联系(红帽生态链)
它们共享同一套技术栈,形成完整的开发与发布链路:
- Fedora:最上游,是新技术、新功能的试验场。
- CentOS Stream:RHEL 的上游开发分支,用于预发布、测试、集成即将进入 RHEL 的代码。
- RHEL(Red Hat Enterprise Linux):经过严格测试、稳定发布的商业企业版。
- CentOS Linux(已停止):RHEL 的下游重建版,是 RHEL 发布后的免费克隆。
一句话总结:
Fedora → CentOS Stream → RHEL → CentOS Linux(已停)
二、三者详细区别对比
1. 定位与开发位置
- RHEL(红帽企业Linux)
- 定位:商业付费企业级发行版,面向生产环境,提供官方支持与SLA。
- 位置:下游稳定版,所有代码经过充分测试后发布。
- CentOS Linux(传统CentOS)
- 定位:免费社区版,RHEL 的“免费克隆”,移除红帽商标。
- 位置:RHEL 的下游,在 RHEL 发布后,基于其源码重新编译而成。
- CentOS Stream
- 定位:免费滚动开发版,RHEL 的“预览版/开发版”。
- 位置:RHEL 的上游,代码会先进入 Stream,测试稳定后才合并到 RHEL。
2. 更新与发布模式
- RHEL
- 固定版本号(如 RHEL 8、9),定期发布小版本。
- 更新保守、严格,追求极致稳定,补丁以安全修复为主。
- CentOS Linux
- 与 RHEL 版本一一对应(如 CentOS 8 对应 RHEL 8)。
- 大版本更新滞后 RHEL 数月,小更新同步但略晚。
- CentOS Stream
- 滚动更新,没有传统意义上的“小版本发布”,代码就绪即推送。
- 版本号对应 RHEL 大版本(如 Stream 9 对应 RHEL 9 系列),持续接收下一个 RHEL 小版本的代码。
3. 生命周期与支持
- RHEL
- 付费订阅,提供**10年+**官方技术支持、安全补丁、硬件认证、知识库等。
- 有完整的服务等级协议(SLA)。
- CentOS Linux
- 社区支持,无官方SLA。
- 已停止更新:CentOS 8 已于 2021-12-31 结束支持;CentOS 7 于 2024-06-30 结束支持。
- CentOS Stream
- 社区支持,无官方SLA。
- 生命周期与对应 RHEL 大版本的全支持阶段一致(约5年)。
4. 稳定性与适用场景
- RHEL
- 最高稳定性,经过红帽全面QA与硬件认证。
- 适用:生产环境、关键业务、数据库、核心服务器。
- CentOS Linux
- 极高稳定性,与 RHEL 二进制兼容。
- 适用:非关键生产、学习、测试(现已不可用)。
- CentOS Stream
- 稳定性中等,比 Fedora 稳,但比 RHEL 激进。
- 适用:开发、预生产、测试、提前体验 RHEL 新特性,不建议用于核心生产。
三、关键时间线与现状
- 2020年底:红帽宣布CentOS Linux 8 提前终止,重心转向 CentOS Stream。
- 2021-12-31:CentOS Linux 8 停止支持。
- 2024-06-30:CentOS Linux 7 停止支持。
- 现状:
- RHEL:主流商业企业版,持续更新。
- CentOS Linux:历史产物,不再维护。
- CentOS Stream:红帽官方主推的社区版,是未来 RHEL 小版本的上游,开发公测版。
国产linux
1.kylin os:麒麟软件公司开发, Debian系
2.Red Flag os:红旗软件公司开发,Debian系
3.中科方德 os:中科方得软件公司开发,Debian系
4.New Star os:由中兴通讯子公司中兴新支点开发
5.deepin os:武汉深之度科技公司开发,Debian系
6.统信U os:统信软件技术公司开发,Debian系
7.Start os:东莞软件技术公司开发,前身是雨林木风 os,Debian系
*8.Euler os:华为捐赠给开放原子开源中心的linux操作系统,基于Centos源代码开发,面向企业级的商用linux发行版,开源(Open Euler os)
9.Hope Edge os:江苏润和软件公司开发的一款轻量级物联网linux操作系统
10.Fyde os:燧炻科技公司开发的一款轻量级中国版google chrome操作系统
11.Harmoney os:华为开发的鸿蒙系统,用于物联网和智能终端
*12.CTyun os:基于华为的开源欧拉,经过中国电信天翼技术团队的改进,CTyun os内核的各项性能指标全面提升,相比于Centos7.6cpu调度时延降低了约5%,存储关键路径每面读写次数提升了约3%,容器部署密度也大约提升了3%
VMware workstation Pro
可以借助它在单台linux或者pc windows上作为虚拟机安装多个操作系统
1.选择安装语言,推荐选择英文
2.日期时间选择上海时区时间
3.键盘选择默认
4.语言环境
5.介质源默认,也就是我们选择的镜像,可以远程下载
6.定制软件包按需安装,可以选择最小的安装,后续如果需要可以安装完成后自行安装
7.磁盘分区,类似于windows分盘,通常是三个分区(boot,/,swap(交换分区))
swap相当于windows的虚拟内存
关于swap分区,实际上就是从硬盘上划分出来的一小块分区,当物理内存不够的时候,为了不让系统崩溃,操作系统将那些在后台不活跃的进程或者缓存挪到swap分区,将物理内存腾出来给占用较大的进程用
如果是物理内存小于4gb,那么swap内存就可以设置两倍的物理内存大小,如果大于4gb,就可以设置2或4的固定值,防止操作系统性能下降,swap内存只是做应急用
换出:将不活跃的进程挪进swap分区
换入:不活跃的进程被唤醒重新进入物理内存,此时可能会挤掉其他进程
8.Kdump(关闭),是Linux中一个内核转储机制,用于在内核崩溃时保存相关信息,平常我们个人使用时可以关闭它,因为使用kdump需要预留一部分物理内存,这对个人开发者测试是极其不值得,且如果内核崩溃一般都是开发者自己的原因无需分析内核转储的文件,一般只需要重装系统就能解决
内核转储的文件可能非常巨大,基本等同物理大小,如果磁盘太小很容易爆满导致故障
9.网络和主机名,需要远程下载资源时网络可以选择打开,主机名可以自己设置
10.安全策略,通过scap(Security Content Automation Protocol)标准定义,如果设定了安全策略安装程序会自动把系统配置为符合安全标准的状态,例如强密码策略,ssh端口配置
在实际生产环境中一般不会选择很严格的安全策略,因为其有可能会导致一些老旧的脚本跑不通,服务器部署变得困难,更加推荐系统安装完成后,根据业务需求一步步手动加固,这样更灵活,排查问题也方便
11.root密码
12.创建普通用户
13.license接受
14.桌面初始化,首语言选择
15.关闭selinux(安全增强型linux),
selinux旨防提权,防止横向移动,严格规定用户的权限范围,让有些危险的操作即使是root用户也不能执行
vim /etc/selinux/config
SELINUX=disabled
重启后生效
一共有三种模式
1.严格模式Enforcing(阻止并记录)
2.宽容模式Permissive(不阻止但记录)
3.禁用模式Disabled(完全关闭)不加载安全策略
setenforce 0 临时关闭selinux,相当于切换到Permissive
getenforce 获取selinux状态
16.重启(reboot,shutdown -r 0) r是restart h是halt
安全关闭系统 shutdown -h 0
runlevel等级介绍
等级 英文名称 状态 用途 对应 systemd Target
0 Halt 关机 安全停机、断电 poweroff.target
1 Single User 单用户 维护、修密码、文件系统 rescue.target
2 Multiuser 多用户 本地多用户、无网络 multi-user.target(部分等同 3)
3 Multiuser with Network 完整多用户(文本) 服务器默认、远程登录、网络服务 multi-user.target
4 Reserved 保留 自定义、特殊场景 自定义
5 Graphical 图形界面 桌面、GUI 登录 graphical.target
6 Reboot 重启 正常重启、循环重启 reboot.target
桌面布局介绍
Ctrl+Alt+F1图形界面模式
Ctrl+Alt+F2命令行界面模式
设置主机名为自己姓名全拼
hostnamectl set-hostname zhongli
Bash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell 。事实上,还有许多传统UNIX上用的Shell,例如tcsh、csh、ash、bsh、ksh等等,Shell Script大致都类同,当您学会一种Shell以后,其它的Shell会很快就上手,大多数的时候,一个Shell Script通常可以在很多种Shell上使用。
bash是大多数Linux系统以及Mac OS X默认的shell,它能运行于大多数类Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现Windows的POSIX虚拟接口
环境变量设置
.bashrc与.bash_profile区别
[root@thy ~]#
[thy@thy root]$
tab补全信息 上下翻命令
常用快捷操作
ctrl+a 移动光标至行首
ctrl+e 移动光标至行尾
ctrl+u 剪切光标到行首处的字符
ctrl+向左箭头
ctrl+向右箭头
ctrl+d 退出终端
ctrl+c 终止当前正在运行的命令
基础命令
date:查看/更改系统时间uptime:查看系统自启动以来的运行时长who:查看当前登录系统的用户身份history:查看成功运行的命令历史记录hostname:查看当前主机名whoami:查看当前登录的用户名id:查看当前用户的UID/GID等身份信息uname -a:查看系统详细内核信息cat /etc/redhat-release:查看红帽系列系统版本信息cat /proc/cpuinfo:查看CPU硬件详细信息cat /proc/meminfo:查看物理内存详细信息free:查看物理内存的可用/使用大小su:用户提权/切换(su - name带环境变量切换,su name仅切换用户)passwd:更改当前用户/指定用户密码chown:设置文件/目录的所有者和所属组chmod:设置用户对文件/目录的读、写、执行权限ls:列出当前目录下的所有文件和目录cd:切换工作目录(cd ~回主目录,cd ..回上级目录)pwd:显示当前工作目录的完整绝对路径cp:复制文件/目录(cp -r递归复制目录)rm:删除文件/目录(rm -rf强制递归删除)mv:移动/重命名文件/目录mkdir:创建目录(mkdir -p递归创建多级目录)rmdir:删除空目录file:查看指定文件的类型/属性touch:创建空文件/更改文件的时间戳属性find:在指定目录下查找文件/目录du:显示指定文件/目录占用的磁盘空间大小df:显示文件系统的磁盘空间使用情况(含挂载点、使用率)ifconfig:查看/更改网卡网络配置netstat:查看网络连接、端口、路由等配置信息route:查看/更改系统路由表mount:挂载文件系统/设备umount:卸载已挂载的文件系统/设备gzip:压缩文件(生成.gz格式,原文件消失)gunzip:解压缩.gz文件(等同于gzip -d)tar:打包/压缩/解压缩(常用:tar -zcvf压缩,tar -zxvf解压缩)cat:一次性输出文件全部内容more:滚动式查看文件内容(仅向下翻)less:分页式查看文件内容(上下翻、搜索)tail:查看文件行尾内容(tail -f实时监控最新内容)head:查看文件行首内容man:查看命令/配置文件的帮助手册(最常用)info:查看更详细的命令说明--help:查看命令的简易帮助文档(如ls --help)top:实时动态显示当前正在运行的进程(按资源占用排序)ps:查看当前系统的进程状态(常用ps -ef)kill:杀死指定进程(kill -9 进程ID强制杀死)clear:清空终端屏幕内容which:查找可执行文件的绝对路径whereis:查找可执行文件的二进制、源代码、man手册路径bc:调用任意精度计算器(终端内进行数值计算)
如何查看cpu,内存和磁盘使用情况
top,lscpu
free -h
df -h
top总结补充
二、top 界面逐行详解(最核心)
第 1 行:系统整体状态(时间、登录、负载)
1 | top - 15:30:00 up 10 days, 3:45, 2 users, load average: 0.05, 0.03, 0.01 |
含义:
15:30:00:当前系统时间up 10 days:系统已运行 10 天(没重启)2 users:当前登录 2 个用户load average: 0.05, 0.03, 0.01:1分钟、5分钟、15分钟系统平均负载- 单核 CPU:>1 就开始忙
- 多核 CPU:总核数以内都正常
第 2 行:进程总数统计
1 | Tasks: 150 total, 1 running, 148 sleeping, 0 stopped, 1 zombie |
total:总进程数running:正在运行的进程sleeping:休眠进程(最常见)stopped:停止的进程zombie:僵尸进程(已经结束,但是系统还未清理)
第 3 行:CPU 使用率(最重要)
1 | %Cpu(s): 2.0 us, 0.5 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 0.5 si, 0.0 st |
每个字段含义:
us:用户进程占用 CPU(正常 1–30%)sy:系统内核占用 CPUni:优先级调整过的进程id:空闲 CPU(越高越好)wa:IO 等待(硬盘慢、磁盘压力大时升高)hi:硬件中断si:软件中断st:虚拟化被偷走的资源(云服务器,物理机抢占cpu时间越长值越高)
快速判断:
- id 很低 → CPU 满了
- wa 很高 → 硬盘/IO 慢
第 4 行:内存(Mem)
1 | MiB Mem : 3800 total, 1200 free, 1500 used, 1100 buff/cache |
total:总内存free:完全空闲内存used:已用内存buff(写到硬盘.设备时的临时缓冲)/cache(从硬盘,设备读出的缓存):系统缓存(不是真的被占用)
重点:
Linux 会把空闲内存当缓存,所以used 高不代表内存不够,要看 free + buff/cache。
第 5 行:交换分区(Swap)
1 | MiB Swap: 2048 total, 2048 free, 0 used,1024 avail mem |
used越高 → 内存越不够用- 经常 swap 被使用 → 建议加内存
-avail mem真实可用的物理内存
三、top 进程列表(最关键的监控区域)
从第 7 行开始是进程列表:
1 | PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND |
每一列含义(必须掌握)
- PID:进程 ID(杀进程用)
- USER:进程所属用户
- PR:进程的实际优先级
- NI:nice 值(负数=优先级高,用户调整的优先级偏移量)
- VIRT:虚拟内存(不代表真实占用,进程预估/预测的内存使用量)
- RES:真实物理内存占用(重点看)
- SHR:共享内存
- S:进程状态
- R = running
- S = sleeping
- Z = zombie(僵尸)
- %CPU:CPU 使用率
- %MEM:内存使用率
- TIME+:进程累计占用 CPU 时间
- COMMAND:进程名称
四、top 常用快捷键
P:按 CPU 使用率排序(最常用)M:按内存使用率排序1:显示每个 CPU 核心使用率q:退出 toph:帮助k:输入 PID 杀进程c:显示完整命令行u:按用户查看进程
vi编辑器
三种模式
1)命令模式 dd剪切 yy复制 G跳转到最后一行 gg跳转到第一行
:进入底线命令模式 p粘贴内容到光标下方 P粘贴内容到光标上方 u撤销上一次的操作 Ctrl+r重做上一次的撤销操作
2)插入模式 按a或者i,o,O进入插入模式
3)esc:进入底线命令模式
|grep
关于grep:按字符串 / 正则搜索文本并输出匹配行
1 | -v是grep排除的参数,例:查询不包含字母abc的行,例如cat test.txt |grep -v 'abc' |
1 | cat /etc/ssh/sshd_config|grep -v ^# |grep -v ^$>>/tmp/a.log |
目录结构
/根目录
/usr 系统软件、应用程序、库、命令存放处
/bin用户级二进制文件存放目录 /sbin系统级二进制文件存放目录 centos7、8中是usr/bin或者usr/sbin的软链接
/var/ 经常变化、不断增长的文件,系统级日志目录
/boot 启动系统要用的文件:内核、grub 引导文件
/etc 系统环境配置文件目录
/opt 用户的安装程序目录,第三方软件目录
/tmp 临时文件,谁都能写,重启自动清空
/dev 设备文件目录
硬盘:/dev/sda、/dev/sdb
光驱:/dev/cdrom
终端:/dev/tty
空设备:/dev/null
无限填0的设备:/dev/zero
/home 普通用户家目录
/lib 动态链接库目录
/proc 进程和缓存目录 (不占硬盘,内存动态生成的虚拟文件系统),操作系统运行时的状态
总结/var/log
存放系统与所有服务的日志文件,默认只有 root 能完整查看
| 文件名 | 核心用途 | 查看场景 & 常用命令 |
|---|---|---|
anaconda |
Anaconda 安装程序日志(系统安装/重装时生成) | 排查系统安装失败、分区/包安装异常cat /var/log/anaconda |
audit |
审计日志目录(auditd 服务生成) | 记录系统所有安全相关操作(文件访问、权限变更、系统调用)ausearch -i(需安装 audit 工具) |
boot.log / boot.log-20260310 |
系统启动日志(内核、服务初始化过程) | 排查开机卡慢、服务启动失败tail -100 /var/log/boot.log |
btmp |
失败的登录记录(暴力破解、密码错误) | 看谁在尝试非法登录lastb(直接调用工具,不直接 cat) |
chrony |
时间同步服务(chronyd)日志 | 排查服务器时间不准、NTP 同步失败tail /var/log/chrony/chronyd.log |
cron |
定时任务(crontab/at)执行日志 | 排查定时任务没运行、运行报错grep "任务名称" /var/log/cron |
dmesg / dmesg.old |
内核启动/硬件驱动日志 | 排查硬件识别失败(网卡/硬盘/显卡)、内核报错cat /var/log/dmesg | grep -i error |
lastlog |
所有用户最后一次登录的记录 | 查某个用户最后登录时间lastlog -u 用户名(工具调用) |
messages |
系统总日志(内核+大部分服务的通用日志) | 90%的系统问题先看它(服务报错、系统警告、硬件信息)grep -i "error|fail" /var/log/messages |
tallylog |
用户登录失败次数统计日志(pam_tally2 模块) | 排查用户被锁定(密码输错次数过多)pam_tally2 -u 用户名 |
tuned |
系统性能调优服务(tuned)日志 | 排查性能调优策略未生效tail /var/log/tuned/tuned.log |
wtmp |
成功的登录/注销记录(含开关机) | 查谁登录过、登录时长last(直接调用工具,不直接 cat) |
yum.log |
YUM 包管理器日志(安装/升级/卸载软件) | 排查包安装失败、依赖冲突grep "包名" /var/log/yum.log |
httpd |
Apache 网页服务器日志目录 | 包含 access_log(访问记录)、error_log(错误记录)排查网页打不开、访问报错tail /var/log/httpd/error_log |
cups |
打印机服务(CUPS)日志目录 | 排查打印机无法连接、打印任务失败tail /var/log/cups/error_log |
firewalld |
防火墙(firewalld)日志目录 | 排查端口被拦截、防火墙策略不生效grep -i "denied" /var/log/firewalld/firewalld.log |
ntpstats |
NTP 时间同步统计日志(旧版 ntpd 服务) | 补充 chrony 日志,排查时间同步历史cat /var/log/ntpstats/peerstats |
ppp |
拨号/PPP 网络连接日志 | 排查宽带拨号、VPN(PPP 协议)连接失败cat /var/log/ppp/connect-errors |
pluto |
IPsec/StrongSwan VPN 服务日志 | 排查 VPN 隧道建立失败、加密协商错误grep -i "pluto" /var/log/messages(也可看此文件) |
rhsm |
红帽订阅管理(RHSM)日志 | 排查系统订阅失效、yum 源无法访问(红帽/centos)tail /var/log/rhsm/rhsm.log |
sa |
系统活动统计日志目录(sar 工具) | 记录 CPU/内存/磁盘 IO 历史数据sar -f /var/log/sa/sa20(20 是日期) |
samba |
Samba 服务(文件共享)日志目录 | 排查 Windows 访问 Linux 共享文件夹失败tail /var/log/samba/smbd.log |
secure |
安全认证日志 | 记录 SSH 登录、sudo 操作、用户权限变更grep "ssh" /var/log/secure(查 SSH 登录) |
speech-dispatcher |
语音合成服务日志(桌面系统) | 仅桌面版有用,服务器可忽略,排查语音播报异常 |
spooler |
打印队列日志(旧版) | 补充 cups 日志,排查打印任务排队失败 |
sssd |
身份认证服务(SSSD)日志 | 排查 LDAP/AD 域用户登录失败tail /var/log/sssd/sssd.log |
wpa_supplicant.log |
WiFi 连接服务日志(桌面/笔记本) | 排查 WiFi 认证失败、连接掉线(服务器一般无) |
libvirt |
KVM/QEMU 虚拟化服务日志目录 | 排查虚拟机启动失败、硬件挂载异常tail /var/log/libvirt/qemu/虚拟机名.log |
qemu-ga |
QEMU 客户机代理日志 | 排查宿主机控制虚拟机(如修改配置)失败cat /var/log/qemu-ga.log |
swtpm |
虚拟 TPM 模块日志(虚拟机加密) | 排查虚拟机 TPM 初始化失败、加密启动异常tail /var/log/swtpm/swtpm.log |
vmware |
VMware 相关日志总目录 | 包含所有 VMware 服务日志,以下是子文件: |
vmware-network.1.log ~ vmware-network.9.log |
VMware 网络服务日志(按序号轮转) | 排查虚拟机网络不通、虚拟网卡创建失败 |
vmware-network.log |
VMware 网络服务最新日志 | 同上,优先看此文件grep -i "network" /var/log/vmware-network.log |
vmware-vgauthsvc.log.0 |
VMware 授权服务日志 | 排查 VMware 认证失败、权限不足 |
vmware-vmsvc-root.log |
VMware 虚拟机服务(root 用户)日志 | 排查虚拟机开机/关机失败、资源分配异常 |
vmware-vmtoolsd-root.log |
VMware Tools 服务日志(root) | 排查虚拟机与宿主机文件共享、剪贴板同步失败 |
vmware-vmusr-root.log |
VMware 用户态服务日志 | 排查虚拟机用户操作(如快照)失败 |
gdm |
GNOME 登录界面日志目录 | 桌面版排查图形登录失败、界面卡死 |
glusterfs |
GlusterFS 分布式存储日志(若安装) | 排查分布式文件系统挂载、同步失败 |
grubby_prune_debug |
内核启动项清理日志 | 排查内核升级后启动项异常 |
mail / maillog |
邮件服务(Postfix/Sendmail)日志 | 排查邮件发送/接收失败grep -i "mail" /var/log/maillog |
Xorg.0.log / Xorg.0.log.old |
X11 图形服务日志 | 桌面版排查显卡驱动、图形界面黑屏 |
用户及用户组
添加 删除
useradd userdel
groupadd groupdel
修改用户及用户组
usermod groupmod
/etc/passwd 存放所有用户的信息,对所有用户可读,有7段
用户名:密码占位(x 表示密码在 shadow:UID(用户 ID):GID(主组 ID):注释 / 说明:家目录
登录 Shell(/bin/bash 表示能登录)
/etc/group 存放所有用户组的信息,对所有用户可读,有4段
组名:密码占位符:GID:此组的附加用户
/etc/shadow 存放经过哈希加密过后的用户敏感信息,只有root用户可读,有9段
用户名:加密密码:最后修改时间:密码最小有效期:密码最大有效期:密码到期前警告期:不活动期密码过期后仍能登录:账号过期时间:保留字段
ls -l aaa
-rw-r–r– 1 root root 1024 3月 10 14:30 aaa
chown 修改文件或者目录 拥有者或者和拥有者及用户组
chmod 修改文件或者目录 权限
r 4 读
w 2 写
x 1 执行
用户:用户组:其他
文件所有者:文件所有者所在用户组:不属于该用户组的其他用户
常用权限组:
755
644
700
-R 对当前目录及其子目录进行递归的操作
问题:
1)特殊权限:
s:进行权限传递;有时候是大写,这时候说明文件底层没有执行权限,此时s无效
SUID4: 临时切换用户身份为文件所有者,操作执行完成之后恢复
比如passwd
SGID2:一个组用户创建的文件所属组自动变为目录的所属组,这样其他的目录所属组用户也能对文件进行操作
t:防止误操作
sticky1:同一组的用户可以任意创建文件,但是无法删除或者重命名别人的文件
比如/tmp 用户只能删除自己的临时文件
设置SUID 4777 u+s
设置SGID 2777 g+s
设置Sticky 1777 o+t
全部都给 7777 u+s,g+s,o+t
权限开头
d目录
-普通文件
l链接
软链接:可以跨文件系统,可以对目录进行链接
硬链接:不能跨文件系统 ,不能对目录链接
b块设备文件
c字符设备文件
2)设备:
b:表示块设备文件,以块为单位进行读写,随机访问有缓冲,储存量大,例如硬盘,U盘,光盘 ,我们有时候写文档没保存结果电脑突然断电,重启之后文档内容就没了,这是因为没保存的文件内容仍然在缓冲区没有写进硬盘
c:表示字符设备文件,以字符单位进行读写,顺序访问无缓冲,实时性强,例如键盘,鼠标,终端,做什么动作及时反馈,比如命令行,敲什么出来什么
sda表示整个硬盘 sda1硬盘上的一个分区 sda2也是硬盘上的一个分区 传统MBR分区只允许建立4个分区,如果要建立更多分区必须扩展一个分区,这个扩展的分区只是一个外壳,里面可以建立许多的逻辑分区,逻辑分区必须从5开始;现代为GPT分区,可以划分任意数量的分区
tty tty1代表终端(已经涵盖为终端接口的统称,泛指linux中所有与用户交互的终端会话),配置文件在/etc/systemd/logind.conf
网络配置
1、图形化界面
2、编辑配置文件 直接编辑配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33
3、nmcli(自学)用于替代ifconfig命令,修改配置精准且永久生效
查看nmcli d/c
查看网络状态
nmcli general status
管理网络连接
nmcli connection show
管理网络设备
nmcli device show
管理wifi
nmcli device wifi list
配置网络
nmcli connection modify ens33 ipv4.addresses 192.168.142.99 ipv4.gateway 192.168.142.2 ipv4.dns 114.114.114.114
nmcli网卡配置文件,格式和内容
配置文件在/etc/NetworkManager/system-connections
内容
1 | [connection] |
4、双网卡绑定(自学)bonding
分为主备模式:一张网卡主用,一张网卡做备用
和轮询模式:两张网卡一起用
将两张物理网卡绑定为一张逻辑网卡
一、核心原理
- 把 2 块物理网卡 绑定成 1 块逻辑网卡 bond0
- 常用模式:
- mode=1(主备):一块坏了自动切另一块,最稳
- mode=0(轮询):负载均衡
- 生产/考试 优先用 mode=1
二、环境说明
假设:
- 物理网卡:
eth0、eth1 - 绑定网卡:
bond0 - IP:
192.168.1.100/24 - 网关:
192.168.1.1 - DNS:
223.5.5.5
三、步骤(直接复制执行)
1. 安装 bonding 模块(一般已装)
1 | yum install -y bonding |
2. 加载模块
1 | modprobe bonding |
四、配置文件(重点)
进入网卡目录:
1 | cd /etc/sysconfig/network-scripts/ |
1)创建 bond0 配置
1 | vi ifcfg-bond0 |
内容:
1 | TYPE=Bond |
2)配置第一块网卡 eth0
1 | vi ifcfg-eth0 |
内容:
1 | TYPE=Ethernet |
3)配置第二块网卡 eth1
1 | vi ifcfg-eth1 |
内容:
1 | TYPE=Ethernet |
五、重启网络生效
CentOS 7
1 | systemctl restart network |
CentOS 8 / Rocky 8
1 | nmcli connection reload |
六、查看绑定状态
1 | cat /proc/net/bonding/bond0 |
看到:
Slave Interface: eth0Slave Interface: eth1Mode: fault-tolerance (active-backup)
就是成功了。
七、常用模式说明
- mode=0 平衡轮询(负载)
- mode=1 主备(高可用,考试/生产最常用)
- mode=4 802.3ad(需要交换机支持链路聚合)
!!!当存在多网卡时,仅第一张网卡配置默认网关,其他网卡通信写路由。
内网网卡配置静态路由 nmcli connection modify ens34 ipv4.gateway “” && nmcli connections modify ens34 +ipv4.routes”10.0.0.0/24 10.0.0.1”
相关网络命令
ifconfig 显示或设置网络设备
netstat -nr 显示ip路由表
netstat -an 显示活跃的网络连接,包括tcp(数据传输协议)、udp(用户数据报协议),走网卡,要经过复杂的网络协议;和unix套接字,走文件系统,a写b读,但不显示进程和id
netstat -natlp 显示活跃的网络tcp连接,并显示进程id和程序名
ss 查看套接字统计信息命令,速度更快,提供更详细的网络链接
ss -ln 只显示端口
ss -lnp 查端口并显示进程
ss -a 查看所有链接 tcp/udp/unix套接字
ethtool 查询修改网卡设置
ifdown/ifup 关闭或者启动指定的网卡
route add/del -host/-net 增加/删除 数据包到内网服务器的路由
route add -net 10.0.0.0/24 gw 192.168.1.254 添加路由
添加静态路由
route add -net 目标网段 netmask 子网掩码 gw 网关IP dev 网卡名
route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.254 dev ens33
添加主机路由
route add -host 目标IP gw 网关IP dev 网卡名
route add -host 192.168.2.100 gw 192.168.1.254 dev ens33
SSH 为 Secure Shell 的缩写,SSH 为建立在应用层基础上的安全协议。SSH 专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
telnet 也是远程桌面链接,默认端口为23
默认端口22,相关配置文件在/etc/ssh/下
ssh有两个配置文件,ssh_config和sshd_config,前者是客户端的配置文件,后者是服务端的配置文件
ssh配置文件修改完成后使用sshd -t验证语法,无输出则说明语法正确
从客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证)输入密码登录
第二种级别(基于密匙的安全验证)客户端生成公钥和私钥,公钥放在服务器上是加密的,私钥自己保存是解密的
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。 用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。
服务端是一个守护进程(daemon),他在后台运行并响应来自客户端的连接请求。服务端一般是sshd进程,提供了对远程连接的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。
客户端包含ssh程序以及像scp(远程拷贝)指定文件进行本地和远程的传输、slogin(远程登陆)直接登录远程服务器的shell、sftp(安全文件传输)可以浏览和传输远程服务器的文件,等其他的应用程序。
sshd_config 配置文件常见的安全加固参数修改
Port 18933 ssh;连接的默认端口
PermitRootLogin no 是否允许用户直接以root登陆,一般都需要进入提权输入密码保证安全
PermitEmptyPasswords no 是否允许空密码用户登录
PasswordAuthentication yes 是否进行密码验证 口令验证
/etc/services 端口号与服务名称的对照表,用于让系统和程序识别端口对应的服务
如果ssh登录对话框反应异常慢
修改sshd_config
改UseDNS yes 为no
systemctl stop sshd
systemctl start sshd
systemctl restart sshd
systemctl status sshd
PS:如果配置文件修改正确 但是服务启动失败 请检查selinux状态,
[root@localhost ~]# getenforce
Disabled
[root@localhost ~]#
安装方式
1.源码编译安装/configure; make; make install
1. 准备编译环境
1 | # 安装编译依赖(编译器、依赖库) |
gcc/gcc-c++:C/C++ 编译器(核心)pcre-devel:正则表达式库(Nginx 地址重写必备)zlib-devel:压缩库(传输压缩必备)openssl-devel:SSL 库(HTTPS 必备)
2. 下载源码包
1 | # 下载 Nginx 稳定版源码(可替换为最新版本) |
3. 配置编译参数(核心:自定义功能)
1 | # 配置编译参数(指定安装路径、启用/禁用模块) |
./configure –prefix=/usr/local/nginx –sbin-path=/usr/local/nginx/sbin/nginx –conf-path=/usr/local/nginx/conf/nginx.conf –with-http_ssl_module –with-http_gzip_static_module
- 执行后无报错 → 配置成功;若报错,检查依赖是否安装完整。
4. 编译 + 安装
1 | # 编译(-j 后接 CPU 核心数,加速编译,如 -j4) |
5. 验证安装 & 启动
1 | # 验证版本(确认安装成功) |
2.直接下载二进制可执行文件解压即用
1 | # 重新创建临时目录 |
步骤 1:解压安装并验证
1 | # 解压 |
3.
rpm(英文全拼:redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。
套件:软件包工具集合
rpm -qa |grep xxx 查询所有含关键词xxx的套件
rpm -ivh xxx.rpm 安装套件
rpm -e xxx删除指定的套件
rpm -e xxx –nodeps 强制卸载,不验证套件档的相互关联性,不在卸载被依赖套件时同时卸载依赖套件
qt-mysql-4.8.7-8.el7.x86_64.rpm
包名-版本号-发布号.适用系统.架构.后缀
yum
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
配置本地源
cd /etc/yum.repos.d/
vi dvd.repo
[dvd]仓库id
name=dvdrom 下载源名
baseurl=file:///dvd 下载链接或者本地dvd下的file文件
gpgcheck=0检查数字签名,防止下载被篡改的套件
gpgkey=gpg密钥文件路径
enabled=1是否启用
为什么要配置本地源
本地源快,稳,断网可用
网络源全,新,可按需更新
配置行 详细解释 关键注意事项
[dvd] 仓库 ID(repository ID)
作用:YUM 识别不同仓库的唯一标识,不能重复(如多个 repo 文件中不能有相同的 ID);✅ 要求:只能包含字母、数字、下划线、短横线,不能有空格 / 特殊字符;
示例:可改为[local-dvd],更直观。 必须用[]包裹,是配置块的开始,缺一不可。
name=dvdrom 下载源名 仓库名称(描述信息)
作用:对仓库的备注说明,方便管理员识别(如 “本地 DVD 源”),不影响 YUM 功能;
要求:可自定义,支持中文(建议用英文避免乱码)。 仅为注释,无严格格式要求,但name=前缀必须保留。
baseurl=file:///dvd 仓库地址(YUM 获取安装包的路径)
核心含义:- file://:表示本地文件协议(区别于外网的http:///ftp://);- /dvd:是你本地挂载 CentOS DVD 光盘的目录(需先执行mount /dev/cdrom /dvd挂载);
作用:告诉 YUM“从/dvd目录下读取安装包”。
关键前提:必须先将 DVD 光盘挂载到/dvd目录,否则 YUM 会报错 “找不到源”;
路径格式:file://后必须跟绝对路径,且三个斜杠(file:///)是固定格式(file://是协议,/dvd是路径)。
gpgcheck=0 GPG 签名校验开关
核心含义:- gpgcheck=1:开启校验(默认),YUM 会检查安装包的 GPG 数字签名,确认包未被篡改、来源合法;- gpgcheck=0:关闭校验,跳过签名检查;
为什么设为 0:本地 DVD 是官方原版光盘,包本身可信,关闭校验可加快安装速度,避免因缺少 GPG 密钥导致安装失败。
补充:若要开启校验(gpgcheck=1),需额外添加gpgkey=参数指定密钥文件路径(如gpgkey=file:///dvd/RPM-GPG-KEY-CentOS-7)。
配置网络 联网状态下 获得国内开源 .repo(阿里 腾讯 百度 清华等等开源源)
yum clean all 清除全部
安装软件(以foo-x.x.x.rpm为例):yum install foo-x.x.x.rpm
删除软件:yum remove foo-x.x.x.rpm或者yum erase foo-x.x.x.rpm
升级软件:yum upgrade foo删除过时包或者yum update foo保留过时包
查询信息:yum info foo
搜索软件(以包含foo字段为例):yum search foo
显示软件包依赖关系:yum deplist foo
列出所有可用软件包:yum list
清除缓存:yum clean all
查看所有可更新软件清单的命令
自学DNF
DNF是yum的升级版,解析更快,内存占用低,API更加友好,从centos8开始就已经开始使用,此时还能使用的yum在底层是dnf的软链接
什么是文件系统:操作系统用来管理存储设备上的数据和文件
win底层文件系统是NTFS,微软独有,安全但封闭;插入多少硬盘就有多少个根目录,分盘之后每个盘都是一个根目录;windows的设备是独立的,可以直接读取,互不影响;对文件名大小写不敏感
linux底层文件系统是Ext4(centos6/7),或者XFS(centos8),它的文件系统类型很多,因为它开源,所有的文件系统类型都能识别,包括NTFS;不管插入多少块硬盘,都只有一个根目录,新加入的设备不能直接读取,需要挂载到media目录或者mnt目录;对文件名大小写敏感
rhel5(ext3)/6(ext4)/7(XFS)
ext3 在ext2的基础上新增了日志功能,重启后不需要文件系统检查,速度很快, 支持的最大16TB文件系统和最大2TB文件,只能创建32000个子目录,传统服务器小规模使用
ext4 在ext3的基础上进行了大容量优化,支持最大1EB文件系统,单个文件最大16TB,支持无限子目录,中小规模
xfs 最大支持8EB减1字节的单个文件系统,在多线程,大文件读写场景下性能很高,xfs只能扩大超大规模,企业使用
FAT32(单个文件不能超过4GB)/exFAT(支持单个文件超大16EB) 最通用,兼容性最强,能够同时被linux和windows识别
lsblk 树状结构列出所有可用的块设备信息,并显示其基本信息 其显示的类型有:disk硬盘 part分区 rom光驱 lvm逻辑卷
blkid 识别块设备属性,显示块设备标签,uuid,文件系统类型
UUID 通用设备唯一识别码
/etc/fstab规定系统启动时硬盘分区挂载目录·
fdisk/parted都是磁盘分区管理工具
fdisk是传统的MBR分区使用,最大只支持2tb的硬盘
parted默认GPT分区使用,适应现代大容量储存,最高支持PB级别
mkfs.xfs 格式化
mount 设备 挂载点 挂载linux系统之外的文件
umount 设备/挂载点 卸载已经挂载的文件
MBR/msdos(最大支持四个主分区)
主引导记录(Master Boot Record , MBR)是指一个存储设备的开头 512 字节(第0个扇区),每512个字节为一个扇区。它包含操作系统的引导器和存储设备的分区表。磁盘容量支持小,无法备份
GPT/guid(支持无限个分区)
全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体硬盘的分区表的结构布局的标准。它是统一可扩展固件接口标准的一部分,它使用全局唯一标识来标识设备。它是新一代分区表格式,用以替代 MBR 分区表。它用来解决 MBR 分区表的缺点,同时带来了一些优点。磁盘容量支持很大,支持备份
如何去实现一个文件系统的挂载
1.lsblk查看要挂载的文件
2.创建要挂载的目录
3.
使用mount挂载(临时挂载,重启之后失效)
写入配置文件挂载
1)获取uuid
2)编辑/etc/fstab
3)在文件末尾添加要挂载的信息
UUID=ssa-3546-….. /wuxie xfs defaults 0 0
要挂载的文件uuid或者是绝对路径 挂载点 文件系统类型 权限(defaults可读可写) 是否备份 是否开机检查磁盘
4)使用mount -a验证是否有报错,有报错千万不能重启,立即检查修改
4.使用df -h查看新目录是否有空间大小
5.使用umount卸载
添加磁盘1 10GB 分区 格式化 永久挂载 fdisk 只能进行MBR分区,最大只支持2tb的硬盘
1.虚拟机设置新建磁盘,假设为sdb
2.fdisk sdb
3.n 新建分区
4.p 分区类型为主分区
5.选择分区号,起始扇区(这里直接默认),最后必须输入w保存
6.退出quit
6.5.通知系统更新分区表partprobe
7.格式化分区 mkfs.xfs /dev/sdb 或者使用mkfs.ext4
8.挂载分区后即可使用 blkid - vim /etc/fstab -添加-mount -a验证
添加磁盘2 10GB 分区 格式化 永久挂载 parted 支持两种分区
1.虚拟机设置新建磁盘,假设为sdb
2.parted sdb
3.mklabel gpt
4.mkpart
5.选择名称,文件系统类型,起止位置(start0-end100%)
6.退出quit
6.5.通知系统更新分区表partprobe
7.格式化分区 mkfs.xfs /dev/sdb
8.挂载分区后即可使用 blkid - vim /etc/fstab -添加-mount -a验证
parted分区扩容
1. 确认磁盘与分区
1 | lsblk # 看磁盘(如/dev/sda)、分区、挂载 |
记录:磁盘路径、目标分区号、当前结束位置
2. 进入 parted 交互
1 | parted /dev/sda |
3. 扩容分区(关键)
1 | (parted) print # 确认分区信息 |
- 100% = 扩到磁盘末尾(最常用)
- 也可指定具体大小:
50GiB、20000MB
4. 刷新内核分区表(可选,部分系统自动生效)
1 | sudo partprobe /dev/sda |
5. 扩容文件系统
根据文件系统类型选其一:
- ext4/ext3/ext2:
1
sudo resize2fs /dev/sda1 # 自动扩满分区
- xfs:
1
sudo xfs_growfs /挂载点 # 如 /、/data
6. 验证
1 | lsblk |
与逻辑分区有关
高级扩展-LVM管理(弹性管理空间)
pv 物理卷 pvcreate pvs查看物理卷信息
vg 卷组由物理卷组成 vgcreate vgs查看卷组信息
lv 逻辑卷从卷组中拿取空间后挂载使用 lvcreate lvs查看逻辑卷信息
pv组成vg,vg提供空间划分lv,lv上创建文件系统,提供存储空间
1.pvcreate 创建物理卷,打个标签
2.vgcreate 创建卷组 vgextend vg_data /dev/sdc
3.lvcreate -L 5G -n lv_data vg_data
4.mkfs.xfs lv_data
5.执行挂载操作
6.这里扩容的是逻辑卷lvextend -L 1G /dev/vg_data/lv_data 扩容到多少GB,不是扩容多少GB,属于在线扩容
离线扩容需要先卸载文件系统,一般用于缩容和老版本ext
7.这里扩容文件系统
命令 适用文件系统 核心作用 关键特性
xfs_growfs /dev/vg_data/lv_data XFS(CentOS7+/RHEL7 + 默认) 在线扩展 XFS 文件系统到逻辑卷的最大可用空间 仅支持扩容,不支持缩容;无需指定扩容大小,自动识别 LV 新容量
resize2fs /dev/vg_data/lv_data ext2/ext3/ext4 在线扩展 ext 系列文件系统到逻辑卷的最大可用空间 支持扩容(在线),ext4 可有限缩容(需离线);可指定扩容大小
xfs只可以扩容不可以缩容
ext4 是 Linux 中最经典、最稳定的日志型文件系统之一,支持创建、在线扩容、离线缩容(缩容有风险,需谨慎)。下面我会按「创建 → 扩容 → 缩容」的完整流程,结合实操命令和注意事项详细讲解,所有步骤都可直接在 CentOS/RHEL 7+ 中验证。
一、ext4 文件系统的创建
创建 ext4 的核心命令是 mkfs.ext4,需先准备好块设备(物理磁盘分区、LVM 逻辑卷等),再格式化。
1. 前置条件
- 准备待格式化的设备(如
/dev/sdb1分区、/dev/vg_data/lv_data逻辑卷); - 设备未被挂载(
umount /dev/sdb1确保卸载); - 备份设备内原有数据(格式化会清空所有数据)。
2. 核心命令(基础创建)
1 | # 格式化 /dev/sdb1 为 ext4 文件系统(最常用) |
3. 关键参数解释
| 参数 | 作用 | 示例/说明 |
|---|---|---|
-b |
指定块大小(可选:1024/2048/4096字节,默认4096) | -b 4096:适合大文件场景,提升读写效率 |
-L |
设置文件系统卷标(便于识别) | -L data_disk:卷标为 data_disk |
-i |
指定 inode 密度(每多少字节分配一个 inode) | -i 8192:适合小文件多的场景,避免 inode 耗尽 |
-m |
预留空间比例(默认5%,用于维护和防止磁盘满) | -m 1:仅预留1%空间(数据盘可减小) |
-F |
强制格式化(无需确认,适合脚本) | mkfs.ext4 -F /dev/sdb1 |
4. 验证创建结果
1 | # 查看文件系统类型和信息 |
5. 挂载使用(创建后必做)
1 | # 创建挂载点 |
二、ext4 文件系统的扩容(推荐在线操作)
ext4 支持在线扩容(无需卸载,业务无感知),核心流程是「先扩底层设备(分区/LV)→ 再扩文件系统」。
1. 前置条件
- 底层设备(分区/LV)有扩容空间(如 LVM 卷需先扩展 LV,分区需先调整分区大小);
- 文件系统已挂载(在线扩容),且无损坏(先执行
fsck -n /dev/sdb1检查)。
2. 完整扩容流程(以 LVM 逻辑卷为例)
假设要将 /dev/vg_data/lv_data(挂载到 /mnt/data)扩容 20G:
1 | # 步骤1:查看当前状态(确认初始容量) |
3. 关键注意事项
- 扩容顺序:先扩设备(LV/分区),再扩文件系统,反之会损坏文件系统;
resize2fs仅支持设备名(如/dev/vg_data/lv_data),不支持挂载点;- 若扩容分区(非 LVM):需先通过
fdisk/parted调整分区大小(需卸载),再执行resize2fs。
三、ext4 文件系统的缩容(高风险,谨慎操作)
ext4 仅支持离线缩容(必须卸载),且缩容失败易导致数据丢失,优先推荐「备份 → 格式化 → 恢复」,仅在无备份时尝试缩容。
1. 前置条件(必须满足)
- 卸载文件系统(
umount /dev/sdb1); - 备份所有数据(缩容前必做,防止数据丢失);
- 检查文件系统完整性(
fsck -f /dev/sdb1,修复所有错误)。
2. 完整缩容流程(以 /dev/sdb1 缩容到 50G 为例)
1 | # 步骤1:卸载文件系统(关键) |
- 缩容顺序:先缩文件系统(resize2fs),再缩底层设备,顺序反了会直接损坏文件系统;
- 缩容大小:
resize2fs指定的大小必须 ≤ 底层设备缩容后的大小,且不能小于文件系统实际已用空间; - 数据备份:即使步骤正确,也可能因磁盘坏块、元数据异常导致数据丢失,缩容前必须备份;
- 不推荐场景:大容量(>100G)、小文件多的 ext4 缩容,优先用「备份-格式化-恢复」替代。
四、ext4 创/扩/缩核心总结
| 操作 | 核心命令 | 关键特性 | 风险等级 |
|---|---|---|---|
| 创建 | mkfs.ext4 /dev/xxx |
支持自定义块大小、inode 密度、预留空间 | 低(仅清空数据) |
| 扩容 | lvextend → resize2fs |
在线操作,无停机,自动扩展到最大容量 | 低(几乎无风险) |
| 缩容 | umount → fsck → resize2fs → 缩设备 |
离线操作,需严格按顺序,易丢数据 | 高(谨慎操作) |
五、核心注意事项
- 无论扩容/缩容,先执行
fsck检查文件系统完整性; - 缩容仅作为应急手段,生产环境优先用「备份-重建」替代;
- ext4 预留空间(默认5%):系统盘保留5%,数据盘可通过
tune2fs -m 1 /dev/sdb1减小到1%; - 查看 ext4 详细信息:
dumpe2fs /dev/sdb1(超级块、inode、块大小等)。
简单记:ext4 创建用 mkfs.ext4,扩容先扩卷再 resize2fs,缩容先 resize2fs 再缩卷(必备份!)。
ext4文件系统的创建,扩容,缩容
工具 适用文件系统 核心作用 关键特性
xfs_repair XFS(CentOS7+/RHEL7 + 默认) 检测并修复损坏的 XFS 文件系统 专为 XFS 设计,支持大容量(TiB 级),需离线修复
fsck ext2/ext3/ext4、FAT32、NTFS(需插件) 检测并修复损坏的非 XFS 文件系统 通用工具,ext 系列为主,支持自动 / 交互修复
与磁盘有关
raid 磁盘冗余(多存一份数据或校验)阵列(将所有盘整合在一起,提升性能空间安全性),把所有的硬盘拼在一起
硬raid独立的raid硬件卡,成本很高,性能很高
软raid靠操作系统内核和主机的cpu模拟
raid1.0 以盘为单位做冗余
raid级别
raid0 条带模式 要快不怕丢 数据切碎均匀分布到所有硬盘上,最快,空间利用率100%,适合临时或者缓存数据
raid1 镜像模式 要安全不缺钱 两个硬盘上的数据完全镜像,最安全,空间利用率只有50%,适合做物理机的系统盘
raid5 带校验的条带模式 平衡安全空间 数据也是分散存,但是会留一部分空间做校验,数据和校验也是轮流均匀存入在硬盘上,至少需要三块盘,一个盘坏了用其他的盘进行XOR,一个方程运算计算出坏盘的数据
raid6 带双校验的条带模式 更安全 至少四块盘,使用XOR和伽罗瓦域,两个方程将数据和双校验轮流均匀地储存在所有硬盘上 空间利用率较低
raid1+0 先镜像再条带模式 企业使用 既安全又稳定。但是空间利用率只有一半,允许坏一半的盘
raid0+1 先条带再镜像 没人用
hotspare热备盘 企业使用 随时待命的备用盘
raid2.0 以块为单位做冗余,切块虚拟化冗余(现代系统使用,有很大数量的硬盘,以块为单位的数据丢失可以忽略)
mdadm –create –verbose /dev/md0
–level=5
–raid-devices=3
/dev/sdb /dev/sdc /dev/sdd
防火墙
1.启动firewalld服务
systemctl start firewalld.service
2.关闭firewalld服务
systemctl stop firewalld.service
3.重启firewalld服务
systemctl restart firewalld.service
4.查看firewalld状态
systemctl status firewalld.service
5.开机自启firewalld
systemctl enable firewalld
6.查看版本
firewall-cmd –version
7.查看帮助
firewall-cmd –help
8.显示状态
firewall-cmd –state
9.查看所有打开的策略
firewall-cmd –zone=public –list-all
10.更新防火墙规则
firewall-cmd –reload
11.添加开放端口
firewall-cmd –zone=public –add-port=80/tcp –permanent (permanent永久生效,没有此参数重启后失效)
12.查看端口是否开放
firewall-cmd –zone=public –query-port=80/tcp
13.删除开放端口
firewall-cmd –zone=public –remove-port=80/tcp –permanent
注:每次更改firewall规则后需重新加载(firewall-cmd –reload)
6版本 iptables
service iptables stop
service iptables start
service iptables restatus
service iptables status
iptables -L
iptables -A INPUT -p tcp –dport 80 -j ACCEPT 添加
iptables -D INPUT -p udp –dport 53 -j ACCEPT删除
修改需要先删除再添加
iptables 是底层静态防火墙,修改需要重启,会断开连接;firewalld 是上层动态防火墙管理服务
iptables 重启 / 重载时会清空并重建规则,导致当前所有连接(包括你的 SSH)断开,必须重连;
firewalld 动态生效,不断开连接
#查看已启动的服务列表
systemctl list-unit-files –type=service|grep enabled
作用是列出系统中所有类型为 “服务(service)”、且开机自启状态为 “enabled” 的单元文件
ps:6版本-系统使用service chkconfig命令控制服务
crontab定时任务
crontab -l 列出定时文件
crontab -e 编辑定时文件
相当于打开vi编辑器
| | | | |
| | | | +—– 星期中星期几 (0 - 6) (星期天 为0)
| | | +———- 月份 (1 - 12)
| | +————— 一个月中的第几天 (1 - 31)
| +——————– 小时 (0 - 23)
+————————- 分钟 (0 - 59)
*表示每分钟/小时/执行一次
a-b表示第a分钟到第b分钟执行……
*/n表示每个n个时间间隔执行一次
a,b,c表示第a,b,c分钟执行一次/第a,b,c小时执行一次……
快照:虚拟机在某个时间点状态下的副本,包含磁盘,内存,设备状态
内存快照:开机状态下,带内存
磁盘快照:关机状态下,不带内存
linux单用户模式破解root密码
1)开机时grup引导界面按下e编辑
2)找到linux16(centos7)那行,找到“ro”,ro的意思是read only,将“ro”替换成 rw init=/sysroot/bin/sh
linux(centos8,9,10)将“ro”替换为rw 然后结尾添加init=/bin/bash
按Ctrl-x 进行进入单用户模式
3)执行chroot /sysroot。其中chroot命令用来切换系统,/sysroot/目录就是原始系统
4)如果要修改root密码,passwd root,给予root用户新密码,用户密码存在etc/shadow
touch /.autorelabel 执行这行命令作用是让SELinux生效,新修改过的文件标签会变成通用标签etc_t,这条命令使其回到原来的标签shadow_t
如果不执行,密码不会生效。
exit,reboot 验证
linux(centos8,9,10)exec /sbin/init
linux救援模式
1.选择需要救援的系统,dvd选项选择我们需要的镜像,并勾选启动时连接
2.启动虚拟机时进入固件
3.boot菜单下将CD—ROM Drive通过shift+移动到最上方,然后F10保存,然后重启
4.重启出现界面后选择Troubleshooting,回车,选择Rescue system
5.选择continue,之后的下一个选项直接回车
6.系统检测通过之后运行 chroot /mnt/sysimage,命令提示符从sh-4.2#变为bash-4.2#
7.此时可以使用ls检查本地目录
8.进入需要修改目录修改损坏的文件
9.exit退出 init 0关机
10.进入固件模式恢复boot然后重启
11.进入系统后查看修改后的文件
RHCE实验(对于个人开发者的虚拟机需要先配置镜像源):
1、FTP (端口默认21)多用于文件传输
先使用yum安装vsftpd包
centos stream 9必须要换源BaseOS和AppStream
dnf clean all
修改配置文件进行配置 /etc/vsftpd/vsftp.conf
anonymous_enable 允许匿名用户登录
local_enable 允许本地登录
write_enable 允许上传
chroot_local_enable将用户锁定在家目录
anon_upload_enable 允许匿名用户上传
centos stream9可能需要打开httpd的两个选项
如何禁止root用户登录
在vsftpd.conf文件中添加或者修改
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
vsftpd.user_list文件中写入要禁止登陆的用户
比如root
vsftpd家目录为/var/ftp
如果无法登录或者无法上传文件,就是没开启selinux
setsebool -P tftp_home_dir 1 允许用户访问家目录
setsebool -P ftpd_full_access 1 允许用户上传文件
firewall-cmd –permanent –add-service=ftp打开防火墙
firewall-cmd –reload 重新加载防火墙
添加ftp用户
useradd
passwd
usermod -s /sbin/nologin ftpuser 防止ftp用户进行ssh登录
启动ftp
systemctl start vsftpd
systemctl enable vsftpd
使用ftp链接管理文件
2、NFS(network file system) 网络共享文件系统(默认端口2049,111,20048)
安全性差,没有用户认证;对windows支持很差,高并发性能一般
- NFS 主端口:2049
- rpcbind 端口:111
- mount端口:20048
一、NFS服务器配置
1. 安装NFS服务组件
1 | dnf install nfs-utils rpcbind nfs4-acl-tools -y # 安装核心组件 |
- nfs-utils:包含NFS服务器守护进程、RPC支持程序和管理工具
- rpcbind:管理RPC连接,NFS需要RPC服务进行端口映射
- nfs4-acl-tools:提供NFSv4访问控制列表管理工具
2. 创建共享目录并设置权限
1 | mkdir -p /data/nfs_share # 创建共享目录(可自定义路径) |
- nobody:nobody:NFS默认匿名用户,确保客户端能正常访问
- 若需允许客户端写入,确保目录权限正确设置
3. 配置NFS导出规则(/etc/exports)
编辑主配置文件:
1 | vi /etc/exports |
添加共享规则(示例):
1 | /data/nfs_share 192.168.0.0/24(rw,sync,no_subtree_check) # 允许192.168.0.0/24网段读写 |
常用参数说明:
| 参数 | 功能 |
|---|---|
| rw | 允许读写访问 |
| ro | 只读访问 |
| sync | 数据同步写入磁盘(默认,安全性高) |
| async | 异步写入,性能高但断电可能丢失数据 |
| no_subtree_check | 禁用子树检查,提高性能 |
| no_root_squash | 保留客户端root权限(谨慎使用) |
| root_squash | 将客户端root映射为匿名用户(默认) |
4. 生效配置并启动服务
1 | exportfs -r # 重新导出所有共享(无需重启服务) |
- 确认服务正常运行,无报错信息
5. 防火墙配置(关键步骤)
1 | firewall-cmd --permanent --add-service=nfs # 允许NFS服务 |
- 或直接开放端口:
1
firewall-cmd –permanent –add-port={2049,111}/tcp –add-port={2049,111}/udp
firewall-cmd –permanent –add-port=20048/tcp –add-port=20048/udp # mountd端口
1 | #### 6. 验证NFS服务器配置 |
二、NFS客户端配置
1. 安装NFS客户端工具
1 | dnf install nfs-utils -y # 客户端仅需安装nfs-utils |
2. 手动挂载NFS共享
1 | mkdir -p /mnt/nfs_mount # 创建本地挂载点 |
- 192.168.0.5:替换为你的NFS服务器IP地址
- /data/nfs_share:服务器共享目录路径
- /mnt/nfs_mount:客户端本地挂载点(可自定义)
3. 设置开机自动挂载(/etc/fstab)
编辑fstab文件:
1 | vi /etc/fstab |
添加以下内容:
1 | 192.168.0.5:/data/nfs_share /mnt/nfs_mount nfs defaults 0 0 |
- defaults:使用默认挂载选项(rw,suid,dev,exec,auto,nouser,async)
- 测试自动挂载:
1
mount -a # 挂载fstab中所有未挂载的文件系统
4. 自动挂载(AutoFS)配置(可选)
自动挂载在访问时才挂载,闲置时自动卸载,适合非频繁访问的共享:
1 | dnf install autofs -y |
添加:
1 | /- /etc/auto.nfs # 直接映射方式 |
创建自动挂载配置文件:
1 | vi /etc/auto.nfs |
添加:
1 | /mnt/nfs_mount -fstype=nfs 192.168.0.5:/data/nfs_share |
启动服务:
1 | systemctl enable --now autofs |
3、DNS(默认端口53) 将域名解析为IP地址
先安装dns服务 yum install -y bind bind-utils
修改主配置文件/etc/named.conf
listen-on port 53{any;};
allow-query {any;}
在末尾添加区域配置
zone “example.com” IN{
type master
file “/var/named/example.com.zone”
}
创建区域数据文件
cat > /var/named/example.com.zone << EOF
$TTL 86400
@ IN SOA ns.example.com. admin.example.com. (
2026030701 序列号
3600 刷新时间
1800 重试时间
604800 过期时间
86400其他服务器缓存时间
)
@ IN NS ns.example.com.
ns IN A 192.168.142.10
www IN A 192.168.142.10
EOF
改权限
chown root:named /var/named/example.com.zone
chmod 644 /var/named/example.com.zone
检察配置是否正确
named-checkconf 不报错就没问题
named-checkzone example.com /var/named/example.com.zone 出现ok就没问题
启动并设置开机自启
systemctl start named
systemctl enable named
关闭防火墙或者放行防火墙dns权限
测试dns是否生效
nslookup www.example.com 127.0.0.1
4、Samba 让windows和linux文件和打印机共享
- 139/tcp
- 445/tcp(最核心、最常用)
- 137/udp
- 138/udp
一、安装 Samba
1 | dnf install -y samba samba-common samba-client |
二、创建共享目录 & 权限
1 | mkdir -p /srv/samba/share |
三、修改主配置 /etc/samba/smb.conf
先备份:
1 | cp /etc/samba/smb.conf /etc/samba/smb.conf.bak |
编辑配置:
1 | vi /etc/samba/smb.conf |
直接用下面最简稳定配置(替换原文件内容)
1 | [global] |
四、检查配置语法
1 | testparm |
没报错就继续。
五、启动 & 开机自启
1 | systemctl enable --now smb nmb |
六、防火墙放行(必须做)
1 | firewall-cmd --permanent --add-service=samba |
七、SELinux 放行(不做一定访问失败)
1 | setsebool -P samba_enable_home_dirs on |
八、创建 Samba 用户(可选,用于密码访问)
Samba 用户必须先有系统用户:
1 | useradd smbuser |
九、Windows 访问
打开文件管理器,输入:
1 | \\你虚拟机的IP |
例:
1 | \\192.168.100.10 |
十、Linux 客户端访问
1 | mount -t cifs //192.168.100.10/share /mnt -o username=smbuser,password=你的密码 |
最常用 3 条命令
1. 查看远程主机的共享列表
1 | smbclient -L //192.168.x.x -U 用户名 |
5、NTP(network time protocol)网络时间协议/Chrony(默认端口123) 同步时间
1. 精度与速度
ntp:同步慢,资源占用较高,需要较好的网络环境,配置文件在/etc/ntp.conf,查看命令ntpq -p
chrony:同步极快,精度很高,资源占用低,对网络环境的要求不是很高,配置文件在/etc/chrony.conf,查看命令chronyc sources
2. 安装 NTP
1 | yum install -y ntp |
3. 编辑配置文件
1 | vi /etc/ntp.conf |
把里面的 server 换成国内 NTP 服务器(推荐)
1 | server ntp.aliyun.com iburst |
允许内网同步(可选,根据需要加)
1 | restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap |
4. 启动并开机自启
1 | systemctl start ntpd |
5. 查看同步状态
1 | ntpq -p |
看到有 * 号开头的服务器 = 同步成功。
6. 立即强制同步(可选)
先停服务 → 同步 → 再启动
1 | systemctl stop ntpd |
7. 防火墙放行 NTP(UDP 123)
1 | firewall-cmd --permanent --add-service=ntp |
一、安装 Chrony
1 | dnf install -y chrony |
二、Chrony 服务端配置(给别人同步时间)
1. 修改配置
1 | vi /etc/chrony.conf |
主要改 2 处:
1 | # 允许你的 VMware 网段来同步时间 |
2. 启动并开机自启
1 | systemctl enable --now chronyd |
3. 防火墙放行 NTP(UDP 123)
1 | firewall-cmd --permanent --add-service=ntp |
三、Chrony 客户端配置(同步服务端时间)
1. 修改配置
1 | vi /etc/chrony.conf |
注释掉原有 pool,写上你的 NTP 服务器 IP
1 | # pool 2.centos.pool.ntp.org iburst |
2. 重启服务
1 | systemctl restart chronyd |
四、验证是否同步成功
1 | chronyc sources -v |
看到 ^* 或 ^? 变成 ^* 且有 IP,就是同步成功。
看系统时间:
1 | date |
6、http/https(默认端口80/443) 搭建网站
一、安装 httpd + SSL 模块
1 | dnf install -y httpd mod_ssl |
二、先配置 HTTP(80端口)
1. 启动并开机自启
1 | systemctl enable --now httpd |
2. 防火墙放行 80/443
1 | firewall-cmd --permanent --add-service=http |
3. 写一个测试网页
1 | echo "<h1>我的HTTP网页</h1>" > /var/www/html/index.html |
4. 访问测试
浏览器打开:
1 | http://你虚拟机IP |
三、配置 HTTPS(443端口,SSL)
1. 生成自签名证书(实验用)
1 | openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 \ |
一路回车即可。
2. 检查 SSL 配置
CentOS 自带 /etc/httpd/conf.d/ssl.conf,一般不用改,默认就能跑。
3. 重启 httpd
1 | systemctl restart httpd |
4. HTTPS 访问
1 | https://你虚拟机IP |
浏览器提示不安全 → 继续访问即可(自签名证书正常现象)。
四、SELinux 放行(不做必报错)
1 | # 网页目录默认 SELinux 标签正确,只需确保权限 |
五、常用验证命令
1 | # 检查配置语法 |
7、DHCP(默认使用67/68端口) ip地址自动分配
一、安装 DHCP 服务
1 | dnf install -y dhcp-server |
1 | dnf install -y dhcp |
二、最关键一步:复制模板配置
默认配置文件是空的,必须先复制示例文件,否则启动必失败:
1 | cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf |
三、编辑 DHCP 配置
1 | vi /etc/dhcp/dhcpd.conf |
把下面内容替换掉原有配置(只改 IP 网段即可)
示例网段:192.168.100.0(你按自己 VMware 网段改)
1 | subnet 192.168.100.0 netmask 255.255.255.0 { |
修改 /etc/sysconfig/dhcpd
添加DHCPDARGS=”网卡名”
四、启动并开机自启
1 | systemctl enable --now dhcpd |
五、防火墙放行 DHCP(UDP 67 端口)
1 | firewall-cmd --permanent --add-service=dhcp |
六、检查是否正常运行
1 | systemctl status dhcpd |
出现 active (running) 就成功了。
七、Windows 客户端测试
- 把 Windows 网络设为 自动获取 IP
- 执行:
1 | ipconfig /release |
CentOS Stream 10 安装 DHCP 服务
1.1 安装 kea
1 | dnf install -y kea |
- 核心包说明:
kea.x86_64:DHCPv4/v6 服务主程序kea-libs.x86_64:依赖库(自动安装)
1.2 基础配置(DHCPv4 示例)
1 | # 备份默认配置 |
写入最简配置(替换为你的网段):
1 | { |
1.3 启动并开机自启
1 | # 启动 kea-dhcp4 服务(仅 DHCPv4) |
1.4 防火墙放行
1 | firewall-cmd --permanent --add-port=67/udp # DHCP 服务端端口 |
1.5 验证服务
1 | # 查看 kea 监听端口 |
9、sendmail(默认25端口,465端口) 发送和转发电子邮件
一、安装 Sendmail + 邮件工具
1 | dnf install -y sendmail sendmail-cf mailx |
mailx在9以上的系统中被替代为s-nail
二、修改监听地址(允许局域网连接)
1 | vi /etc/mail/sendmail.mc |
找到这一行:
1 | DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl |
改成 监听所有IP:
1 | DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl |
(centos9及以上)配置s-nail
1 | vi /etc/mail.rc |
1 | set smtp=smtp.example.com set smtp-auth-user=your_email@example.com |
三、重新生成主配置文件(必须做)
1 | m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf |
四、配置本机域名(直接复制)
1 | cat >> /etc/mail/local-host-names << EOF |
五、启动服务
1 | systemctl enable --now sendmail sm-client |
六、防火墙放行 SMTP(25端口)
1 | firewall-cmd --permanent --add-service=smtp |
七、测试发送邮件(最简单验证)
1 | echo "这是一封测试邮件" | mail -s "Sendmail 测试" root |
查看邮件:
1 |
按 Enter 查看,q 退出。
8、iscsi 把远程储存设备当作本地硬盘使用
一、服务端(Target)配置(提供存储)
1. 安装 targetcli 工具
1 | yum install -y targetcli |
2. 准备后端存储(可选,推荐 LVM)
1 | # 示例:使用 /dev/sdb 创建 LVM |
3. 进入 targetcli 交互配置
1 | targetcli |
3.1 创建后端存储对象(创建一个块设备文件)
1 | # 格式:create <名称> <设备路径> |
3.2 创建 iSCSI Target(IQN)(将linux变成远程硬盘服务器)
1 | # 格式:iqn.年-月.域名反写:自定义标识 |
3.3 绑定 LUN(将存储映射给 Target)(把硬盘挂在共享出口上)
1 | cd /iscsi/iqn.2026-03.com.example:target01/tpg1/luns |
3.4 设置 ACL(acccess control list)(允许客户端访问)
1 | cd ../acls |
3.5 保存并退出
1 | saveconfig |
4. 防火墙与 SELinux(可选)
1 | # 开放 3260 端口 |
二、客户端(Initiator)配置(使用存储)
1. 安装 initiator 工具
1 | yum install -y iscsi-initiator-utils |
2. 配置 Initiator IQN(必须与服务端 ACL 匹配)
1 | # 生成并写入配置文件 |
3. 发现 Target
1 | # 替换为服务端 IP |
4. 登录 Target
1 | # 自动登录所有发现的 Target |
5. 验证与使用
1 | # 查看新增磁盘(通常为 /dev/sdb 等) |
6. 开机自动挂载(关键:加 _netdev)
1 | # 获取 UUID |
三、常用管理命令
服务端
1 | targetcli ls # 查看配置 |
客户端
1 | iscsiadm -m session -o show # 查看会话 |
10、ansible 批量管理服务器,自动执行配置任务
一、控制节点(管理端)配置
1. 安装 Ansible(先装 EPEL 源)
1 | #安装epel源 |
在 CentOS 8 / RHEL 8 上通过 pip3 安装 Ansible
1. 安装 Python 3.8 pip(系统自带,无需额外源)
dnf install -y python3 python3-pip
2. 升级 pip 并安装 Ansible 2.15.0
pip3 install –upgrade pip
pip3 install ansible==2.5.11
3. 创建软链接,让系统能找到 ansible 命令
ln -s /usr/local/bin/ansible /usr/bin/ansible
ln -s /usr/local/bin/ansible-playbook /usr/bin/ansible-playbook
4. 验证
ansible –version
2. 生成 SSH 密钥(免密登录基础)
1 | ssh-keygen -t rsa -b 2048 |
3. 把密钥拷贝到被管理节点(替换为目标IP/用户名)
1 | # 示例:被管理节点IP是192.168.142.20,用户名是root |
多台被管理节点就执行多次,替换IP即可。
4. 配置 Ansible 主机清单(定义被管理节点)
1 | vi /etc/ansible/hosts |
添加被管理节点(支持分组,示例分 web 组):
1 | # 单节点 |
5. 测试连通性(核心验证)
1 | # 测试所有节点连通性 |
输出
SUCCESS+pong就是连通成功!
二、被管理节点(客户端)仅需2步(无需装Ansible)
1 | # 1. 安装openssh-server(确保SSH能连) |
三、Ansible 常用命令(立刻能用)
1 | # 1. 在所有节点执行命令(比如看内存) |
验证 Ansible 是否配置成功
1 | # 1. 查看主机清单 |
能输出所有被管理节点的主机名,就是配置成功!
NFS(Network File System)
- 共享内容:文件夹
- 适合:Linux ↔ Linux
- 特点:速度快、配置简单、无认证
- 场景:服务器之间共享文件
Samba
- 共享内容:文件夹
- 适合:Linux ↔ Windows、Linux ↔ Linux
- 特点:跨平台、有用户密码、兼容 Windows
- 场景:办公文件共享
iSCSI
- 共享内容:整块硬盘 / 分区(块设备)
- 适合:把远程硬盘当本地硬盘用
- 特点:速度最快、像本地磁盘、可格式化、可建分区
- 场景:虚拟机存储、数据库存储、备份盘

