ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CentOS 6.3 生产环境实战指南:扩容、挂载、离线装MySQL与密码恢复

CentOS 6.3 生产环境实战指南:扩容、挂载、离线装MySQL与密码恢复 简介本资源是一份面向Linux系统管理员、运维工程师及开源技术学习者的CentOS 6.3实践配套材料聚焦于基础环境部署与常用工具链的整合应用。压缩包为RAR格式共19个文件244KB包含14张PNG图示用于界面展示或流程说明、3个JavaScript文件含mobilyblocks.js及jQuery依赖支撑前端交互功能、1个CSS样式表和1个HTML主入口页整体构成轻量级可视化演示结构便于快速本地部署与功能验证。已有523人下载学习适用于CentOS 6.3环境下Web前端组件集成、静态站点调试或工具类脚本的运行测试。读者可直接解压即用获取完整目录结构、可执行的前端模块、配套样式与脚本逻辑尤其适合理解老旧Linux发行版中轻量Web工具的组织方式与兼容性适配要点。1. CentOS 6.3 不是“老古董”而是嵌入式设备、工业控制器和遗留金融终端里仍在跑的“活化石”你打开一台十年前部署的银行前置机、某电厂DCS操作站或者某型号PLC的上位机管理界面——后台SSH进去cat /etc/redhat-release显示的很可能就是CentOS release 6.3 (Final)。这不是误配也不是测试环境它真实存在于大量无法停机、升级风险极高、且上游软件供应商只认证该版本的生产系统中。CentOS 6.3 发布于2012年7月内核为2.6.32-279glibc 2.12Python 2.6.6systemd 尚未登场init 仍是 SysV 风格。它不支持 Docker、不兼容现代 TLS 1.3、MySQL 5.7 安装需手动降级依赖、连yum update都可能因镜像源失效而卡在 repomd.xml 报错。但正因如此它成了“稳定压倒一切”场景下的隐性刚需——不是没人想换而是换不起。本文不讲如何“淘汰它”而是聚焦一线工程师每天真正在做的事在无网络、无GUI、无重启窗口的约束下给 CentOS 6.3 扩容根分区、挂载新硬盘、重置遗忘密码、离线安装 MySQL 5.7、甚至把 ISO 转成可启动的 WSL 兼容包。所有步骤均经实机物理机Hyper-V虚拟机验证拒绝“理论上可行”只留血泪经验沉淀下来的最小可行路径。2. 用 fdisk resize2fs 在不重启前提下完成根分区扩容从 20GB 到 50GB 的三步硬核操作CentOS 6.3 最常遇到的瓶颈不是 CPU 或内存而是/分区爆满。df -h显示/使用率 98%yum install直接失败/var/log/messages写不进日志但业务又不能停机——这是典型“扩容即救命”场景。常见误区是直接lvextend但 CentOS 6.3 默认使用 ext4实际是 ext3 兼容模式且 LVM 结构往往未预留足够 PE 空间。必须严格按顺序执行先确认磁盘物理空间可用 → 再扩展逻辑卷 → 最后调整文件系统。任何一步跳过或顺序颠倒都会导致resize2fs报错The filesystem is already mounted或更糟的Bad magic number in super-block。2.1 确认底层磁盘有未分配空间且 LVM 可扩展先查当前卷组空闲空间vgdisplay centos | grep Free PEx # 输出示例Free PEs 1280若显示0说明 VG 已满需先pvcreate /dev/sdb1假设新硬盘已接入并分区再vgextend centos /dev/sdb1。注意CentOS 6.3 的vgextend不支持 LVM2 元数据格式自动升级若提示Unknown physical extent size需强制指定--restorefile /etc/lvm/cache/.cache该文件需提前备份。再确认逻辑卷是否为 LVM 管理lsblk # 查看输出中 centos-root 是否挂载在 /且 TYPElinear非 crypt若lsblk显示centos-root下无子节点且lvs输出中Attr列含wi-ao表示 active open则可安全操作。2.2 扩展逻辑卷并同步更新 fstab关键执行扩展以扩展 30GB 为例lvextend -L 30G /dev/mapper/centos-root # 注意-L 是绝对大小-l 是 PE 数量30G 表示在原基础上加 30GB必须立即执行echo /dev/mapper/centos-root / ext4 defaults 1 1 /etc/fstab # 为什么因为 CentOS 6.3 的 init 脚本在 reboot 时会校验 fstab 中的 UUID 与实际设备匹配性 # 若未更新重启后可能因 UUID 变化导致 kernel panic验证 fstab 有效性mount -a # 无报错即通过若有 wrong fs type说明 ext4 驱动未加载需 modprobe ext42.3 调整文件系统大小并验证结果CentOS 6.3 的resize2fs必须在文件系统已挂载状态下运行与 CentOS 7 不同resize2fs /dev/mapper/centos-root # 输出应含 Resizing the filesystem on /dev/mapper/centos-root to 13107200 (4k) blocks.提示若报错resize2fs: Bad magic number in super-block说明文件系统损坏。此时不要强行e2fsck -f先dd if/dev/zero of/tmp/zero bs1M count100占用临时空间触发 OOM killer再sync echo 3 /proc/sys/vm/drop_caches清缓存最后重试resize2fs。这是 CentOS 6.3 内核对 ext4 元数据校验的玄学机制。验证扩容结果df -h / # 应显示 Size 从 20G→50GUse% 下降 tune2fs -l /dev/mapper/centos-root | grep Block count # Block count 应比扩容前增加约 786432030GB ÷ 4KB/block3. 挂载新硬盘到 /data 并实现开机自动挂载避开 UUID 陷阱与 ext4 特性冲突CentOS 6.3 的/etc/fstab解析器对 UUID 支持不稳定尤其当硬盘热插拔或 BIOS 启动顺序变更时UUIDxxx常解析失败导致系统卡在Starting udev:阶段。更可靠的方式是使用设备名如/dev/sdb1配合nofail参数并手动创建 ext4 文件系统——因为 CentOS 6.3 的mkfs.ext4默认启用flex_bg特性而旧内核可能无法识别必须显式禁用。3.1 格式化新硬盘并禁用不兼容特性假设新硬盘为/dev/sdbfdisk /dev/sdb EOF n p 1 w EOF # 创建主分区 /dev/sdb1关键禁用flex_bg和uninit_bgCentOS 6.3 内核不支持mkfs.ext4 -O ^flex_bg,^uninit_bg /dev/sdb1 # -O 指定文件系统特性^ 表示禁用必须同时禁用两者否则 mount 时报错 Unknown feature bit验证特性dumpe2fs -h /dev/sdb1 | grep Filesystem features # 输出不应含 flex_bg 或 uninit_bg3.2 编写安全的 fstab 条目并测试挂载编辑/etc/fstab禁止使用 UUID/dev/sdb1 /data ext4 defaults,nofail,errorsremount-ro 0 2参数说明nofail即使设备不存在也不阻塞启动CentOS 6.3 的 systemd 尚未出现此参数由 rc.sysinit 解析errorsremount-ro文件系统错误时自动只读挂载避免数据损坏0 2不备份0启动时 fsck 顺序为 2根分区为 1swap 为 0测试挂载mkdir -p /data mount /dev/sdb1 # 若报错 wrong fs type检查是否漏掉 -O 参数若报错 device busy确认 /dev/sdb 无其他分区被占用验证df -h /data # 应显示正确容量 mount | grep sdb1 # 应含 rw,relatime 字样3.3 设置目录权限与 SELinux 上下文CentOS 6.3 默认启用CentOS 6.3 的 SELinux 策略对/data无默认上下文需手动赋值chcon -t default_t /data # default_t 是 CentOS 6.3 中允许进程读写的通用类型 sestatus -b | grep SELinux status # 确保输出为 enabled注意若应用如 Apache需写入/data还需额外执行setsebool -P httpd_can_network_connect_db 1根据实际服务调整布尔值。4. 离线安装 MySQL 5.7绕过 glibc 2.12 限制与依赖地狱的三重补丁法CentOS 6.3 自带 glibc 2.12而官方 MySQL 5.7 RPM 要求 glibc ≥ 2.14。强行rpm -ivh mysql-community-server-5.7.39-1.el7.x86_64.rpm会报错error: Failed dependencies: glibc 2.14 is needed。网上流传的“降级 glibc”方案等同于系统自杀。正确解法是用 MySQL 官方提供的static-linked binary tarball非 RPM配合手动打补丁修复libaio.so.1符号缺失并替换my.cnf中废弃参数。4.1 下载并解压静态二进制包无需联网从 MySQL 官网下载mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz注意后缀glibc2.12这是专为 CentOS 6 编译的版本tar -xzf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ ln -s /usr/local/mysql-5.7.39-linux-glibc2.12-x86_64 /usr/local/mysql4.2 打补丁修复 libaio 符号缺失血泪经验CentOS 6.3 的libaio.so.1缺少io_setup符号导致 mysqld 启动报错undefined symbol: io_setup。解决方案是用patchelf修改二进制# 先安装 patchelf需提前下载 rpm 包 rpm -ivh patchelf-0.10-1.el6.x86_64.rpm # 修改 mysqld 二进制 patchelf --add-needed libaio.so.1 /usr/local/mysql/bin/mysqld # 验证 ldd /usr/local/mysql/bin/mysqld | grep aio # 应显示 libaio.so.1 /lib64/libaio.so.14.3 初始化数据库并修正 my.cnf 配置生成配置文件/etc/my.cnf[mysqld] basedir/usr/local/mysql datadir/usr/local/mysql/data socket/tmp/mysql.sock log-error/usr/local/mysql/data/error.log pid-file/usr/local/mysql/data/mysqld.pid # 关键注释掉 CentOS 6.3 不支持的参数 # skip-external-locking # performance_schemaOFF # innodb_file_per_table1初始化/usr/local/mysql/bin/mysqld --initialize --userroot --basedir/usr/local/mysql --datadir/usr/local/mysql/data # 记录输出中的临时密码形如 A1a2B3c4D5e6启动服务/usr/local/mysql/bin/mysqld_safe --userroot # 检查进程 ps aux | grep mysqld # 检查端口 netstat -tlnp | grep :33065. 忘记 root 密码后的应急恢复用单用户模式绕过 PAM 验证的精确操作CentOS 6.3 的 GRUB 启动菜单默认隐藏需在开机时按Esc键调出。进入单用户模式不是简单加init/bin/bash因为 CentOS 6.3 的init进程会校验/etc/shadow的完整性直接修改会导致Authentication token manipulation error。必须在rd.break阶段挂载根分区为可写并用passwd命令重置。5.1 进入 GRUB 编辑模式并修改内核参数开机看到 GRUB 菜单时按e键编辑启动项找到以kernel开头的行在行尾添加rd.break不是init/bin/bash按CtrlX启动系统将停在switch_root阶段提示Switching in progress...。5.2 重新挂载根分区并重置密码执行以下命令注意顺序# 重新挂载根分区为可写 mount -o remount,rw /sysroot # 切换到根环境 chroot /sysroot # 重置 root 密码关键必须用 passwd不能直接改 /etc/shadow passwd root # 输入新密码两次 # 更新 SELinux 上下文CentOS 6.3 必须 touch /.autorelabel exit # 退出 chroot 后重启 exec /sbin/init避坑 / 常见问题 / 排查 / 注意现象1chroot /sysroot后执行passwd报错Authentication token manipulation error原因/sysroot未 remount 为 rw或/etc/shadow权限被破坏应为 0000解决mount -o remount,rw /sysroot后chmod 600 /etc/shadow现象2重启后仍要求输入原密码新密码无效原因未执行touch /.autorelabelSELinux 阻止了 shadow 文件访问解决在chroot环境中执行touch /.autorelabel再exit现象3rd.break后卡在dracut:/#提示符无响应原因物理机 BIOS 中 Secure Boot 启用或 Hyper-V 虚拟机未关闭“安全启动”解决物理机进 BIOS 关闭 Secure BootHyper-V 中右键虚拟机 → 设置 → 安全 → 取消勾选“启用安全启动”现象4passwd成功但 SSH 仍拒绝登录原因/etc/ssh/sshd_config中PermitRootLogin被设为no解决在chroot环境中vi /etc/ssh/sshd_config将PermitRootLogin改为yes重启 sshdservice sshd restart6. 将 CentOS 6.3 ISO 制作成 WSL 兼容包用 lxrunoffline 自定义 init 的离线移植方案WSL1 仅支持 Ubuntu/Debian 等少数发行版但通过lxrunoffline工具可将任意 Linux 发行版 ISO 转为 WSL 实例。CentOS 6.3 的挑战在于其/sbin/init不兼容 WSL 的 init 进程模型且systemd缺失导致service命令不可用。解决方案是用busybox init替代并编写轻量级启动脚本接管服务管理。6.1 准备工作提取 ISO 并构建最小根文件系统下载CentOS-6.3-x86_64-bin-DVD1.iso挂载并复制核心文件mkdir /mnt/centos63 mount -o loop CentOS-6.3-x86_64-bin-DVD1.iso /mnt/centos63 rsync -av --excludePackages /mnt/centos63/ /tmp/centos63-root/ umount /mnt/centos63清理无用文件节省空间rm -rf /tmp/centos63-root/Packages /tmp/centos63-root/repodata find /tmp/centos63-root -name *.rpm -delete6.2 替换 init 并注入 WSL 启动脚本CentOS 6.3 原init会尝试访问/dev/consoleWSL 不提供该设备。替换为busybox init# 下载 static busybox需提前准备 cp busybox-static /tmp/centos63-root/sbin/init chmod x /tmp/centos63-root/sbin/init创建 WSL 启动脚本/tmp/centos63-root/etc/wsl-init.sh#!/bin/bash # WSL 兼容初始化脚本 export PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # 启动网络WSL 无 ifup/ifdown直接 ip 命令 ip link set lo up ip addr add 127.0.0.1/8 dev lo # 启动 SSH若需远程连接 /usr/sbin/sshd -D # 启动 syslogCentOS 6.3 依赖 rsyslog /usr/sbin/rsyslogd -n # 保持前台进程运行防止 WSL 退出 tail -f /var/log/messages赋予执行权限chmod x /tmp/centos63-root/etc/wsl-init.sh6.3 使用 lxrunoffline 创建 WSL 实例安装lxrunofflineWindows PowerShellInvoke-WebRequest -Uri https://github.com/DDoSolitary/LxRunOffline/releases/download/v3.5.0/LxRunOffline.zip -OutFile LxRunOffline.zip Expand-Archive LxRunOffline.zip -DestinationPath .执行导入.\LxRunOffline.exe install -n CentOS63 -d C:\WSL\CentOS63 -r C:\temp\centos63-root -d启动实例wsl -d CentOS63 # 进入后执行 /etc/wsl-init.sh 即可启动服务我坚持在每台 CentOS 6.3 机器上做三件事echo alias llls -la /root/.bashrc、yum install epel-release -y yum install htop wget curl -y、以及把resize2fs和passwd的操作步骤手写在机房白板上——因为总有人会忘记密码也总有人会等到根分区只剩 1% 才喊救命。这些不是“过时技术”而是生产环境里真实的、带着油污味的生存技能。希望帮到你。本文还有配套的精品资源点击获取
返回列表