Novedades SmartOS de 20190829 a 20200520
Artículos previos:
Han pasado tres años desde la última actualización, así que haré un poco de resumen y pondré solo lo que me llame más la atención. Tengo mucho de lo que ponerme al día. Puedes ver los cambios con detalle en inglés, pero aquí os doy una versión masticada y resumida en español (la lista no es exhaustiva, hay muchísimo más):
- Mejoras generales:
- Ahora tenemos un fichero /etc/versions/build en la zona global: OS-7979: introduce /etc/versions/build.
- Se añade la función reallocf(3C) por conveniencia y mejor compatibilidad: Feature #11680: want reallocf(3C).
- Como medida de seguridad contra SpectreV2, SmartOS se compila con retpolines. Son bastante parches independientes, aquí uno de ejemplo: Bug #11787: Kernel needs to be built with retpolines.
- cron ahora soporta pasos (steps): Feature #11858: crontab could support /step.
- Varios arreglos en iSCSI y COMSTAR: Bug #11820: upstream Nexenta iSCSI and COMSTAR fixes.
- Bloqueo mutuo: Bug #11039: All zfs/nfs/smb threads in door calls to idle idmap.
- Implementación de O_DIRECTORY: Bug #9965: Want support for O_DIRECTORY.
- Muchísimas mejoras en el comando dis, utilizado para desensamblar código. Por ejemplo, Feature #12369: dis WBNOINVD support.
-
Loader:
- Bug #11935: loader: fix memory corruption bug in vdev_read.
- Aparte de por pantalla, se debería poder interactuar con el Loader a través de los puertos series, por defecto: Bug #12094: loader should be configured for serial console.
- Soporte de tablas de particiones híbridas GPT y PMBR: Feature #11974: loader: add support for hybrid PMBR for GPT partition table.
- Muchas mejoras pequeñas en Loader, así como en la instalación y actualización del sistema de arranque.
-
Virtualización:
- Docker:
-
lx brand:
- Una regresión hacía que los lx brand no montasen el sistema de ficheros virtual /proc/.
- Mejora de compatibilidad: OS-7980: lx getsockopt should return EOPNOTSUPP when TCP options are used with AF_UNIX.
- Mejora de compatibilidad: OS-8056: lx brk should never start at zero.
- Mejora de compatibilidad: OS-8145: Add MemAvailable to lx procfs.
- Se podía tirar el sistema desde una zona lx brand: OS-8141: lx futex called with NULL timeout and FUTEX_WAIT_BITSET|FUTEX_PRIVATE_FLAG set causes panic.
- Soporte de void linux: OS-8156: lx void linux image support.
- Mejora de compatibilidad: OS-8152: lx should return EACCES when SOCK_DGRAM is used with IPPROTO_ICMP.
- Mejora de compatibilidad: OS-8150: lx should not report unlimited for max open files.
- Mejora de compatibilidad: OS-8165: dockerinit should be able to start lx_lockd.
-
bhyve:
- Si se indica un controlador de dispositivo de tarjeta de red por defecto puede perderse y añadir tarjetas virtuales nuevas fallará: OS-7974: bhyve does not persist nic_driver.
- Si una instancia bhyve no tenía una tarjeta de red primaria, la máquina virtual acababa con una configuración de red extraña. Ahora se exige que una instancia con red deba tener una tarjeta de red primaria: OS-7975: bhyve should require exactly one primary nic.
- Bajo ciertas circunstancias, una zona bhyve mal configurada podía tirar el sistema: Bug #11643: panic when detaching vioif.
- Se pueden usar claves para el servidor VNC: OS-8108: Support vnc passwords for BHYVE.
- Sincronización con las mejoras del proyecto bhyve: OS-8117: bhyve upstream sync 2019 Sept.
- Ahora bhyve soporta TRIM: OS-8136: Add DISCARD/TRIM support to bhyve.
- Más compatibilidad con Microsoft Windows: OS-8154: Expose bhyve sectsize property for virtio block devices.
- OS-8158: Support NVMe as device model for bhyve.
- Red:
- Soporte de Intel ixgbe X553: Feature #11879.
- Se sube el rango permitido de MTU de 1500-9000 a 1500-65535: OS-8059: bump maximum MTU.
- Una regresión algo boba ocasionaba una pérdida de rendimiento en el controlador de dispositivo BGE, una tarjeta de red popular: Bug #10152: bge debugging always on.
- Mejor rendimiento en la recepción a través de tarjeta de red agregadas: Feature #11493: aggr needs support for multiple pseudo rx groups.
- Soporte de más tarjetas de red: Feature #12379: e1000g: Need support for Intel I219 v10-v15.
- Más tarjetas de red: Feature #12450: Add support for BCM57765 family devices to bge.
- Bug #12583: Import FreeBSD congestion control updates.
- Mejora de soporte de CPUs:
-
Intel:
- Varias actualizaciones de microcódigo. La maś reciente es: Bug #12732: Update Intel microcode to 20200508.
- Mitigación de CVE-2019-11135, también conocido como TSX Asynchronous Abort: Bug #11967: need TAA mitigation
- Mejoras en la identificación y uso de los diferentes controladores de memoria: Feature #11609: Want modern Intel IMC driver.
-
AMD:
- Soporte de sensores de temperatura en chips AMD más antiguos: Feature #12137: Want AMD temperature sensor for F10h-F16h.
- Mejora de identificación de chips: Feature #11975: Update AMD CPUID for F17 M10,30,70.
- Soporte de más eventos CPC: Feature #12452: Want support for AMD Zen 2 CPC Events.
- Bug #12467: Add support for AMD PPIN.
-
Intel:
-
ZFS:
- Por fin se puede crear en Illumos un ZPOOL con un ashift configurable, sin creer ciegamente al tamaño de sector indicado por el hardware: Feature #11640: add zpool ashift property tunable.
- Se añade soporte TRIM: Feature #1701: ZFS to support UNMAP/TRIM for SSD.
- Debido a algunas regresiones, se desactiva TRIM por defecto, temporalmente: Bug #11714: temporarily disable ZFS TRIM support.
- El error en TRIM se encuentra y se soluciona, pero se mantiene desactivado por defecto hasta ganar más experiencia: Bug #11754: ZoL trim port used wrong offset for sd unmap.
- Finalmente, se activa TRIM por defecto: Bug #1205: re-enable ZFS trim by default.
- Pero no hacía TRIM en dispositivos SATA SSD: Bug #12070.
- Mejoras en el soporte de la contabilidad del espacio usado por los usuarios: Bug #11650: ZFS user accounting fixes.
- Se implementa la funcionalidad Log Spacemap: Bug #11557: Log Spacemap Project.
- Regresión en zpool iostat -v: Bug #11747: zpool iostat -v no longer shows titles for log/bias sections.
- Mejora en la gestión de metaslabs: Bug #11918: metaslab improvements.
- Los discos de recambio (spare) se comprueban de vez en cuando para detectar si hay problemas con ellos antes de que hagan falta y descubramos que no funcionan: Bug #10241: ZFS not detecting faulty spares in a timely manner.
- Mejoras muy considerables de zpool iostat y zpool status. Echa un vistazo al manual, porque vas a encontrar ahí cosas que te van a gustar: Bug #11682: zpool iostat and status improvements.
- Soporte de Direct IO. En realidad no hay mucho que hacer en ZFS, porque la mayoría de las ventajas de activar Direct IO en un sistema de ficheros "normal" son ya inherentes en ZFS. Por tanto, lo que hace este parche es no dar un error si se solicita Direct IO, sin más. Los comentarios del código fuente, no obstante, son bastante interesantes: Bug #12343: Direct IO support.
-
ARC:
- Diversos cambios debidos a añadir cifrado a ZFS han afectado a la generación de estadísticas ARC desde MDB: Bug #12279: ::arc_compression_stats generates errors.
-
RAIDZ:
- Se permite crear un ZPOOL con un RAIDZ con más de 12 discos duros: OS-8002: support for wider raidz1 in disklayout.
-
ZIL:
- Si borras un enlace a un fichero con hardlinks, pueden perderse operaciones tras un reinicio que aplica los cambios del ZIL: Bug #11943 Fix out-of-order ZIL txtype lost on hardlinked files.
- Al reaplicar el ZIL, ciertas condicioes pueden pueden causar la caída del sistema: Bug #11942: Panic on zil/slog replay when TX_REMOVE followed by TX_CREATE.
- Cifrado:
- El sistema se cae si se cambia la clave de un dataset cifrado con datasets hijos no cifrados: Bug #11880: changing encryption key on dataset with unencrypted children triggers VERIFY.
- Cuando el sistema cae y se va a hacer un volcado de memoria a disco, que dicho volcado pueda hacerse cifrado: OS-8085: Support Encrypted Dump.
-
Scrubbing y Resilvering:
- Se soluciona un problema en el que el resilvering no progresaba: OS-7982: disabled resilver_defer feature leads to looping resilvers.
- Bug #12636: Prevent unnecessary resilver restarts.
-
NFS:
- Ciertos errores NFS pueden crear un fichero fantasma: Bug #11675: NFSv4 client: Exclusive create should close the file after setattr failure.
- Pequeña mejora de rendimiento en clientes NFS 4 muy activos: Bug #11749: nfs4_end_*_seqid_sync() should call cv_signal().
- Se subió el número de hilos NFS y resulta que el rendimiento es peor: Bug #12243: too many NFS threads actually hurts performance.
- ¡Por fin!, ¡llevaba esperando esto décadas!: Podemos tener un servidor (no solo un cliente) NFS en una zona que no sea la zona global: Feature #11083: support NFS server in zone.
- En vez de leer zpool history todo de una vez para imprimirlo, leerlo poco a poco para no usar tanta memoria RAM: Bug #12260: Fix zpool history unbounded memory usage.
-
SMB:
- El comando smbadm podía devolver un código de salida de "OK" cuando en realidad ha ocurrido un error: Bug #11603: smbadm has wrong exit code while listing SMB group properties.
- Los nombres de las carpetas compartidas aparecían siempre en minúsculas: Bug #11656: SMB share names appear as all lowercase.
- Respuestas corruptas cuando hay errores: Bug #11806: SMB server sends malformed responses on error.
- Se podían tumbar con facilidad varios servicios SMB. Por ejemplo: Bug #11834: SMB authentication service stops after flood.
- Por poder, se podía tumbar el sistema entero: Bug #11831: SMB kernel panic in smb_user_namecmp during MMC close file.
- Actualización de versión: Bug #11855: Update SMB client to 3.02.
-
USB:
- Si tienes un disco duro USB de más de 2 terabytes, esto te viene bien: Bug #11952: large USB hard disks experience I/O failures.
- Algunos cambios no son públicos. Por ejemplo: TRITON-1910, OS-8167.
- Por supuesto, infinidad de correcciones varias.
Actualización 20221207: Novedades SmartOS de 20200520 a 20221201.