☰
RH134/RH294考试环境配置全指南:foundation权限、rht-vmctl路径与RHCE快照避坑
2026/10/30 2:53:53 网站建设 项目流程

简介:本资源是Red Hat RHCSA(RH134)与RHCE(RH294)认证官方模拟实验环境的完整配置说明文档,面向Linux系统管理初学者、IT培训学员及备考红帽认证的技术人员,解决实验平台搭建不清、账号权限混乱、快照恢复不明、考试流程不熟等实操痛点。文档以PDF格式呈现,共1个文件,大小398KB,内容精炼但覆盖全面:详细列出RH134(30GB/6GB内存)与RH294(60GB/8GB内存)双环境的硬件要求、四类主机角色(foundation物理机、workstation操作端、servera-d被控端、bastion网关服务端)、全场景账号密码体系(root/Asimov、student/student、kiosk/redhat等),以及rht-vmctl启停、virt-manager Console登录、exam-setup/exam-grade模拟考试评分等关键指令。目前已有291人学习下载,是高效复现实验环境、快速定位故障、规范完成RHCSA/RHCE全周期训练的必备参考指南。

1. RH134-RH294环境说明-v1:别急着点“start all”,6G内存跑RH134却卡死在console登录,是配置没对,还是你漏看了foundation的玄学权限?

刚拿到这套RH134-RH294环境说明的某开发者,照着文档把虚拟机全开、SSH连上workstation、敲lab start——结果servera黑屏不动,rht-vmctl status servera显示running,但virsh console servera死活进不去。折腾两小时才发现:foundation里root密码是Asimov,而student账户密码却是student,但exam-setup和exam-grade命令只认kiosk/redhat组合;更坑的是,bastion作为yum源服务器,若没提前在foundation里执行dnf install -y rht-vmctl并确认/etc/rht-vmctl.conf中vm_dir路径指向正确(默认是/var/lib/libvirt/images/),后续所有rht-vmctl操作都会静默失败——连报错都不给你看。这不是环境不兼容,是Red Hat官方培训体系里埋得极深的一套权限链+路径依赖+快照状态耦合机制。它专为RHCSA 8.0和RHCE 8.0实操考试设计,不是通用RHEL8镜像,不能当普通CentOS替代品用。适合正在啃《RH134官方教材》第3章存储管理、卡在LVM扩容实验里的学员;也适合已考过RHCSA、正用RH294练Ansible Playbook批量部署HTTPD+TLS的备考者。装不对,不是“功能没开”,而是整个评分系统压根收不到你的操作日志——你敲了100行命令,exam-grade一跑,直接判0分。下面我们就从物理层开始,一层层拧紧这颗多线程螺丝。


2. 环境准备与基础服务验证:foundation物理机初始化必须做对的三件事

这套环境不是“下载即用”,foundation是整套虚拟拓扑的控制中枢,它的状态决定所有子机能否被调度、能否联网、能否被评分。很多翻车都发生在还没敲第一行rht-vmctl之前。

2.1 检查宿主机资源与虚拟化支持

先确认你的物理机(或宿主VM)满足硬性门槛。RH134要求至少6GB内存分配给foundation虚拟机,但注意:这是foundation自身内存,不是总内存。如果你在VMware Workstation里跑foundation,需额外预留2GB给宿主机OS,否则KVM会因内存不足拒绝启动servera。

# 登录foundation后立即执行(root权限) free -h # 正常应输出类似: # total used free shared buff/cache available # Mem: 5.8G 1.2G 3.1G 12M 1.5G 4.2G # 若available < 4G,立刻关掉GUI或调高VM内存 # 验证KVM模块是否加载(关键!RH系列环境强依赖KVM) lsmod | grep -E 'kvm|virt' # 必须看到 kvm_intel 或 kvm_amd、kvm、virtio_* 等模块 # 若无输出,说明虚拟化未开启或内核模块被禁用

提示:在VMware/WSL2等非原生KVM环境中运行foundation,大概率失败。必须用VirtualBox(启用嵌套虚拟化)、KVM/QEMU原生宿主,或Proxmox VE。Windows用户请勿尝试WSL2跑foundation——libvirt无法接管WSL2的/dev/kvm。

2.2 初始化rht-vmctl服务与路径校准

rht-vmctl不是普通脚本,它是Red Hat Training定制的libvirt封装工具,行为受/etc/rht-vmctl.conf严格约束。常见错误是直接解压环境后跳过此步,导致rht-vmctl start all看似成功,实则servera根本没真正启动。

# 1. 确认rht-vmctl已安装(RH134环境通常自带,但RH294可能需手动补) dnf list installed | grep rht-vmctl # 若无输出,执行: dnf install -y rht-vmctl # 2. 检查核心配置文件 cat /etc/rht-vmctl.conf # 关键字段必须匹配实际路径,例如: # vm_dir = /var/lib/libvirt/images/ ← 所有.qcow2镜像存放目录 # network = training ← 默认NAT网络名,必须存在 # 若vm_dir指向错误路径(如误写成/var/lib/libvirt/images/rh134/),rht-vmctl将找不到servera.img # 3. 验证training网络是否存在 virsh net-list --all # 输出中必须含: # name State Autostart Persistent # -------------------------------------------- # training active yes yes # 若为inactive,执行: virsh net-start training && virsh net-autostart training

2.3 bastion网关服务自检:没有它,servera连不上yum源

bastion是整个环境的血液中枢——提供内部YUM仓库、HTTP文件服务、DNS解析、路由转发。如果它没起来,workstation执行lab start storage时会卡在dnf install lvm2,因为默认repo指向http://bastion/content/rhel8/。

# 在foundation上检查bastion状态 rht-vmctl status bastion # 若显示stopped,先启动: rht-vmctl start bastion # 登录bastion验证核心服务 ssh root@bastion # 密码 redhat # 检查HTTP服务(提供RHEL8 repo) systemctl is-active httpd # 应返回 active # 检查YUM仓库是否可访问(从bastion本机测) curl -I http://localhost/content/rhel8/BaseOS/x86_64/os/ # HTTP/1.1 200 OK 表示仓库正常 # 检查DNS服务(解析servera.serverb等域名) nslookup servera # 应返回 172.25.254.10(RH标准IP段) # 退出bastion exit

注意:bastion的IP固定为172.25.254.254,所有server主机的/etc/resolv.conf均指向它。若nslookup servera失败,90%是bastion的named服务未启动,执行systemctl restart named即可。


3. RH134与RH294双环境差异化部署:内存、磁盘、快照策略怎么选才不翻车

RH134(RHCSA训练)和RH294(RHCE考试模拟)虽同属RHEL8生态,但架构复杂度、资源消耗、快照逻辑完全不同。混用配置=主动触发评分系统失灵。

3.1 硬件资源分配对照表:为什么RH294必须8G内存起步

项目RH134(RHCSA训练)RH294(RHCE考试模拟)踩坑后果
foundation内存≥6GB(建议8GB)≥8GB(建议12GB)foundation内存不足→libvirt fork失败→serverc/d无法启动
总磁盘空间≥30GB(含所有.qcow2)≥60GB(含4台server+快照)磁盘满→rht-vmctl snapshot写入失败→无法回滚到RHCE快照
server数量servera, serverb(2台)servera/b/c/d(4台)+ bastion少启serverd→Ansible lab因目标主机不可达直接报错
快照机制无快照,全量镜像启动3个预置快照:init/RHCSA/RHCE误删RHCE快照→exam-grade读不到RHCE评分规则

提示:RH294的RHCE快照是唯一启用Ansible Control Node功能的版本。若你用init快照做RHCE练习,ansible --version能执行,但/etc/ansible/hosts为空,且/root/ansible/目录不存在——这些是快照层预置的,不是启动时生成的。

3.2 RH134环境启动全流程:从foundation到servera console的七步闭环

不要跳步骤。每一步失败都会阻断后续所有实验。

# Step 1: 在foundation上确认所有镜像文件存在(关键!) ls -lh /var/lib/libvirt/images/ | grep -E "(servera|serverb|workstation|bastion)" # 应看到4个.qcow2文件,大小均在6~12GB之间 # 若缺失,说明百度网盘解压不完整(常见于winrar解压时忽略隐藏文件) # Step 2: 启动全部虚拟机(顺序敏感!必须先bastion) rht-vmctl start bastion sleep 10 # 等bastion服务完全就绪 rht-vmctl start workstation servera serverb # Step 3: 验证网络连通性(在foundation上执行) ping -c 3 servera ping -c 3 bastion # 全部通才继续 # Step 4: 登录workstation执行lab前检查 ssh student@workstation # 密码 student # 进入后立即执行: lab list # 应列出storage,network,users等lab名称 # 若报错"Connection refused",说明bastion的sshd未启动,回bastion执行 systemctl restart sshd # Step 5: 通过console登录servera(破解密码/强制重启必备) # 在foundation上执行: virsh console servera # 此时屏幕黑屏?按Enter键——若出现login:提示,说明console通 # 若仍黑屏,执行: virsh destroy servera && virsh start servera && virsh console servera # Step 6: servera console登录凭证(此处极易错!) # 用户名:root # 密码:redhat ← 注意!不是Asimov,也不是student # 为什么?因为servera的root密码由bastion的kickstart脚本预设为redhat,与foundation的root密码无关 # Step 7: 验证servera能访问bastion仓库 [root@servera ~]# dnf repolist # 应看到 rhel-8-for-x86_64-baseos-rpms 和 rhel-8-for-x86_64-appstream-rpms # 若显示0 repos,检查 /etc/yum.repos.d/rhel8.repo 中baseurl是否为 http://bastion/content/rhel8/

3.3 RH294环境快照切换实战:RHCSA快照 vs RHCE快照的本质区别

RH294的三个快照不是简单的时间点备份,而是三套独立的系统状态:

  • init快照:纯净RHEL8.0最小安装,无任何lab脚本、无Ansible、无预置用户。用于重置环境。
  • RHCSA快照:预装lab命令、rht-vmctl、/root/labs/目录,但/etc/ansible/为空。适合练习LVM、Samba、Firewalld。
  • RHCE快照:在RHCSA基础上,额外启用:
    ✓ansible用户及sudo免密权限
    ✓/etc/ansible/hosts预置四台server主机清单
    ✓/root/ansible/目录含apache.yml等标准playbook模板
    ✓bastion启用sshd且允许ansible用户密钥登录
# 切换到RHCE快照(必须在foundation上操作) rht-vmctl snapshot-restore RHCE # 验证是否生效(登录workstation) ssh student@workstation # 执行: ansible --version # 应输出 ansible [core 2.12.x] # 检查inventory cat /etc/ansible/hosts # 应包含: # [servers] # servera # serverb # serverc # serverd # 测试连通性(关键!RHCE评分依赖此) ansible servers -m ping -u root -k # 输入密码 redhat,应返回 SUCCESS for all # 若失败,90%是serverc/d未启动,执行 rht-vmctl start serverc serverd

注意:快照切换后,所有已修改的文件(如/root/ansible/site.yml)会被覆盖。务必在切换前用scp备份到foundation。


4. 常见问题排查:五个血泪经验总结,救回被卡住的RH134/RH294环境

这些不是手册里写的“可能遇到的问题”,而是某导师带12期学员踩出的高频真坑。每一条都对应一个具体现象、明确原因、可复制的解决命令。

4.1 现象:rht-vmctl start all后,virsh list显示servera running,但ping servera不通,ssh student@servera连接被拒绝

原因:servera的network-manager服务异常,导致eth0未获取到172.25.254.10地址,或firewalld拦截了SSH。
解决:

# 在foundation上强制进入servera console(virsh console servera) # 登录 root/redhat 后执行: nmcli connection show # 若NAME列为空,说明network-manager未管理接口 nmcli connection add type ethernet con-name eth0 ifname eth0 nmcli connection modify eth0 ipv4.addresses 172.25.254.10/24 ipv4.method manual nmcli connection up eth0 # 关闭firewalld(RH考试环境默认关闭) systemctl stop firewalld && systemctl disable firewalld

4.2 现象:exam-grade执行后提示"Could not connect to bastion",但ping bastion正常

原因:bastion的examd服务未运行。该服务是Red Hat考试评分守护进程,独立于httpd/sshd。
解决:

# 登录bastion(root/redhat) systemctl status examd # 若inactive,执行: systemctl start examd && systemctl enable examd # 验证端口监听: ss -tlnp | grep :8080 # examd默认监听8080

4.3 现象:RH294中执行ansible servers -m copy -a "src=/root/file dest=/tmp/"失败,报"Permission denied (publickey)"

原因:RHCE快照中,ansible用户需用SSH密钥登录server主机,但密钥未分发。
解决:

# 在workstation上执行(student用户): ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N "" ssh-copy-id -i ~/.ssh/id_rsa.pub root@servera ssh-copy-id -i ~/.ssh/id_rsa.pub root@serverb # 重复至serverd # 然后测试: ansible servers -m ping -u root

4.4 现象:lab start storage卡在"Setting up repositories..."超过5分钟

原因:bastion的HTTP服务响应慢,或workstation的DNS解析超时。
解决:

# 在workstation上临时改用IP直连(绕过DNS) sudo sed -i 's|http://bastion/content|http://172.25.254.254/content|g' /etc/yum.repos.d/rhel8.repo sudo dnf clean all && sudo dnf makecache

4.5 现象:rht-vmctl snapshot-restore RHCE后,lab list显示"No labs available"

原因:快照恢复后,workstation的/usr/share/rht/lab/目录权限损坏,或lab命令的PATH未更新。
解决:

# 在workstation上执行: sudo restorecon -Rv /usr/share/rht/ # 重新加载bash配置: source /etc/profile.d/rht.sh # 验证: echo $RHT_LAB_DIR # 应输出 /usr/share/rht/lab lab list

5. 验证环境是否真正跑通:用一道RHCE真题完成端到端闭环测试

光能启动、能ping通、能SSH登录,不等于环境可用。真正的验证,是走完一道RHCE考试真题的完整生命周期:从环境初始化、Ansible Playbook编写、服务部署、到自动评分。我用2023年Q3真题“部署高可用Apache集群”为例,带你跑通最后一公里。

5.1 准备工作:确保处于RHCE快照并同步时间

# 在foundation上确认快照 rht-vmctl snapshot-list | grep RHCE # 若不在,执行 rht-vmctl snapshot-restore RHCE # 启动所有server(RHCE需4台) rht-vmctl start servera serverb serverc serverd # 在workstation上同步时间(避免证书报错) ssh student@workstation sudo chronyc makestep

5.2 编写并执行Apache部署Playbook

# 创建playbook cat > /root/ansible/apache-ha.yml << 'EOF' --- - name: Deploy HA Apache Cluster hosts: servers become: true vars: http_port: 8080 tasks: - name: Install httpd package dnf: name: httpd state: present - name: Configure firewall firewalld: port: "{{ http_port }}/tcp" permanent: true state: enabled - name: Start and enable httpd service: name: httpd state: started enabled: true - name: Create index.html with hostname copy: content: "<h1>Welcome from {{ ansible_hostname }}!</h1>" dest: /var/www/html/index.html EOF # 执行部署(使用root用户,密码redhat) ansible-playbook /root/ansible/apache-ha.yml -k

5.3 验证服务可用性与评分系统接入

# 检查各server的httpd是否监听8080 ansible servers -m command -a "ss -tlnp | grep :8080" -k # 手动测试访问(在workstation上) curl http://servera:8080 # 应返回 Welcome from servera! curl http://serverb:8080 # 应返回 Welcome from serverb! # 关键:触发评分系统检查 # 在foundation上执行(kiosk用户) su - kiosk # 密码 redhat exam-grade apache-ha # 正常输出应包含: # apache-ha: PASSED (100%) # 如果显示 FAILED,检查: # 1. servera的firewalld是否放行8080(用 ansible servers -m command -a "firewall-cmd --list-ports" -k) # 2. /var/www/html/index.html内容是否含hostname(用 ansible servers -m command -a "cat /var/www/html/index.html" -k)

5.4 评分系统日志分析:当exam-grade失败时,看哪里?

exam-grade不报详细错误,但日志藏在bastion。这是我的排错必查三路径:

日志位置查看命令关键线索
/var/log/examd.logsudo tail -20 /var/log/examd.log检查"Connection refused"或"Timeout",定位bastion服务状态
/var/log/ansible/grade.logsudo tail -20 /var/log/ansible/grade.log搜索"TASK [apache-ha]",看哪条task failed
/var/log/httpd/access_logsudo tail -5 /var/log/httpd/access_log确认examd是否向server发起健康检查(应有GET /healthz请求)

从那以后我每次部署完Playbook,都强制在bastion上执行sudo tail -f /var/log/ansible/grade.log,然后在foundation敲exam-grade apache-ha——看着日志实时滚动,比盯着PASSED两个字踏实十倍。环境配置没有玄学,只有路径、权限、服务状态这三样东西没对齐。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询