¿Cómo acelerar la sincronización inicial de la cadena de bloques usando SSD sin perder espacio?

Tengo un SSD de 60 GB como unidad de sistema de Windows, que no es suficiente para guardar toda la cadena de bloques. Instalé BitCoin Core (bitcoin-qt) y configuré el directorio de datos en mi HDD de 2 TB. Sin embargo, la sincronización inicial de la cadena de bloques se está ejecutando desde hace 2 días y actualmente tiene '40 semanas de retraso'. El disco duro muestra una carga del 100 % en el administrador de tareas de Windows. La CPU tiene una carga <50 %, el uso de la red es <1 MB/s durante la sincronización.

¿Puedo acelerar la sincronización inicial usando el SSD para el almacenamiento de la base de datos, mientras que los datos binarios de la cadena de bloques se guardan en un disco duro convencional?

¿Eso realmente acelera la sincronización?

Respuestas (1)

Sí, es posible cargar los datos binarios de la cadena de bloques en un almacenamiento masivo (HDD), mientras se mantiene la base de datos de índice en almacenamiento de alto rendimiento (SSD). Los bloques de Bitcoin se almacenan en el blockssubdirectorio de su archivo datadir. La ubicación de su directorio de datos es %AppData%\BitCoinconfigurada manualmente por usted durante la instalación de bitcoin-qt.

ASUMO que está utilizando BitCoin Core (también conocido como bitcoin-qt) en Windows 7 o superior, siendo C:\ su SSD, F:\ su HDD, bot formateado como NTFS. La ubicación de datadires %AppData%\BitCoin\.

  1. Mover %AppData%\BitCoin\blocksal disco duro, por ejemplo, aF:\BTC\blocks

  2. OPCIONALF:\BTC\blocks\index Volver al SSD :%AppData%\BitCoin\index

NOTA: ¡La carpeta de bloques no debe existir en %AppData%\BitCoin ahora!

  1. Abra una ventana de cmd presionando WIN+R , luego escriba cmd y haga clic en Aceptar

  2. Escribe/Pega mklink /J %AppData%\BitCoin\blocks F:\BTC\blocksy presiona ENTER . (Esto crea una unión NTFS , creando un enlace en %AppData%\Bitcoin llamado bloques , apuntando a la carpeta F:\BTC\blocks existente en el HDD)

  3. OPCIONAL Escriba/Pegue mklink /J F:\BTC\blocks\index %AppData%\BitCoin\indexy presione ENTER (Cree un nuevo enlace en F:\BTC\blocks\index apuntando a %AppData%\BitCoin\index existente )

Ahora, el directorio de bloques está en el HDD para un almacenamiento masivo económico, mientras que su subdirectorio de índice y el directorio de datos principal están en el veloz SSD. Solo los datos binarios de blockchain se almacenan en HDD.

Acerca del indexdirectorio ( Pasos 2, 4 ): Como comenta Pieter Wuille a continuación, realmente no necesita mover el indexdirectorio dentro blocksde nuevo a SSD. Pero dado que contiene una de las bases de datos, pensé que podría mejorar el rendimiento al iniciar bitcoin-qt. [cita requerida]

En mi caso, este administrador de tareas de Windows muestra velocidades de lectura/escritura 10 veces superiores a las anteriores (20-30 MB/s). La velocidad de descarga subió a 2-4 MB/s (50 MBit de Internet), la carga de la CPU aumentó en un 85 %.

No supervisé la mejora de bloques/segundo, pero los valores del administrador de tareas muestran un mejor rendimiento de datos, lo que debería relacionarse directamente con más bloques por segundo. ¡Sincronicé 15 semanas de blockchain mientras escribía esto (30m), en comparación con solo 1 semana antes de la modificación!

El datadir sin datos binarios de blockchain es un poco más de 2 GB, y aún faltan 25 semanas de blockchain. Recomendaría al menos 5 GB de espacio libre en el SSD para la gran cadena de bloques actual de 80 GB.

Bastante preciso, pero el rendimiento de la base de blocks\indexdatos en realidad es irrelevante; solo le escribimos un poco de datos. Sin embargo, existe una base de datos diferente, chainstateel directorio, cuyo rendimiento es absolutamente crítico. Sugeriría mover este último a SSD en su lugar.
Gracias por la pista. Soy nuevo en Bitcoin, así que no sabía lo que realmente hace cada archivo. Agregaré una nota al final de mi respuesta indexy marcaré los pasos relevantes como opcionales.
bases de datos oracle? Usamos BDB para la billetera. bloques/índice y chainstate son LevelDB.
Buen punto, no sé dónde leí que esto es un Oracle DB... He convertido la respuesta en un wiki de la comunidad, como dije, no sé mucho sobre bitcoin en sí, así que si alguien encuentra más cosas incorrecto, edite como desee.