银河麒麟V10磁盘扩容实操:虚拟机根分区与物理机数据盘完整指南
搞国产系统运维这两年被问得最多的问题不是“怎么安装银河麒麟V10”而是“装完之后磁盘不够用了怎么办”。尤其是那些在虚拟机上跑银河麒麟V10的同事系统盘给个40G、50G开机装完数据库和中间件一块盘就直接告警。更麻烦的是好多人一开始没给LVM留余地分区表、swap、backup分区全挤在一起等想扩容的时候才发现无从下手。这篇文章我就把银河麒麟V10Kylin V10扩展磁盘空间的完整实操过程从头到尾捋一遍。从最基础的“怎么先看清系统盘方案”、到虚拟机扩容根分区、再到物理机加第二块SSD当数据盘以及扩容后容易踩的网卡、回收站、无网环境工具准备这些坑全部覆盖。不管你是刚接触国产化替代的新手还是已经上手但被磁盘问题卡住的老手这套流程拿过去基本能直接照着做。1. 动手前先看清磁盘现状与扩展方案选择很多人一上来就执行resize2fs或者fdisk改分区结果把系统搞到进不去。原因很简单压根没搞清楚系统盘的底层布局就直接动刀了。银河麒麟V10有服务器版和桌面版有x86_64也有基于ARM的飞腾、鲲鹏平台不同场景下系统的分区方案、文件系统类型和引导方式都不一样必须先摸清楚再决定怎么扩。1.1 三分钟摸清系统盘方案进入系统后我习惯先跑下面几组命令一组一组看df -hT lsblk pvs; vgs; lvs fdisk -l /dev/sdadf -hT是看文件系统的类型和挂载点重点确认根分区的类型是xfs还是ext4。为什么这个重要因为xfs文件系统扩容用xfs_growfsext4用resize2fs两个工具不能互换。xfs对于ext4来说还少了一个“只能扩不能缩”的约束如果你后面想调整分区大小xfs会麻烦一些。lsblk看的是磁盘和分区的父子关系。我拿到一台机器先看有没有vg相关的设备名比如/dev/mapper/vg0-lv_root如果有基本可以确定系统是LVM布局如果lsblk里全是/dev/sda1、/dev/sda2这种独立分区那就是普通分区布局。这一步决定了整个扩容路线。pvs、vgs、lvs是看LVM细节的确认物理卷、卷组、逻辑卷的当前大小和剩余空间。最核心的一个字段是VFree也就是卷组里还没分出去的空间后面扩容全靠它。[rootkylin ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a-- 100.00g 20.00g如果PFree有空间说明卷组本身有空闲直接给逻辑卷加容量就行。如果PSize已经是磁盘全部分区大小那就要回到分区层面积扩大物理卷所在分区的尺寸。fdisk -l和parted -l要看的是分区表信息。银河麒麟V10安装时如果选了自动分区大概率会分出boot分区、LVM或根分区还有一个专门的backup分区。这个backup分区的存在感很低但扩容时经常是它挡住一切这点我在后文会专门讲。1.2 不同安装场景决定扩容路线同样是“磁盘不够”物理机和虚拟机的处理办法完全是两个世界。虚拟机场景底层的虚拟磁盘文件如VMware的vmdk、QEMU的qcow2只是你“能撑多大”的上限。你可以先不删除任何数据直接在虚拟化平台把磁盘调大然后进系统让操作系统认出新容量再分配给根分区。这是最平滑的一条路我的建议是优先用这种方式。物理机场景如果机箱里还有空盘位最稳妥的办法是加一块新硬盘格式化后挂载成数据盘把/var、/opt、/home等目录迁过去。而不是在主盘上去冒分区表调整的风险尤其是系统已经跑了几年的机器。云主机场景云平台控制台一般提供“扩容云盘”功能扩完之后进系统用growpart和resize2fs完成收尾。跟虚拟机思路类似只是底层磁盘设备可能是/dev/vda或/dev/nvme0n1。我见过最危险的操作是有人在物理机上直接删除中间的分区然后重建想给根分区腾位置。结果分区起始扇区一改整个文件系统就废了数据全没。所以我在这里先立一条原则在动分区表之前先把数据备份好至少搞一个快照。虚拟机就先做快照再操作物理机就用dd或者xfsdump备份关键目录这十几分钟花得值得。2. 虚拟机扩容实录给根分区加空间的完整步骤虚拟机上跑银河麒麟V10是现在最常见的部署方式我以一台VMware Workstation虚拟机为例完整演示一遍扩容根分区的过程。底层逻辑其实相通先改虚拟磁盘大小再在系统里利用多出来的空间扩展LVM或普通分区最后在线扩文件系统。2.1 虚拟机层先把磁盘拉大关机状态下在VMware Workstation里右键虚拟机进入“虚拟机设置”选择硬盘点“扩展”把磁盘从100G改成200G。这一步是修改底层vmdk文件的大小修改后开机。开机后你会看到很神奇的一幕df -h显示的根分区还是原来的大小但lsblk里sda已经从100G变成了200G。这是因为磁盘设备变大了但操作系统里分区表记录的还是旧的容量信息需要手动让分区“吃下”新增空间。提示VMware的“扩展”功能只能把磁盘变大不能变小。操作前如果想稳妥一点先用vcb或者直接在虚拟机上做快照再执行扩容。2.2 LVM场景下在线扩容根分区如果你系统安装时选的是自动分区多半是LVM布局。登录后先确认df -hT / lvdisplay比如根文件系统的设备路径是/dev/mapper/vg0-lv_root文件系统是xfs。那么整个扩容流程分三步扩PV、扩LV、扩文件系统。第一步用fdisk /dev/sda进入交互界面查看当前分区表确认哪个分区是LVM物理卷用的。假设是/dev/sda2记住它结束的扇区号然后删除这个分区再重建。这里有四个字千万别慌。因为LVM本身有逻辑卷元数据重建分区的时候只要起始扇区不改变数据一点也不受影响。Delete掉/dev/sda2再用n新建主分区起始扇区沿用原来的数字结束扇区直接回车让分区表占满剩余空间最后t把分区类型改回8eLinux LVMw写入分区表。分区表变更后执行partprobe /dev/sda让内核重新读取然后刷新物理卷pvresize /dev/sda2跑完用pvs看PSize应该已经变成200GPFree出现新增的100G空闲空间。接着把空闲空间全部分配给根逻辑卷lvextend -l 100%FREE /dev/vg0/lv_root最后扩文件系统。这一步最容易搞错类型。xfs执行xfs_growfs /ext4执行resize2fs /dev/mapper/vg0-lv_root再次运行df -h /根分区容量就已经生效了。整个流程下来大概十分钟不需要重启。注意lvextend命令后面也可以是-L 100G指定固定容量但我个人更喜欢-l 100%FREE要么不扩要么一次吃满省得以后再操作一遍。2.3 没有LVM时普通分区怎么扩有些银河麒麟V10安装场景尤其是不小心选了自定义分区方案是没有LVM的根分区就是一个普通分区比如/dev/sda3。这时候扩容逻辑有类似之处但更依赖growpart这个工具。同样先确认虚拟机磁盘已经从100G扩到200G再安装工具yum install -y cloud-utils-growpart然后执行growpart /dev/sda 3这条命令的作用是把/dev/sda3这个分区的结束位置扩展到磁盘末尾相当于重新划分分区表但不破坏数据。完成后用lsblk确认分区大小已经变化。接下来按文件系统类型扩# ext4 用这个 resize2fs /dev/sda3 # xfs 用这个 xfs_growfs /普通分区扩容有个隐藏难点如果根分区后面还跟着swap分区或者backup分区growpart就无法把根分区扩展到磁盘末尾因为“最后一根绳子”被别的东西占着。这种情况下就得先处理swap或backup分区典型的做法是如果swap在根分区后面先swapoff /dev/sdaX删掉swap分区扩根分区再在空闲位置重建swap分区并更新/etc/fstab。backup分区的处理一样确认里面没有重要数据后可以删除。这块操作最容易出错所以再强调一遍编辑分区表过程中全程不要动起始扇区只允许改结束位置。如果 fdisk 提示分区忙、失败了不要硬来重启系统再做一次。3. 物理机加第二块 SSD 数据盘格式化、挂载与回收站修复物理机加盘比虚拟机扩容要直观但也有它自己的坑。最常见的是盘加好了、挂载也成功了数据往里一放第二天发现普通用户删除文件的时候报“无法为 找到或创建回收站目录”这不是系统坏了而是挂载参数和目录权限的问题。这块我一步步展开。3.1 新盘分区格式化隐藏的4K对齐坑先把新SSD接好开机后确认设备名lsblk fdisk -l假设新盘是/dev/sdb容量为1T。分区操作我建议用parted因为处理大容量磁盘和GPT分区表更顺手而且能直接设置对齐策略。parted /dev/sdb mklabel gpt parted /dev/sdb mkpart primary ext4 1MiB 100%1MiB起盘是关键。老式分区经常从2048s即1MiB起步做到4K对齐没啥问题但如果你随手写0%或者沿用过时的MBR遗留习惯SSD性能会下降不少。分区建好后mkfs.ext4 /dev/sdb1这里我默认用了ext4而不是xfs。物理机数据盘的选择我一直比较保守如果数据要频繁读写删除图省心就ext4图大文件性能和抗并发写入能力强就xfs。银河麒麟V10对两者支持都没问题关键是确定好就别中途换。3.2 开机自动挂载fstab 别乱写搞完格式化接着挂载。挂载有一个很多人翻过车的细节直接用/dev/sdb1写进/etc/fstab。设备名看着没毛病但如果你机器后来加了盘或者接口顺序变了设备名可能变成/dev/sdc1轻则挂载失败重则开机直接进紧急模式。正确做法是找UUID。blkid /dev/sdb1记下UUID比如UUIDa8b2c3d4-5678-4e9f-9cba-123456789abc然后创建挂载点并写入/etc/fstabmkdir -p /data echo UUIDa8b2c3d4-5678-4e9f-9cba-123456789abc /data ext4 defaults 0 2 /etc/fstab systemctl daemon-reload mount -amount -a验证没问题后用df -h /data看一眼。再去/etc/fstab最后确认一遍我建议把nofail选项也加上这样万一盘没插好系统一样能正常启动不会掉进紧急模式。完整的挂载选项可以写成defaults,nofail,noatime其中noatime能减少不必要的写盘对SSD寿命有好处。3.3 删除文件报“无法为 找到或创建回收站目录”的真正原因很多人把数据盘挂到/data后用普通用户往里面拷贝文件然后想删除结果文件管理器弹出一个报错“无法为 找到或创建回收站目录”。这个问题的根源是图形桌面删除文件时默认先进回收站Trash而回收站目录要建在被删除文件所在目录上层通常是挂载点下.Trash-UID目录。如果挂载点/data的属主是root权限是755普通用户就没法在/data下创建.Trash-UID目录报错就来了。三种解决办法按推荐程度排第一种给普通用户开放挂载点权限chown -R user:group /data chmod 755 /data如果这个/data目录本来就是给某个应用用户专用直接chown就行一劳永逸。第二种改fstab挂载时指定属主UUIDa8b2c3d4-5678-4e9f-9cba-123456789abc /data ext4 defaults,uid1000,gid1000,nofail,noatime 0 2适合整个盘只给一个用户用的场景。第三种直接跳过回收站删除在文件管理器设置里关闭“删除前移入回收站”选项或者用ShiftDelete删除。这种做法只适合个人使用的机器服务器上不建议改这个容易误删。心得遇到这种报错第一步永远别急着改挂载选项先ls -ld /data看一下属主和权限。八成就是挂载点目录权限不够。改完权限再测一遍删除比什么都快。4. 扩容后的常见问题与实战排错磁盘扩完了并不意味着万事大吉。很多人的系统扩容前好好的扩完重启后要么网卡起不来要么df显示容量没变。我把这段时间积攒的典型问题整理成一个速查清单帮你少走几小时的弯路。4.1 重启后网卡起不来的排查思路“银河麒麟v10命令重启后为什么网卡不启动”是搜索词里的高频问题也是我排查过最多的网络问题。多数情况是这几种一是开机自启没开。检查/etc/sysconfig/network-scripts/ifcfg-ens33或NM管理的连接配置确保有ONBOOTyes。很多时候装完系统网卡正常但重新启动后会掉线就是这里少了这个参数。二是接口名变了。虚拟机克隆或者系统迁移后ens33变成了ens160参考/etc/udev/rules.d/70-persistent-net.rules或NetworkManager连接配置文件确认实际接口名。三是NetworkManager和network脚本管理冲突。银河麒麟V10上最常见的是NM接管了接口但配置没写对。用nmcli device查看接口状态如果状态是disconnected直接执行nmcli device connect ens33再把连接配置的autoconnect yes设上重启就不会掉。扩容磁盘时我往往还会顺手动一下/etc/fstab如果UUID写得不对开机挂载失败也会拖慢启动甚至跳过network服务所以我始终建议改完磁盘接一个重启别一次性把所有配置全改完再重启。有问题能第一时间定位到是哪个步骤引起的。4.2 扩容后 df 显示容量没变这个问题的原因就两层要么分区没扩要么文件系统没扩。用lsblk先确认分区大小有没有变化。如果分区还是老样子说明growpart或者fdisk那一步没生效检查有没有被其他分区挡住或者忘了执行partprobe。如果分区已经变了但df -h还是旧数值那就差了最后一步xfs执行xfs_growfs 挂载点ext4执行resize2fs 设备路径。这两个命令既是“最后一步”也是最容易漏的一步。还有一种比较隐蔽的情况你的根文件系统虽然挂载在/但它实际用的是卷组里的逻辑卷而卷组里新增的空间没有分配到这个逻辑卷上。这时候看lvs如果LV Size还是老大小执行lvextend -r -l 100%FREE /dev/vg0/lv_root。-r参数会同时触发文件系统调整一步到位。4.3 无网络环境下的扩容工具准备国产化机器好多是内网环境没有yum源这时候卡住你的往往不是技术而是工具。我就被卡过系统里没有growpart、没有cloud-utils-growpart连lvm命令倒是常见装好的但xfs_growfs在精简安装里也可能缺席。最稳妥的办法是在一台能联网的同版本银河麒麟V10机器上yum install --downloadonly --downloaddir/root/tools cloud-utils-growpart xfsprogs lvm2 parted然后把整个tools目录拷到U盘拷进内网机器执行yum localinstall /root/tools/*.rpm -y离线装rpm时如果遇到依赖缺漏说明下载的rpm不全把报错缺的包名再通配下载一遍就行。这个思路也适用于内网装docker、mysql这类软件包属于通用技能。4.4 空间都去哪了查找大文件与大文件夹扩容之前最好先搞清楚磁盘空间到底被谁吃满了不然扩完没多久又满了。du -sh /* 2/dev/null | sort -rh | head -20这条命令能一秒定位到哪个一级目录占用最大。往下钻还可以find / -xdev -type f -size 1G -exec ls -lh {} \; 2/dev/null我实际排查的时候发现很多V10机器被吃满并不是业务数据太多而是日志文件没轮转。/var/log/journal或者/var/log/messages几十G是常事。如果有应用服务在疯狂刷日志先处理日志轮转再考虑扩容否则扩多大都不够。还有一个容易忽略的地方/home下的用户目录里容易藏着各种系统备份、离线安装包一个安装包好几个G。清理掉旧的rpm包和安装介质往往能腾出一大块空间。5. 写在最后的建议银河麒麟V10的磁盘扩容本质上和普通Linux发行版没什么天壤之别但因为它常用的安装方案LVMbackup分区以及国产化机器经常处于离线环境实际操作中总会有一些“原来如此”的问题。我个人在多次处理之后总结出三条最想提醒你的经验。第一新建系统时不管空间多紧张一定要给LVM留余量。哪怕卷组里暂时只有10G空闲也比以后要用fdisk去动在线分区的风险小得多。第二给数据盘建挂载点时看完权限再让业务开始跑一个chown就能避免“回收站目录”这种莫名其妙的故障。第三离线环境永远比在线环境多一点准备时间该有的rpm包、工具包提前备到本地真到扩容那一步你会发现顺畅得超乎想象。这波操作下来系统的钱包变厚了你心里的那块大石头也落地了。后面如果再遇到磁盘告警照着这套流程先自查一遍大部分问题都能自己解决。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →