Skip to content

Instantly share code, notes, and snippets.

@jae-jae
Last active May 16, 2017 17:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jae-jae/6010e2ab7e5cd857e22a9c90817f6343 to your computer and use it in GitHub Desktop.
Save jae-jae/6010e2ab7e5cd857e22a9c90817f6343 to your computer and use it in GitHub Desktop.
kvm服务器系统盘与数据盘合并脚本

执行

1.合并系统盘与数据盘

wget https://gist.githubusercontent.com/jae-jae/6010e2ab7e5cd857e22a9c90817f6343/raw/3733ba54077bf7dcb522d21b105a4d82e58581d1/merge-hrad-disk.sh
bash merge-hrad-disk.sh

2.扩展swap分区,合并系统盘与数据盘

wget https://gist.githubusercontent.com/jae-jae/6010e2ab7e5cd857e22a9c90817f6343/raw/1c8da2ab055179902f57c74a2f5006a8467a3563/merge-hrad-disk-and-swap.sh
bash merge-hrad-disk-and-swap.sh
#!/bin/sh
apt-get update
apt-get -y install kpartx lvm2
kpartx -d /dev/vdb
dd if=/dev/zero of=/dev/vdb bs=512 count=1
# 注意这里要分两个区
fdisk /dev/vdb
mkswap /dev/vdb1
echo "/dev/vdb1 none swap defaults 0 0" >> /etc/fstab
swapon -a
pvcreate -yff /dev/vdb2
VGNAME=`vgdisplay | grep "VG Name" | awk '{print $3}'`
vgextend $VGNAME /dev/vdb2
PESIZE=`vgdisplay $VGNAME | grep "Free PE / Size" | awk '{print $5}'`
lvms=`df / | egrep "^/dev" | awk '{print $1}'`
lvresize -l +$PESIZE $lvms
resize2fs $lvms
df -h /
free -m
#!/bin/sh
apt-get update
apt-get -y install kpartx lvm2
kpartx -d /dev/vdb
dd if=/dev/zero of=/dev/vdb bs=512 count=1
fdisk /dev/vdb
pvcreate -yff /dev/vdb1
VGNAME=`vgdisplay | grep "VG Name" | awk '{print $3}'`
vgextend $VGNAME /dev/vdb1
PESIZE=`vgdisplay $VGNAME | grep "Free PE / Size" | awk '{print $5}'`
lvms=`df / | egrep "^/dev" | awk '{print $1}'`
lvresize -l +$PESIZE $lvms
resize2fs $lvms
df -h /
fdisk /dev/vdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x1ea1ca70.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n #輸入n,進行新建分區操作
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): #輸入p,或直接按Enter,創建主分區(主分區最多四個)
Using default response p
Partition number (1-4, default 1): #輸入新分區的編號,或直接按Enter,請注意分區號不能重複
Using default value 1
First sector (2048-67108863, default 2048): #輸入起始扇區,按Enter使用默認值
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-67108863, default 67108863): #輸入終止扇區,支持+扇區數目(表示以起始扇區+扇區數目的結果作為終止扇區),或+容量,例如+5G(fdisk將會自動計算5 Gbytes需要多少個扇區,並以起始扇區+5 Gbytes所需的扇區數目的結果作為終止扇區)。直接輸入Enter使用默認值
Using default value 67108863
Command (m for help): t #輸入t,更改分區類型
Selected partition 1 #如果僅有一個分區,會自動選擇僅有的分區,否則需要手動輸入分區編號
Hex code (type L to list codes): 8e #輸入8e,表示物理卷
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): w #輸入w,表示保存分區信息。警告:一旦進行了保存操作,將無法撤消,請確保您以上的操作無問題,否則,請輸入q,不保存分區表,並退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment