SlideShare a Scribd company logo
Live migrating a container:
pros, cons and gotchas
Pavel Emelyanov
Principal engineer @ Virtuozzo
AgendaAgenda
• Why you might want to live migrate a container
• Why (and how) to avoid live migration
• Why is container live migration so complex
2
Migration in a nutshelMigration in a nutshel
• Save state
• Copy state
• Restore from state
3
Why you might want to live migrate a containerWhy you might want to live migrate a container
• Spectacular
• Load balancing
• Updating kernel
– Can avoid live migration, just C/R
• Updaring or replacing hardware
4
Why to avoid live migrationWhy to avoid live migration
5
How to avoid live migrationHow to avoid live migration
• Balance network traffic
• Microservices
• Crash-driven updates
• Planned downtime
6
Making live migration liveMaking live migration live
• State saving, transfering and restoring happens with tasks frozen
– “Scatter” container is too complex
• Save state quickly
• Big transfer should not be done at that time
• Restore from state quickly
7
Making live migration liveMaking live migration live
• Save/restore speed up is a long-running task
• Big memory transfer should not be done at frozen time
• Memory pre-copy
• Memory post-copy
8
Pre-copyPre-copy
• Copy memory while tasks are running
• Track memory changes
• goto again
9
Pre-copyPre-copy
• Pros:
– Safe: once migrated, source node can disappear
• Cons:
– Unpredictable: iterations may take long
– Non-guaranteed: “dirty” memory next round may remain big
10
Post-copyPost-copy
• Migrate all but memory
• Turn on “network swap” on destination
11
Post-copyPost-copy
Pros:
– Predictable: time to migrate can be well estimated
• Cons:
– Unsafe: src node death means death of container on destination
– Application slows down after migration
12
Live migration at lengthLive migration at length
• Memory pre-copy (iteratively, optional)
• Freeze + Save state
• Copy state
• Restore from state + Unfreeze and resume
• Memory post-copy (optional)
13
GotchasGotchas
14
VS
Things to deal withThings to deal with
• VM
– Environment: virtual hardware, paravirt
– CPU
– Memory
• Container
– Environment: cgroups, namespaces
– Processes and other animals
– Memory
15
Memory pre-copyMemory pre-copy
• VM
– All memory at hands
– Plain address space
• Container
– Memory
●
is scatered over the processes
●
can be (or can be not) shared
●
can be (or can be not) mapped to disk files
16
Save stateSave state
• VM
– Hardware state
●
Tree of ~100 objects
●
Fixed amount of data per each
• Container
– State of all objects
●
Graph of up to ~1000 objects
●
All have different amount of data, different reading API
17
Restore from stateRestore from state
• VM
– Copy memory in place, write state into devices
• Container
– Creation of many small objects
– Not all have sane API for creation
●
Creation sequence can be non-trivial
18
Memory post-copyMemory post-copy
• UserfaultFD from Andrea Archangeli
• VM
– Merged into 4.2
• Container
– Non-cooperative work of uffd monitor and client,
need further patching
19
And we also need this, this and this!And we also need this, this and this!
• Check for CPUs compatibility
• Check and load necessary kernel modules (iptables, filesystems)
• Non-shared filesystem should be copied
• Roll-back on source node if something fails in between
– Keep tasks frozen after dump, kill after restore
20
ImplementationImplementation
• CRIU
– Save & restore state
– Memory pre/post copy
• P.Haul
– Checks
– Orchestrate all C/R steps
– Deal with filesystem
21
P.Haul goalsP.Haul goals
• Provide engine for containers live miration using CRIU
• Perform necessary pre-checks (e.g. CPU compatibility)
• Organize memory pre-copy and/or post-copy
• Take care of file-system migration (if needed)
22
Under the hoodUnder the hood
23
CRIU CRIUp.haul p.hauldocker -d docker -d
migrate
src dst
check (CPUs, kernels)
pre-dump
memory
dump
other images
restore
memory
lazy mem
FS
FS copy
done
pre-copypost-copy
kill
freeze
time
More infoMore info
• http://criu.org
• http://criu.org/P.Haul
• criu@openvz.org
• +CriuOrg / @__criu__
• https://github.com/xemul/(criu|p.haul)
24
Thank you!
Pavel Emelyanov
@__criu__
xemul@openvz.org

More Related Content

PDF
CRIU: time and space travel for Linux containers -- Kir Kolyshkin
PDF
Live migration: pros, cons and gotchas -- Pavel Emelyanov
ODP
Speeding up ps and top
PDF
Embedded Recipes 2017 - Reliable monitoring with systemd - Jérémy Rosen
ODP
Gluster volume snapshot
PDF
Live migrating a container: pros, cons and gotchas
PDF
RISC-V on Edge: Porting EVE and Alpine Linux to RISC-V
PDF
Kernel Recipes 2017 - What's new in the world of storage for Linux - Jens Axboe
CRIU: time and space travel for Linux containers -- Kir Kolyshkin
Live migration: pros, cons and gotchas -- Pavel Emelyanov
Speeding up ps and top
Embedded Recipes 2017 - Reliable monitoring with systemd - Jérémy Rosen
Gluster volume snapshot
Live migrating a container: pros, cons and gotchas
RISC-V on Edge: Porting EVE and Alpine Linux to RISC-V
Kernel Recipes 2017 - What's new in the world of storage for Linux - Jens Axboe

What's hot (20)

PDF
Overview of sheepdog
PDF
Introduction to HSA
ODP
State of systemd @ Facebook
PDF
Ceph RBD Update - June 2021
ODP
Linux logging
PDF
Seastore: Next Generation Backing Store for Ceph
PDF
Look Into Libvirt Osier Yang
ODP
Multicore
PDF
Red hat open stack and storage presentation
PDF
Keeping Latency Low and Throughput High with Application-level Priority Manag...
PDF
How to Meet Your P99 Goal While Overcommitting Another Workload
PDF
Unikraft: Fast, Specialized Unikernels the Easy Way
PDF
OpenNebulaconf2017US: Rapid scaling of research computing to over 70,000 cor...
PDF
Ceph Block Devices: A Deep Dive
PDF
Disaster Recovery Strategies Using oVirt's new Storage Connection Management ...
PDF
Rust Is Safe. But Is It Fast?
PDF
Object Compaction in Cloud for High Yield
PPTX
Tuning linux for mongo db
PDF
Make room! Make room!
PDF
Is It Faster to Go with Redpanda Transactions than Without Them?!
Overview of sheepdog
Introduction to HSA
State of systemd @ Facebook
Ceph RBD Update - June 2021
Linux logging
Seastore: Next Generation Backing Store for Ceph
Look Into Libvirt Osier Yang
Multicore
Red hat open stack and storage presentation
Keeping Latency Low and Throughput High with Application-level Priority Manag...
How to Meet Your P99 Goal While Overcommitting Another Workload
Unikraft: Fast, Specialized Unikernels the Easy Way
OpenNebulaconf2017US: Rapid scaling of research computing to over 70,000 cor...
Ceph Block Devices: A Deep Dive
Disaster Recovery Strategies Using oVirt's new Storage Connection Management ...
Rust Is Safe. But Is It Fast?
Object Compaction in Cloud for High Yield
Tuning linux for mongo db
Make room! Make room!
Is It Faster to Go with Redpanda Transactions than Without Them?!
Ad

Similar to Live migrating a container: pros, cons and gotchas -- Pavel Emelyanov (20)

ODP
CRIU: Time and Space Travel for Linux Containers
ODP
Criu texas-linux-fest-2014
ODP
CRIU: Time and Space travel Service for Linux Applications
PDF
Live Container Migration: OpenStack Summit Barcelona 2016
PDF
CRIU: Time and Space Travel Service for Linux Applications
PDF
Understanding Migration Mechanisms of Containers using CRIU
PDF
Container Attached Storage (CAS) with OpenEBS - Berlin Kubernetes Meetup - Ma...
PDF
Solving k8s persistent workloads using k8s DevOps style
ODP
OpenVZ, Virtuozzo and Docker
PDF
Real-World Docker: 10 Things We've Learned
PDF
DCSF19 Containers for Beginners
ODP
Keep Your Data Safe in a Containerized Application
PPTX
Why should i care about stateful containers?
PPTX
Understand immutable infrastructure, what? Why? how? - devops d day Marseill...
PPTX
Robust Containers by Eric Brewer
PDF
Containerization Is More than the New Virtualization
PDF
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
PPT
Presentation on Large Scale Data Management
PPTX
Immutability: from code to infrastructure, the way of scalability - snowcamp ...
PDF
Persistent storage in Docker
CRIU: Time and Space Travel for Linux Containers
Criu texas-linux-fest-2014
CRIU: Time and Space travel Service for Linux Applications
Live Container Migration: OpenStack Summit Barcelona 2016
CRIU: Time and Space Travel Service for Linux Applications
Understanding Migration Mechanisms of Containers using CRIU
Container Attached Storage (CAS) with OpenEBS - Berlin Kubernetes Meetup - Ma...
Solving k8s persistent workloads using k8s DevOps style
OpenVZ, Virtuozzo and Docker
Real-World Docker: 10 Things We've Learned
DCSF19 Containers for Beginners
Keep Your Data Safe in a Containerized Application
Why should i care about stateful containers?
Understand immutable infrastructure, what? Why? how? - devops d day Marseill...
Robust Containers by Eric Brewer
Containerization Is More than the New Virtualization
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
Presentation on Large Scale Data Management
Immutability: from code to infrastructure, the way of scalability - snowcamp ...
Persistent storage in Docker
Ad

More from OpenVZ (20)

PDF
PFcache - LinuxCon 2015
ODP
Speeding up ps and top
PDF
Тестирование ПО, основанного на сторонних компонентах - Денис Силаков, SECR 2015
ODP
Живая миграция: плюсы, минусы и подводные камни - Павел Емельянов
PDF
What's missing from upstream kernel containers? - Sergey Bronnikov
PDF
Проблема фрагментации виртуальных дисков и способы её решения -- Дмитрий Монахов
PDF
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
PDF
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
PDF
LibCT и контейнеры на уровне приложений -- Александр Бурлука
PDF
Управление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
PDF
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
PDF
LibCT: one lib to rule them all -- Andrey Vagin
ODP
Denser containers with PF cache - Pavel Emelyanov
ODP
CGroups kernel memory controller -- Pavel Emelyanov
ODP
What's missing from upstream kernel containers? - Kir Kolyshkin, Sergey Bronn...
ODP
Not so brief history of Linux Containers - Kir Kolyshkin
ODP
Openvz booth
PDF
Управление ресурсами в Linux и OpenVZ
PDF
Containers in a file
PDF
Optimizing FUSE for Cloud Storage
PFcache - LinuxCon 2015
Speeding up ps and top
Тестирование ПО, основанного на сторонних компонентах - Денис Силаков, SECR 2015
Живая миграция: плюсы, минусы и подводные камни - Павел Емельянов
What's missing from upstream kernel containers? - Sergey Bronnikov
Проблема фрагментации виртуальных дисков и способы её решения -- Дмитрий Монахов
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
LibCT и контейнеры на уровне приложений -- Александр Бурлука
Управление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
LibCT: one lib to rule them all -- Andrey Vagin
Denser containers with PF cache - Pavel Emelyanov
CGroups kernel memory controller -- Pavel Emelyanov
What's missing from upstream kernel containers? - Kir Kolyshkin, Sergey Bronn...
Not so brief history of Linux Containers - Kir Kolyshkin
Openvz booth
Управление ресурсами в Linux и OpenVZ
Containers in a file
Optimizing FUSE for Cloud Storage

Recently uploaded (20)

PPTX
Patient Appointment Booking in Odoo with online payment
PPTX
assetexplorer- product-overview - presentation
PDF
Wondershare Recoverit Full Crack New Version (Latest 2025)
PDF
Topaz Photo AI Crack New Download (Latest 2025)
PDF
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
PPTX
Introduction to Windows Operating System
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PPTX
Cybersecurity: Protecting the Digital World
PDF
Cost to Outsource Software Development in 2025
PPTX
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
PPTX
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
PDF
Designing Intelligence for the Shop Floor.pdf
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PDF
iTop VPN Crack Latest Version Full Key 2025
PPTX
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
PDF
Time Tracking Features That Teams and Organizations Actually Need
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
PPTX
Weekly report ppt - harsh dattuprasad patel.pptx
PPTX
"Secure File Sharing Solutions on AWS".pptx
Patient Appointment Booking in Odoo with online payment
assetexplorer- product-overview - presentation
Wondershare Recoverit Full Crack New Version (Latest 2025)
Topaz Photo AI Crack New Download (Latest 2025)
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
Introduction to Windows Operating System
Why Generative AI is the Future of Content, Code & Creativity?
Cybersecurity: Protecting the Digital World
Cost to Outsource Software Development in 2025
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
Designing Intelligence for the Shop Floor.pdf
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
iTop VPN Crack Latest Version Full Key 2025
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
Time Tracking Features That Teams and Organizations Actually Need
wealthsignaloriginal-com-DS-text-... (1).pdf
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
Weekly report ppt - harsh dattuprasad patel.pptx
"Secure File Sharing Solutions on AWS".pptx

Live migrating a container: pros, cons and gotchas -- Pavel Emelyanov

  • 1. Live migrating a container: pros, cons and gotchas Pavel Emelyanov Principal engineer @ Virtuozzo
  • 2. AgendaAgenda • Why you might want to live migrate a container • Why (and how) to avoid live migration • Why is container live migration so complex 2
  • 3. Migration in a nutshelMigration in a nutshel • Save state • Copy state • Restore from state 3
  • 4. Why you might want to live migrate a containerWhy you might want to live migrate a container • Spectacular • Load balancing • Updating kernel – Can avoid live migration, just C/R • Updaring or replacing hardware 4
  • 5. Why to avoid live migrationWhy to avoid live migration 5
  • 6. How to avoid live migrationHow to avoid live migration • Balance network traffic • Microservices • Crash-driven updates • Planned downtime 6
  • 7. Making live migration liveMaking live migration live • State saving, transfering and restoring happens with tasks frozen – “Scatter” container is too complex • Save state quickly • Big transfer should not be done at that time • Restore from state quickly 7
  • 8. Making live migration liveMaking live migration live • Save/restore speed up is a long-running task • Big memory transfer should not be done at frozen time • Memory pre-copy • Memory post-copy 8
  • 9. Pre-copyPre-copy • Copy memory while tasks are running • Track memory changes • goto again 9
  • 10. Pre-copyPre-copy • Pros: – Safe: once migrated, source node can disappear • Cons: – Unpredictable: iterations may take long – Non-guaranteed: “dirty” memory next round may remain big 10
  • 11. Post-copyPost-copy • Migrate all but memory • Turn on “network swap” on destination 11
  • 12. Post-copyPost-copy Pros: – Predictable: time to migrate can be well estimated • Cons: – Unsafe: src node death means death of container on destination – Application slows down after migration 12
  • 13. Live migration at lengthLive migration at length • Memory pre-copy (iteratively, optional) • Freeze + Save state • Copy state • Restore from state + Unfreeze and resume • Memory post-copy (optional) 13
  • 15. Things to deal withThings to deal with • VM – Environment: virtual hardware, paravirt – CPU – Memory • Container – Environment: cgroups, namespaces – Processes and other animals – Memory 15
  • 16. Memory pre-copyMemory pre-copy • VM – All memory at hands – Plain address space • Container – Memory ● is scatered over the processes ● can be (or can be not) shared ● can be (or can be not) mapped to disk files 16
  • 17. Save stateSave state • VM – Hardware state ● Tree of ~100 objects ● Fixed amount of data per each • Container – State of all objects ● Graph of up to ~1000 objects ● All have different amount of data, different reading API 17
  • 18. Restore from stateRestore from state • VM – Copy memory in place, write state into devices • Container – Creation of many small objects – Not all have sane API for creation ● Creation sequence can be non-trivial 18
  • 19. Memory post-copyMemory post-copy • UserfaultFD from Andrea Archangeli • VM – Merged into 4.2 • Container – Non-cooperative work of uffd monitor and client, need further patching 19
  • 20. And we also need this, this and this!And we also need this, this and this! • Check for CPUs compatibility • Check and load necessary kernel modules (iptables, filesystems) • Non-shared filesystem should be copied • Roll-back on source node if something fails in between – Keep tasks frozen after dump, kill after restore 20
  • 21. ImplementationImplementation • CRIU – Save & restore state – Memory pre/post copy • P.Haul – Checks – Orchestrate all C/R steps – Deal with filesystem 21
  • 22. P.Haul goalsP.Haul goals • Provide engine for containers live miration using CRIU • Perform necessary pre-checks (e.g. CPU compatibility) • Organize memory pre-copy and/or post-copy • Take care of file-system migration (if needed) 22
  • 23. Under the hoodUnder the hood 23 CRIU CRIUp.haul p.hauldocker -d docker -d migrate src dst check (CPUs, kernels) pre-dump memory dump other images restore memory lazy mem FS FS copy done pre-copypost-copy kill freeze time
  • 24. More infoMore info • http://criu.org • http://criu.org/P.Haul • criu@openvz.org • +CriuOrg / @__criu__ • https://github.com/xemul/(criu|p.haul) 24

Editor's Notes

  • #3: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #4: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #5: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #6: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #7: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #8: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #9: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #10: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #11: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #12: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #13: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #14: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #15: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #16: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #17: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #18: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #19: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #20: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #21: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #22: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #23: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #24: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>
  • #25: To install a font: Open Fonts by clicking the Start button , clicking Control Panel, clicking Appearance and Personalization, and then clicking Fonts. Click File, and then click Install New Font. ... In the Add Fonts dialog box, under Drives, click the drive where the font that you want to install is located. http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts <number>