--- title: "Troubleshooting Corrupted Disk or Partitions" slug: "troubleshooting-corrupted-disk-or-partitions" updated: 2025-05-23T15:56:17Z published: 2025-05-23T15:56:17Z canonical: "docs.zpesystems.com/troubleshooting-corrupted-disk-or-partitions" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.zpesystems.com/llms.txt > Use this file to discover all available pages before exploring further. # Troubleshooting Corrupted Disk or Partitions ## Backup and Restore ### Backup Entire Partition - Backup the entire partition dd if=/dev/sda2 of=~/backup_sda2.img bs=4M status=progress ```plaintext [root@sysrescue ~]# dd if=/dev/sda2 of=~/backup_sda2.img bs=4M status=progress 23+1 records in 23+1 records out 98566144 bytes (99 MB, 94 MiB) copied, 0.450139 s, 219 MB/s ``` - Verify the backup img ls -lh ~/backup_sda2.img ```plaintext [root@sysrescue ~]# ls -lh ~/backup_sda2.img -rw-r--r-- 1 root root 94M Mar 25 13:59 /home/root/backup_sda2.img ``` - Mount and verify mkdir ~/mnt_backup mount -o loop ~/backup_sda2.img ~/mnt_backup ls ~/mnt_backup ```plaintext [root@sysrescue ~]# mkdir ~/mnt_backup [root@sysrescue ~]# mount -o loop ~/backup_sda2.img ~/mnt_backup [root@sysrescue ~]# ls ~/mnt_backup EFI  grub  initrd  ng-microcode.cpio  vmlinuz ``` - Compress the file for storage gzip ~/backup_sda2.img ### Create a missing partition Creating Partitions with fdisk on /dev/sda 1. Open fdisk fdisk /dev/sda 2. Create Each Partition **Partition 1: BIOS Boot (2M)** - Press n to create a new partition - Partition number: 1 - First sector: 2048 - Last sector: 6143 - Type: Default - Change its type to BIOS boot (ef02): - Press t - Enter 1 (partition number) - Enter ef02 (hex code) **Partition 2: FAT16 (98.6M) - zpe_grub1** - Press n - Partition number: 2 - First sector: 8192 - Last sector: 200703 - Type: Default - Change its type to FAT16 (06): - Press t - Enter 2 (partition number) - Enter 06 (hex code) **Partition 3: EXT4 (101M) - zpe_cnf** - Press n - Partition number: 3 - First sector: 203125 - Last sector: 400390 - Type: Default **Partition 4: BTRFS (4.9G) - zpe_rootfs** - Press n - Partition number: 4 - First sector: 401408 - Last sector: 10168319 - Type: Default - Change its type to Linux Root (83): - Press t - Enter 4 (partition number) - Enter 83 (hex code) **Partition 5: EXT4 (99.6M) - zpe_user** - Press n - Partition number: 5 - First sector: 10170368 - Last sector: 10364927 - Type: Default **Partition 6: Linux Swap (64M) - zpe_swap** - Press n - Partition number: 6 - First sector: 10366976 - Last sector: 10491903 - Type: Default - Change its type to Linux Swap (82): - Press t - Enter 6 (partition number) - Enter 82 (hex code) **Partition 7: FAT16 (500M) - zpe_grub2** - Press n - Partition number: 7 - First sector: 10493952 - Last sector: 11470847 - Type: Default - Change its type to FAT16 (06): - Press t - Enter 7 (partition number) - Enter 06 (hex code) **Partition 8: EXT4 (26.1G) - zpe_var** - Press n - Partition number: 8 - First sector: 11472896 - Last sector: 62531583 - Type: Default 3. Write Changes and Exit After creating all partitions, write changes to the disk: Press w to save and exit 4. Verify the Partitions fdisk -l /dev/sda ```plaintext root@nodegrid:~# fdisk -l /dev/sda Disk /dev/sda: 29.82 GiB, 32017047552 bytes, 62533296 sectors Disk model: Apacer 32GB SDM7 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 3C2AFE07-2E0D-4AFB-8C77-B6FEBC1618F2 Device        Start      End  Sectors  Size Type /dev/sda1      2048     6143     4096    2M BIOS boot /dev/sda2      8192   200703   192512   94M Linux filesystem /dev/sda3    203125   400390   197266 96.3M Linux filesystem /dev/sda4    401408 10168319  9766912  4.7G EFI System /dev/sda5  10170368 10364927   194560   95M Linux filesystem /dev/sda6  10366976 10491903   124928   61M Linux filesystem /dev/sda7  10493952 11470847   976896  477M EFI System /dev/sda8  11472896 62531583 51058688 24.3G Linux filesystem ``` ### Format a Partition - Format FAT16 partitions: ```plaintext mkfs.vfat -F16 /dev/sda2 mkfs.vfat -F16 /dev/sda7 ``` - Format EXT4 partitions: ```plaintext mkfs.ext4 /dev/sda3 mkfs.ext4 /dev/sda5 mkfs.ext4 /dev/sda8 ``` - Format BTRFS partition: ```plaintext mkfs.btrfs /dev/sda4 ``` - Format Swap partition: ```plaintext mkswap /dev/sda6 swapon /dev/sda6 ``` ### Restore a partition - If required, restore the partition using the .img dd if=~/backup_sda2.img of=/dev/sda2 bs=4M status=progress ```plaintext root@nodegrid:~# dd if=~/backup_sda2.img of=/dev/sda2 bs=4M status=progress 23+1 records in 23+1 records out 98566144 bytes (99 MB, 94 MiB) copied, 0.484602 s, 203 MB/s ``` - or using the compressed file gunzip -c ~/backup_sda2.img.gz | dd of=/dev/sda2 bs=4M status=progress ```plaintext root@nodegrid:~# gunzip -c ~/backup_sda2.img.gz | dd of=/dev/sda2 bs=4M status=progress 23+1 records in 23+1 records out 98566144 bytes (99 MB, 94 MiB) copied, 0.484602 s, 203 MB/s ``` ## Collecting Information Lists block devices and partitions - Shows information about file systems, UUIDs, and mount points. lsblk -f /dev/sda ```plaintext [root@sysrescue ~]# lsblk -f /dev/sda NAME FSTYPE FSVER LABEL     UUID    FSAVAIL FSUSE% MOUNTPOINTS sda                                                                           ├─sda1 │                                                                             ├─sda2 │    vfat   FAT16 ZPE_BOOT1 A1C8-1290                                         ├─sda3 │    ext4   1.0             438e59f0-df4f-43f0-b273-7d10f491a528             ├─sda4 │    btrfs                  c6c50953-a4b1-49c2-bce6-022a4ffa56cf             ├─sda5 │    ext4   1.0             4379c837-f093-426c-81c1-28601b16b242             ├─sda6 │    swap   1               2ef6ecaf-009b-4a6c-be32-d86e55b62c6b             ├─sda7 │    vfat   FAT16 ZPE_BOOT2 BD0C-04C6                                         └─sda8     ext4   1.0             ec1964ab-b713-4781-91ef-c3a8a34a1043 ``` ### Check Partitions - Check partition table parted -l ```plaintext [root@sysrescue ~]# parted -l Model: ATA Apacer 32GB SDM7 (scsi) Disk /dev/sda: 32.0GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number  Start   End     Size    File system     Name        Flags 1      1049kB  3146kB  2097kB                  ptable      bios_grub 2      4194kB  103MB   98.6MB  fat16           zpe_grub1 3      104MB   205MB   101MB   ext4            zpe_cnf 4      206MB   5206MB  5001MB  btrfs           zpe_rootfs  boot, esp 5      5207MB  5307MB  99.6MB  ext4            zpe_user 6      5308MB  5372MB  64.0MB  linux-swap(v1)  zpe_swap 7      5373MB  5873MB  500MB   fat16           zpe_grub2   boot, esp 8      5874MB  32.0GB  26.1GB  ext4            zpe_var ``` - Check Partition Layouts fdisk -l /dev/sda ```plaintext [root@sysrescue ~]# fdisk -l /dev/sda Disk /dev/sda: 29.82 GiB, 32017047552 bytes, 62533296 sectors Disk model: Apacer 32GB SDM7 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 3C2AFE07-2E0D-4AFB-8C77-B6FEBC1618F2 Device        Start      End  Sectors  Size Type /dev/sda1      2048     6143     4096    2M BIOS boot /dev/sda2      8192   200703   192512   94M Linux filesystem /dev/sda3    203125   400390   197266 96.3M Linux filesystem /dev/sda4    401408 10168319  9766912  4.7G EFI System /dev/sda5  10170368 10364927   194560   95M Linux filesystem /dev/sda6  10366976 10491903   124928   61M Linux filesystem /dev/sda7  10493952 11470847   976896  477M EFI System /dev/sda8  11472896 62531583 51058688 24.3G Linux filesystem ``` ### Check Partition Issues - Use for ext2/ext3/ext4 partitions. Performs a check without fixing errors, only displaying them. fsck -n /dev/sda3 ```plaintext [root@sysrescue ~]# fsck -n /dev/sda3 fsck from util-linux 2.40.2 e2fsck 1.47.1 (20-May-2024) Warning: skipping journal recovery because doing a read-only filesystem check. /dev/sda3 has been mounted 1 times without being checked, check forced. Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/sda3: 3059/24672 files (1.4% non-contiguous), 38683/98305 blocks ``` - Use for btrfs partitions. btrfs check /dev/sda4 ```plaintext [root@sysrescue ~]# btrfs check /dev/sda4 Opening filesystem to check... Checking filesystem on /dev/sda4 UUID: c6c50953-a4b1-49c2-bce6-022a4ffa56cf [1/7] checking root items [2/7] checking extents [3/7] checking free space tree [4/7] checking fs roots [5/7] checking only csums items (without verifying data) [6/7] checking root refs [7/7] checking quota groups skipped (not enabled on this FS) found 1312673792 bytes used, no error found total csum bytes: 1194052 total tree bytes: 89964544 total fs tree bytes: 84262912 total extent tree bytes: 4145152 btree space waste bytes: 13795699 file data blocks allocated: 1222709248 referenced 3302412288 ``` ## Recover SMART Information - Displays all SMART information about the disk. smartctl -a -x /dev/sda - Check disk health status smartctl -H -A /dev/sda ```plaintext [root@sysrescue ~]# smartctl -H -A /dev/sda smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.6.63-1-lts] (local build) Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED See vendor-specific Attribute list for marginal Attributes. SMART Attributes Data Structure revision number: 0 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       1958 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       1597 163 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       258 164 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       190 166 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0 167 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0 168 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0 171 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0 172 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0 175 Program_Fail_Count_Chip 0x0032   100   100   000    Old_age   Always       -       0 192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       1588 194 Temperature_Celsius     0x0022   005   005   030    Old_age   Always   FAILING_NOW 95 (Min/Max 50/95) 231 Unknown_SSD_Attribute   0x0012   100   100   000    Old_age   Always       -       94 241 Total_LBAs_Written      0x0032   100   100   000    Old_age   Always       -       9822465098 ``` - Runs a long self-test on the disk. smartctl -t long /dev/sda ```plaintext [root@sysrescue ~]# smartctl -t long /dev/sda smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.6.63-1-lts] (local build) Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org === START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION === Sending command: "Execute SMART Extended self-test routine immediately in off-line mode". Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful. Testing has begun. Please wait 6 minutes for test to complete. Test will complete after Tue Mar 25 19:11:51 2025 UTC Use smartctl -X to abort test. ``` - Get self-test result. smartctl -l selftest /dev/sda ```plaintext [root@sysrescue ~]# smartctl -l selftest /dev/sda smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.6.63-1-lts] (local build) Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART Self-test log structure revision number 1 Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error # 1  Extended offline    Completed without error       00%      1958         - # 2  Offline             Completed without error       00%         0         - # 3  Offline             Completed: unknown failure    00%     28513         20203 # 4  Offline             Completed without error       00%         0         - # 5  Vendor (0x4e)       Completed without error       00%         8         - # 6  Offline             Unknown status (0xa)          00%      1511         - # 7  Offline             Completed without error       00%         0         - # 8  Vendor (0xe8)       Unknown status (0xe)          110%        78         - # 9  Offline             Completed without error       00%     40960         - #10  Offline             Completed without error       00%         0         - #11  Vendor (0x64)       Unknown status (0xc)          150%        78         - #12  Offline             Completed without error       00%         0         - #13  Reserved (0x08)     Completed without error       00%       104         - #14  Vendor (0xe7)       Completed: electrical failure 130%     31528         3147776 #15  Offline             Completed without error       00%         0         - #16  Reserved (0x08)     Completed without error       00%         0         - #17  Offline             Completed without error       00%       768         - #18  Offline             Completed without error       00%         0         - #19  Vendor (0x6b)       Completed without error       00%      2056         - #20  Offline             Unknown status (0xa)          00%     24807         - #21  Offline             Completed without error       00%         0         - 2 of 2 failed self-tests are outdated by newer successful extended offline self-test # 1 ``` - Display the error log of the disk. smartctl -l error /dev/sda ```plaintext [root@sysrescue ~]# smartctl -l error /dev/sda smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.6.63-1-lts] (local build) Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART Error Log Version: 1 ATA Error Count: 4        CR = Command Register [HEX]        FR = Features Register [HEX]        SC = Sector Count Register [HEX]        SN = Sector Number Register [HEX]        CL = Cylinder Low Register [HEX]        CH = Cylinder High Register [HEX]        DH = Device/Head Register [HEX]        DC = Device Command Register [HEX]        ER = Error register [HEX]        ST = Status register [HEX] Powered_Up_Time is measured from power on, and printed as DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes, SS=sec, and sss=millisec. It "wraps" after 49.710 days. Error 4 occurred at disk power-on lifetime: 0 hours (0 days + 0 hours)  When the command that caused the error occurred, the device was in an unknown state.  After command completion occurred, registers were:  ER ST SC SN CL CH DH  -- -- -- -- -- -- --  31 54 00 40 61 6f 3c  Commands leading to the command that caused the error were:  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name  -- -- -- -- -- -- -- --  ----------------  --------------------  58 53 65 00 08 48 00 d8  42d+17:19:25.696  [RESERVED]  00 00 00 00 00 00 00 00  18d+05:37:40.864  NOP [Abort queued commands]  53 00 00 a0 e7 61 d8 00      00:08:44.389  [RESERVED]  00 42 65 00 08 00 00 44      00:00:00.000  NOP [Reserved subcommand] [OBS-ACS-2]  00 00 00 00 00 00 00 00  17d+15:38:49.216  NOP [Abort queued commands] Error 3 occurred at disk power-on lifetime: 8 hours (0 days + 8 hours)  When the command that caused the error occurred, the device was in an unknown state.  After command completion occurred, registers were:  ER ST SC SN CL CH DH  -- -- -- -- -- -- --  00 03 00 00 00 00 00  Error:  Commands leading to the command that caused the error were:  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name  -- -- -- -- -- -- -- --  ----------------  --------------------  00 84 00 00 00 00 00 00  12d+14:55:19.040  NOP [Reserved subcommand] [OBS-ACS-2]  6f b6 00 fd 00 40 61 00      01:50:01.900  [RESERVED]  08 5d b8 ba 64 00 08 e7  24d+20:31:52.320  DEVICE RESET  00 00 00 00 00 00 00 08  31d+01:39:14.560  NOP [Abort queued commands] Error 2 occurred at disk power-on lifetime: 100 hours (4 days + 4 hours)  When the command that caused the error occurred, the device was in a reserved state.  After command completion occurred, registers were:  ER ST SC SN CL CH DH  -- -- -- -- -- -- --  00 5a 00 00 00 a0 e7  Commands leading to the command that caused the error were:  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name  -- -- -- -- -- -- -- --  ----------------  --------------------  00 05 b8 ba 64 00 08 e7      00:00:00.000  NOP [Reserved subcommand] [OBS-ACS-2]  00 00 00 00 00 00 00 08  31d+01:39:14.560  NOP [Abort queued commands]  00 00 00 00 00 00 00 00      11:59:48.992  NOP [Abort queued commands]  00 50 00 00 00 00 00 40      00:00:00.000  NOP [Reserved subcommand] [OBS-ACS-2]  00 00 08 00 70 00 80 64      04:36:20.790  NOP [Abort queued commands] Error 1 occurred at disk power-on lifetime: 48300 hours (2012 days + 12 hours)  When the command that caused the error occurred, the device was in a vendor specific state.  After command completion occurred, registers were:  ER ST SC SN CL CH DH  -- -- -- -- -- -- --  00 a0 00 00 00 00 00  Device Fault  Commands leading to the command that caused the error were:  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name  -- -- -- -- -- -- -- --  ----------------  --------------------  00 a0 e7 61 b8 ba 64 00      00:00:00.008  NOP [Reserved subcommand] [OBS-ACS-2]  00 00 08 00 00 00 00 64      00:00:00.000  NOP [Abort queued commands]  a0 00 00 00 00 00 00 00  36d+06:10:44.071  PACKET  00 a0 e7 05 b8 ba 64 00      00:00:00.008  NOP [Reserved subcommand] [OBS-ACS-2]  00 00 08 00 00 00 00 34      00:00:00.000  NOP [Abort queued commands] Error 0 occurred at disk power-on lifetime: 22528 hours (938 days + 16 hours)  When the command that caused the error occurred, the device was in a reserved state.  After command completion occurred, registers were:  ER ST SC SN CL CH DH  -- -- -- -- -- -- --  a0 00 e7 61 d8 53 65  Commands leading to the command that caused the error were:  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name  -- -- -- -- -- -- -- --  ----------------  --------------------  00 00 08 00 00 00 00 65      00:00:00.000  NOP [Abort queued commands]  a0 00 00 00 00 00 00 00  12d+20:49:35.975  PACKET  00 a0 e7 05 44 42 65 00      00:00:00.008  NOP [Reserved subcommand] [OBS-ACS-2]  00 02 08 00 00 00 00 93      00:00:00.000  NOP [Reserved subcommand] [OBS-ACS-2]  00 00 00 00 00 00 00 00      13:58:51.648  NOP [Abort queued commands] ``` ### Check for Badblocks - Scans the disk for bad sectors. badblocks /dev/sda ### Check for Inodes in BTRFS - Runs the check in read-only mode. btrfs check --readonly --check-data-csum /dev/sda4 ```plaintext [root@sysrescue ~]# btrfs check --readonly --check-data-csum  /dev/sda4 Opening filesystem to check... Checking filesystem on /dev/sda4 UUID: c6c50953-a4b1-49c2-bce6-022a4ffa56cf [1/7] checking root items [2/7] checking extents [3/7] checking free space tree [4/7] checking fs roots [5/7] checking csums against data [6/7] checking root refs [7/7] checking quota groups skipped (not enabled on this FS) found 1312673792 bytes used, no error found total csum bytes: 1194052 total tree bytes: 89964544 total fs tree bytes: 84262912 total extent tree bytes: 4145152 btree space waste bytes: 13795699 file data blocks allocated: 1222709248 referenced 3302412288 ``` ### List Files with Checksum Error - dmesg | grep -i btrfs | grep -i error ### Repair Partitions #### Repair ext2/ext3/ext4 Partitions fsck -y /dev/sda2 fsck -y /dev/sda3 fsck -y /dev/sda5 fsck -y /dev/sda6 fsck -y /dev/sda8 #### Repair FAT16 Partitions fsck.vfat -a /dev/sda2 fsck.vfat -a /dev/sda7 #### Repair BTRFS Partitions btrfs check --repair /dev/sda4 #### Repair SWAP Partitions swapoff /dev/sda6 mkswap /dev/sda6 swapon /dev/sda6