Migrate to Virtual Machines in Google Cloud: Moving Your Servers Without Rebuilding Them
A complete, plain-English guide to Google Cloud's free lift-and-shift service: how it works inside, how to plan a migration, how replication, test clones and cut-over fit together, and how to avoid the mistakes that slow teams down.
Imagine you run a busy restaurant in an old building. The kitchen is cramped, the rent keeps rising, and the landlord will not renovate. You have found a bigger, modern building across town with better equipment. The problem is that you cannot close for a month to move. Customers still need dinner every night. So you need a way to copy the whole kitchen, stove by stove and shelf by shelf, into the new building while the old one keeps cooking, and then flip the “open” sign from the old address to the new one in a single quiet moment.
That is the exact problem Migrate to Virtual Machines solves for computers. Your applications live on virtual machines in a data center or another cloud. They work, and the business depends on them. But you want them to run on Google Cloud, and you do not want to reinstall every operating system, rebuild every application, or switch off production for days. This tutorial teaches you how the service works, from the first idea to the last cleanup step, in simple language with no prior knowledge needed.
1What Migrate to Virtual Machines Actually Is
A managed Google Cloud service that copies running virtual machines into Compute Engine with very little downtime.
A virtual machine, usually shortened to VM, is a computer made of software. One physical server can host many VMs, each with its own operating system, its own disks, and its own applications, all sharing the same hardware without seeing each other. Companies adopted VMs because they made expensive hardware far more efficient.
Migrate to Virtual Machines is Google Cloud’s service for moving those VMs into Compute Engine, which is Google’s own service for running VMs. It takes a VM that lives somewhere else, continuously copies its disk data to Google Cloud, and lets you start a matching VM on Google’s infrastructure when you are ready. The approach is called lift and shift, because you lift the machine as it is and set it down in a new place, making only the small changes needed for it to run there.
The service is delivered “as a service”. You use the Google Cloud console or an API to define sources, pick VMs, and drive the migration. You do not buy migration software, install a heavy management server, or license anything extra. The documentation describes the current generation as the 5.x line, which is the version this guide follows.
Think of a professional moving company that photographs every room, then keeps rebuilding an exact copy of your house in a new street while you still live in the old one. On moving day they only need to carry across the last few things you touched that morning. Migrate to Virtual Machines is that moving company for servers.
What it is not
It does not rewrite your application, split it into smaller pieces, or turn it into containers. It does not move databases into managed database services. It does not decide what to move. It is a transport and conversion service for whole virtual machines. Knowing that boundary early prevents unrealistic expectations later.
2Why Companies Migrate Virtual Machines at All
The reasons are usually money, speed, risk, or a deadline that cannot move.
Before learning the tool, it helps to know why anyone uses it. Moving to a cloud is rarely a technology hobby. It is almost always a business decision with a reason attached, and the reason shapes how you migrate.
Data center exit
A lease is ending, hardware is aging out, or the company wants to stop running buildings full of servers.
Hardware refresh avoidance
Buying new servers every few years is expensive. Renting capacity turns a big upfront bill into a usage-based one.
Consolidating clouds
After a merger or an experiment, workloads sit in several clouds. Teams move them to one place to simplify skills, billing and security.
Faster scaling
Ordering a physical server takes weeks. Creating a VM in the cloud takes minutes.
Platform for modernizing later
Getting a workload into the cloud first, unchanged, gives teams a stable base from which to improve it step by step.
Where lift and shift sits among the migration strategies
People often describe migration choices with a short list of strategies. Rehost means move as is. Replatform means move with small improvements, such as swapping a self-managed database for a managed one. Refactor means redesign the application for cloud-native patterns. Retire means switch it off. Retain means leave it where it is for now. Migrate to Virtual Machines is a rehost tool. It is the right choice when speed and low risk matter more than immediate redesign.
Rehosting first and modernizing afterwards is a very common and perfectly respectable path. A running, supported workload on Google Cloud is a better starting point for redesign than a half-finished rewrite on old hardware.
3Core Vocabulary You Will Use Every Day
Eight terms unlock almost every sentence in the official documentation.
Cloud tools come with their own vocabulary. Learn these terms once, and the rest of this guide reads like plain English.
Migration source
The place your VMs currently live: a vSphere data center, an AWS account, an Azure account, or a Google Cloud VMware Engine environment.
Migration target
The place the VM ends up: a Compute Engine VM instance, or a Persistent Disk volume if you only want the disks.
Host project
The Google Cloud project that controls the migration. You switch the service on here, and sources and migrations are managed from here.
Target project
A Google Cloud project that receives migrated VMs. You can have several, for example one per team or environment.
Migrate Connector
A small appliance installed in a vSphere or VMware Engine environment that talks to the virtualization platform and carries data to Google Cloud.
Replication
The continuous copying of a VM’s disk data from the source to Google Cloud, without switching the source VM off.
Test clone
A throwaway VM started in Google Cloud from replicated data, used to check that the workload behaves before the real move.
Cut-over
The real switch: a final sync, then a production VM starts in Google Cloud and becomes the live system.
Two more words appear later. A group is a bundle of VMs that you migrate together, usually because they belong to the same application. OS adaptation is the set of small automatic changes that make a VM from another platform boot and behave correctly on Compute Engine.
The host project is the moving company’s dispatch office. Target projects are the new houses. The Migrate Connector is the truck parked outside your old building. Replication is the loading of boxes while you still live there. The test clone is a rehearsal dinner in the new house, and cut-over is the day you hand in the old keys.
4Architecture and Components
A control plane in Google Cloud, a data path from the source, and Compute Engine as the destination.
The easiest way to understand the architecture is to separate the brain from the pipes. The brain is the Migrate to Virtual Machines service running in your host project. It records which sources exist, which VMs are being migrated, what state each one is in, and what you have asked it to do next. The pipes are the connections that move bytes of disk data from the source into Google Cloud storage and finally into Compute Engine disks.
flowchart LR
subgraph SRC["Migration Sources"]
V["vSphere data center"]
G["Google Cloud VMware Engine"]
A["AWS account"]
Z["Azure account"]
end
subgraph HOST["Host Project"]
API["Migrate to Virtual Machines service"]
CON["Console, API and IAM"]
end
subgraph TGT["Target Project"]
CE["Compute Engine VM or Persistent Disk"]
end
V -->|Migrate Connector| API
G -->|Migrate Connector| API
A -->|cloud source link| API
Z -->|cloud source link| API
CON --> API
API -->|replicated data, clone, cut-over| CE
The main building blocks
Google Cloud console and API
The console gives you a visual way to add sources, start replication, run test clones and perform cut-overs. The same actions exist as an API, which is how large teams build automated “migration factories” that move hundreds of machines on a schedule.
Cloud IAM
Identity and Access Management decides who may create sources, who may start migrations, and which service accounts the service uses behind the scenes. Every action in the service is checked against it.
The VM Migration service in the host project
This is the coordinating engine. You enable it by turning on the VM Migration API in the host project. It stores the state of every migration and orchestrates replication, cloning and cut-over.
Migrate Connector (for vSphere and VMware Engine)
A virtual appliance you deploy next to your VMware environment. It registers with Google Cloud and acts as the safe bridge between vCenter and the cloud service, so you do not open your internal network to the outside world.
Cloud source connections (for AWS and Azure)
For other clouds there is no appliance to install. You give the service the permissions it needs in the source account, and it works through that cloud’s own interfaces, launching temporary helper resources when required.
Compute Engine, Persistent Disk and Cloud Storage
These are the destination services. Replicated data lands in Google-managed storage first, and is turned into Persistent Disk volumes and VM instances when you clone or cut over.
The host project is not the place your VMs end up. It is the control room. Migrated VMs are created in target projects, and mixing these two ideas is the number one source of confusion in first-time setups.
5The Four Supported Migration Sources
On-premises VMware, VMware Engine, AWS and Azure.
Google documents four sources for the current generation of the service. Each has the same overall migration flow, but a slightly different way of connecting.
| Source | What you migrate | How the connection works | Key thing to remember |
|---|---|---|---|
| vSphere data center | On-premises VMware VMs | Migrate Connector installed in your vSphere environment | Check your vCenter version against the supported list; recent releases from 6.x through 8.x are covered |
| Google Cloud VMware Engine | VMs running in Google’s managed VMware | Migrate Connector registered to the VMware Engine environment | Useful when moving from VMware-style hosting to native Compute Engine |
| AWS cloud service | EC2 instances | Cloud source created with permissions in your AWS account | Temporary resources may be launched in AWS and billed there |
| Azure cloud service | Azure VMs | Cloud source created with permissions in your Azure account | Temporary resources may be launched in Azure and billed there |
Limits worth knowing
A single host project can hold a maximum of fifteen cloud sources at a time, counting AWS and Azure sources together. You might host ten AWS sources and five Azure ones, or any other split, but not sixteen. If you reach the ceiling, you delete an unused source before adding another. For large enterprises with many accounts, this limit is a real planning factor, and it is a good reason to use more than one host project when the estate is big.
Operating system support
The VM must run an operating system that Google lists as supported for its particular source. The list differs by source and changes over time, so always check the current “supported operating systems” reference before promising a date to your business. Some Compute Engine features also rely on agents and services inside the guest operating system, which is another reason to read that page early.
6Planning and Assessment Before You Touch Anything
Most migration problems are planning problems that show up late.
A migration tool is only the engine. The route, the order and the timing are decided by humans before the engine starts. Teams that skip this step usually do not fail loudly. They fail slowly, with surprise outages, unexpected bills and wasted weekends.
Step one: know what you own
You cannot move what you cannot list. Build an inventory of every VM: its operating system, number of CPUs, memory, disk sizes, how busy it really is, and which applications run on it. Google offers a wider platform called Migration Center that helps with discovery of the current environment, cost estimates and assessment, and Migrate to Virtual Machines is documented as one of the tools within that journey. Third-party discovery tools also work well when your estate is mixed.
Step two: map dependencies
Applications talk to each other. A web server talks to an application server, which talks to a database and to a file share. If you move the web server to Google Cloud while the database stays in your data center, every page load now crosses a long network link, and it may feel painfully slow. Dependency mapping tells you which machines must move together.
Moving a chef to a new restaurant while leaving the fridge in the old one means every egg has to be carried across town. Dependencies are the invisible string between chef and fridge.
Step three: classify and sequence
Sort by difficulty and risk
Start with low-risk systems like development and test servers. They teach the team the process while mistakes are cheap.
Group by application
Place all machines of one application into the same wave, so they move and are tested together.
Pick windows with the business
Agree cut-over times with the application owners, including who is on call and what a rollback looks like.
Reserve capacity and quotas
Check that your target projects have enough CPU, disk and IP quota for the wave. A quota error halfway through a cut-over is a bad surprise.
Step four: decide the destination shape
Decide the machine type, region, zone, network and disk type for each target. The service provides usage-driven analytics to help you right-size destination instances, which matters because a physical-era server is often over-provisioned. Copying a half-idle sixteen-core machine as sixteen cores simply carries yesterday’s waste into tomorrow’s bill.
Right-size at the planning step and again after migration. Start a little generous so users are not disappointed, then trim once you see real usage on Google Cloud.
7Building the Foundation on Google Cloud
Projects, APIs, identities, networks and quotas must exist before the first byte moves.
Google’s own guidance tells you to build the foundation on Google Cloud and prepare the source environment before migrating VMs. The foundation is the part that is boring, careful and absolutely worth doing right, because every later step depends on it.
The resource hierarchy
Google Cloud organizes everything inside projects, which group resources, billing, permissions and APIs. Migrate to Virtual Machines requires one host project and one or more target projects. A common design uses one host project for the entire migration program and several target projects, each mapped to a business unit, an environment such as production or testing, or a team that will own the VMs afterwards.
Enabling the service
In the host project you enable the VM Migration API and the other services the migration depends on. This is a one-time setup per host project. Doing it in the console is straightforward, and teams that manage infrastructure through automation usually record the same step in their standard project templates.
Identity and permissions
Two kinds of identities matter. First, the people who run migrations need roles that let them create sources, start replication and perform cut-overs. Second, service accounts let the service act on your behalf in target projects when it creates disks and VMs. Follow the principle of least privilege. Grant the migration team what they need for the duration of the program, and review the grants when it ends.
Networking
Networking decides both the speed of replication and the behaviour of the migrated VM. Plan these pieces:
- Connectivity between source and Google Cloud. Replication needs outbound connectivity from the source environment to Google Cloud. Many companies use a private connection such as Cloud VPN or Cloud Interconnect for predictable bandwidth and stronger privacy, while others rely on the internet with encrypted traffic.
- Target VPC network and subnets. Decide in advance which network and subnet each migrated VM will join, and how it gets an internal IP address.
- Firewall rules. The VM arrives with its application listening on certain ports. Make sure the target network allows the needed traffic and blocks everything else.
- Name resolution. Applications often find each other by name. Plan how DNS will point to the new addresses during cut-over.
Teams measure their link speed once and assume it is constant. Real bandwidth is shared with daily business traffic. Always estimate the initial copy time with a realistic share of the link, not the full advertised speed.
Quotas and billing
Compute Engine has default limits for CPUs, disks and addresses per region. A large wave can exceed them. Request increases before the migration window, not during it. Also confirm that billing is attached to every target project, because VMs cannot be created without it.
Problem
Teams start replicating VMs immediately, then discover missing quota, wrong network choices or missing permissions in the middle of a cut-over weekend.
Why It’s Harmful
Fixing foundation gaps under time pressure leads to hasty permission grants, ad hoc firewall changes and missed windows.
Correct Approach
Complete a written foundation checklist covering projects, APIs, roles, networking, quotas and billing, and run a small pilot migration of a harmless VM to prove the whole path end to end.
8Preparing the Source Environment
Connect the service to the place your VMs live, and get the source ready to be copied.
Once the foundation is in place, you turn to the source. The preparation differs by source type, but the goal is always the same: let the service see your VMs and read their disks safely, without disturbing the people who use them.
Preparing a vSphere or VMware Engine source
For these sources you deploy the Migrate Connector as a virtual appliance inside your VMware environment. After it starts, you register it with your Google Cloud host project, and then you create a source in the console that represents your vCenter. From that moment, the service can list the VMs in that vCenter and show them as candidates for migration.
A few practical points matter here. The connector needs enough compute and network resources to move data at the speed you expect. It needs access to vCenter with an account that has just the privileges required for the job. And it needs a path to Google Cloud. Because the connector initiates the outbound connection, you generally do not need to open inbound holes in your firewall, which security teams appreciate.
Preparing an AWS or Azure source
For cloud sources you create a source in the console and grant the service the permissions it needs inside your cloud account. In AWS this means an identity with defined permissions over EC2 and related storage. In Azure it means an application identity with rights over compute and disks in the chosen subscription. The service then discovers VMs in that account and can launch short-lived helper resources there to read disk data.
Because helper instances, disks and network transfer happen inside the source cloud, those charges appear on the AWS or Azure bill, not on Google Cloud’s. Include them in your migration budget, especially for large data volumes where outbound traffic charges can add up.
Getting the VMs themselves ready
Confirm the operating system is supported
Look up the exact OS version in the supported list for your source type. Unsupported versions may boot unpredictably or lack drivers.
Check free disk space and health
A VM with a full system disk or file system errors can fail during adaptation. Clean up and repair before replicating.
Record how the VM is configured today
Write down its IP address, hostname, mounted disks and installed agents. After migration you will compare against this record.
Review licensing
Some commercial software ties its license to hardware or to a platform. Confirm with vendors that running on Google Cloud is allowed and how to activate it.
Preparing the source is like labelling boxes and checking that the front door is unlocked before the movers arrive. It is dull, but it prevents the movers from standing around on an expensive hourly rate.
9Replication: How the Data Travels
The heart of the service is a steady, non-disruptive copy of disk data.
Replication is where most of the migration time is spent, so it is worth understanding properly. The key promise from Google is that replication copies disk data from the source VM to Google Cloud continuously without causing downtime on the source. Your users keep working on the old VM while the new copy builds up quietly in the background.
The two phases of replication
Initial full copy
The first pass copies all the data on the disks. For a large VM this can take hours or days, depending on disk size and available bandwidth.
Ongoing incremental copies
After the first pass, only blocks that changed since the last cycle are sent. These cycles are small and fast, and they keep the cloud copy close to the live VM.
How changes are noticed
Virtualization platforms keep track of which disk blocks change over time. The service relies on the source platform’s snapshot and change-tracking abilities to find just the modified blocks, instead of re-reading everything. This approach avoids installing a monitoring agent inside each guest operating system. Google highlights this as a benefit: no client-side agent inside your workload means no extra load on the workload itself and no need to open network access into the machine.
sequenceDiagram
participant S as Source VM
participant P as Source platform or connector
participant G as Google Cloud service
participant D as Replicated disk data
S->>P: Application keeps writing data
P->>G: Initial full copy of all disk blocks
G->>D: Store full baseline
loop Every replication cycle
P->>P: Identify changed blocks
P->>G: Send changed blocks only
G->>D: Apply changes to baseline
end
Note over D: Cloud copy stays close to the live VM
What affects replication speed
- Total disk size. More data means a longer first copy.
- Change rate. A busy database writes constantly, so each cycle carries more data than a quiet file server.
- Network bandwidth and latency. The pipe between source and Google Cloud is usually the bottleneck.
- Source platform load. Reading disks costs the storage system a little work, so heavily loaded storage can slow everything down.
- Number of VMs replicating at the same time. They share the same pipe, so ten parallel VMs each get a smaller slice.
Start replication well before the planned cut-over date, often days or weeks earlier. The earlier the baseline is complete, the shorter and calmer the final cut-over will be.
Think of copying a library. First you photocopy every book once, which takes ages. After that you only photocopy the pages that were edited since your last visit, which takes minutes. By moving day, the new library already holds nearly everything.
Pausing and managing replication
You can pause replication if the network is needed for something else or if a source is undergoing maintenance, and resume it later. The service handles picking up from where it left off. This control is useful during business-critical periods such as month-end processing, when you may not want any extra load on storage.
10Data Flow and Lifecycle: Test Clone, Cut-over and Finalize
Every VM travels the same ordered path, and the service moves it along automatically.
Google describes a VM migration lifecycle: each VM you migrate goes through an ordered set of phases, and the service advances it through them. Understanding the lifecycle lets you predict what happens next and plan human actions around it.
flowchart TD
A["Add VM to migration"] --> B["Replicating: baseline and incremental copies"]
B --> C{"Ready to rehearse?"}
C -->|Yes| D["Test clone in Google Cloud"]
D --> E{"Tests pass?"}
E -->|No| F["Fix issues and retest"]
F --> D
E -->|Yes| G["Schedule cut-over"]
C -->|Skip rehearsal| G
G --> H["Final sync and production VM starts"]
H --> I["Validate in production"]
I --> J["Finalize and clean up"]
The lifecycle, one step at a time
Start replication
You select a source VM, choose its target project, and the service begins the initial full copy and then the incremental cycles.
Configure the target details
You set machine type, network, subnet, disk type, labels and other Compute Engine properties the new VM should have. These choices can be reviewed and adjusted before each clone or cut-over.
Run a test clone
The service creates a clone VM in Google Cloud from the replicated data. The source keeps running, and replication continues. You test the clone, then delete it.
Perform the cut-over
When you are ready, the service takes a final sync of changes and starts the production VM in Google Cloud. In a typical plan the source VM is stopped around this moment so that no new data is written on the old side.
Validate in production
The application team confirms users can log in, jobs run, and integrations behave. Rollback is still possible while the source remains intact.
Finalize
When everyone is satisfied, you finalize the migration. Replication stops and the temporary migration resources are cleaned up. After this point the Google Cloud VM is the only live copy that matters.
Why the test clone is the best feature
A test clone lets you rehearse the real thing without risk. The clone boots from a snapshot of the replicated data, so changes you make during testing do not touch the source or the replication stream. You can check that the application starts, that services are reachable, that licenses activate and that performance feels right. If something is wrong, you fix it on the source side or in the target configuration, run another clone, and repeat until the checklist is green.
A test clone that can talk to the same production database or message queue as the real system may send duplicate emails, charge cards twice or corrupt data. Place test clones on an isolated network or block their outbound access to shared systems.
Cost during the lifecycle
Test clones and cut-over VMs are normal Compute Engine instances, so they are billed at ordinary Compute Engine prices for as long as they exist. Delete test clones as soon as the check is done. Replicated data also occupies storage until you finalize or remove the migration.
11OS Adaptations: Making a Foreign VM Feel at Home
Small automatic changes let a VM from another platform boot properly on Compute Engine.
A VM running on VMware does not know it has been moved. It was built around virtual hardware that VMware presents: a specific disk controller, a specific network card, and often helper software called guest tools. Compute Engine presents different virtual hardware. If you simply copied the disk across, the operating system might fail to find its boot disk, or the network card might be unrecognized, leaving the machine up but unreachable.
To solve this, the service applies OS adaptations automatically. Google describes these as configuration changes that VMs need in order to work properly on Google Cloud, applied by the service to the VMs you migrate. In broad terms they cover:
Drivers
Making sure the operating system has the drivers it needs to see Compute Engine’s disks and network devices at first boot.
Network settings
Adjusting how the VM receives its network configuration so it works with Google Cloud’s networking.
Guest environment
Adding the software that lets the VM cooperate with Compute Engine features such as metadata, login handling and agents.
Source-platform leftovers
Handling tools and settings tied to the old platform that no longer apply in the new place.
Travelling abroad with your phone charger works only if you pack a plug adapter. OS adaptations are the plug adapters for your servers. The charger, meaning your application, stays the same.
Why adaptation still needs your attention
Automation covers the standard cases. Unusual setups can still need a human eye: custom kernels, hand-tuned boot loaders, special storage drivers, or software that ties itself to old virtual hardware identifiers. That is why the test clone exists. If an adaptation does not fit your VM, you find out in the rehearsal rather than on launch night.
Applications that remember hardware
Some licensed software generates its license key from the machine’s hardware fingerprint, such as its network card address. When the VM moves, the fingerprint changes, and the license may stop working. Check with software vendors before migration and collect any activation steps you will need after the first boot in Google Cloud.
Keep a short per-application checklist of things to verify after boot: services running, disks mounted, time synchronized, monitoring agents reporting and licenses active. Reusing the same checklist for every wave makes testing fast and consistent.
12Groups and Waves: Migrating at Scale
Move applications, not isolated servers, and move them in manageable batches.
Real applications rarely live on a single VM. A typical business system has web servers, application servers, a database and perhaps a batch processor. If you migrate them one at a time with no coordination, the app may be half in the old place and half in the new place for weeks. The service offers groups so that VMs belonging together can be migrated together.
What a group gives you
- One action for many VMs. You can test-clone or cut over every VM in the group together rather than clicking through each one.
- A shared story. Application owners can see all machines of their system in one view.
- A natural unit for scheduling. A group maps neatly to a change window on the calendar.
Google’s marketing material describes a range from migrating a single app with a few clicks to running a migration sprint of around a hundred systems using groups, and it points to the API for teams that want to build their own migration factory.
Designing waves
Wave 0: the pilot
A handful of low-risk VMs, often internal tools or test machines. The purpose is to prove the foundation, tooling and runbooks.
Wave 1: early production candidates
Simple, well understood applications with few dependencies and friendly owners. Success here builds confidence across the organization.
Middle waves: the bulk
Groups of applications moved at a steady rhythm, often weekly or fortnightly, using proven runbooks and the same test checklists.
Final waves: the hard ones
Systems with heavy dependencies, strict uptime needs, unusual operating systems or strong vendor constraints. By now the team has the experience to handle them.
Building a migration factory with the API
When hundreds of VMs are involved, clicking in a console becomes the bottleneck. Because every console action also exists in the API, teams create their own tooling that reads the plan from a spreadsheet or a database, creates groups, starts replication, triggers test clones, records results and posts status messages to team chat. The advantage is repeatability: every VM follows the same path with the same checks, and the plan is auditable afterwards.
Limit the number of VMs replicating at once to what your network can sustain. Starting two hundred machines at once helps nobody if the pipe can only feed twenty at a useful speed.
13Security in a Migration Program
A migration moves your most valuable data across networks, so security has to be part of the design.
Security is not a separate phase for migrations. It runs through every step: who can start the process, how data travels, where it rests, and what the migrated VM looks like when it wakes up.
Access control
Use IAM to give migration staff only the roles they need, and separate duties where sensible. For example, the people who can create sources may differ from those who can perform production cut-overs. Review who holds those roles on a regular schedule, and remove them at the end of the program.
Data in transit and at rest
Replicated data moves from your source to Google Cloud over encrypted channels, and on Google Cloud, storage is encrypted at rest by default. If your company must control its own encryption keys, evaluate customer-managed encryption options for the target disks and confirm how they apply to the migration path you have chosen. For especially sensitive workloads, run replication over a private connection rather than the public internet.
Network exposure
- The Migrate Connector initiates outbound connections, so you typically avoid opening inbound access to your data center.
- Give migrated VMs private addresses by default and add public addresses only when truly needed.
- Place test clones in isolated networks so they cannot reach production data stores by accident.
- Use firewall rules that allow only the ports an application genuinely needs.
Credentials left behind
Servers often carry old secrets: service account passwords in configuration files, shared keys, forgotten local administrator accounts. Migration is a golden opportunity to find and rotate them. At minimum, scan the migrated VM for hard-coded credentials and rotate the important ones soon after cut-over.
Compliance and location
Choose target regions that satisfy data residency rules for your industry or country. Record where data lived before and after the move so auditors can follow the trail. Keep migration logs, because they show who did what and when.
Problem
The migration team is given broad owner-level access to every project “just to make things easy”, and the access is never removed.
Why It’s Harmful
A single compromised account could read or change production data in every project. Unused standing privileges are one of the most common causes of security incidents.
Correct Approach
Use narrowly scoped roles, grant them only to the people who need them, set an end date, and remove them when the program closes.
14Monitoring, Logging and Troubleshooting
You need to see replication health, cut-over progress and the behaviour of the migrated VM.
A migration that runs for weeks needs observation. The service shows the state of each VM migration in the console, including whether replication is healthy, how recent the latest cycle is, and what the next lifecycle step is. Google Cloud’s logging and monitoring tools capture activity and let you build alerts around it.
What to watch during replication
Replication freshness
How old is the newest completed cycle? A growing gap means the VM is changing faster than data is arriving.
Replication errors
Failed cycles may indicate lost connectivity, an unhealthy connector, expired permissions or a source platform problem.
Bandwidth use
Compare actual throughput against what you planned. Large gaps point to network congestion or throttling.
Source platform load
Watch storage latency on the source side so replication does not hurt users of the live system.
What to watch after cut-over
Once the VM runs in Compute Engine, treat it as any other production VM. Check CPU, memory, disk and network metrics, and the health of the application itself. Compare these numbers with what you saw on the old platform, since differences can reveal sizing mistakes or missed settings.
Typical troubleshooting scenarios
| Symptom | Likely cause | First thing to check |
|---|---|---|
| Replication stalls or never finishes the first copy | Low bandwidth, connectivity break, or very high change rate | Network path, connector health and the VM’s write activity |
| Test clone boots but is unreachable | Wrong subnet, firewall block or network settings not applied | Target network choice and firewall rules |
| Clone fails to boot | Unsupported operating system or unusual boot setup | Supported OS list and VM boot configuration |
| Application starts but license is invalid | License tied to old hardware identifiers | Vendor activation steps |
| Cut-over fails to create VM | Quota exhausted or missing permissions | Regional quota and service account roles |
| Application slow after migration | Dependencies left behind in the old data center | Network paths between app tiers and databases |
Paid support is available for the service, and it is worth knowing how to open a case before your first production wave, not during an outage. Keep the case process in the runbook.
15Understanding the Costs
The service itself is free, but the resources around it are not.
Google provides Migrate to Virtual Machines at no charge for migrations into Google Cloud. That is a major reason many organizations choose it. But “free tool” does not mean “free migration”. Several real costs sit around the service, and a good plan accounts for all of them.
Costs you do not pay
- No license fee for the migration service itself
- No per-VM migration charge
- No separate migration server licence to buy
- No agent licences inside each guest
Costs you do pay
- Compute Engine instances created for test clones and cut-over
- Storage used by replicated data and the resulting disks
- Network charges for data movement and connectivity such as VPN or Interconnect
- Source-cloud charges for helper instances, disks and traffic when migrating from AWS or Azure
- Optional paid support
Estimating the bill
Use the Google Cloud pricing calculator to estimate the monthly running cost of your target VMs once they are live. Add a short-term migration budget for the overlap period, when you pay for the old environment, the replicated data and the new VMs at the same time. Teams that forget this overlap often see a cost spike in the middle of the program and mistakenly think something has gone wrong.
Ways to keep costs under control
- Delete test clones as soon as testing is finished.
- Finalize migrations promptly after validation so replication resources are released.
- Right-size VMs using real usage data instead of copying old sizes blindly.
- Shut down and decommission the old environment on a planned date so you stop paying twice.
- Consider committed use discounts for steady workloads once you are confident in the sizing.
16Design Patterns and Anti-patterns
Patterns are habits that repeatedly work; anti-patterns are habits that repeatedly hurt.
After many migrations, experienced teams converge on a handful of habits. Here are the ones that appear again and again, along with the traps that catch new teams.
Patterns that work
Pilot first, always
Migrate one harmless VM from start to finish before anything important. You will find permission gaps, firewall surprises and documentation holes while the stakes are tiny.
Replicate early, cut over late
Start replication days or weeks before the window. A fresh, nearly complete copy makes the cut-over short and predictable.
Rehearse with a test clone every time
Even for simple servers, a quick test clone confirms boot, network and application health. It costs a few hours of VM time and saves a bad night.
Application-centred groups
Group by application, not by server type. A group of “all databases” is easier to list but harder to test and to explain to owners.
Landing zone first
Build a well-designed set of projects, networks, roles and policies before migrating. Moving into an ordered environment is far easier than tidying a messy one later.
Runbook and rollback plan per wave
Write down the exact steps, the owners, the checks and the decision point at which you roll back. Rollback is easiest while the source VM is still intact.
flowchart LR
P["Plan and assess"] --> F["Build foundation"]
F --> PI["Pilot wave"]
PI --> W["Production waves"]
W --> O["Optimize and right-size"]
O --> D["Decommission old environment"]
Anti-patterns to avoid
Problem
Teams move a web tier to Google Cloud and leave its database in the old data center, planning to move the database “later”.
Why It’s Harmful
Every database call crosses a long network link, making the application slow and fragile. The temporary split often lasts for months and creates complaints from users.
Correct Approach
Map dependencies and move tightly coupled components in the same wave. If a split is unavoidable, measure latency first and agree an end date.
Problem
The team skips test clones to save time and goes straight to cut-over on a Saturday night.
Why It’s Harmful
Any boot, driver, network or licensing problem is discovered during the real outage window, when pressure is highest and rollback is stressful.
Correct Approach
Always rehearse. A successful test clone, with a signed-off checklist, is the entry ticket for the cut-over window.
Problem
Old VMs are never switched off after migration, and finalized migrations leave test clones and replicated data behind.
Why It’s Harmful
The company pays for two environments indefinitely, and forgotten machines become security risks because nobody patches them.
Correct Approach
Set a decommission date for each wave, keep the source powered off but intact for a short safety period, then remove it and clean up cloud-side leftovers.
17When to Use It and When to Choose Something Else
Migrate to Virtual Machines is excellent at one job; other jobs deserve other tools.
Choosing the right migration path matters more than polishing the wrong one. The table below compares the main options at a high level so you can place this service in the bigger picture.
| Goal | Good fit | Why |
|---|---|---|
| Move VMs as they are with minimal change | Migrate to Virtual Machines | Built for lift and shift with replication, test clones and automatic adaptations |
| Move VMware workloads while keeping VMware tooling | Google Cloud VMware Engine | Keeps the VMware stack, which reduces change for teams and tools |
| Turn applications running in VMs into containers | Google’s container modernization tooling | Targets containerizing rather than copying whole VMs |
| Move a database to a managed service | Database Migration Service | Handles database-specific replication and conversion |
| Move large amounts of plain files or objects | Storage transfer tools | Optimized for data sets, not for bootable servers |
| Discover and assess before deciding | Migration Center | Provides inventory, cost estimates and planning support |
Situations where caution is wise
- Unsupported operating systems. If your VM runs an operating system outside the supported list for its source, plan for extra testing or an alternative route.
- Specialized hardware dependencies. Software that needs a hardware dongle, special cards or very specific virtual hardware may not run unchanged.
- Extremely write-heavy databases. A VM that changes enormous amounts of data every minute may keep replication permanently behind. Consider database-level replication for these.
- Strict zero-downtime requirements. The final cut-over still involves a short switch. Truly zero-downtime systems usually need application-level clustering and traffic shifting designed for it.
Mixed strategies are normal. A single program often uses this service for most VMs, a database tool for key databases, and a modernization path for a handful of strategic applications.
Advantages
- No charge for the migration service itself
- Continuous replication keeps source downtime short
- Built-in test clones reduce launch-night surprises
- Automatic OS adaptations remove a lot of manual work
- No agent needed inside each guest, so less impact on workloads
- Console and API support both small and very large programs
Disadvantages / Trade-offs
- It carries applications as they are, including their old design problems
- Limited to listed sources and supported operating systems
- Limit of fifteen cloud sources per host project
- Bandwidth to Google Cloud can limit speed
- Source-cloud charges appear when migrating from AWS or Azure
18After the Move: Optimizing Your Environment
The cut-over is the beginning of cloud life, not the end of the project.
Google’s own migration guidance ends with a step to optimize your environment after migration, and for good reason. A lifted server behaves like a guest in a new house: it works, but it has not unpacked yet. The first weeks after cut-over are the best time to make it feel properly at home.
Right-size the machines
Look at real CPU, memory and disk usage over a few weeks. Many VMs that were sized for peak loads years ago are far larger than they need to be. Compute Engine lets you change the machine type, and Google’s recommendation tools can suggest better sizes based on observed usage. Each step down saves money every month.
Adopt cloud-native operations
Backups and snapshots
Replace old tape or backup-appliance routines with scheduled disk snapshots and tested restores.
Monitoring and alerting
Use Cloud Monitoring and Cloud Logging to track health, and retire legacy monitoring agents that no longer fit.
Patch management
Use central tooling to schedule operating system updates rather than patching each VM by hand.
Identity and access
Move from shared local accounts to named identities and role-based access.
Cost visibility
Apply labels to VMs so finance teams can see spending by application, team and environment.
Resilience
Design for failure of a zone, using multiple zones and load balancing where the application allows it.
Plan the next modernization steps
Now that workloads are in Google Cloud, you can start improving them selectively. A self-managed database might move to a managed one. A stable web tier might be containerized. A batch job might become a scheduled serverless task. Choose the improvements that pay back fastest rather than modernizing everything at once.
Decommission the old environment
The final satisfying step is turning off what you left behind. Keep the old VMs switched off but available for a defined safety period, confirm nobody needs them, then remove them and release the hardware, licences and contracts. This is where the savings of the whole program truly arrive.
Week 1: stabilize
Watch the migrated VMs closely, fix issues quickly, and keep the old VMs powered off but intact.
Weeks 2 to 4: tune
Review utilization, resize machines, apply labels and enable backups and monitoring standards.
Weeks 4 to 8: retire
After sign-off, delete old VMs, finalize migrations, remove leftover cloud resources and close the change record.
19Real-World Scenarios
Four illustrative situations showing how the pieces fit together.
The scenarios below are illustrative composites, not case studies of specific named companies. They show how typical organizations apply the service.
Scenario 1: A retailer closing a data center
A mid-sized retailer has two hundred VMware VMs in a leased facility whose contract ends in nine months. The team installs the Migrate Connector, builds a landing zone with separate target projects for stores, e-commerce and back office, and migrates in weekly waves grouped by application. Test clones are mandatory. The final waves include the point-of-sale integration servers, which are migrated in a quiet window with a rollback plan, and the old hardware is returned before the lease ends.
Scenario 2: A software company consolidating from AWS
After an acquisition, a software company finds half its services in AWS and half in Google Cloud. To simplify billing and skills, it creates an AWS source, migrates stateless application servers first, and uses database-specific tooling for databases. The team budgets for AWS-side charges during replication and shuts down AWS resources immediately after finalization to avoid paying twice.
Scenario 3: A university moving lab and teaching servers
A university runs many small VMs for courses, research tools and administrative systems. Most have low usage and unclear owners. The IT team uses discovery to find idle machines, retires about a quarter of them, groups the rest by department and migrates them over a semester break. Right-sizing after migration shrinks the cloud bill compared to the first estimate.
Scenario 4: A company leaving a VMware hosting model
A business has workloads on Google Cloud VMware Engine but wants cheaper, more flexible native VMs for steady, non-VMware-dependent applications. It registers a VMware Engine source, selects applications that do not rely on VMware-specific features, and migrates them to Compute Engine, keeping VMware Engine only for the workloads that truly need it.
In every scenario, success came from inventory, grouping by application, rehearsal with test clones, and a clear end date for the old environment. The technology was the easy part.
20Best Practices and Common Mistakes
A short checklist to keep nearby while you run the program.
Best practices
- Treat migration as a program, not a tool installation. Assign owners, a calendar, a communication plan and a decision-maker for go or no-go calls.
- Validate prerequisites in writing. Supported OS, connectivity, quotas, permissions and licensing are all checked before each wave.
- Keep the foundation consistent. Use standard naming, labels, network layouts and role definitions across all target projects.
- Automate the repeated steps. Use the API for groups, status reports and checks once your process is stable.
- Test like production. A test clone should exercise the same logins, jobs and integrations that real users depend on.
- Communicate widely. Application owners, help desk staff and end users should know the schedule and what to expect.
- Record lessons after each wave. A short retrospective improves the next wave measurably.
- Close the loop. Finalize migrations, delete clones, remove source VMs and update documentation.
Common mistakes
Underestimating bandwidth
Planning with the advertised link speed instead of the share of it you can really use.
Ignoring dependencies
Moving a tier without the systems it talks to, creating slow or broken applications.
Skipping rehearsal
Going straight to cut-over without a test clone and a signed-off checklist.
Forgetting quotas
Hitting CPU, disk or address limits in the middle of a wave.
Leaving clones running
Paying for forgotten test VMs and risking duplicate actions against shared systems.
Not planning rollback
Having no clear point and procedure for returning to the source if validation fails.
Copying waste
Carrying oversized machines into the cloud and paying for idle capacity every month.
Never decommissioning
Running the old and new environments side by side long after the move is complete.
21Frequently Asked Questions
Quick answers to the questions beginners ask most.
The service itself carries no charge for migrations into Google Cloud. You still pay for the Compute Engine instances, storage and networking you use, and for source-cloud resources when migrating from AWS or Azure.
No agent is required inside each guest for the replication approach described here. For VMware sources you deploy a Migrate Connector appliance in the environment, which is separate from the VMs being moved.
Replication is designed to run without causing downtime on the source. Your source VM stays online. The short interruption happens at cut-over, when you switch users to the new VM.
It depends on disk size, how fast data changes, and available bandwidth. A small server may take hours; a multi-terabyte database server may take days for the first copy. Cut-over itself is usually short once replication is up to date.
Google documents four: on-premises vSphere, Google Cloud VMware Engine, AWS and Azure.
A test clone is a temporary rehearsal VM that does not affect the source or replication. A cut-over is the real switch that creates the production VM from a final sync.
Yes. The target can be either a Compute Engine VM instance or Persistent Disk volumes, which helps when you only need the data.
While the source VM remains intact and you have not finalized, you can return users to the source. That is why finalization should wait until validation is complete and the safety period has passed.
It makes only the small adaptations needed for the VM to run on Compute Engine. Your application code and design stay the same, which is both the strength and the limit of lift and shift.
Yes. The console actions are also available through an API, so teams can build their own repeatable migration factories that handle hundreds of VMs.
The host project controls the migration and holds the service. Target projects receive the migrated VMs. They can be the same project for a small test, but separate projects are usual in real programs.
A host project can hold at most fifteen cloud sources at a time, counting AWS and Azure together. Large estates often use more than one host project.
22Summary and Key Takeaways
Migrate to Virtual Machines gives teams a calm, repeatable way to move whole servers into Google Cloud. It copies disks continuously while the originals keep working, lets you rehearse with test clones, applies the small changes each VM needs, and then swaps production over in a short, controlled cut-over. It costs nothing as a service, but the surrounding resources and the overlap period do cost money, so plan for them. The tool is dependable, but the outcome depends mostly on the human work around it: inventory, dependency mapping, grouping, rehearsal, clear communication and a firm date for switching off the past.
Remember the restaurant that needed to move without closing. The service is the moving crew, but you still choose the new building, pack with care, rehearse the first dinner and decide the day to hand over the keys.
Key Takeaways
- Lift and shift, done safely — the service copies VMs from vSphere, VMware Engine, AWS or Azure into Compute Engine with only minor automatic changes.
- Brain and pipes — the host project controls the migration, target projects receive the VMs, and connectors or cloud source links carry the data.
- Replication keeps downtime short — an initial full copy is followed by incremental cycles, so the final cut-over only needs a small last sync.
- Always rehearse — test clones reveal boot, network, licensing and application problems before the real switch, and they should be isolated from shared production systems.
- Plan the foundation first — projects, roles, networking, quotas and billing must be ready before the first wave, and a pilot proves the whole path.
- The tool is free, the overlap is not — budget for Compute Engine, storage, networking and source-cloud charges, and decommission the old environment on a planned date.
- Optimize after the move — right-size machines, adopt cloud-native operations and choose modernization steps that pay back fastest.