Los límites de rendimiento del SSD local que se proporcionan en la sección Elige una opción de almacenamiento se obtuvieron mediante una configuración específica en la instancia de SSD local. Si tu instancia de máquina virtual (VM) tiene problemas para alcanzar estos límites de rendimiento y ya la configuraste mediante la configuración de SSD local recomendada, puedes hacer lo siguiente: compara los límites del rendimiento con los límites publicados. Para ello, replica la configuración que usa el equipo de Compute Engine.
En estas instrucciones, se supone que usas un sistema operativo Linux con el administrador de paquetes apt
instalado.
Crea una máquina virtual con 8 CPU virtuales y una partición de SSD local
Crea una instancia de SSD local con cuatro o con ocho CPU virtuales para cada dispositivo, según la carga de trabajo. Por ejemplo, si deseas adjuntar cuatro particiones de SSD locales a una instancia, usa un tipo de máquina con 16 o 32 CPU virtuales.
Con el siguiente comando, se crea una máquina virtual con 8 CPU virtuales y un único SSD local:
gcloud compute instances create ssd-test-instance \ --machine-type "n1-standard-8" \ --local-ssd interface=nvme
Ejecuta la siguiente secuencia de comandos en tu VM. La secuencia de comandos replica la configuración que se usó para alcanzar las cifras de rendimiento del SSD proporcionadas en la sección sobre rendimiento. Ten en cuenta que el parámetro
--bs
define el tamaño del bloque, el cual afecta los resultados para los diferentes tipos de operaciones de lectura y escritura.# install tools sudo apt-get -y update sudo apt-get install -y fio util-linux # discard local SSD sectors sudo blkdiscard /dev/disk/by-id/google-local-nvme-ssd-0 # full write pass - measures write bandwidth with 1M blocksize sudo fio --name=writefile --size=100G --filesize=100G \ --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --bs=1M --nrfiles=1 \ --direct=1 --sync=0 --randrepeat=0 --rw=write --refill_buffers --end_fsync=1 \ --iodepth=200 --ioengine=libaio # rand read - measures max read IOPS with 4k blocks sudo fio --time_based --name=benchmark --size=100G --runtime=30 \ --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --ioengine=libaio --randrepeat=0 \ --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \ --numjobs=4 --rw=randread --blocksize=4k --group_reporting # rand write - measures max write IOPS with 4k blocks sudo fio --time_based --name=benchmark --size=100G --runtime=30 \ --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --ioengine=libaio --randrepeat=0 \ --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \ --numjobs=4 --rw=randwrite --blocksize=4k --group_reporting
Crea una máquina virtual con 32 CPU virtuales y 24 particiones de SSD locales
Si quieres adjuntar 24 particiones de SSD locales a una instancia, usa un tipo de máquina con 32 CPU virtuales o más.
El siguiente comando crea una máquina virtual con 32 CPU virtuales y 24 particiones de SSD locales mediante la interfaz de NVMe:
gcloud compute instances create ssd-test-instance \ --machine-type "n1-standard-32" \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme
Instala la herramienta de
mdadm
. El proceso de instalación demdadm
incluye una solicitud de usuario que detiene las secuencias de comandos, por lo tanto, debes ejecutar este proceso de forma manual.Debian y Ubuntu
sudo apt update && sudo apt install mdadm --no-install-recommends
CentOS y RHEL
sudo yum install mdadm -y
SLES y openSUSE
sudo zypper install -y mdadm
Usa el comando
find
para identificar todos los SSD locales que quieras activar juntos:find /dev/ | grep google-local-nvme-ssd
El resultado es similar al siguiente:
/dev/disk/by-id/google-local-nvme-ssd-23 /dev/disk/by-id/google-local-nvme-ssd-22 /dev/disk/by-id/google-local-nvme-ssd-21 /dev/disk/by-id/google-local-nvme-ssd-20 /dev/disk/by-id/google-local-nvme-ssd-19 /dev/disk/by-id/google-local-nvme-ssd-18 /dev/disk/by-id/google-local-nvme-ssd-17 /dev/disk/by-id/google-local-nvme-ssd-16 /dev/disk/by-id/google-local-nvme-ssd-15 /dev/disk/by-id/google-local-nvme-ssd-14 /dev/disk/by-id/google-local-nvme-ssd-13 /dev/disk/by-id/google-local-nvme-ssd-12 /dev/disk/by-id/google-local-nvme-ssd-11 /dev/disk/by-id/google-local-nvme-ssd-10 /dev/disk/by-id/google-local-nvme-ssd-9 /dev/disk/by-id/google-local-nvme-ssd-8 /dev/disk/by-id/google-local-nvme-ssd-7 /dev/disk/by-id/google-local-nvme-ssd-6 /dev/disk/by-id/google-local-nvme-ssd-5 /dev/disk/by-id/google-local-nvme-ssd-4 /dev/disk/by-id/google-local-nvme-ssd-3 /dev/disk/by-id/google-local-nvme-ssd-2 /dev/disk/by-id/google-local-nvme-ssd-1 /dev/disk/by-id/google-local-nvme-ssd-0
find
no garantiza un orden. Está bien que los dispositivos aparezcan en un orden diferente, siempre y cuando la cantidad de líneas de salida coincida con la cantidad esperada de particiones SSD.Si usas dispositivos SCSI, usa el siguiente comando de
find
:find /dev/ | grep google-local-ssd
Todos los dispositivos NVMe deben tener el formato
google-local-nvme-ssd-#
y los dispositivos SCSI deben tener el formatogoogle-local-ssd-#
.Usa la herramienta de
mdadm
para combinar varios dispositivos SSD locales en un solo array llamado/dev/md0
. En el siguiente ejemplo, se combinan veinticuatro dispositivos SSD locales que usan la interfaz NVMe. Para dispositivos SSD locales que usan SCSI, usa los nombres de dispositivos que muestra el comandofind
en el paso 3.sudo mdadm --create /dev/md0 --level=0 --raid-devices=24 \ /dev/disk/by-id/google-local-nvme-ssd-0 \ /dev/disk/by-id/google-local-nvme-ssd-1 \ /dev/disk/by-id/google-local-nvme-ssd-2 \ /dev/disk/by-id/google-local-nvme-ssd-3 \ /dev/disk/by-id/google-local-nvme-ssd-4 \ /dev/disk/by-id/google-local-nvme-ssd-5 \ /dev/disk/by-id/google-local-nvme-ssd-6 \ /dev/disk/by-id/google-local-nvme-ssd-7 \ /dev/disk/by-id/google-local-nvme-ssd-8 \ /dev/disk/by-id/google-local-nvme-ssd-9 \ /dev/disk/by-id/google-local-nvme-ssd-10 \ /dev/disk/by-id/google-local-nvme-ssd-11 \ /dev/disk/by-id/google-local-nvme-ssd-12 \ /dev/disk/by-id/google-local-nvme-ssd-13 \ /dev/disk/by-id/google-local-nvme-ssd-14 \ /dev/disk/by-id/google-local-nvme-ssd-15 \ /dev/disk/by-id/google-local-nvme-ssd-16 \ /dev/disk/by-id/google-local-nvme-ssd-17 \ /dev/disk/by-id/google-local-nvme-ssd-18 \ /dev/disk/by-id/google-local-nvme-ssd-19 \ /dev/disk/by-id/google-local-nvme-ssd-20 \ /dev/disk/by-id/google-local-nvme-ssd-21 \ /dev/disk/by-id/google-local-nvme-ssd-22 \ /dev/disk/by-id/google-local-nvme-ssd-23
La respuesta es similar al ejemplo a continuación:
mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
Puedes confirmar los detalles del array con
mdadm --detail
. Si agregas la marca--prefer=by-id
, se mostrarán los dispositivos que usan las rutas/dev/disk/by-id
.sudo mdadm --detail --prefer=by-id /dev/md0
El resultado debería ser similar al siguiente para cada dispositivo del array.
... Number Major Minor RaidDevice State 0 259 0 0 active sync /dev/disk/by-id/google-local-nvme-ssd-0 ...
Ejecuta la siguiente secuencia de comandos en tu VM. La secuencia de comandos replica la configuración que se usó para alcanzar las cifras de rendimiento del SSD proporcionadas en la sección sobre rendimiento. Ten en cuenta que el parámetro
--bs
define el tamaño de bloque, que afecta los resultados para los diferentes tipos de operaciones de lectura y escritura.# install tools sudo apt-get -y update sudo apt-get install -y fio util-linux # full write pass - measures write bandwidth with 1M blocksize sudo fio --name=writefile --size=100G --filesize=100G \ --filename=/dev/md0 --bs=1M --nrfiles=1 \ --direct=1 --sync=0 --randrepeat=0 --rw=write --refill_buffers --end_fsync=1 \ --iodepth=200 --ioengine=libaio # rand read - measures max read IOPS with 4k blocks sudo fio --time_based --name=benchmark --size=100G --runtime=30 \ --filename=/dev/md0 --ioengine=libaio --randrepeat=0 \ --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \ --numjobs=32 --rw=randread --blocksize=4k --group_reporting --norandommap # rand write - measures max write IOPS with 4k blocks sudo fio --time_based --name=benchmark --size=100G --runtime=30 \ --filename=/dev/md0 --ioengine=libaio --randrepeat=0 \ --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \ --numjobs=32 --rw=randwrite --blocksize=4k --group_reporting --norandommap
¿Qué sigue?
- Obtén más información sobre los precios de SSD locales.