Necesitaba unidades SSD para un experimento en mi minidatacenter. Podría ir a la Uyustus a comprarlos, o podía arriesgarme a comprarlas de Internet al precio más bajo…
Introducción
Recientemente (2019+) estuve trabajando en Raspberry Pi como servidores. Esto no es estrictamente una novedad: a la gente que le interesaría tener servicios interesantes 24×7 alojados en su casa y no en Internet, les sería mejor tener algo pequeño y que consuma menos energía en comparación a una máquina x86 vieja (que es lo que la mayoría de hackers suele hacer).
Necesitaba hacer pruebas con una placa con almacenamiento propio, y luego de pensarlo varias veces me decidí por un SSD ya que solo le vi ventajas: menos temperatura, menor consumo eléctrico, etc. Claro que tendría una menor capacidad de almacenamiento disponible, pero no era algo importante por ahora.
Yo había tenido experiencias ya con SSDs: hace varios meses compré varios para mi laptop y las máquinas de mi casa. Ver cómo funcionan los SSDs, conocer las características internas de su funcionamiento es algo que me produce mucha curiosidad y luego de ver el video de Linus Tech Tips sobre el tema pues decidí ir a AliExpress y buscar la unidad más barata.


Como comparación, las SSD de 120 GB en las tiendas de la ciudad costaban en esa época cerca de 30 dólares.
Lo compré en mediados de enero de este año, y lo recibí hace unos días, en Mayo.
Cómo llegó
No tengo las fotos del paquete (deseché todo el envoltorio externo por precaución contra el coronavirus), pero la unidad SSD tenía muy poca protección. Un trozo pequeño del clásico relleno de burbuja rodeaba a la unidad SSD, que estaba dentro de una bolsa antiestática oscura sellada al vacío.
Ya abierta esta, podemos ver la unidad:


Decido desarmarla, sería genial ver qué hay adentro. La unidad no tiene ni siquiera tornillos: el plástico en la base tiene algunas piezas que hacen de gancho, con un destornillador plano se puede separarlas con facilidad.

Hay una mejor foto de los componentes, y descubrí algunas cosas interesantes que les comento luego.
Y ahí dejo una foto de la parte trasera de la placa, como se ve no hay nada interesante.

Pruebas
Luego de formatear la unidad a ext4
+ hacerle TRIM, la primera prueba fue sencilla: usé un script para medir la velocidad. Suelo usar iozone
pero usé esto esta vez, que hace una prueba de escritura y lectura simultánea.

25MB/s de escrituras aleatorias van muy bien para mi propósito 🙂
Luego le hice un test extendido de SMART (tardó 15 minutos y dio todo OK). No guardé la captura de los datos SMART, pero me acuerdo que tenía marcada 1 hora en Power_on_Hours
, y el valor en Total_LBAs_Written
y Total_LBAs_Read
iba por los 2000. Me imagino datos que reflejan que se le hizo una prueba al SSD antes de ser vendido.
Ya pasados unos días, les dejo la información de SMART del disco:
smartctl 7.1 2019-12-30 r5022 [aarch64-linux-5.4.0-1011-raspi] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Device Model: SSD 120GB
Serial Number: SCRW19121901B0016
Firmware Version: S1120A0
User Capacity: 120,034,123,776 bytes [120 GB]
Sector Size: 512 bytes logical/physical
Rotation Rate: Solid State Device
Form Factor: 2.5 inches
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: ACS-3 T13/2161-D revision 4
SATA Version is: SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Tue May 26 07:15:07 2020 -04
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: ( 120) seconds.
Offline data collection
capabilities: (0x11) SMART execute Offline immediate.
No Auto Offline data collection support.
Suspend Offline collection upon new
command.
No Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
No Selective Self-test supported.
SMART capabilities: (0x0002) Does not save 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: ( 10) minutes.
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x0032 100 100 050 Old_age Always - 0
5 Reallocated_Sector_Ct 0x0032 100 100 050 Old_age Always - 0
9 Power_On_Hours 0x0032 100 100 050 Old_age Always - 71
12 Power_Cycle_Count 0x0032 100 100 050 Old_age Always - 25
160 Unknown_Attribute 0x0032 100 100 050 Old_age Always - 0
161 Unknown_Attribute 0x0033 100 100 050 Pre-fail Always - 100
163 Unknown_Attribute 0x0032 100 100 050 Old_age Always - 152
164 Unknown_Attribute 0x0032 100 100 050 Old_age Always - 1350
165 Unknown_Attribute 0x0032 100 100 050 Old_age Always - 13
166 Unknown_Attribute 0x0032 100 100 050 Old_age Always - 1
167 Unknown_Attribute 0x0032 100 100 050 Old_age Always - 3
168 Unknown_Attribute 0x0032 100 100 050 Old_age Always - 1500
169 Unknown_Attribute 0x0032 100 100 050 Old_age Always - 100
175 Program_Fail_Count_Chip 0x0032 100 100 050 Old_age Always - 0
176 Erase_Fail_Count_Chip 0x0032 100 100 050 Old_age Always - 0
177 Wear_Leveling_Count 0x0032 100 100 050 Old_age Always - 0
178 Used_Rsvd_Blk_Cnt_Chip 0x0032 100 100 050 Old_age Always - 0
181 Program_Fail_Cnt_Total 0x0032 100 100 050 Old_age Always - 0
182 Erase_Fail_Count_Total 0x0032 100 100 050 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 050 Old_age Always - 18
194 Temperature_Celsius 0x0022 100 100 050 Old_age Always - 40
195 Hardware_ECC_Recovered 0x0032 100 100 050 Old_age Always - 602
196 Reallocated_Event_Count 0x0032 100 100 050 Old_age Always - 0
197 Current_Pending_Sector 0x0032 100 100 050 Old_age Always - 0
198 Offline_Uncorrectable 0x0032 100 100 050 Old_age Always - 0
199 UDMA_CRC_Error_Count 0x0032 100 100 050 Old_age Always - 0
232 Available_Reservd_Space 0x0032 100 100 050 Old_age Always - 100
241 Total_LBAs_Written 0x0030 100 100 050 Old_age Offline - 4460
242 Total_LBAs_Read 0x0030 100 100 050 Old_age Offline - 4674
245 Unknown_Attribute 0x0032 100 100 050 Old_age Always - 3240
SMART Error Log Version: 1
No Errors Logged
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% 1 -
Selective Self-tests/Logging not supported
Algo curioso: Temperature_Celsius
está siempre a 40 grados. Nunca sube, nunca baja.
Detalles interesantes
Tal como se vio en los videos que tratan el tema (…), algunas fuentes sugieren el por qué de los precios tan bajos de estas unidades:
- La placa está reciclada y el controlador reseteado.
- Componentes robados
- Componentes que no pasaron el control de calidad.
El controlador es un SiliconMotion SM2259XT y las memorias son Intel/Micron 29F04T2ANCQJ1
. Sobre esta última hay bastante información conflictiva, pero personalmente me inclino a creer que las memorias son 3D QLC de 128 GB cada uno. Sumando las dos que vimos en la placa, serían 256 GB.
En ese caso podría inclinarme por la tercera opción, quizás estas memorias son demasiado malas para guardar 256 GB de datos asi que le dijeron al controlador que solo guarde 120 GB y esperar lo mejor del algoritmo de corrección de errores (ECC).
Lo que ahora viene
La mayoría de reviews en sitios como Aliexpress y Ebay no ayudan mucho: leyendo con atención, la mayoría solo comenta si le llegó el paquete y si la SSD funciona, además de la ocasional prueba de velocidad. Muy raras veces hay comentarios sobre cómo fue la vida de estas unidades: cuántos meses duraron, cuántos datos se escribieron y leyeron en la unidad, etc.
Las pruebas de velocidad también no son un indicador fiable: una unidad SSD QLC puede llegar hasta ~100MB/s de rendimiento de escritura secuencial (es más lento que un HDD común de 7200 rpm), pero en las pruebas donde se llega hasta 400MB/s muy probablemente el controlador esté usando una caché SLC dentro de las memorias NAND.
Para mis propósitos va muy bien, crear máquinas virtuales y contenedores en una Raspberry Pi 4 almacenadas en esta SSD. Uso ZFS como sistema de archivos, y como este me permite hacer copias incrementales en otra parte, si configuro un cron para que haga copias de vez en cuando pues no importa si el SSD decide morirse un día 🙂
Si hay novedades respecto a este SSD las comento en otra entrada en el blog.