Cómo ver los detalles de un dispositivo NVMe en Illumos (por ejemplo, SmartOS)

En una máquina con sistema operativo basado en Illumos, como un SmartOS, podemos ver los detalles de un dispositivo NVMe con el comando nvmeadm. Por ejemplo:

[root@tmz1 ~]# nvmeadm list
nvme0: model: Samsung SSD 980 PRO 1TB, serial: S5GXNF0W922518D, FW rev: 5B2QGXA7, NVMe v1.3
  nvme0/1 (c2t002538B931C60571d0): Size = 931.51 GB, Capacity = 931.51 GB, Used = 7.83 GB
nvme1: model: Samsung SSD 980 PRO 1TB, serial: S5GXNF0W920592A, FW rev: 5B2QGXA7, NVMe v1.3
  nvme1/1 (c3t002538B931C5FDEBd0): Size = 931.51 GB, Capacity = 931.51 GB, Used = 7.83 GB

[root@tmz1 ~]# nvmeadm list-logpages nvme0
DEVICE  NAME              SCOPE         FIELDS    DESC
nvme0   error             controller    rae       Error information
nvme0   health            controller,   rae       SMART / Health information
                          namespace
nvme0   firmware          nvm           --        Firmware Slot Information
nvme0   cmdeff            controller    --        commands supported and effects

[root@tmz1 ~]# nvmeadm -v get-logpage nvme0 health
nvme0: SMART/Health Information
  Critical Warnings
    Available Space:                        OK
    Temperature:                            OK
    Device Reliability:                     OK
    Media:                                  OK
    Volatile Memory Backup:                 OK
  Temperature:                              35C
  Available Spare Capacity:                 100%
  Available Spare Threshold:                10%
  Device Life Used:                         0%
  Data Read:                                0GB
  Data Written:                             7GB
  Read Commands:                            27859
  Write Commands:                           42000
  Controller Busy:                          0min
  Power Cycles:                             10
  Power On:                                 11581h
  Unsafe Shutdowns:                         4
  Uncorrectable Media Errors:               0
  Errors Logged:                            0
  Warning Composite Temperature Time:       0min
  Critical Composite Temperature Time:      0min
  Temperature Sensor 1:                     35C
  Temperature Sensor 2:                     47C
  Thermal Management Temp 1 Transition Count: 0
  Thermal Management Temp 2 Transition Count: 0
  Time for Thermal Management Temp 1:       0sec
  Time for Thermal Management Temp 2:       0sec

Se pueden hacer muchas cosas, como un borrado seguro del NVMe, actualizar el firmware. Puedes ver las opciones disponibles revisando el manual con man nvmeadm.

Cómo ver los detalles de la batería de un portátil Linux

En la mayoría de los ordenadores portátiles con Linux se pueden ver detalles de la batería examinando el directorio /sys/class/power_supply/BATT/. Por ejemplo:

root@jcea:/home/jcea# cd /sys/class/power_supply/BATT/
root@jcea:/sys/class/power_supply/BATT# cat charge_full
4261000
root@jcea:/sys/class/power_supply/BATT# cat voltage_now
7850000
root@jcea:/sys/class/power_supply/BATT# cat capacity
98
root@jcea:/sys/class/power_supply/BATT# cat charge_full
4261000
root@jcea:/sys/class/power_supply/BATT# cat charge_full_design
6000000
root@jcea:/sys/class/power_supply/BATT# cat charge_now
4194000

Lo que puedes ver depende de tu versión de Linux y del sistema de gestión de batería de tu portátil.

"piadm" or how to boot SmartOS from the local hard disk

SmartOS is a hypervisor that traditionally boots from a USB device, a CD-ROM/DVD or PXE. That is nice and convenient because you can easily upgrade and even downgrade safely without touching the hard disk, test new versions with no consequences, and you always have a bootable system whatever you do.

But this convenience requires physical access to the hardware or plugging extra devices (USB) into remote hosted machine, usually something you have to pay for as an extra. I overcame those by playing dangerously, as I documented in:

Nice hacks of mine.

Since a couple of years ago, SmartOS has been able to officially install itself and boot from the hard disk. Welcome to the new piadm command.

First, some reading you might find interesting and useful:

Leer más…

Cómo encontrar ficheros duplicados

Guardo muchísimos documentos en PDF y a veces conviene revisar si tengo alguno duplicado. Esto puede serte útil para buscar archivos duplicados en general:

jcea@jcea:~$ sha256sum *.pdf | sort | uniq -d -w 32

Este código calcula el hash SHA256 de los PDF y nos muestra los duplicados. El proceso puede llevar su tiempo si tienes muchos ficheros o son muy largos.

Cómo ver los datos de sincronización de tiempo en un sistema operativo con "systemd"

En entornos Linux que utilicen Systemd es común que el protocolo NTP lo gestione Systemd, así que hay que aprender a plegarse al signo de los tiempos.

Veamos cómo ver detalles de sincronización de tiempo con Systemd:

jcea@jcea:~$ timedatectl status
               Local time: mar 2023-08-22 15:44:17 CET
           Universal time: mar 2023-08-22 14:44:17 UTC
                 RTC time: mar 2023-08-22 14:44:17
                Time zone: Europe/Madrid (CET, +0100)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

jcea@jcea:~$ timedatectl timesync-status
       Server: 2620:2d:4000:1::41 (ntp.ubuntu.com)
Poll interval: 34min 8s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: 4FF33C32
    Precision: 1us (-25)
Root distance: 785us (max: 5s)
       Offset: -48.589ms
        Delay: 31.949ms
       Jitter: 20.555ms
 Packet count: 40
    Frequency: +16,668ppm

How to force a reconfiguration on SmartOS

From time to time we would like to be able to force SmartOS hypervisor to reconfigure again without deleting the complete HardDisk.

It is simple. Just create the following ZFS property in the zones/var dataset: smartdc:factoryreset=yes. Then reboot the SmartOS machine.

If you are curious, check the details in the file /lib/svc/method/fs-joyent. The relevant lines are:

# A machine is reset to its original unsetup state (i.e. a 'factory reset')
# when the smartdc:factoryreset ZFS user property is set on the var dataset.
reset=$(zfs get -H -o value smartdc:factoryreset ${SYS_ZPOOL}/var)
if [ "${reset}" == "yes" ]; then
    destroy_zpools
fi

Cómo cerrar una conexión SSH colgada y otras secuencias de escape SSH

A veces se nos queda una conexión SSH colgada. Esto es típico tras volver de una hibernación o si estamos atravesando un cortafuegos o un NAT con un timeout bajo y la conexión SSH tiene poca actividad.

En esos casos la conexión SSH puede parecer colgada y tenemos que esperar a que la sesión se caiga por timeout SSH.

SSH se puede configurar con un tiempo keepalive corto para mantener el cortafuegos o el NAT contento y, también, para detectar la caída rápidamente tras la vuelta de la hibernación, pero en este artículo vamos a hacerlo de otra manera.

Si estamos en una sesión SSH, podemos pulsar la tecla de línea nueva (la tecla puede etiquetarse como enter, intro o return), luego la virguilla (es decir, ~) y finalmente el signo de interrogación cerrada (es decir, ?). Veremos algo de este estilo:

Supported escape sequences:
 ~.   - terminate connection (and any multiplexed sessions)
 ~B   - send a BREAK to the remote system
 ~C   - open a command line
 ~R   - request rekey
 ~V/v - decrease/increase verbosity (LogLevel)
 ~^Z  - suspend ssh
 ~#   - list forwarded connections
 ~&   - background ssh (when waiting for connections to terminate)
 ~?   - this message
 ~~   - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)

Aquí vemos algunas secuencias de escape interesantes que conviene conocer. Especialmente nos interesa la secuencia ~., que corta la conexión SSH. Obsérvese también que para enviar una virguilla (~) al servidor hay que pulsarla dos veces.

Recuerda que las secuencias de escape de SSH deben teclearse al principio de la línea. Si no funciona, asegúrate de pulsar la tecla enter primero.

Novedades SmartOS de 20221201 a 20230615

Artículos previos:

Lo cierto es que los proyectos SmartOS e Illumos son muy activos y tienen muchísima actividad. Proporcionar un repaso exhaustivo es mucho trabajo para mí, así que me limitaré a detallar lo que me parece más interesante desde un punto de vista personal.

Puedes ver los cambios con detalle en inglés.

Leer más…

Actualización de características en un sistema de ficheros ZFS (20230515)

Este artículo es una continuación de Actualización de características en un sistema de ficheros ZFS (20200528). Lee primero ese texto para saber de qué estoy hablando.

Con el paso del tiempo voy actualizando ZFS y es posible activar características opcionales adicionales. Desde la actualización de 2020 hay novedades:

encryption
project_quota
device_removal
obsolete_counts
zpool_checkpoint
spacemap_v2
allocation_classes
resilver_defer
bookmark_v2

¿Qué hemos activado realmente?

ZFS está bastante bien documentado. Por ejemplo, podemos ver el manual de zpool-features. También podemos ver la web oficial de OpenZFS.

Leer más…