ARTICLE DETAIL

资讯详情

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

麒麟V10系统命令实战:从基础运维到故障恢复与软件部署

麒麟V10系统命令实战:从基础运维到故障恢复与软件部署 1. 麒麟V10版本认知与系统定位1.1 先搞清楚你手里是哪套麒麟麒麟V10看起来是一个名字实际拿到的镜像可能千差万别。我在日常维护中见过太多人因为版本没搞对照着网上的教程瞎操作最后把系统搞崩的案例。所以在敲第一条命令之前必须把版本这关过了。麒麟操作系统主要分桌面版和服务器版两大阵营两者的内核参数、软件包管理器、默认服务管理方式都有区别。桌面版面向日常办公场景图形化做得更完善服务器版面向生产环境裁剪更精简稳定性优先。你在终端里敲cat /etc/os-release能看到V10的版本号但更重要的是看下面的VARIANT_ID字段它会直接告诉你这是desktop还是server。再看处理器架构这决定了你下载软件包时该选x86_64还是aarch64。麒麟V10支持多款国产芯片包括飞腾、鲲鹏、龙芯、兆芯、海光等你可以在终端里执行uname -m验证实际架构。如果是aarch64那很多针对Intel编译的软件包就不能直接用得找ARM版本的替代方案。还有SP1、SP2、SP3的迭代版本区别SP3是最新的服务包版本修复了大量安全漏洞和硬件兼容问题如果条件允许建议优先使用SP3。我个人的习惯是装机后第一件事就执行一套信息采集命令把系统底细摸清楚再开始干活。cat /etc/os-release uname -a uname -m hostnamectl这几条命令输出的信息组合起来基本就能确定你该怎么选择后续的软件源、怎么编译软件、怎么排障。永远不要跳过这个步骤经验告诉我百分之八十的安装失败都源于版本误判。1.2 命令体系整体认知从CentOS迁移过来的人怎么快速上手麒麟V10和CentOS的渊源很深它的命令体系对出身于Red Hat系的人特别友好。如果你之前玩过CentOS 7或者CentOS 8那上手麒麟V10几乎是无缝切换。基础命令层面文件操作还是ls、cd、cp、mv、rm这一套用户和权限管理还是useradd、usermod、chmod、chown几乎不用额外学习成本。软件包管理工具用的是yum底层仓库是rpm虽然麒麟也有自己的yum源配置但命令用法和CentOS保持一致。服务管理已经全面切换到了systemd所以systemctl start、systemctl enable这套命令完全通用。真正需要留意的差异点在于麒麟默认的软件仓库里收录的软件包版本可能会比CentOS略旧某些小众软件未必在仓库里存在而且麒麟对中文环境和国产软硬件生态做了大量适配这意味着系统里默认包含了更多中文字体、输入法框架和国产驱动模块。在实操的时候不要惯性思维地以为缺少某个组件就非得去源码编译先yum search搜一下多半能直接装上。我在帮朋友从CentOS往麒麟迁移业务系统时发现一个很大的便利原来写在CentOS上的Shell脚本放到麒麟上基本不需要改。只要是标准的bash脚本没有依赖特殊的私有命令运行行为是一致的。这一点对企业的国产化替代改造特别关键意味着迁移成本可以压得很低。2. 基础命令与日常操作实战2.1 用户管理与权限控制root密码忘了怎么办运维过程中最常遇到的场景之一就是root密码遗失。银河麒麟V10系统root密码重置这个问题在整个热词里排名非常高。原因也很好理解很多单位部署了麒麟之后管理员可能半年都不登录一次等真正要上去改配置的时候发现密码早就不知道丢哪了。重置密码的经典方案是进入单用户模式。麒麟V10用的是GRUB引导开机出现GRUB菜单时快速按下e键进入编辑模式。找到linux开头的那一行在这一行的末尾追加rd.break参数然后按Ctrlx启动。系统会进入一个switch_root的紧急模式命令行接下来执行mount -o remount,rw /sysroot chroot /sysroot passwd root touch /.autorelabel exit reboot关键点是rd.break参数会把系统停在initramfs阶段此时根文件系统是只读挂载的所以必须先用mount -o remount,rw /sysroot重新以读写方式挂载否则chroot进去之后连修改密码的权限都没有。执行完passwd root之后建议顺手创建一个/.autorelabel标记文件强制SELinux重新标记文件上下文防止因安全上下文错乱导致系统无法正常登录。还有一种情况是机器启用了SELinux且策略比较严或者在重启后卡在登录界面始终无法通过认证。这时候可以用光盘或U盘启动进入急救模式插入麒麟V10的安装介质在启动菜单里选择Troubleshooting再选择Rescue a system系统会引导你进入一个急救Shell同样是chroot之后passwd root重设密码。这个方法比单用户模式更稳适合GRUB配置已经被改乱的情形。如果只是普通用户的密码忘了操作更简单。用root登录后一条passwd 用户名就能重置或者干脆删掉重建。但日常管理中我建议开启sudo权限给需要提权的普通用户这样既不用把root密码到处分发又能保留完整的审计日志。麒麟V10里把用户加入wheel组之后编辑/etc/sudoers开启对应权限即可。2.2 软件包管理yum源的配置与离线安装技巧麒麟V10系统命令实战里yum的使用频率仅次于cd和ls。系统自带的yum源在安装完操作系统后就能直接使用当你需要安装编译工具链、网络工具、文本编辑器时直接yum install -y 包名就完事。但实际生产环境里有两类痛点第一是内网环境连不上外网第二是需要安装仓库里没有的软件。针对第一类痛点手工配置本地yum源或内网镜像源是标配操作。麒麟V10的yum源配置文件默认放在/etc/yum.repos.d/目录下你可以新建一个local.repo文件内容如下[local] nameLocal Repository baseurlfile:///mnt/cdrom enabled1 gpgcheck0然后把麒麟V10的安装光盘或ISO镜像挂载到/mnt/cdrom就能用光盘里的软件包作为yum源了。对于离线环境这是一个非常稳的方案。如果你有内部镜像服务器也可以把baseurl改成http://内网IP/麒麟路径整个机构的所有机器都能共用一套软件源。对于仓库里没有的软件可以先去官网下载rpm包然后用rpm -ivh 包名直接安装。但rpm安装的痛点在于依赖关系得自己解决装一个软件可能要手动先装五六个依赖包。更聪明的做法是在有外网的机器上先把依赖全部下载下来打包拷贝到内网机器上再批量安装。使用yumdownloader --resolve命令可以自动解析依赖并下载所有需要的rpm包yum install -y yum-utils mkdir /tmp/pkg yumdownloader --resolve --destdir/tmp/pkg 软件包名拿到/tmp/pkg目录下的rpm文件后在内网机器上执行rpm -ivh /tmp/pkg/*.rpm就完成了离线安装。这个技巧在处理PostgreSQL、MinIO这些需要部署在内网环境的软件时特别有用省去了在每台机器上折腾软件源的麻烦。2.3 网络配置与远程管理没有图形界面也能稳住远程连接不少人刚装上麒麟V10桌面版第一反应是图形化工具点点点。但真正的服务器运维场景里远程管理靠的是命令行。拿到一台新机器我建议第一时间固定好IP并开启SSH服务。麒麟V10使用NetworkManager管理网络连接。检查网络状态用nmcli这个命令远比老旧的ifconfig好用。比如查看当前所有网络连接nmcli connection show假设网卡名称是ens33配置静态IP可以用nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 223.5.5.5 nmcli connection up ens33这套命令执行完IP地址、网关、DNS一次搞定比编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件要直观而且立即生效不用重启网络服务。SSH服务默认可能没有启动顺手开启并设置开机自启systemctl start sshd systemctl enable sshd systemctl status sshd公网或跨网段访问还要注意防火墙放行。麒麟V10默认使用firewalld执行firewall-cmd --permanent --add-servicessh即可放行SSH端口。修改完配置记得firewall-cmd --reload重载规则。如果连不上就先用ping测试通了没有再telnet IP 22测端口逐层排查别一开始就在配置上瞎捉摸。3. 系统管理与故障恢复实战3.1 服务管理与开机自启systemd的日常用法麒麟V10的操作系统服务基本上都跑在systemd体系下。理解systemd你的系统管理工作就成功了百分之六十。启动一个服务用systemctl start 服务名停止用systemctl stop 服务名重启用systemctl restart 服务名这些都很直觉。关键是开机自启的设置很多新手装了软件发现重启后服务没起来就是漏了systemctl enable这一步。查看服务状态时systemctl status输出的内容信息量很大。它会显示进程PID、占用内存、最近日志摘要还能直接告诉你这个服务当前是active (running)还是failed状态。服务起不来的第一件事就是看这个输出比盲目百度高效得多。systemctl status postgresql systemctl enable postgresql systemctl disable postgresql systemctl is-enabled postgresqlsystemd还有一个强大的能力就是journalctl日志查看器。当服务报错时直接journalctl -u 服务名 -n 50就能看到最近50行日志追问题特别方便。如果你想设置开机自动登录这分两种情况。桌面版要让用户绕过登录界面直接进桌面需要修改/etc/gdm/custom.conf[daemon] AutomaticLoginEnabletrue AutomaticLogin用户名服务器版要自动登录tty控制台得新建/etc/systemd/system/gettytty1.service.d/autologin.conf[Service] ExecStart ExecStart-/sbin/agetty --autologin 用户名 --noclear %I $TERM修改后执行systemctl daemon-reload重启生效。注意自动登录有安全风险如果机器所在环境不可信不建议开启。3.2 磁盘与数据盘挂载扩展存储空间的完整流程生产环境里磁盘空间不够是常事。把新的数据盘挂载到麒麟V10系统我习惯走一套固定的流程不会错也不会乱。先查看系统识别到的磁盘设备lsblk fdisk -l假设新磁盘是/dev/sdb先分区再格式化再挂载。分区可以用fdisk /dev/sdb交互式操作也可以用parted一键搞定。考虑到很多人已经习惯了fdisk这里我直接给出fdisk的完整流程输入n新建分区一路默认回车最后输入w写入分区表。格式化文件系统时追求性能用xfs追求通用性用ext4mkfs.xfs /dev/sdb1然后创建挂载点并挂载mkdir -p /data mount /dev/sdb1 /data关键一步是设置开机自动挂载。编辑/etc/fstab在末尾添加/dev/sdb1 /data xfs defaults 0 0建议用UUID代替设备文件名因为设备名可能因硬件变更而漂移。获取UUID执行blkid /dev/sdb1然后在/etc/fstab里写成UUID你的UUID号。修改完/etc/fstab后务必执行mount -a测试一下配置是否正确避免因挂载配置写错导致开机卡在紧急模式。如果你已经搭好了PostgreSQL或者MinIO这类数据密集应用把数据目录挂载到独立数据盘上再迁移数据是很常见的做法。操作顺序是先停服务拷贝数据目录改配置文件里的路径重新挂载最后启动服务验证数据完整性。切记不要热迁移文件在写入状态下拷贝过去90%的概率会损坏数据库文件。3.3 开机过程与启动引导修复GRUB出问题怎么抢救机器开不了机对运维来说就是事故。麒麟V10的引导链路跟其他现代Linux发行版几乎一致BIOS或UEFI加载GRUBGRUB加载内核内核挂载根文件系统。任何一环出错都可能导致系统停摆。最常见的启动故障是修改/etc/fstab时写错了挂载项导致根文件系统无法正常挂载。症状是开机进入紧急模式出现Welcome to emergency mode的提示。这时输入root密码进入救援Shell执行journalctl -xb查看详细的报错日志找到出问题的挂载项用vim或nano修复/etc/fstab然后reboot。GRUB菜单丢失或者引导损坏需要从安装光盘或U盘启动进入急救模式后执行重装GRUB的命令。对于UEFI启动的机器grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg grub2-install /dev/sda对于传统BIOS启动grub2-mkconfig -o /boot/grub2/grub.cfg grub2-install /dev/sdagrub2-install会把引导程序写进磁盘的主引导记录grub2-mkconfig负责重新生成启动菜单配置文件。如果内核更新后启动菜单里出现了多个旧内核选项也可以用grub2-set-default来指定默认启动项避免意外进入旧版内核。4. 常见软件部署与生态兼容4.1 数据库部署Oracle 19c与PostgreSQL的实操对比麒麟V10安装Oracle 19c和PostgreSQL是两个完全不同的难度级别。PostgreSQL的安装比较顺滑Oracle因为依赖库和内核参数要求严格步骤繁琐得多。先说我更推荐大家在中小型项目里优先考虑的PostgreSQL。麒麟V10的软件源里直接就有PostgreSQL的包一条命令就能装上yum install -y postgresql-server postgresql-contrib postgresql-setup initdb systemctl start postgresql systemctl enable postgresql初始化数据库之后默认数据目录在/var/lib/pgsql/data。在pg_hba.conf里把认证方式改成md5或scram-sha-256在postgresql.conf里设置监听地址为0.0.0.0重启服务就能远程访问。整个过程下来不到十分钟。真正的坑在于后期PostgreSQL的shared_buffers参数需要根据物理内存大小调整乱调会导致性能明显下降。我这里给个参考值——物理内存8GB的机器shared_buffers建议设为2GB内存32GB的建议设为8GB。内存越大缓存命中率越高但也不要超过物理内存的1/4否则操作系统本身的页缓存会不够用。Oracle 19c单机安装就繁琐了。第一关是依赖库麒麟V10默认仓库里缺了好几个Oracle要求的包需要逐个yum install补齐。第二关是内核参数Oracle要求信号量、共享内存、文件句柄数等参数达到一定阈值必须编辑/etc/sysctl.conf添加配置kernel.semmsl 321024 kernel.semmns 1200000 kernel.shmmax 物理内存的一半 kernel.shmall 物理内存页数 fs.file-max 6815744修改完执行sysctl -p生效。第三关是创建Oracle用户和安装目录并设置环境变量ORACLE_HOME、ORACLE_BASE、PATH。这两套数据库我都踩过很多坑总体来说如果业务没有强制要求Oracle选PostgreSQL能少掉一半头发。但确实很多OA系统、政务系统只适配了Oracle那也只能老实按官方文档一步步来。关键提醒是装Oracle之前先给系统做一个快照或备份一旦过程出错回滚比反复调试要省时间得多。4.2 虚拟化与桌面应用在麒麟V10里跑Windows虚拟机很多单位从Windows迁移到麒麟后仍然有少数业务系统必须依赖Windows环境这时候虚拟化是绕不开的话题。麒麟V10上跑Windows虚拟机主流的方案是使用QEMU/KVM加Virtual Machine Manager或者用Oracle的VirtualBox。QEMU/KVM是内核原生支持的虚拟化方案性能损耗最小而且在服务器版麒麟V10上开箱即用。使用前先确认CPU虚拟化已开启grep -E (vmx|svm) /proc/cpuinfo如果有输出说明虚拟化已开启。然后安装必要的软件包yum install -y qemu-kvm libvirt virt-install virt-manager systemctl start libvirtd systemctl enable libvirtd用virt-manager图形工具新建虚拟机选择Windows镜像分配CPU核数和内存接下来基本上就是一路下一步。创建完成后就能在图形界面里看到Windows虚拟机的控制台操作体验和VMware差别不大。如果机器性能比较弱跑全量虚拟机有点吃力的也可以退一步考虑应用层的兼容方案。Crossover是基于Wine的Windows应用兼容层能让一部分Windows软件直接在麒麟桌面上运行不必装整个Windows系统。之前在热词里看到有人问Crossover免费版是否适用银河麒麟V10我可以明确地回答适用。Crossover提供了针对麒麟V10的deb安装包装上之后可以直接运行一部分常用的Windows办公软件、浏览器、简单工具。免费版的功能比付费版少比如不能创建新的容器但应付三两个固定的软件绰绰有余。我用它跑过几款老旧的Windows管理工具稳定性和兼容性比预期好。不过建议有个心理准备大型软件、需要特定驱动的软件用它基本跑不起来这类需求还是要老实开虚拟机。4.3 存储与桌面工具MinIO部署与Remmina远程桌面MinIO部署在麒麟V10上是件很轻松的事。它只需要一个可执行的二进制文件没有额外的系统依赖。从官网下载了适合x86_64或aarch64的MinIO服务端之后把它放到/usr/local/bin/目录下然后启动minio server /data/minio --console-address :9001默认API端口是9000Web控制台端口是9001。生产环境我通常把它注册成systemd服务确保开机自启并能在崩溃后自动拉起[Unit] DescriptionMinIO Object Storage Afternetwork.target [Service] ExecStart/usr/local/bin/minio server /data/minio --console-address :9001 Restartalways Userminio Groupminio [Install] WantedBymulti-user.target写好unit文件后执行systemctl daemon-reload systemctl enable minio systemctl start minio就能正常跑起来。MinIO主要用途是对象存储S3 API兼容性好配合备份脚本或者网盘应用非常方便。我建议把MinIO的数据目录独立挂载在数据盘上这样万一系统盘故障数据不会跟着遭殃。Remmina是Linux桌面很受欢迎的远程桌面客户端支持RDP、VNC、SSH等多种协议。麒麟桌面版V10的仓库里可能没有现成的包你需要先启用EPEL源或直接从Remmina官网下载针对麒麟的rpm包。下载后用yum install -y ./remmina包名.rpm安装yum会自动处理依赖。装上之后连接Windows远程桌面时就是填IP、用户名、密码然后分辨率选个自适应模式用起来和Windows自带的远程桌面客户端没有明显差别。如果安装时提示依赖缺失可以先把rpm包下载到本机用yum localinstall代替直接rpm -ivh安装这样yum会尝试从仓库里搜索并补全依赖。实际遇到依赖冲突的概率不高除非你的仓库源版本和Remmina要求的版本差距太大。真遇到这种情况最简单的办法是去GitHub上找AppImage打包版本解压后直接运行不需要安装过程也几乎不依赖系统库版本。5. 常见问题与排查技巧实录5.1 高频报错速查表日常使用麒麟V10的过程中我把遇到频率最高的几个问题和对应的解决办法整理成了速查表直接照着排查就能省不少事。问题现象可能原因解决方案passwd命令提示模块未知PAM配置文件被改动或损坏检查/etc/pam.d/passwd恢复默认内容或从同版本机器拷贝系统启动进入紧急模式/etc/fstab挂载项错误输入root密码进入Shell执行journalctl -xb查看具体错误并修复yum install报仓库源错误yum源失效或网络不通检查/etc/yum.repos.d/配置切换可用源或配置本地源ssd服务启动失败密钥权限过大或配置错误修复/root/.ssh和authorized_keys的权限为600/700图形界面无法登录磁盘空间满或者PAM配置错误切换到tty终端检查df -h清理日志和临时文件软件安装后命令找不到PATH环境变量未包含安装目录执行export PATH$PATH:/usr/local/bin并写入/etc/profile这个表里的每一个问题我都亲眼见过至少一次。特别要说的是PAM相关的坑你以为改动了什么配置文件其实可能就是某个安装脚本自动覆盖了它恢复默认配置就能解决没必要从头把系统重装一遍。5.2 U盘启动时的root权限问题U盘安装麒麟V10时遇到root权限不够的情况是新手问得非常多的问题。安装系统的时候图形安装界面本身不需要root权限但要手动分区或调整磁盘设置时某些操作确实被限制了。这是因为图形安装器默认以非特权模式运行避免误操作破坏已有数据。解决思路很简单在安装启动菜单界面高亮第一个安装选项按e编辑启动参数在linux行末尾添加inst.shell参数启动后就能进入带root权限的Shell环境。在里面执行fdisk、parted、mkfs等命令来预先规划分区。分区规划好之后再回到图形安装界面重新扫描磁盘手动挂载预先分好的区即可。如果不想折腾命令行也可以直接让图形安装器自动分区安装完成之后再通过命令行去调整数据盘。系统安装完成后你已经是root或sudoer用户挂载、分区、扩容这些操作的权限限制就小得多了。5.3 系统备份与恢复策略我不止一次强调备份的重要性每次看到有人的数据因为系统故障丢失都觉得痛心。麒麟V10的备份思路跟其他Linux一致最重要的是把配置文件和业务数据分开对待。系统配置文件的数量有限但至关重要备份/etc目录能解决绝大部分恢复场景。最简单的做法是打包tar -czvf etc_backup_$(date %F).tar.gz /etc业务数据备份要具体看应用。数据库用官方工具备份比如PostgreSQL的pg_dump、Oracle的expdp或RMAN文件服务直接用rsync同步就够。MinIO里存的对象数据可以用mc mirror命令把桶内容备份到另一个存储位置。mc mirror --overwrite local/data remote/backup恢复演练一定要定期做不要把备份当成心理安慰。我在实际经验里最深的一条教训就是备份流程没验证过就不能算备份有效。曾经有个项目组每周都跑备份任务直到出事故要恢复时才发现在的备份文件全是损坏的因为磁盘空间早就满了导致任务失败而监控系统没有报警。所以每次备份之后打开备份文件检查一下完整性这个习惯真能救命。6. 终篇我的实操心得麒麟V10操作系统命令实战这件事说到底是熟能生巧。这套系统和CentOS系的高度相似性让熟悉Red Hat体系的运维能快速迁移而它与国产软硬件生态的深度融合又带来了一些独有的坑和适配细节。我最深的一点感受是不要因为它带了国产标签就觉得它跟主流Linux有什么本质不同。它就是Linux就是一套内核加一套GNU工具链遇到问题时依旧可以用经典Linux的排查方法去解决。给刚入坑的朋友一个实在的建议在你敲下每一条危险命令前先问自己三个问题——这条命令是干什么的它会修改哪些系统层面的东西如果执行错了我有没有办法回滚尤其是在修改fstab、GRUB配置、PAM配置这些关键文件时多留一个心眼备份原文件试完再下线保证随时能恢复到可用状态。最后分享一个小技巧在麒麟V10上养成用history查看命令历史的习惯特别是history | grep 命令关键字这种组合能帮你快速回忆起某次成功的操作流程。遇到问题解决完之后把操作命令按时间顺序记录在一个固定的笔记文件里几个月后再遇到同类问题时翻一翻那种原来我当时这样干过的感觉比去搜索引擎找半天的效率高得多。
返回列表