Skip to content

Instantly share code, notes, and snippets.

@israelshirk
Created August 31, 2017 20:51
Show Gist options
  • Save israelshirk/dc1d3acb55aaa5fa14e99c7bb1ddcdd0 to your computer and use it in GitHub Desktop.
Save israelshirk/dc1d3acb55aaa5fa14e99c7bb1ddcdd0 to your computer and use it in GitHub Desktop.
Snippets for copying and formatting GCE disks to and from XFS.
for disk in gitlab-data postgresql-data redis-data redis-disk sentry-data gke-core-b414f88f-dyna-pvc-444be9f4-5d32-11e7-97ab-42010a8a012e gke-core-b414f88f-dyna-pvc-8e70f528-4bc2-11e7-97ab-42010a8a012e; do
gcloud compute disks snapshot "$disk" --snapshot-names "$disk" --zone=us-west1-a
done
for disk in gitlab-data postgresql-data redis-data redis-disk sentry-data gke-core-b414f88f-dyna-pvc-444be9f4-5d32-11e7-97ab-42010a8a012e gke-core-b414f88f-dyna-pvc-8e70f528-4bc2-11e7-97ab-42010a8a012e; do
gcloud compute disks create $(echo $disk | sed "s/^.../old/") --source-snapshot=$disk --zone=us-west1-a
done
for disk in gitlab-data postgresql-data redis-data redis-disk sentry-data gke-core-b414f88f-dyna-pvc-444be9f4-5d32-11e7-97ab-42010a8a012e gke-core-b414f88f-dyna-pvc-8e70f528-4bc2-11e7-97ab-42010a8a012e; do
gcloud compute disks delete "$disk" --zone=us-west1-a
gcloud compute disks create $(echo $disk | sed "s/^.../old/") --source-snapshot=$disk --zone=us-west1-a
gcloud compute disks create "$disk" --size=15GiB --zone=us-west1-a
done
for disk in gitlab-data postgresql-data redis-data redis-disk sentry-data gke-core-b414f88f-dyna-pvc-444be9f4-5d32-11e7-97ab-42010a8a012e gke-core-b414f88f-dyna-pvc-8e70f528-4bc2-11e7-97ab-42010a8a012e; do
gcloud compute instances attach-disk transfer-instance --disk="$disk"
ssh -t [email protected] -- sudo 'bash -x -c "mkfs.ext4 /dev/sdb || mkfs.ext4 /dev/sdc || mkfs.ext4 /dev/sdd || mkfs.ext4 /dev/sde"'
gcloud compute instances detach-disk transfer-instance --disk="$disk"
done
for disk in gitlab-data postgresql-data redis-data redis-disk sentry-data gke-core-b414f88f-dyna-pvc-444be9f4-5d32-11e7-97ab-42010a8a012e gke-core-b414f88f-dyna-pvc-8e70f528-4bc2-11e7-97ab-42010a8a012e; do
gcloud compute instances attach-disk transfer-instance --disk=$(echo $disk | sed "s/^.../old/")
gcloud compute instances attach-disk transfer-instance --disk="$disk"
ssh -t [email protected] -- sudo 'bash -x -c "mkdir -p /mnt/src && mkdir -p /mnt/dest && mount /dev/sdb /mnt/src && mount /dev/sdc /mnt/dest && cp -a /mnt/src/* /mnt/dest/; umount /dev/sdb; umount /dev/sdc"'
gcloud compute instances detach-disk transfer-instance --disk=$(echo $disk | sed "s/^.../old/")
gcloud compute instances detach-disk transfer-instance --disk="$disk"
done
gcloud compute disks snapshot "$disk" --snapshot-names "$disk" --zone=us-west1-a
gcloud compute instances attach-disk transfer-instance --disk=$(echo $disk | sed "s/^.../old/")
gcloud compute instances attach-disk transfer-instance --disk="$disk"
gcloud compute snapshots delete "$disk"
gcloud compute disks create "$disk" --source-snapshot=$disk --size=15GiB --zone=us-west1-a
gcloud compute disks delete "$disk"
for disk in gitlab-data postgresql-data redis-data redis-disk sentry-data; do
gcloud compute instances attach-disk transfer-instance --disk="$disk"-old
gcloud compute instances attach-disk transfer-instance --disk="$disk"
ssh -t [email protected] -- sudo 'bash -x -c "mount /dev/sdb /mnt/src && mount /dev/sdc /mnt/dest && cp -a /mnt/src/* /mnt/dest/; umount /dev/sdb; umount /dev/sdc"'
gcloud compute instances detach-disk transfer-instance --disk="$disk"-old
gcloud compute instances detach-disk transfer-instance --disk="$disk"
gcloud compute disks create "$disk" --source-snapshot=$disk --size=15GiB --zone=us-west1-a
gcloud compute disks delete "$disk"
done
for disk in gitlab-data postgresql-data redis-data redis-disk sentry-data gke-core-b414f88f-dyna-pvc-444be9f4-5d32-11e7-97ab-42010a8a012e gke-core-b414f88f-dyna-pvc-8e70f528-4bc2-11e7-97ab-42010a8a012e; do
gcloud compute disks snapshot "$disk" --snapshot-names "$disk"
gcloud compute disks delete $(echo $disk | sed "s/^.../old/")
gcloud compute disks delete "$disk"
gcloud compute disks create $(echo $disk | sed "s/^.../old/") --source-snapshot=$disk --zone=us-west1-a
gcloud compute disks create "$disk" --size=15GiB --zone=us-west1-b
done
for disk in gitlab-data postgresql-data redis-data redis-disk sentry-data gke-core-b414f88f-dyna-pvc-444be9f4-5d32-11e7-97ab-42010a8a012e gke-core-b414f88f-dyna-pvc-8e70f528-4bc2-11e7-97ab-42010a8a012e; do
gcloud compute instances attach-disk transfer-instance --disk="$disk"
ssh -t [email protected] -- sudo 'bash -x -c "mkfs.ext4 /dev/sdb || mkfs.ext4 /dev/sdc || mkfs.ext4 /dev/sdd || mkfs.ext4 /dev/sde"'
gcloud compute instances detach-disk transfer-instance --disk="$disk"
done
for disk in gitlab-data postgresql-data redis-data redis-disk sentry-data gke-core-b414f88f-dyna-pvc-444be9f4-5d32-11e7-97ab-42010a8a012e gke-core-b414f88f-dyna-pvc-8e70f528-4bc2-11e7-97ab-42010a8a012e; do
gcloud compute instances attach-disk transfer-instance --disk=$(echo $disk | sed "s/gke/old/")
gcloud compute instances attach-disk transfer-instance --disk="$disk"
ssh -t [email protected] -- sudo 'bash -x -c "mount /dev/sdb /mnt/src && mount /dev/sdc /mnt/dest && cp -a /mnt/src/* /mnt/dest/; umount /dev/sdb; umount /dev/sdc"'
gcloud compute instances detach-disk transfer-instance --disk=$(echo $disk | sed "s/gke/old/")
gcloud compute instances detach-disk transfer-instance --disk="$disk"
done
for disk in gke-core-b414f88f-dyna-pvc-444be9f4-5d32-11e7-97ab-42010a8a012e gke-core-b414f88f-dyna-pvc-8e70f528-4bc2-11e7-97ab-42010a8a012e gitlab-data postgresql-data redis-data redis-disk sentry-data; do
gcloud compute snapshots delete "$disk"
gcloud compute disks snapshot "$disk" --snapshot-names "$disk"
gcloud compute disks delete "$disk"
gcloud compute disks create "$disk" --source-snapshot=$disk --size=15GiB --zone=us-west1-a
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment