Skip to content
0
  • Recent
  • Tags
  • Popular
  • Search
  • ads.txt
  • Recent
  • Tags
  • Popular
  • Search
  • ads.txt
Collapse
Lime-it.us
  1. Home
  2. Categories
  3. Linux Systems
  4. Linux Systems Guides
  5. ddrescue clone failing hard drive

ddrescue clone failing hard drive

Scheduled Pinned Locked Moved Linux Systems Guides
smartmontoolslsblkdataddrescuefdiskdebianrecoveryproxmox
2 Posts 1 Posters 945 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • lime-itL Offline
    lime-itL Offline
    lime-it
    wrote on last edited by lime-it
    #1

    Clone hard drive with ddrescue

    Testing a hard drive for failure via smartmontools

    Install smartmontools if not already present: (debian)

    apt-get install smartmontools

    Locate specific hard drives currently installed:

    lsblk


    In this case I choose device ‘sda’

    smartctl --all /dev/sda -q errorsonly

    Example of failing hard drive: smart-failure.png


    Preparing a used hard drive for cloning

    Clearing existing partitions from destination hard drive:

    In this case the destination drive is defined as sdc:

    I’ll use fdisk to clear all existing partitions:

    fdisk /dev/sdc Then print partition existing on sdc by typing the letter p

    p

    fdisk.png

    The above image shows some detail on the destination drive, including on FreeBSD partition named /dev/sdc4

    Since there is only one partition on the destination drive, we simply need to type the letter d at the fdisk command prompt:

    d

    fdisk-delete.png

    If there are more existing partitions on the destination drive, we are presented with them, and numbers to go along, we select which partition via numbers what we delete (in this case everything)

    fdisk-multiple-partitions.png

    Once we’ve removed the partitions, we type the letter w to write the changes, (actually delete the partitions)

    I type the letter p once again to make sure no partitions are still on the disk and then the letter w to write the changes:

    fdisk-write.png


    Using ddrescue to clone the hard drive:

    !Insure your drive letters are correct!

    The command I use to simplify the procedure including reading the damaged drive and putting as little pressure on it as we can manage, while getting as much data as we can, are as follows:

    Insure existing, or damaged hard drive first, and destination hard drive second (In other terms input file first and output file second)

    ddrescue -f -n /dev/sda /dev/sdc /root/recovery.log

    From https://linux.die.net/man/1/ddrescue

    -f, --force overwrite output device or partition

    -n, --no-split do not try to split or retry failed blocks

    We set a log file, which ddrescue can read later if for any reason the proceedure fails in the middle. Or also if we do not get as close to a 100% success rate when finished, the log file will set ddrescue to only attempt to get failed blocks on additional runs.

    ddrescue.png

    In this case 100% of the data was recovered, and transferred to the new hard drive:

    ddrescue-complete.png

    I run lsblk once again to check partitions have been transferred: ddrescue-new-partitions.png


    I then restart the machine:

    shutdown -r now

    After a restart, the journal will be recovered as well as other routine scripts run. I remove other old, damaged hard drives during the restart just before the BIOS kicks up.

    Again after a restart I run :

    lsblk

    ddrescue-new-harddrive.png

    Fin!


    Note This local server is a test environment running ProxMox. Everything running as it should after the clone.

    lime-itL 1 Reply Last reply
    0
    • lime-itL lime-it

      Clone hard drive with ddrescue

      Testing a hard drive for failure via smartmontools

      Install smartmontools if not already present: (debian)

      apt-get install smartmontools

      Locate specific hard drives currently installed:

      lsblk


      In this case I choose device ‘sda’

      smartctl --all /dev/sda -q errorsonly

      Example of failing hard drive: smart-failure.png


      Preparing a used hard drive for cloning

      Clearing existing partitions from destination hard drive:

      In this case the destination drive is defined as sdc:

      I’ll use fdisk to clear all existing partitions:

      fdisk /dev/sdc Then print partition existing on sdc by typing the letter p

      p

      fdisk.png

      The above image shows some detail on the destination drive, including on FreeBSD partition named /dev/sdc4

      Since there is only one partition on the destination drive, we simply need to type the letter d at the fdisk command prompt:

      d

      fdisk-delete.png

      If there are more existing partitions on the destination drive, we are presented with them, and numbers to go along, we select which partition via numbers what we delete (in this case everything)

      fdisk-multiple-partitions.png

      Once we’ve removed the partitions, we type the letter w to write the changes, (actually delete the partitions)

      I type the letter p once again to make sure no partitions are still on the disk and then the letter w to write the changes:

      fdisk-write.png


      Using ddrescue to clone the hard drive:

      !Insure your drive letters are correct!

      The command I use to simplify the procedure including reading the damaged drive and putting as little pressure on it as we can manage, while getting as much data as we can, are as follows:

      Insure existing, or damaged hard drive first, and destination hard drive second (In other terms input file first and output file second)

      ddrescue -f -n /dev/sda /dev/sdc /root/recovery.log

      From https://linux.die.net/man/1/ddrescue

      -f, --force overwrite output device or partition

      -n, --no-split do not try to split or retry failed blocks

      We set a log file, which ddrescue can read later if for any reason the proceedure fails in the middle. Or also if we do not get as close to a 100% success rate when finished, the log file will set ddrescue to only attempt to get failed blocks on additional runs.

      ddrescue.png

      In this case 100% of the data was recovered, and transferred to the new hard drive:

      ddrescue-complete.png

      I run lsblk once again to check partitions have been transferred: ddrescue-new-partitions.png


      I then restart the machine:

      shutdown -r now

      After a restart, the journal will be recovered as well as other routine scripts run. I remove other old, damaged hard drives during the restart just before the BIOS kicks up.

      Again after a restart I run :

      lsblk

      ddrescue-new-harddrive.png

      Fin!


      Note This local server is a test environment running ProxMox. Everything running as it should after the clone.

      lime-itL Offline
      lime-itL Offline
      lime-it
      wrote on last edited by lime-it
      #2

      Again running smartctl after all is said and done:

      smartctl --all /dev/sda

      ddrescue-smartctl-after-rescue.png ddrescue-smartctl-2.png

      Yet an old drive in itself, I run the wheels off of them, and monitor regularly as anyone should.

      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      FreeBSD Notes
      • rickR
        rick

        3JUgg6grmbJ1wJ4mTU9fUxXGSMK6trSwKq

        read more

      • rickR
        rick

        IMG_4307.jpeg

        read more

      • rickR
        rick

        redis.png

        Create a shell script that will dump the Redis database

        cd ~ mkdir redi-backups-script cd redis-backups-script nano redis_backups-script.sh

        Paste the script below:

        #!/bin/bash rdb_file="/Place-directory-of-rdb-here/redis/dump.rdb" redis_cli="/usr/bin/redis-cli" DIR=`date +%d-%m-%y` DEST=~/redis_backups/$DIR mkdir $DEST echo save| $redis_cli exit 1

        Set script to executable:

        chmod +x ~/scripts/redis_backups-script.sh

        Create a cron to run daily:

        Then create a cron job to run the script every day at midnight:

        crontab -e 0 0 * * * ~/redis-backups-script/redis_backup.sh

        Restore RDB backup

        Disable Append Only in the config:

        nano /etc/redis/redis.conf appendonly no

        Stop redis:

        sudo service redis-server stop

        Restore the redis backup:

        rename the rdb file you wish sudo cp /home/redis/dump.rdb /home/redis/dump.rdb.bak

        You can then copy the backup rdb file as follows:

        sudo cp /redis_backups/------/dump.rdb /home/redis/dump.rdb

        Apply the proper permissions to the dump.rdb file:

        sudo chmod 660 /home/redis/dump.rdb

        Re-starting Redis server

        sudo service redis-server start
        read more

      • rickR
        rick

        Install Zabbix 7.2 repo

        wget https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.2+debian12_all.deb

        zab1.png

        dpkg -i zabbix-release_latest_7.2+debian12_all.deb

        zab2.png

        Update repos

        apt update

        zab3.png

        Install Zabbix server and frontend

        apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2

        zab4.png

        Install plugins

        apt install zabbix-agent2-plugin-mongodb zabbix-agent2-plugin-mssql zabbix-agent2-plugin-postgresql

        zab5.png

        Install mysql

        wget https://dev.mysql.com/get/mysql-apt-config_0.8.30-1_all.deb

        zab-6sql.png

        sudo dpkg -i mysql-apt-config_0.8.30-1_all.deb

        Error on this new install, where lsb-release is not installed

        zab7sql-error.png

        apt-get install lsb-release

        zab7lsb.png

        Try again…

        dpkg -i mysql-apt-config_0.8.30-1_all.deb

        Error, gnupg not installed

        zab7gnupgerror.png

        apt install gnupg2

        zab7gnupg2.png

        Give it another go…

        dpkg -i mysql-apt-config_0.8.30-1_all.deb

        zab7sqltui.png

        zab7sql.png

        I had to list upgradable packages :

        apt-list --upgradable

        Which spit out : mysql-common/unknown 8.4.4-1debian12 all [upgradable from: 5.8+1.1.0]

        Then installed mysql-common

        apt-get install mysql-common

        zabbix-7-sqlgoofs.png

        Had to uninstall Mariadb to resolve these conflicts

        apt remove mariadb-client-core

        Then install mysql-server:

        apt install mysql-server

        zab7-sql-common.png

        zab7-sql-rootpass.png

        Enter your password, twice

        Now enter mysql by typing :

        mysql -u root -p

        zab7-mysql-enter.png

        Enter the following command individually Where ‘password’ is where you type in your actual own password

        mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin; mysql> create user zabbix@localhost identified by 'password'; mysql> grant all privileges on zabbix.* to zabbix@localhost; mysql> set global log_bin_trust_function_creators = 1; mysql> quit;

        Populate the database with zabbix script

        zcat /usr/share/zabbix/sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix mysql --u root -p set global log_bin_trust_function_creators = 0; quit;

        Edit file /etc/zabbix/zabbix_server.conf You can use nano

        nano /etc/zabbix/zabbix_server.conf

        Uncomment the DBPassword section, and type your password

        zabbix-dbpassword.png

        Then hold ctrl and tap x, it will ask if you want to save changes.

        Enable services:

        systemctl enable zabbix-server zabbix-agent2 nginx php8.2-fpm systemctl restart zabbix-server zabbix-agent2 nginx php8.2-fpm

        Check that zabbix service has started

        journalctl -xeu zabbix-server.service

        zabbix7startjob.png

        Delete the 'default site in nginx

        sudo rm -rf /etc/nginx/sites-enabled/default

        Make sure the symbolic link to the zabbix nginx file is present

        ln -s /etc/zabbix/nginx.conf /etc/nginx/sites-enabled/zabbix.conf

        Check that the zabbix nginx file is in the includes in nginx config

        nano /etc/nginx/nginx.conf

        Look for :

        include /etc/nginx/sites-enabled/*

        Now restart nginx

        systemctl restart nginx

        Hit the browser and type in the IP (or URL that you may have put in the zabbix nginx config file)

        zabbix.png

        Make sure to configure locales

        zabbix-locales.png

        sudo dpkg-reconfigure locales

        zabbixlocalestui.png

        zabbix-locales-2.png

        zabbix-locales-command.png

        Reboot the system

        sudo shutdown -r now

        zabbix-utf.png

        Add your database password

        zabbix-db.png

        Add a server name

        zabbix-servername.png

        zabbix-summary.png

        zabbix-config.png

        The default username is Admin, and the password is zabbix

        zabbix-home.png

        read more

      • rickR
        rick
        Unable to negotiate with 10.10.1.35 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

        While attempting ssh this error is generally due to mismatched versions of ssh, where an up to date version is attempting to access an older version

        Add the following to your command :

        The proper way:

        ssh -o KexAlgorithms=diffie-hellman-group14-sha1 -oHostKeyAlgorithms=+ssh-dss 10.10.1.35

        The cheap way:

        Example :

        ssh -oHostKeyAlgorithms=+ssh-dss 10.10.1.35

        or ssh -oHostKeyAlgorithms=+ssh-dss user@10.10.1.35

        This can be added to the ~/.ssh/config file

        Host my-server HostName 10.10.1.35 HostKeyAlgorithms=+ssh-dss
        read more
      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post