Ok. So let's try something. Make your zpool and MD5 the partition tables like you did before. But, before shutting down the server go to the CLI and do zpool export yourpoolname. Then physically pull the drives from the server. Do a reboot of the server like you have been. Then when the server has booted back up put the disks back in the machine. Then do a zpool import -R /mnt yourpoolname and check the MD5s.
If that works, then we've kind-of narrowed down the problem to something happening at shutdown or at bootup(which I think we are kind of expecting right now). So now leave the disks in and do a shutdown. After the system powers off pull the drives, then bootup the server, then add your drives and do the same zpool import command again. Check your MD5s.
If that works, then export your pool again, do a shutdown with the disks physically removed, then plug the drives in and bootup.
This is to figure out if the boot and/or shutdown are responsible for the corruption. I'm wondering if the process of powering down the system is causing a voltage spike or something that is causing data to be written to the backup GPT. The backup GPT is one of the sectors closest to where the heads park, so naturally if something is going wrong during shutdown and the heads are writing data to the media, the backup GPT is the one that you'd expect to get trashed.
One thing that is weird to me. Your problem on bare metal has a striking similarity to how ESXi users see their pools die when they do RDM. It could be random chance, but there may be a correlation. I'm not sure which(I tend to think random chance) but I'm not ready to make that assumption just yet.
One thing you might hate that I'm about to say. Quite often servers provide a list of OSes supported. Generally the list is fairly complete. That is, if FreeBSD isn't on the list and people are having problems it tends to make sense. If you look up your motherboard compatibility matix, http://www.tyan.com/tech/OS_Support_IntelWins.aspx , you'll find that FreeBSD isn't on their list, now every time I've tried to help someone with something we can't solve the OS matrix never showed FreeBSD as supported. I don't normally trust those matrixes because they may just not test them. But, this does make me wonder if there's some kind of incompatibility at work...
Stupid thing we never thought of.. can you run the following command and provide the output in pastebin or something....
smartctl -a /dev/XXX where you use your drive device names? Just going to check your hard drives.
todd@ubuntu-test:~$ sudo smartctl -a /dev/sdb smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.5.0-23-generic] (local build) Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net === START OF INFORMATION SECTION === Model Family: SAMSUNG SpinPoint F1 DT Device Model: SAMSUNG HD753LJ Serial Number: S13UJDWQ601618 LU WWN Device Id: 5 0000f0 003066181 Firmware Version: 1AA01112 User Capacity: 750,156,374,016 bytes [750 GB] Sector Size: 512 bytes logical/physical Device is: In smartctl database [for details use: -P show] ATA Version is: 8 ATA Standard is: ATA-8-ACS revision 3b Local Time is: Mon Jan 6 22:34:10 2014 EST SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED General SMART Values: Offline data collection status: (0x00) Offline data collection activity was never started. Auto Offline Data Collection: Disabled. Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run. Total time to complete Offline data collection: (10939) seconds. Offline data collection capabilities: (0x7b) SMART execute Offline immediate. Auto Offline data collection on/off support. Suspend Offline collection upon new command. Offline surface scan supported. Self-test supported. Conveyance Self-test supported. Selective Self-test supported. SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode. Supports SMART auto save timer. Error logging capability: (0x01) Error logging supported. General Purpose Logging supported. Short self-test routine recommended polling time: ( 2) minutes. Extended self-test routine recommended polling time: ( 183) minutes. Conveyance self-test routine recommended polling time: ( 20) minutes. SCT capabilities: (0x003f) SCT Status supported. SCT Error Recovery Control supported. SCT Feature Control supported. SCT Data Table supported. SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 100 099 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0007 065 065 011 Pre-fail Always - 11290 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 101 5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0 7 Seek_Error_Rate 0x000f 100 100 051 Pre-fail Always - 0 8 Seek_Time_Performance 0x0025 100 100 015 Pre-fail Offline - 9971 9 Power_On_Hours 0x0032 097 097 000 Old_age Always - 14018 10 Spin_Retry_Count 0x0033 100 100 051 Pre-fail Always - 0 11 Calibration_Retry_Count 0x0012 100 100 000 Old_age Always - 2 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 66 13 Read_Soft_Error_Rate 0x000e 100 099 000 Old_age Always - 0 183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0 184 End-to-End_Error 0x0033 100 100 099 Pre-fail Always - 0 187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 85 188 Command_Timeout 0x0032 100 100 000 Old_age Always - 0 190 Airflow_Temperature_Cel 0x0022 084 065 000 Old_age Always - 16 (Min/Max 11/16) 194 Temperature_Celsius 0x0022 078 064 000 Old_age Always - 22 (Min/Max 11/22) 195 Hardware_ECC_Recovered 0x001a 100 100 000 Old_age Always - 2099 196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0030 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 100 100 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x000a 100 100 000 Old_age Always - 2 201 Soft_Read_Error_Rate 0x000a 253 253 000 Old_age Always - 0 SMART Error Log Version: 1 No Errors Logged SMART Self-test log structure revision number 0 Warning: ATA Specification requires self-test log structure revision number = 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Short offline Completed without error 00% 13880 - # 2 Short offline Aborted by host 00% 13879 - # 3 Short offline Aborted by host 00% 13878 - # 4 Short offline Aborted by host 00% 13877 - # 5 Short offline Aborted by host 00% 13876 - # 6 Short offline Aborted by host 00% 13875 - # 7 Short offline Aborted by host 00% 13874 - # 8 Short offline Aborted by host 00% 13873 - # 9 Short offline Aborted by host 00% 13872 - Note: selective self-test log revision number (0) not 1 implies that no selective self-test has ever been run SMART Selective self-test log data structure revision number 0 Note: revision number not 1 implies that no selective self-test has ever been run SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS 1 0 0 Not_testing 2 0 0 Not_testing 3 0 0 Not_testing 4 0 0 Not_testing 5 0 0 Not_testing Selective self-test flags (0x0): After scanning selected spans, do NOT read-scan remainder of disk. If Selective self-test is pending on power-up, resume after 0 minute delay.
todd@ubuntu-test:~$ sudo smartctl -a /dev/sdc smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.5.0-23-generic] (local build) Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net === START OF INFORMATION SECTION === Model Family: SAMSUNG SpinPoint F1 DT Device Model: SAMSUNG HD753LJ Serial Number: S13UJDWQ601619 LU WWN Device Id: 5 0000f0 003066191 Firmware Version: 1AA01112 User Capacity: 750,156,374,016 bytes [750 GB] Sector Size: 512 bytes logical/physical Device is: In smartctl database [for details use: -P show] ATA Version is: 8 ATA Standard is: ATA-8-ACS revision 3b Local Time is: Mon Jan 6 22:34:19 2014 EST SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED General SMART Values: Offline data collection status: (0x00) Offline data collection activity was never started. Auto Offline Data Collection: Disabled. Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run. Total time to complete Offline data collection: (11772) seconds. Offline data collection capabilities: (0x7b) SMART execute Offline immediate. Auto Offline data collection on/off support. Suspend Offline collection upon new command. Offline surface scan supported. Self-test supported. Conveyance Self-test supported. Selective Self-test supported. SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode. Supports SMART auto save timer. Error logging capability: (0x01) Error logging supported. General Purpose Logging supported. Short self-test routine recommended polling time: ( 2) minutes. Extended self-test routine recommended polling time: ( 197) minutes. Conveyance self-test routine recommended polling time: ( 21) minutes. SCT capabilities: (0x003f) SCT Status supported. SCT Error Recovery Control supported. SCT Feature Control supported. SCT Data Table supported. SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 099 099 051 Pre-fail Always - 218 3 Spin_Up_Time 0x0007 067 067 011 Pre-fail Always - 10800 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 107 5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0 7 Seek_Error_Rate 0x000f 100 100 051 Pre-fail Always - 0 8 Seek_Time_Performance 0x0025 100 100 015 Pre-fail Offline - 9851 9 Power_On_Hours 0x0032 097 097 000 Old_age Always - 14004 10 Spin_Retry_Count 0x0033 100 100 051 Pre-fail Always - 0 11 Calibration_Retry_Count 0x0012 100 100 000 Old_age Always - 3 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 73 13 Read_Soft_Error_Rate 0x000e 099 099 000 Old_age Always - 218 183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0 184 End-to-End_Error 0x0033 100 100 099 Pre-fail Always - 0 187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 218 188 Command_Timeout 0x0032 100 100 000 Old_age Always - 0 190 Airflow_Temperature_Cel 0x0022 085 066 000 Old_age Always - 15 (Min/Max 10/15) 194 Temperature_Celsius 0x0022 079 066 000 Old_age Always - 21 (Min/Max 10/21) 195 Hardware_ECC_Recovered 0x001a 100 100 000 Old_age Always - 21385 196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0030 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 100 100 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x000a 100 100 000 Old_age Always - 0 201 Soft_Read_Error_Rate 0x000a 253 253 000 Old_age Always - 0 SMART Error Log Version: 1 No Errors Logged SMART Self-test log structure revision number 0 Warning: ATA Specification requires self-test log structure revision number = 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Short offline Completed without error 00% 13866 - # 2 Short offline Aborted by host 00% 13865 - # 3 Short offline Aborted by host 00% 13864 - # 4 Short offline Aborted by host 00% 13863 - # 5 Short offline Aborted by host 00% 13862 - # 6 Short offline Aborted by host 00% 13861 - # 7 Short offline Aborted by host 00% 13860 - # 8 Short offline Aborted by host 00% 13859 - # 9 Short offline Aborted by host 00% 13858 - Note: selective self-test log revision number (0) not 1 implies that no selective self-test has ever been run SMART Selective self-test log data structure revision number 0 Note: revision number not 1 implies that no selective self-test has ever been run SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS 1 0 0 Not_testing 2 0 0 Not_testing 3 0 0 Not_testing 4 0 0 Not_testing 5 0 0 Not_testing Selective self-test flags (0x0): After scanning selected spans, do NOT read-scan remainder of disk. If Selective self-test is pending on power-up, resume after 0 minute delay.
Well, but drives are showing non-zero values for 187 and 195. That worries me somewhat. It may show that there is a problem, but I'm along way from believeing it is likely.
You are right, if you were rebooting the VM and seeing the disks being trashed that's not likely. But, VMs have their own special kind of "fail" so it's not out of the woods. Unfortunately, whatever the cause is probably falls under the "not likely" category since I've never seen this kind of problem in almost 2 years here.