Full Disaster Recovery v82

Valid for versions 82 through the latest version

Version:

82


Overview

Warning:
  • Only experienced system administrators should use the procedures in this document.
  • cPanel, L.L.C. cannot support failed hard drives or hard drive recovery. We are not responsible for any data loss.

In some circumstances, you may need to completely restore your server from a crashed or failed hard drive.

Prepare to restore your server

If you have recent remote backups and can’t boot the failed hard drive, you can proceed to rebuilding your serverrebuilding your server.

Warning:

If you don’t have recent remote backups, we strongly recommend that you rework your backup strategy to store regularly-scheduled backups in a remote location.

If you don’t have recent remote backups but can boot the failed hard drive, perform one of the following actions:

After you complete the backup procedure, transfer the backup files to a remote location.

Rebuild the server

Some data centers and hosting providers offer system restoration and imaging. Contact your hosting provider for more information.

Important:

The replacement cPanel & WHM server should contain identical software to the original server. This includes MySQL® or MariaDB®, PHP, PHP extensions, Apache®, Apache extensions, and other software options.

  • If you do not use the same version of MySQL or MariaDB on the new server, you may encounter serious errors.

  • If you wish to update any of the software on the server, we strongly recommend that you perform the transfer or restoration first and then perform any updates.

Note:

We strongly recommend that you use the CentOS Minimal ISO available from CentOS’s mirrors. Issues may arise if you use an operating system ISO or a third-party drive image.

To manually provision the new hard drive, perform the following steps:

  1. Install a new hard drive as the primary hard drive and make the old hard drive the secondary hard drive.

  2. Install the operating system. For more information, read our Installation Guide documentation.

  3. Install cPanel & WHM with the following commands:

    1
    2
    3
    
    cd /home
    curl -o latest -L https://securedownloads.cpanel.net/latest
    sh latest

Make sure to request that the data center installs your old hard drive as a secondary drive. After they finish this, perform one of the following actions to update cPanel & WHM to the latest version:

  • Run the /usr/local/cpanel/scripts/upcp script.
  • Use WHM’s Upgrade to Latest Version interface (WHM >> Home >> cPanel >> Upgrade to Latest Version).

Recover your files

If you don’t have a recent remote backup and can’t boot the failed hard drive on your server, you can proceed to restoring your files.

In all other scenarios, perform the following steps to recover your files:

  1. Mount the secondary drive in a chroot environment. To do this, run the following commands as the root user, where sdb1 represents the device name of your secondary drive:

    1
    2
    
    mkdir /mnt/chroot/
    mount /dev/sdb1 /mnt/chroot/
    Note:

    You must mount the drive and partitions before you can bind mount the filesystems.

  2. Mount the necessary filesystems in a chroot environment. To do this, run the following commands as the root user to mount the proc, dev, and sys filesystems:

    1
    2
    3
    
    mount --bind /proc /mnt/chroot/proc
    mount --rbind /dev /mnt/chroot/dev
    mount --bind /sys /mnt/chroot/sys
    Note:
    We use the rbind command instead of the bind command for the dev directory in order to ensure that we mount the /dev/pts partition properly.
    Then, run the following command as the root user in order to verify that the system properly mounted each filesystem:
    grep chroot /etc/mtab
    Your results should resemble the following output:
    1
    2
    3
    4
    
    /dev/sdb1 /mnt/chroot none rw,bind 0 0
    /mnt/chroot/proc /proc none rw,bind 0 0
    /mnt/chroot/dev /dev none rw,bind 0 0
    /mnt/chroot/sys /sys none rw,bind 0 0

  3. Start a screen session. The screen command allows you to use the chroot environment in a session that you can reconnect to if you lose your connection. Disconnections from sessions with chroot environments can cause problems for services such as MySQL, which may experience InnoDB issues. Run the following commands as the root user in order to start a screen session for the chroot command:

    1
    2
    3
    
        screen
        chroot /mnt/chroot /bin/bash -l
        export PS1="{chrooted}$PS1"
    Your results should resemble the following output:
    {chrooted}bash-4.1#
    The system now performs as if you booted into the crashed drive.

  4. To recover the cPanel & WHM environment, run the following command as the root user:

    source /etc/environment && source /etc/profile

  5. To start required services from the old hard drive, run the necessary commands as the root user to start any services that the /usr/local/cpanel/scripts/pkgacct script will require. For example, you will need the MySQL service for webmail databases, or the PostgreSQL® service if you use that database service.

    • If your server runs CentOS 6, run the following command:

      service mysql start

    • If your server runs CentOS 7, run the following command:

      test -f /etc/sysconfig/mysql && source /etc/sysconfig/mysql; /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid ${MYSQLD_OPTS}

  6. To back up accounts from the old hard drive, run the following commands:

    1
    2
    
    cd /var/cpanel/users
    for i in `ls -1 *`; do /scripts/pkgacct $i; done
    This will store the backups in the /mnt/chroot/home directory. This will also store the feature lists and packages settings.
    Warning:

    We strongly recommend that you do not use the rsync command to back up accounts. This may cause issues with services such as MySQL.

  7. To back up service configurations from the old hard drive, run the following commands:

    1
    2
    
        cd /usr/local/cpanel
        bin/cpconftool --modules=cpanel::smtp::exim,cpanel::system::backups,cpanel::system::mysql,cpanel::system::whmconf,cpanel::easy::apache,cpanel::ui::themes --backup
    The results will resemble the following output:
    1
    2
    
        Backup Successful
    /home/whm-config-backup-configuration__to__backup-10.550000-1452006507.tar.gz

  8. Transfer backup files to remote storage. Use the scp command or the rsync command to copy the files to a remote storage location.

    Note:

    You can directly transfer the files from the old hard drive to the new hard drive. However, we strongly recommend that you transfer them to a remote location first. This protects your backup files from hardware issues that may have caused the hard drive to fail.

  9. To stop all of the services in the chroot environment, unmount the filesystems, and exit the chroot environment, run the following commands:

    1
    2
    3
    
    service mysql stop
    umount {/proc,/dev,/sys}
    exit
    This will close the chroot environment. To close the screen session, run the exit command.

Restore your files

To restore the content from the backup files to your new hard drive in the server, perform the following steps:

  1. Copy the remote backup files to the server. Use the scp command or the rsync command to copy the files from the remote location to the new hard drive.

  2. To restore feature lists to the server, run the following commands as the root user:

    1
    2
    
    cd /backups
    tar -xzvf _var_cpanel.tar.gz var/cpanel/features tar -xzvf _var_cpanel.tar.gz var/cpanel/features 

  3. To restore accounts to the server, run the following commands as the root user, where BACKUPDIRECTORY/TYPE/DATE/ represents your backup directory:

    1
    2
    
    cd BACKUPDIRECTORY/TYPE/DATE/accounts/
    for archive in `ls`; do /scripts/restorepkg $archive; done
    More:
    For more information, read our The restorepkg Script documentation.

  4. Restore the configuration settings for Apache, backups, cPanel themes, Exim, MySQL, and WHM to the server.

    More:
    For more information, read our The cpconftool Script documentation.

  5. If you run CloudLinux™, restore CloudLinux settings to the server.

Test the server

Test the websites, applications, and services on the new server. Make certain that you have successfully restored the server’s data and configuration.

Disconnected screen session

If your session disconnects, reconnect and run the screen -ls command as the root user to list your active sessions.

Your results should resemble the following output:

1
2
3
4
There are screens on:
    12565.screen1   (Detached)
    12568.screen2   (Detached)
2 Sockets in /var/run/screen/S-root.

Run the screen -x screenname command as the root user to reconnect to the session, where screenname represents the name of the session.

Additional Documentation