<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Sgdisk on HiDa</title>
    <link>https://www.0niu.cn/tags/sgdisk/</link>
    <description>Recent content in Sgdisk on HiDa</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh</language>
    <lastBuildDate>Sun, 25 Jun 2023 10:08:00 +0800</lastBuildDate><atom:link href="https://www.0niu.cn/tags/sgdisk/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>扩展LVM磁盘空间</title>
      <link>https://www.0niu.cn/posts/extend-lvm-disk-space/</link>
      <pubDate>Sun, 25 Jun 2023 10:08:00 +0800</pubDate>
      
      <guid>https://www.0niu.cn/posts/extend-lvm-disk-space/</guid>
      <description>&lt;p&gt;在虚拟化环境中，随着业务增长，磁盘空间不足是常见问题。本文记录在 CentOS 7/8 环境下扩展 LVM 磁盘空间的完整流程。&lt;/p&gt;
&lt;h2 id=&#34;扩展虚拟机磁盘&#34;&gt;扩展虚拟机磁盘&lt;/h2&gt;
&lt;p&gt;首先在虚拟化平台（VMware / KVM / Proxmox 等）上扩大虚拟磁盘容量。以 VMware 为例：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;关闭虚拟机（部分平台支持在线扩容）&lt;/li&gt;
&lt;li&gt;编辑虚拟机设置，将磁盘容量从原来的 50GB 扩展到 100GB&lt;/li&gt;
&lt;li&gt;启动虚拟机&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;扩展后，操作系统层面不会自动识别新增的空间，需要手动操作。&lt;/p&gt;
&lt;h2 id=&#34;确认当前磁盘状态&#34;&gt;确认当前磁盘状态&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 查看块设备信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsblk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 查看磁盘分区表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fdisk -l /dev/sda
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 查看PV/VG/LV状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pvdisplay
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vgdisplay
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lvdisplay
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;假设当前磁盘 &lt;code&gt;/dev/sda&lt;/code&gt; 有一个分区 &lt;code&gt;/dev/sda1&lt;/code&gt;，PV 为 &lt;code&gt;/dev/sda1&lt;/code&gt;，VG 名为 &lt;code&gt;centos&lt;/code&gt;，LV 名为 &lt;code&gt;root&lt;/code&gt;，挂载点为 &lt;code&gt;/&lt;/code&gt;。&lt;/p&gt;</description>
      <content>&lt;p&gt;在虚拟化环境中，随着业务增长，磁盘空间不足是常见问题。本文记录在 CentOS 7/8 环境下扩展 LVM 磁盘空间的完整流程。&lt;/p&gt;
&lt;h2 id=&#34;扩展虚拟机磁盘&#34;&gt;扩展虚拟机磁盘&lt;/h2&gt;
&lt;p&gt;首先在虚拟化平台（VMware / KVM / Proxmox 等）上扩大虚拟磁盘容量。以 VMware 为例：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;关闭虚拟机（部分平台支持在线扩容）&lt;/li&gt;
&lt;li&gt;编辑虚拟机设置，将磁盘容量从原来的 50GB 扩展到 100GB&lt;/li&gt;
&lt;li&gt;启动虚拟机&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;扩展后，操作系统层面不会自动识别新增的空间，需要手动操作。&lt;/p&gt;
&lt;h2 id=&#34;确认当前磁盘状态&#34;&gt;确认当前磁盘状态&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 查看块设备信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsblk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 查看磁盘分区表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fdisk -l /dev/sda
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 查看PV/VG/LV状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pvdisplay
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vgdisplay
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lvdisplay
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;假设当前磁盘 &lt;code&gt;/dev/sda&lt;/code&gt; 有一个分区 &lt;code&gt;/dev/sda1&lt;/code&gt;，PV 为 &lt;code&gt;/dev/sda1&lt;/code&gt;，VG 名为 &lt;code&gt;centos&lt;/code&gt;，LV 名为 &lt;code&gt;root&lt;/code&gt;，挂载点为 &lt;code&gt;/&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;使用-growpart-扩展分区&#34;&gt;使用 growpart 扩展分区&lt;/h2&gt;
&lt;p&gt;growpart 可以在不破坏数据的情况下扩展已有分区，使其占用新增的磁盘空间。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 安装 cloud-utils-growpart（如果未安装）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yum install -y cloud-utils-growpart
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Debian/Ubuntu 系统使用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt install cloud-guest-utils
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 扩展分区（磁盘设备 + 分区编号）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;growpart /dev/sda &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;执行后可以用 &lt;code&gt;fdisk -l /dev/sda&lt;/code&gt; 确认分区大小已扩展。&lt;/p&gt;
&lt;h2 id=&#34;gpt-分区表使用-sgdisk-扩展分区&#34;&gt;GPT 分区表：使用 sgdisk 扩展分区&lt;/h2&gt;
&lt;p&gt;如果磁盘使用 GPT 分区表（常见于 UEFI 启动的系统或 newer 虚拟机），&lt;code&gt;growpart&lt;/code&gt; 可能因 GPT 备份表位置问题而失败。此时可以用 &lt;code&gt;sgdisk&lt;/code&gt; 手动扩展分区。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 安装 gdisk（如果未安装）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yum install -y gdisk          &lt;span style=&#34;color:#75715e&#34;&gt;# CentOS/RHEL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt install -y gdisk          &lt;span style=&#34;color:#75715e&#34;&gt;# Debian/Ubuntu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 查看当前分区表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sgdisk -p /dev/sda
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 扩展分区（将分区 1 扩展到磁盘末尾）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sgdisk -e /dev/sda            &lt;span style=&#34;color:#75715e&#34;&gt;# 修正 GPT 表尾位置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sgdisk -d &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; /dev/sda          &lt;span style=&#34;color:#75715e&#34;&gt;# 删除分区 1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sgdisk -n 1:0:0 /dev/sda      &lt;span style=&#34;color:#75715e&#34;&gt;# 重新创建分区 1（0 表示从起始到末尾）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sgdisk -c &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Primary&amp;#34;&lt;/span&gt; /dev/sda &lt;span style=&#34;color:#75715e&#34;&gt;# 设置分区标签&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;partprobe /dev/sda            &lt;span style=&#34;color:#75715e&#34;&gt;# 通知内核重读分区表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：&lt;code&gt;sgdisk -d&lt;/code&gt; + &lt;code&gt;-n&lt;/code&gt; 的方式会重新创建分区条目，分区编号和起止扇区保持不变，不会破坏数据。但操作前建议先备份重要数据。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;扩展后同样用 &lt;code&gt;fdisk -l /dev/sda&lt;/code&gt; 或 &lt;code&gt;sgdisk -p /dev/sda&lt;/code&gt; 确认分区大小。&lt;/p&gt;
&lt;h2 id=&#34;扩展-lvm-物理卷和逻辑卷&#34;&gt;扩展 LVM 物理卷和逻辑卷&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 让LVM识别扩展后的PV&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pvresize /dev/sda1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 查看VG可用空间&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vgdisplay centos | grep &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Free&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 将所有可用空间扩展到LV&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lvextend -l +100%FREE /dev/centos/root
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 或者指定具体大小&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lvextend -L +50G /dev/centos/root
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;扩展文件系统&#34;&gt;扩展文件系统&lt;/h2&gt;
&lt;p&gt;逻辑卷扩展后，还需要扩展文件系统才能实际使用新增空间。&lt;/p&gt;
&lt;h3 id=&#34;xfs-文件系统centos-7-默认&#34;&gt;XFS 文件系统（CentOS 7 默认）&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xfs_growfs /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意：XFS 只支持扩容，不支持缩容。&lt;code&gt;xfs_growfs&lt;/code&gt; 后面跟的是挂载点，不是设备路径。&lt;/p&gt;
&lt;h3 id=&#34;ext4-文件系统&#34;&gt;ext4 文件系统&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;resize2fs /dev/centos/root
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;验证结果&#34;&gt;验证结果&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;df -h /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;此时应该能看到文件系统容量已扩展到目标大小。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;整个流程可归纳为以下四步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在虚拟化平台扩展虚拟磁盘&lt;/li&gt;
&lt;li&gt;&lt;code&gt;growpart&lt;/code&gt;（MBR）或 &lt;code&gt;sgdisk&lt;/code&gt;（GPT）扩展分区&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pvresize&lt;/code&gt; + &lt;code&gt;lvextend&lt;/code&gt; 扩展 PV 和 LV&lt;/li&gt;
&lt;li&gt;&lt;code&gt;xfs_growfs&lt;/code&gt; / &lt;code&gt;resize2fs&lt;/code&gt; 扩展文件系统&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Q: growpart 报错 &amp;ldquo;NOCHANGE: partition 1 is size XXXXX it cannot be grown&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这说明分区已经是磁盘末尾且无法扩展，或者分区表类型不支持。检查是否已经扩展到最大，或者考虑新增分区后创建新的 PV 加入 VG。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: growpart 在 GPT 分区表上报错怎么办？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;GPT 分区表在磁盘末尾有备份表，&lt;code&gt;growpart&lt;/code&gt; 可能因备份表位置问题失败。改用 &lt;code&gt;sgdisk&lt;/code&gt; 扩展分区：&lt;code&gt;sgdisk -e /dev/sda&lt;/code&gt; 修正 GPT 表尾 → &lt;code&gt;sgdisk -d 1 /dev/sda&lt;/code&gt; 删除分区 → &lt;code&gt;sgdisk -n 1:0:0 /dev/sda&lt;/code&gt; 重新创建 → &lt;code&gt;partprobe /dev/sda&lt;/code&gt;。分区数据不受影响。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: pvresize 报错 &amp;ldquo;Device /dev/sda1 not found&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;分区可能没有被内核重新识别，执行 &lt;code&gt;partprobe /dev/sda&lt;/code&gt; 后重试。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: 能否在线操作？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;以上所有步骤均支持在线操作（不重启、不卸载），前提是虚拟化平台支持在线扩容磁盘。&lt;/p&gt;</content>
    </item>
    
  </channel>
</rss>
