QNAP NAS Data Recovery Charley, Yufan, Alan Note: This guide apply to all TS/SS series NAS except TS-401T, TS-411U Agenda How does the QNAP NAS RAID work? NAS is OK but cannot access data • raidtab is broken or missing o Check raid settings and configure right raidtab • HDD have no partitions o Use parted to recreate the partitions • Partitions have no MD superblock o mdadm -CfR --assume-clean • RAID array can't be assembled or status is inactive o check above and make sure every disks on raid exist • RAID array can't been mounted o e2fsck, e2fsck -b • Able to mount RAID but data is disappear o umount and e2fsck, if not work, try data recovery • RAID is in degraded, read-only o backup the data then mdadm -CfR, it not work, recreate the RAID NAS fail • Mount HDD(s) with another QNAP NAS (System Migration) • Mount HDD(s) with PC ( R-Studio/ ext3/4 reader) (3rd party tool ) Data are deleted by user/administrator accidentally • data recovery company, photorec, r-studio/r-linux How does the QNAP NAS RAID work • Please check the following link for complete tutorial https://docs.google.com/document/d/1VmIHqIOrBG7s0ymqn46eDK1TmXwCJx685cpWMwF42KA/edit • Above guide include all the procedures on our NAS to create a RAID volume. • Pre-requirement: download losetup utility to a NAS. ftp://csdread:csdread@ftp.qnap.com/NAS/utility/losetup-arm.tar ftp://csdread:csdread@ftp.qnap.com/NAS/utility/losetup-x86.tar • After download, use tar -xf to extract and run it. This utility is used to create virtual disk for simulating the disks on above tutorial. Introduction of mdadm command #mdadm -E /dev/sda3 > that will tell if it is md disk #mdadm -Af /dev/md0 /dev/sd[a-d]3 > that will get available md disk into raid array ------------- ---------------------#mdadm -CfR -l5 -n8 --assume-clean /dev/md0 /dev/sd[ah]3 > that will overwrite the mdstat on each disk > -CfR force to create the raid array > -l5 = raid 5array > -n8 = available md disk > --assume-clean without data partition syncing Introduction of two scripts # config_util Usage: config_util input input=0: Check if any HD existed. input=1: Mirror ROOT partition. input=2: Mirror Swap Space (not yet). input=4: Mirror RFS_EXT partition. >> usually we have config_util 1 to get the md9 ready # storage_boot_init Usage: storage_boot_init phase phase=1: mount ROOT partition. phase=2: mount DATA partition, create storage.conf and refresh disk. phase=3: Create_Disk_Storage_Conf. >> usually we have storage_boot_init 1 to mount the md9 RAID Issue - raidtab is broken • raidtab is used to check if the disk is in RAID group or single and show the RAID information on web UI. • If the disk is in RAID but Web UI show it is single, or the RAID information is different to the actual disk RAID data ( checked by mdadm -E), then the raidtab should be corrupt. Then you need to manually edit the raidtab file to comply the actual RAID status. • Check the following slides for raidtab contents RAID Issue - raidtab is broken Single RAID 0 Stripping No raidtab raiddev /dev/md0 raid-level 0 nr-raid-disks 2 nr-spare-disks 0 chunk-size 4 persistent-superblock 1 device /dev/sda3 raid-disk 0 device /dev/sdb3 raid-disk 1 raidtab for RAID-1 and JBOD RAID-1 Mirror JBOD Linear raiddev /dev/md0 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 chunk-size 4 persistent-superblock 1 device /dev/sda3 raid-disk 0 device /dev/sdb3 raid-disk 1 raiddev /dev/md0 raid-level linear nr-raid-disks 3 nr-spare-disks 0 chunk-size 4 persistent-superblock 1 device /dev/sda3 raid-disk 0 device /dev/sdb3 raid-disk 1 device /dev/sdc3 raid-disk 2 raidtab for RAID-5 and RAID-5+hot spare RAID-5 RAID-5 + Hot spare raiddev /dev/md0 raid-level 5 nr-raid-disks 3 nr-spare-disks 0 chunk-size 4 persistent-superblock 1 device /dev/sda3 raid-disk 0 device /dev/sdb3 raid-disk 1 device /dev/sdc3 raid-disk 2 raiddev /dev/md0 raid-level 5 nr-raid-disks 3 nr-spare-disks 1 chunk-size 4 persistent-superblock 1 device /dev/sda3 raid-disk 0 device /dev/sdb3 raid-disk 1 device /dev/sdc3 raid-disk 2 device /dev/sdd3 spare-disk 0 raidtab for RAID-5 +global spare and RAID-6 RAID-5 + Global Spare RAID-6 raidtab is same as RAID-5 raiddev /dev/md0 raid-level 6 nr-raid-disks 4 nr-spare-disks 0 chunk-size 4 persistent-superblock 1 device /dev/sda3 raid-disk 0 device /dev/sdb3 raid-disk 1 device /dev/sdc3 raid-disk 2 device /dev/sdd3 raid-disk 3 On uLinux.conf, add a line if global spare disk is disk 4: [Storage] GLOBAL_SPARE_DRIVE_4 = TRUE raidtab for RAID-10 RAID-10 raiddev /dev/md0 raid-level 10 nr-raid-disks 4 nr-spare-disks 0 chunk-size 4 persistent-superblock 1 device /dev/sda3 raid-disk 0 device /dev/sdb3 raid-disk 1 device /dev/sdc3 raid-disk 2 device /dev/sdd3 raid-disk 3 Raid fail - HDDs have no partitions When use the following commands to check the HDD, there is no partition or only one partition. # parted /dev/sdx print The following is sample. # blkid ** this command show all partitions on the NAS Note: fdisk -l cannot show correct partition table for 3TB HDDs RAID fail - HDDs have no partitions (cont.) The following tool (x86 only) can help us to calculate correct partition size according to the HDD size. Please save it in your NAS (x86 model) and make sure the file size is 10,086 bytes. ftp://csdread:csdread@ftp.qnap.com/NAS/utility/Create_Partitions 1. Get every disk size. # cat /sys/block/sda/size 625142448 2. Get the disk partition list. It should contain 4 partitions if normal. # parted /dev/sda print Model: Seagate ST3320620AS (scsi) Disk /dev/sda: 320GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 32.3kB 543MB 543MB primary ext3 boot 2 543MB 1086MB 543MB primary linux-swap(v1) 3 1086MB 320GB 318GB primary ext3 4 320GB 320GB 510MB primary ext3 RAID fail - HDDs have no partitions (cont.) 3. Run the tool in your NAS to get the recover commands. # Create_Partitions /dev/sda 625142448 /dev/sda size 305245 disk_size=625142448 /usr/sbin/parted /dev/sda -s mkpart primary 40s 1060289s /usr/sbin/parted /dev/sda -s mkpart primary 1060296s 2120579s /usr/sbin/parted /dev/sda -s mkpart primary 2120584s 624125249s /usr/sbin/parted /dev/sda -s mkpart primary 624125256s 625121279s If the disk contains none partition, run the 4 commands. If the disk contains only 1 partition, run the last 3 commands. If the disk contains only 2 partition, run the last 2 commands. If the disk contains only 3 partition, run the last 1 commands. 4. Run above partitions commands depends on existing partition number. 5. Check the disk partition after recover. And it should contain 4 partitions now. # parted /dev/sda print Model: Seagate ST3320620AS (scsi) Disk /dev/sda: 320GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End 1 2 3 4 Size Type File system Flags 32.3kB 543MB 543MB primary ext3 boot 543MB 1086MB 543MB primary linux-swap(v1) 1086MB 320GB 318GB primary ext3 320GB 320GB 510MB primary ext3 6. Please then run "sync" or reboot the NAS for the new partition to take effect. RAID fail - Partitions have no md superblock • If one or all HDD partitions are lost, or the partitions have no md superblock for unknown reason, use the mdadm -CfR command to recreate the RAID. # mdadm -CfR --assume-clean /dev/md0 -l 5 -n 4 /dev/sda3... Note: 1. Make sure the disk is in correct sequence. Use "mdadm E" or check raidtab to confirm 2. If one of the disk is missing or have problem, replace the disk with "missing". For example: # mdadm -CfR --assume-clean /dev/md0 -l 5 -n 4 /dev/sda3 missing /dev/sdc3 /dev/sdd3 RAID fail - RAID can't be assembled or status is inactive 1. Check partitions, md superblock status 2. Check if there is any RAID disk missing / faulty 3. Use "mdadm -CfR --assume-clean" to recreate the RAID no md0 for array , manually create the md0 with mdadm -CfR RAID fail - Cann't be mounted, status unmount 1. Make sure the raid status is active (more /proc/mdstat) 2. try manually mount # mount /dev/md0 /share/MD0_DATA -t ext3 # mount /dev/md0 /share/MD0_DATA -t ext4 # mount /dev/md0 /share/MD0_DATA -o ro (read only) 3. use e2fsck / e2fsck_64 to check # e2fsck -ay /dev/md0 (auto and continue with yes) 4. If there are many errors when check, memory may not enough, need to create more swap space as the procedure on next slide. RAID fail - Cann't be mount, status unmount (cont.) Use the following command to create more swap space [~] # more /proc/mdstat ....... md8 : active raid1 sdh2[2](S) sdg2[3](S) sdf2[4](S) sde2[5](S) sdd2[6](S) sdc2[7](S) sdb2[1] sda2[0] 530048 blocks [2/2] [UU] .......... [~] # swapoff /dev/md8 [~] # mdadm -S /dev/md8 mdadm: stopped /dev/md8 [~] # mkswap /dev/sda2 Setting up swapspace version 1, size = 542859 kB no label, UUID=7194e0a9-be7a-43ac-829f-fd2d55e07d62 [~] # mkswap /dev/sdb2 Setting up swapspace version 1, size = 542859 kB no label, UUID=0af8fcdd-8ed1-4fca-8f53-0349d86f9474 [~] # mkswap /dev/sdc2 Setting up swapspace version 1, size = 542859 kB no label, UUID=f40bd836-3798-4c71-b8ff-9c1e9fbff6bf [~] # mkswap /dev/sdd2 Setting up swapspace version 1, size = 542859 kB no label, UUID=4dad1835-8d88-4cf1-a851-d80a87706fea [~] # swapon /dev/sda2 [~] # swapon /dev/sdb2 [~] # swapon /dev/sdc2 [~] # swapon /dev/sdd2 [~] # e2fsck_64 -fy /dev/md0 RAID fail - Cann't be mount, status unmount (cont.) If there is no file system superblock or the check fail, you can try backup superblcok. 1. Use the following command to find backup superblock location # /usr/local/sbin/dumpe2fs /dev/md0 | grep superblock Sample output: Primary superblock at 0, Group descriptors at 1-6 Backup superblock at 32768, Group descriptors at 32769-32774 Backup superblock at 98304, Group descriptors at 98305-98310 ..163840...229376...294912...819200...884736...1605632...2654208...4096000... 7962624... 11239424... 20480000... 23887872...71663616...78675968..102400000..21499084 8..512000000...550731776...644972544 2. Now check and repair a Linux file system using alternate superblock # 32768: # e2fsck -b 32768 /dev/md0 Sample output: fsck 1.40.2 (12-Jul-2007) e2fsck 1.40.2 (12-Jul-2007) /dev/sda2 was not cleanly unmounted, check forced. Pass 1: Checking inodes, blocks, and sizescf ....... Free blocks count wrong for group #241 (32254, counted=32253). Fix? yes ......... /dev/sda2: ***** FILE SYSTEM WAS MODIFIED ***** /dev/sda2: 59586/30539776 files (0.6% non-contiguous), 3604682/61059048 blocks 3. Now try to mount file system using mount command: # mount /dev/md0 /share/MD0_DATA -t ext4 RAID fail - able to mount but data disappear • If the mount is OK, but data is disappear, unmount the RAID and run e2fsck again (can try backup superblock) • If still fail, try data recovery program (photorec, RStudio) or contact data recovery company RAID fail - RAID is degraded, read-only • When degraded, read-only status, there is more disk failure than the raid can support, need to help the user to check which disks are faulty if Web UI isn't helpful - Check klog or dmesg to find the faulty disks • Ask user to backup the data first • If disks looks OK, after backup, try "mdadm -CfR -assume-clean" to recreate the RAID • If above doesn't work, recreate the RAID Degraded mode (read only) Failed drive (X) NAS fail - Mount HDD(s) with another QNAP NAS • User can plug the HDD(s) to another same model name NAS to access the data • User can plug the HDD(s) to other model name NAS to access the data by perform system migration o o http://docs.qnap.com/nas/en/index.html?system_migration.htm note: TS-101/201/109/209/409/409U series doesn't support system migration • Since the firmware is also stored on the HDD(s), its firmware version may be different to the firmware on NAS. Firmware upgrade may be required required after above operation NAS fail - Access HDD(s) data with windows PC • For single or RAID-1 HDDs, user can plug one of the HDD to a PC (by USB, SATA or eSATA) and access the data through 3rd party software (ext2fsd, explore2fs, etc). Check the following for detail. • • http://www.soluvas.com/read-browse-explore-open-ext2-ext3-ext4-partition-filesystem-fromwindows-7/ Note: The file/folder name is in unicode(utf8) • TS-109/209 use non-standard ext3, need to use QNAP live CD to access the data Procedures: ftp://csdread:csdread@ftp.qnap.com/NAS/live_cd/TS109209_data_recovery_with_Live_CD.pdf o Live CD ISO: ftp://csdread:csdread@ftp.qnap.com/NAS/live_cd/Data_Recover_livecd_2009-01-15_TS109-209.iso o • For other RAID configuration, user can use R-studio to mount the RAID and access the data. Check the following link for sample of RAID-0/5 https://docs.google.com/open?id=0B8u8qWRYVhv0ZTk4OTEzYWQtY2ZiOC00NmZjLWE1OWUtNTJhNDE3OGQ5ZDYw NAS cannot boot correctly with HDD installed If NAS cannot boot correctly with HDD installed. With HDD, NAS boot without any problem. This problem could be caused by faulty HDD, IO error on some blocks of HDD or corrupt configuration/system files. If user want to quickly access his data, we can try the following procedures: 1. Power on the NAS without HDD installed 2. hot-plug HDDs into the NAS 3. Assemble the RAID 4. Copy data by winscp or backup to external drive NOTE: arm-based NAS doesn't support sftp if boot without HDD. Have to connect external drive for backup. Find the following slide for procedures to mount a NTFS external drive Mount NTFS/HPFS volume on ARM-based NAS when boot without HDD Following is the procedure to mount NTFS/HPFS volume on an ARM platform NAS without initial HDD. 1. Download the following two files to the NAS. ftp://csdread:csdread@ftp.qnap.com/NAS/temp/nls_utf8.ko ftp://csdread:csdread@ftp.qnap.com/NAS/temp/ufsd.ko 2. Put nls_utf8.ko to /lib/modules/others 3. Put ufsd.ko to /lib/modules/misc 4. insmod nls_utf8.ko and insmod ufsd.ko 5. mount -t ufsd /dev/sdya1 /share/esata -o iocharset=utf8,dmask=0000,fmask=0111,force NOTE: If the disk is larger than 2TB, the 1st partition may be GPT, so we have to mount the 2nd partition. Data are deleted accidentally by user/administrator 1. User delete folders / files Use photorec/R-studio/data recovery software to recovery data, Check the following link for using R-Studio https://docs.google.com/open?id=0B8u8qWRYVhv0ZTk4OTEzYWQtY2ZiOC00NmZjLWE1OWUtNTJhNDE3OGQ5ZDYw 2. User remove the RAID volume - see next slide 3. User format the RAID volume - User photorec/data recovery software to recover data 4. User perform Restore to Factory Default - It will format RAID and reset all settings, same as 3. 5. User remove HDD(s) and cause RAID volume fail - "mdadm -CfR --assume-clean" should work User remove the RAID volume # more /proc/mdstat **Check if the RAID is really removed # mdadm -E /dev/sda3 ** Check if the MD superblock is really removed # mdadm -CfR --assume-clean /dev/md0 -l 5 -n 3 /dev/sda3 /dev/sdb3 /dev/sdc3 **Create the RAID, assume it is 3 HDDs raid-5 # e2fsck -y /dev/md0 **check file system, Assume "yes" to all questions. If 64-bit, e2fsck_64 # mount /dev/md0 /share/MD0_DATA -t ext4 ** mount the RAID back # vi raidtab ** manually create the raid table # rm /etc/storage.conf ** reflash the web UI volume display # reboot ** Need to add the removed network share(s) back after reboot Note: Only TS-x79, TS-809 series, and D510/D525 models with 5 or more bays support 64-bit commands.