Quick method to determine SSD drive health?
Solution 1:
A good, but not infallible, way of checking any drive health is to check the SMART attributes.
Below is the SMART attribute set for an Intel X25-M G2 160GB disk, taken using smartctl v5.41. (The version is important, earlier versions of smartctl had different attribute-name mappings, and didn't actually correctly understand the specific table for this drive).
# ./smartctl -data -A /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-2.6.18-194.32.1.el5] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 5
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
3 Spin_Up_Time 0x0020 100 100 000 Old_age Offline - 0
4 Start_Stop_Count 0x0030 100 100 000 Old_age Offline - 0
5 Reallocated_Sector_Ct 0x0032 100 100 000 Old_age Always - 1
9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 4076
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 67
192 Unsafe_Shutdown_Count 0x0032 100 100 000 Old_age Always - 30
225 Host_Writes_32MiB 0x0030 200 200 000 Old_age Offline - 148418
226 Workld_Media_Wear_Indic 0x0032 100 100 000 Old_age Always - 755
227 Workld_Host_Reads_Perc 0x0032 100 100 000 Old_age Always - 49
228 Workload_Minutes 0x0032 100 100 000 Old_age Always - 16956537
232 Available_Reservd_Space 0x0033 099 099 010 Pre-fail Always - 0
233 Media_Wearout_Indicator 0x0032 098 098 000 Old_age Always - 0
184 End-to-End_Error 0x0033 100 100 099 Pre-fail Always - 0
This shows that the drive has had 1 reallocated sector, has used 1% of its available reserved space (attribute 232) and 2% of its projected program/erase cycles (attribute 233). It has had 148418 * 32MiB (attribute 225) written to it.
If the drive is showing any significant number of reallocated sectors, it may be a cause for concern, as this probably points to a failing flash chip (in the same way that a significant number of reallocated sectors on a spinning disk generally points towards surface errors). End to End are also bad - I've had a few X25-M G2 160GB disks fail with large (>1000) End to End errors reporting. There are only really two useful error condition attributes present for these disks though, as most of the useful SMART attributes for normal disks don't apply to SSDs.
However, SMART isn't generally regarded as 100% reliable. Google's study on disk failures found that while there were good correlations between the various SMART early warning indicators and drive failure, it wasn't a useful tool for predicting individual drive failure. For this reason I generally use SMART as a way of proving a drive is bad (if errors are showing, it's probably going to fail sometime soon), rather than proving a drive is still good.
Solution 2:
Although its made for "traditional" hard drives the "badblocks" utility might be of some benefit since its meant to exercise all mappable sectors on the drive. With SSD fragmentation prevention and internal remappings it wont be able to tell you for sure that the drive is good. However, if it tells you the drive is bad I would surely toss out the drive as dead.