分类归档

技术工程

在此分类下共找到 7 篇文章

技术工程

XFS 数据盘无损扩容到 3TB:MBR 转 GPT 实战

这篇文章记录了一次生产服务器数据盘无损扩容的实战:业务目录 `/defaultUploadFolder` 所在磁盘从 800G 扩到接近 3TB,但受限于旧的 MBR 分区表,直接扩容会卡在 2TB 上限。作者先通过 `lsblk`、`findmnt`、`blkid` 和 `growpart -N` 定位问题,确认瓶颈不在 XFS,而在分区表格式。 解决方案是先备份分区信息并做好验证,再用 `gdisk` 将 MBR 安全转换为 GPT,随后扩展分区,最后用 `xfs_growfs` 在线扩展文件系统。整个过程没有迁移 800G 数据,也没有重新格式化。文章同时强调了几个关键避坑点,比如不要误用 `parted mklabel gpt` 或 `mkfs.xfs`,以及扩容后 `lsblk` 和 `df` 容量显示差异属正常现象。

10 min readREAD MORE
技术工程

Java 第三方 HTTPS 接口 PKIX path building failed 解决方案

本文介绍了 Java 调用第三方 HTTPS 接口时常见的 “PKIX path building failed” 报错及其处理方式。问题通常出现在对接政务网、专网、私有云或自签名证书接口时,因为 JVM 的信任库 cacerts 中没有目标证书对应的信任链,导致 SSL 握手失败。 文章给出两种解决思路:首选是通过 openssl 在服务器上抓取目标证书,再用 keytool 导入当前 JRE 的 cacerts 信任库,重启服务后即可恢复正常;另一种是测试或应急场景下,重构 RestTemplate,临时关闭 SSL 证书校验,绕过连接限制。 最后强调,生产环境应优先采用导入证书的标准做法,并确保导入的 JDK/JRE 路径与实际运行环境一致,避免证书加错位置而问题依旧。

9 min readREAD MORE
技术工程

Python 3.11 编译后缺少 _ssl 模块:从 OpenSSL 共享库到重新编译的完整修复记录

本文记录了一次 Python 3.11.9 源码安装后缺少 _ssl 模块的排查与修复过程。表面上 Python 已安装成功,但执行 import ssl 时却报出 No module named '_ssl',原因并不在 Python 主程序,而是 SSL 相关扩展在编译阶段失败。 问题的关键有三点:一是 OpenSSL 最初被编译成了静态库 no-shared,导致 Python 的 _ssl 动态扩展无法正常链接;二是自定义安装的 OpenSSL 共享库位于 /usr/local/openssl11/lib,却没有被系统动态链接器识别;三是 Python 源码目录中的旧构建缓存干扰了重新编译,导致补装依赖后问题依旧。 作者最终采用了独立安装 OpenSSL 共享库的方案:重新编译 OpenSSL 时启用 shared,并通过 ldconfig 注册库路径;随后彻底清理 Python 构建缓存,重新 configure 时显式指定 OpenSSL 目录和运行时路径,最后成功编译出 _ssl 模块并完成 Python 安装。这个案例说明,在 Linux 上源码编译 Python 时,SSL 模块是否可用,取决于 OpenSSL 的编译方式、链接路径和 Python 的重新构建是否彻底。

21 min readREAD MORE
技术工程

某主流 Markdown 编辑器本地激活机制与安全边界突破分析

本文从逆向安全视角分析了一款基于 Electron 的主流 Markdown 编辑器本地激活机制,揭示了客户端授权状态被前端脚本直接控制时,如何被本地篡改、静态资源劫持和页面脚本注入所绕过。文章进一步指出,这类修改不仅会破坏软件完整性,还可能引入供应链污染、恶意代码植入和企业合规风险。最后,作者给出了面向研发和防守方的加固思路,包括资源签名校验、代码混淆以及动态密钥绑定,强调了客户端软件在安全边界上的脆弱性。

6 min readREAD MORE
技术工程

阿里云 ECS 数据盘迁移实战:ext4 分区盘与 LVM 逻辑卷迁移

这篇文章结合一次阿里云 ECS 数据盘迁移实战,系统梳理了两类常见场景:普通 ext4 分区盘从旧盘切换到新盘,以及 LVM 逻辑卷通过 UUID 配置开机自动挂载。作者重点强调了生产环境迁移的核心原则——先做预同步,再停业务写入,最后完成 rsync、挂载切换和 /etc/fstab 配置,确保数据一致性、可回滚和可验证。 文中还详细记录了数据库目录占用排查、fuser/mount 处理挂载点繁忙问题,以及 MongoDB 这类非标准启动方式带来的坑,适合需要做云盘迁移、数据库数据盘切换或 LVM 自动挂载配置的 Linux 运维人员参考。

28 min readREAD MORE
技术工程

MySQL基于备份库与 binlog 的组合恢复方案

这篇文章记录了一次 MySQL 误更新后的完整恢复过程:由于执行了未加 WHERE 条件的 UPDATE 语句,业务表中 379 条记录被错误覆盖,且事务已提交,无法回滚。作者先通过备份前的安全导出保留现场,再确认 MySQL 开启了 ROW + FULL 模式的 binlog,为后续找回误更新前的数据提供了关键条件。 恢复方案采用“备份库 + binlog”组合处理:先将昨天的全量备份导入临时恢复库,按主键回填 367 条历史数据;剩余 12 条因属于当天新增、备份中不存在,只能通过导出误操作时间段的 binlog,提取 UPDATE 前的旧值,再生成恢复 SQL 逐条修正。文章不仅讲清了排查和恢复思路,也强调了误操作后的备份兜底、binlog 配置检查以及 NULL 值恢复等实战细节,非常适合作为 MySQL 数据恢复的运维参考。

18 min readREAD MORE
技术工程

Docker & K8S 命令合集

这份命令合集快速整理了 Docker 常用操作:镜像管理包括构建 build、查看 images、拉取 pull、推送 push、删除 rmi、打标签 tag、查看历史 history,以及用 save/load 做镜像离线导入导出。容器生命周期涵盖 run 的常见参数(后台运行、端口映射、挂载卷、命名、环境变量、网络、自动删除),以及 ps 查看、start/stop/restart 控制、rm 删除、kill 强停、pause/unpause 暂停恢复。调试与交互提供 logs 跟踪日志、exec 进入容器执行命令、inspect 查详情、top 看进程、stats 看资源、cp 复制文件。最后还涉及网络与数据卷相关操作,便于服务互联与数据持久化。

32 min readREAD MORE