This runbook expands the GHES root A/B partitions on a VMware-backed GHES 3.8.17 appliance.
This procedure applies when:
- The VMware root VMDK has already been expanded.
- Linux detects the larger
/dev/sdadisk. - The GHES A/B root partitions still only consume the original space.
Example current state:
/dev/sda = 500 GiB
/dev/sda1 = ~100 GiB ext4 /
/dev/sda2 = ~100 GiB ext4 fallback
Remaining free space exists after sda2
Target state:
/dev/sda = 500 GiB
/dev/sda1 = ~250-270 GiB ext4 /
/dev/sda2 = ~250-270 GiB ext4 fallback
Do not use:
ghe-storage-extendThis command expands /data/user, not the root disk.
Do not use:
ghe-upgradeas a GHES version upgrade command for this procedure.
GHES 3.8.17 uses an A/B root layout:
/dev/sda
+-- sda1
| Active root filesystem (/)
|
+-- sda2
Fallback root filesystem
The active root partition cannot safely be resized while mounted.
The procedure requires booting from the fallback partition first.
- Replication stopped on all replicas
- VMware root VMDK expansion completed
- Backup validated
- Maintenance window approved
- Console access available through VMware
- Root disk confirmed as
/dev/sda - Fallback filesystem verified healthy
Run:
lsblk -o NAME,SIZE,FSTYPE,LABEL,MOUNTPOINTExample:
NAME SIZE FSTYPE LABEL MOUNTPOINT
sda 500G
├─sda1 100G ext4 /
└─sda2 100G ext4 fallback
Verify partition table:
sudo fdisk -l /dev/sdaExpected:
Disklabel type: dos
Check free space:
sudo parted /dev/sda print freeExpected:
sda1 ~107GB
sda2 ~107GB
Free remaining disk space
Check filesystem state:
sudo tune2fs -l /dev/sda2 | grep "Filesystem state"Expected:
Filesystem state: clean
Run filesystem validation:
sudo e2fsck -n /dev/sda2Expected:
fallback: clean
Do not continue if the fallback filesystem is unhealthy.
The current active root is:
mount | grep ' on / 'Example:
/dev/sda1 on / type ext4
Reboot:
sudo rebootOpen the VMware console.
During boot:
- Press
Escto access GRUB. - Select the fallback/recovery boot entry.
The menu name depends on the GHES build.
Possible names:
Fallback
GHES fallback
Recovery
After boot, verify:
mount | grep ' on / 'Expected:
/dev/sda2 on / type ext4
Confirm:
lsblk -o NAME,SIZE,FSTYPE,LABEL,MOUNTPOINTCreate a partition table backup:
sudo sfdisk -d /dev/sda > /tmp/sda-partition-backup.txtReview:
cat /tmp/sda-partition-backup.txtSave this output with the change record.
Open parted:
sudo parted /dev/sdaDisplay layout:
print
Resize the active root partition.
Example target:
resizepart 1 268GB
Confirm:
Yes
Exit:
quit
Reload partition information:
sudo partprobe /dev/sdaIf the kernel cannot reread the table, reboot while still running from fallback.
Grow /dev/sda1:
sudo resize2fs /dev/sda1Validate:
sudo dumpe2fs -h /dev/sda1 | grep "Block count"Open parted:
sudo parted /dev/sdaDisplay:
print
Resize fallback partition:
resizepart 2 537GB
Confirm:
Yes
Exit:
quit
Reload:
sudo partprobe /dev/sdaGrow fallback:
sudo resize2fs /dev/sda2Validate:
sudo dumpe2fs -h /dev/sda2 | grep "Block count"Reboot:
sudo rebootConfirm normal boot uses sda1:
mount | grep ' on / 'Expected:
/dev/sda1 on / type ext4
Check disk layout:
lsblk -o NAME,SIZE,FSTYPE,LABEL,MOUNTPOINTExpected:
sda
├─sda1 ~268G ext4 /
└─sda2 ~268G ext4 fallback
Check filesystem:
df -h /Validate GHES:
ghe-version
ghe-check-disk-usageConfirm:
- GHES boots normally
- Web UI loads
- SSH works
/data/userremains unchanged- Fallback partition exists
Perform in this order:
- Secondary replica
- Geo-replica
- Primary
After each node:
- Confirm successful boot
- Confirm root size
- Confirm fallback size
- Confirm GHES health
After all nodes are complete:
On replicas:
ghe-repl-startValidate:
ghe-repl-status -vvWait until replication is healthy before returning traffic.
Do not shrink partitions.
If boot failure occurs:
- Power off the VM.
- Restore original VMDK if required.
- Restore original partition layout.
- Validate GHES boot.
- Engage GitHub Enterprise Support if recovery fails.
- VMware root disk expanded
- Replication stopped
- Fallback filesystem validated
- Booted from fallback
- Partition table backed up
- sda1 expanded
- sda1 filesystem expanded
- sda2 expanded
- sda2 filesystem expanded
- Normal boot validated
- Secondary completed
- Geo-replica completed
- Primary completed
- Replication restarted
- Replication healthy