{"id":9751,"date":"2026-02-20T09:57:01","date_gmt":"2026-02-20T04:27:01","guid":{"rendered":"https:\/\/pheonixsolutions.com\/blog\/?p=9751"},"modified":"2026-02-20T10:03:38","modified_gmt":"2026-02-20T04:33:38","slug":"how-to-restore-openvz-virtuozzo-7-disaster-recovery-dr","status":"publish","type":"post","link":"https:\/\/pheonixsolutions.com\/blog\/how-to-restore-openvz-virtuozzo-7-disaster-recovery-dr\/","title":{"rendered":"How to restore OpenVZ \/ Virtuozzo 7 (Disaster Recovery \u2013 DR)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Introduction<\/strong><br><br>This blog explains <strong>how to restore an OpenVZ \/ Virtuozzo 7 node after reloading CentOS 7<\/strong>, using a <strong>full-node backup<\/strong> that stores container data inside a <strong>loopback filesystem (<code>vz-private.ext4<\/code>)<\/strong>.<br>The steps below are based on a <strong>real production recovery<\/strong>, where multiple containers were successfully restored and brought online with minimal downtime.<br>           1.  This guide is suitable for:<br>           2. Post-OS reload recovery<br>           3. Disaster Recovery (DR)<br>           4. Server rebuilds<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prerequisites<\/strong><br>        1. A freshly provisioned server with <strong>console or SSH access<\/strong><br>        2. A supported host operating system installed:<br>        3. Root-level access<br>                 1. CentOS 7<br>                  2. VzLinux 7<br>                  3. Virtuozzo 7<br>         4. Internet connectivity (for package installation)<br>         5. An existing <strong>OpenVZ 7 full-node backup<\/strong><br>         6. Backup created from the <strong>same OpenVZ major version<\/strong><br><br><strong>Step 1:<\/strong><br>Reload CentOS 7<br>Reinstall the operating system using your provider\u2019s control panel.<br>After installation:<br>         1. Log in as root<br>         2. Do <strong>not<\/strong> create any containers<br>         3. Do <strong>not<\/strong> modify \/vz manually yet<br><strong>Step 2:<\/strong><br>Install the OpenVZ kernel and required user-space tools:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ yum install -y epel-release<br>$ yum install -y vzkernel vzctl vzquota ploop prlctl<br>$ reboot<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">After rebooting, verify the kernel using the following command.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ uname -r<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Verify OpenVZ is operational:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ vzlist -a<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 3:<\/strong><br>Prepare OpenVZ Directory Structure<br>Ensure the OpenVZ directory structure exists:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ mkdir -p \/vz\/{private,root,template,backup}<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Confirm \/vz\/private is empty:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ ls -A \/vz\/private<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If not empty, back it up and recreate it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 4:<\/strong><br>Restore the Backup Archive<br>Copy the full-node backup archive to the server (example location: \/root) and extract it:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ cd \/root<br>$ tar -xvf server-backup-2026-01-01.tar.gz<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This will extract the backup into:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ \/root\/backupopenvz\/<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Verify contents:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>ls \/root\/backupopenv8<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">You should see:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2026\/02\/image.png\"><img decoding=\"async\" width=\"308\" height=\"46\" src=\"https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2026\/02\/image.png\" alt=\"\" class=\"wp-image-9754\" srcset=\"https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2026\/02\/image.png 308w, https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2026\/02\/image-300x45.png 300w\" sizes=\"(max-width: 308px) 100vw, 308px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 5:<\/strong><br>Container data is stored inside a loopback ext4 filesystem.<br>Mount this filesystem directly to \/vz\/private so OpenVZ can detect containers immediately.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ mount -o loop \/root\/backupopenvz\/vz-private.ext4 \/vz\/private\/<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Verify the mount:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ mount | grep vz-private<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Verify container directories:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ ls \/vz\/private<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Expected output:<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2026\/02\/image-1.png\"><img decoding=\"async\" width=\"220\" height=\"37\" src=\"https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2026\/02\/image-1.png\" alt=\"\" class=\"wp-image-9755\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">&#x26a0;&#xfe0f; Do not add this mount to \/etc\/fstab.<br>This mount is intended only for the restore process.<br><strong>Step 6:<\/strong><br>Restore only the OpenVZ configuration directory (do not replace the full \/etc):<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ cp -a \/root\/backupopenvz\/etc\/vz \/etc\/<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Verify container configs:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ ls \/etc\/vz\/conf<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Expected output:<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2026\/02\/image-2.png\"><img decoding=\"async\" width=\"439\" height=\"60\" src=\"https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2026\/02\/image-2.png\" alt=\"\" class=\"wp-image-9756\" srcset=\"https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2026\/02\/image-2.png 439w, https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2026\/02\/image-2-300x41.png 300w\" sizes=\"(max-width: 439px) 100vw, 439px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 7:<\/strong><br>Restore container OS templates:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ cp -a \/root\/backupopenvz\/vz\/template\/* \/vz\/template\/<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Verify:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ ls \/vz\/template<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 8:<\/strong><br>Start containers one by one:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ vzctl start 101<br>$ vzctl start 102<br>$ vzctl start 103<br>$ vzctl start 104<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Check status:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ vzlist -a<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 9:<\/strong><br>Enter a container:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>vzctl enter 101<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Inside the container, verify:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>$ ip a<br>$ df -h<br>$ ping 8.8.8.8<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Exit and repeat for others if required.<br><br><strong>Conclusion:<\/strong><br>By following these steps, you can reliably restore an OpenVZ \/ Virtuozzo 7 node after a CentOS 7 reload.<br>This approach:<br>          1. Preserves container data<br>          2. Avoids configuration corruption<br>          3. Minimises downtime<br>          4. Is repeatable and production-safe<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction This blog explains how to restore an OpenVZ \/ Virtuozzo 7 node after reloading CentOS 7, using a full-node [&hellip;]<\/p>\n","protected":false},"author":499,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1019],"tags":[],"class_list":["post-9751","post","type-post","status-publish","format-standard","hentry","category-cloud-aws","psol-cat-cloud-aws"],"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/phns3A-2xh","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/9751","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/users\/499"}],"replies":[{"embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/comments?post=9751"}],"version-history":[{"count":7,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/9751\/revisions"}],"predecessor-version":[{"id":9793,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/9751\/revisions\/9793"}],"wp:attachment":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=9751"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=9751"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=9751"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}