Mostrando entradas con la etiqueta Linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta Linux. Mostrar todas las entradas

martes, 26 de marzo de 2024

Resize ZFS

 If iscsi -> rescan disk after the volume has been increase, for instance sdb

echo 1 >/sys/block/sdb/device/rescan


zpool online -e POOL /dev/sdb  <- Or other device, for instace scsi-... the volume displayed in the zpool list command

zpool list 

Verify status

zpool status POOL


jueves, 28 de diciembre de 2023

Searching shutdown logs

Linux

grep -iva ': starting\|kernel: .*: Power Button\|watching system buttons\|Stopped Cleaning Up\|Started Crash recovery kernel' /var/log/messages /var/log/syslog /var/log/apcupsd* | grep -iw 'recover[a-z]*\|power[a-z]*\|shut[a-z ]*down\|rsyslogd\|ups'


Windows

Event IDDescription
41The system has rebooted without cleanly shutting down first.
1074The system has been shutdown properly by a user or process.
1076Follows after Event ID 6008 and means that the first user with shutdown privileges logged on to the server after an unexpected restart or shutdown and specified the cause.
6005The Event Log service was started. Indicates the system startup.
6006The Event Log service was stopped. Indicates the proper system shutdown.
6008The previous system shutdown was unexpected.
6009The operating system version detected at the system startup.
6013The system uptime in seconds.

PS C:\> Get-EventLog System -Newest 10000 | `
        Where EventId -in 41,1074,1076,6005,6006,6008,6009,6013 | `
        Format-Table TimeGenerated,EventId,UserName,Message -AutoSize -wrapdasd

References



lunes, 24 de enero de 2022

Extender LVM añadiendo espacio a partición física

Nos basamos en que hemos añadido espacio a /dev/sdb y queremos ponerlo en la última partición la 4 que forma parte de nuestro volumen lógico /dev/volumen/logica1

Una vez extendida la partición p.j. con 

 parted -s -a opt /dev/sdb "resizepart 4 100%"

Hacemos

pvresize /dev/sdb4

lvresize -l +100%FREE /dev/volumen/logica1

resize2fs /dev/volumen/logica1





 

lunes, 4 de octubre de 2021

Proxmox backup con iSCSI

En este caso usaremos una cabina synology a la que denominaremos NAS01  y con IP 10.10.10.10:


Configuración inicial:

Discovery y login:

# iscsiadm -m discovery -t st -p 10.10.10.10

10.10.10.10:3260,1 iqn.2000-01.com.synology:NAS01.default-target.669579eed99

# iscsiadm -m node --login

Logging in to [iface: default, target: iqn.2000-01.com.synology:NAS01.default-target.669579eed99, portal: 10.10.10.10,3260]

Login to [iface: default, target: iqn.2000-01.com.synology:NAS01.default-target.669579eed99, portal: 10.10.10.10,3260] successful.

# iscsiadm -m session -o show
tcp: [2] 10.10.10.10:3260,1 iqn.2000-01.com.synology:NAS01.default-target.669579eed99 (non-flash)

#

Localizamos el disco:

# fdisk -l
Disk /dev/sda: xxxxx GiB, xxxx bytes, xxx sectors
Disk model: MODELO
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 370...

Device       Start       End   Sectors   Size Type
/dev/sda1      XXX      XXX   

[...]

Disk /dev/sdb: [...]

[...]

Disk /dev/sdc: 10 TiB, 10995116277760 bytes, 21474836480 sectors
Disk model: Storage
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
#

Creamos el pool ZFS:

# zpool create -f NAS01LUNBCK01 /dev/sdc


# zpool list
NAME            SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
NAS01LUNBCK01  9.98T   106K  9.98T        -         -     0%     0%  1.00x    ONLINE  -
#

Configurar el inicio


ISCSI

# iscsiadm --mode session
tcp: [2] 10.10.10.10:3260,1 iqn.2000-01.com.synology:NAS01.default-target.669579eed99 (non-flash)
# iscsiadm --mode node -T iqn.2000-01.com.synology:NAS01.default-target.669579eed99 -p 10.10.10.10 -o update -n node.startup -v automatic
# iscsiadm --mode node -T iqn.2000-01.com.synology:NAS01.default-target.669579eed99 -p 10.10.10.10 -o update -n node.conn[0].startup -v automatic

ir a /etc/iscsi/iscsid.conf y cambiar manual a automatic:

# To request that the iscsi initd scripts startup a session set to "automatic".
node.startup = automatic
#
# To manually startup the session set to "manual". The default is manual.
#node.startup = manual


ZFS

Localizar path
# systemctl list-units --all --full | grep disk | grep 10.10.10.10 | egrep -v "*part*"
  dev-disk-by\x2dpath-ip\x2d10.10.10.10:3260\x2discsi\x2diqn.2000\x2d01.com.synology:NAS01.default\x2dtarget.669579eed99\x2dlun\x2d1.device          loaded    active   plugged   Storage

crear en /etc/systemd/system la unit zpooliscsi.service y añadir al inicio:

# cat zpooliscsi.service
[Unit]
After=dev-disk-by\x2dpath-ip\x2d10.10.10.10:3260\x2discsi\x2diqn.2000\x2d01.com.synology:NAS01.default\x2dtarget.669579eed99\x2dlun\x2d1.device

[Service]
ExecStart=/usr/sbin/zpool import NAS01LUNBCK01
ExecStartPost=/usr/bin/logger "Inciaiado el Pool ZFS NAS01LUNBCK01"

[Install]
WantedBy=dev-disk-by\x2dpath-ip\x2d10.10.10.10:3260\x2discsi\x2diqn.2000\x2d01.com.synology:NAS01.default\x2dtarget.669579eed99\x2dlun\x2d1.device

#systemctl daemon-reload
# systemctl enable zpooliscsi
Created symlink /etc/systemd/system/dev-disk-by\x2dpath-ip\x2d172.16.250.201:3260\x2discsi\x2diqn.2000\x2d01.com.synology:NAS01.default\x2dtarget.669579eed99\x2dlun\x2d1.device.wants/zpooliscsi.service → /etc/systemd/system/zpooliscsi.service.
# systemctl restart zpooliscsi

Si queremos podemos probar a reiniciar  y comprobar que todo funciona ;)


Forti vpn con openfortivpn en Linux

apt-get install openfortivpn

Crear fichero de configuracion /etc/openfortivpn/config

# config file for openfortivpn, see man openfortivpn(1)
host = hostquesea.tld
port =443
username = usuario
password = clave
persistent = 30

persistent indica que la conexión es permanente y en caso de caida debe reconectarse cada 30 segundos en este caso.

Si usamos un certificado autogenerado nos dará error, pero este mismo error lo aprovechamos para añadir el certificado como seguro a nuestra configuración.

 openfortivpn -c /etc/openfortivpn/config
ERROR:  Gateway certificate validation failed, and the certificate digest in not in the local whitelist. If you trust it, rerun with:
ERROR:      --trusted-cert aaaaaabbbbbcccccccdddddeeeeffffaaaaaa0000111122233334445556a7bcd
ERROR:  or add this line to your config file:
ERROR:      trusted-cert = aaaaaabbbbbcccccccdddddeeeeffffaaaaaa0000111122233334445556a7bcd
ERROR:  Gateway certificate:
ERROR:      subject:
ERROR:          O=Fortinet Ltd.
ERROR:          CN=FortiGate
ERROR:      issuer:
ERROR:          O=Fortinet Ltd.
ERROR:          CN=FortiGate
ERROR:      sha256 digest:
ERROR:          aaaaaabbbbbcccccccdddddeeeeffffaaaaaa0000111122233334445556a7bcd
INFO:   Closed connection to gateway.
ERROR:  Gateway certificate validation failed, and the certificate digest in not in the local whitelist. If you trust it, rerun with:
ERROR:      --trusted-cert aaaaaaabbbbbcccccccdddddeeeeffffaaaaaa0000111122233334445556a7bcd
ERROR:  or add this line to your config file:
ERROR:      trusted-cert = aaaaaabbbbbcccccccdddddeeeeffffaaaaaa0000111122233334445556a7bcd
ERROR:  Gateway certificate:
ERROR:      subject:
ERROR:          O=Fortinet Ltd.
ERROR:          CN=FortiGate
ERROR:      issuer:
ERROR:          O=Fortinet Ltd.
ERROR:          CN=FortiGate
ERROR:      sha256 digest:
ERROR:          aaaaaabbbbbcccccccdddddeeeeffffaaaaaa0000111122233334445556a7bcd
INFO:   Could not log out.

añadimos la  línea para el certificado en el fichero de config

# config file for openfortivpn, see man openfortivpn(1)
host = hostquesea.tld
port =443
username = usuario
password = clave
persistent = 30
trusted-cert = aaaaaabbbbbcccccccdddddeeeeffffaaaaaa0000111122233334445556a7bcd

Para que auto arranque y nos de la salida en el tty7 creamos un fichero de unit para el systemd en lib/systemd/system, en este caso llamado openfortivpn.service

cat openfortivpn.service
[Unit]
Description=Cliente OpenForti VPN 
Wants=network-online.target
After=network.target

[Service]
Type=simple
Environment=EMAIL_ADDR=root
ExecStart=/usr/bin/openfortivpn -c /etc/openfortivpn/config
User=root
Group=root
StandardInput=tty
StandardOutput=tty
TTYPath=/dev/tty7

[Install]
WantedBy=multi-user.target

Recargamos la configuración del gestor systemd activamos y arrancamos el servicio:

systemctl daemon-reload
systemctl enable openfortivpn
systemctl start openfortivpn



jueves, 30 de septiembre de 2021

iSCSI eliminar Linux


Ver interfaces, cerrar sesión y eliminar

iscsiadm -m node --print --interface

iscsiadm -m node -T <iqn> -p <IP>:<PUERTO> -u

iscsiadm -m node -o delete -T <iqn>

Verificar:

iscsiadm -m session


viernes, 15 de septiembre de 2017

Cambiar resolución añadiendo modo de video (con xrandr) en Linux

Vamos a establecer un modo de 1680x1050.

Lo primero calculamos la la Modeline con la utilizada cvt (VESA Coordinated Video Timing)

$cvt 1680 1050
# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync

Luego utilizamos el xrandr para poner nuestro modo deseado

$ xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
$ xrandr --output VGA1 --mode  "1680x1050_60.00"
$ xrandr --output VGA1 --mode "1680x1050_60.00"

Hay que sustituir el VGA1 por el output que corresponda en cada caso, si se hace un xrandr sin nada ya nos lo muestra así como los modos actuales que tiene soportados.

lunes, 28 de agosto de 2017

Empezar a trabajar con .Net Core en Linux Ubuntu

Dado que .Net Core es multiplaforma, vamos a ver cómo podríamos realizar nuestro típico "hola mundo" usando .Net Core en Ubuntu.

Añadimos las claves de Microsoft a nuestro repositorio de claves, para ello hacemos:

wget -qO - https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

Añadimos el repositorio, en este caso para una Ubuntu 17.04
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-zesty-prod zesty main" > /etc/apt/sources.list.d/dotnetdev.list'

Instalamos el .Net
sudo apt-get update
sudo apt-get install dotnet-sdk-2.0.0

Creamos nuestra primera nueva (new) aplicación de tipo consola (console) en C#  (por defecto). Se puede obtener ayuda de comando mediante dotnet hew help:
dotnet new console -o miholamundo

El -o miholamundo especifica el directorio de salida de la aplicación. Si vamos a este directorio podemos ver que nos ha generado lo siguiente:
fran$ ls
miholamundo.csproj  obj  Program.cs

Donde miholamundo.csproj es el fichero de configuración de nuestro proyecto, al uso:
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

</Project>
y el Program.cs, es nuestro primer programa:
using System;

namespace miholamundo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

Para ejecutar basta con que hagamos un donet run dentro del directorio:
fran$ dotnet run
Hello World!

Llegados a este punto, puedo utilizar cualquier editor para modificar el fichero, añadir otros al proyecto, etc., pero voy a aprovechar para instalar en mi entorno el Visual Studio Core, evidentemente también desde paquetes, para ello, antes de nada añadimos el repositorio, actualizamos e instalamos
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt-get update
sudo apt-get install code

Una vez instalado basta con ejecutar code y ya está.

viernes, 15 de julio de 2016

Reenviar correo de root a destinatario externo (Debian con Postfix)

Nota recordatoria, simplemente


vi /etc/aliases

poner la línea root: direccionexterna@loquesea.com


newaliases

 service postfix restart

Probar

echo "hola" |mail -s "prueba" root

lunes, 6 de junio de 2016

Crear LVM con discos GPT - Particiones de más de 2TB

En este caso vamos a crear un LVM  basado en dos discos de 3TB.

Lo primero que debemos hacer es crear las particiones en ambos discos y decirle que van a usarse para LVM, para ello al ser discos de más de 2TB usaremos parted en vez de fdisk y particiones tipo GPT.

Nota: en negrita lo que ponemos, en cursiva lo que va poniendo el sistema. Todos los comandos se han realizado desde el usuario root, se pueden realizar desde cualquier usuario con privilegios para hacer sudo simplemente, como ya sabéis, poniendo sudo delante.


1) Creamos partición para un disco (/dev/sdc en este caso)

#parted /dev/sdc
GNU Parted 3.2
Usando /dev/sdc
¡Bienvenido/a a GNU Parted! Teclee «help» para ver la lista de órdenes.
(parted)
mklabel gpt
Aviso: La etiqueta de disco existente en /dev/sdc se destruirá y todos los datos
en este disco se perderán. ¿Desea continuar?
Sí/Yes/No?
S(parted) unit TB
(parted)
mkpart primary 0 3TB
(parted)
set 1 lvm on
(parted)
print
Modelo: ATA ST3000VX006-1HH1 (scsi)
Disco /dev/sdc: 3,00TB
Tamaño de sector (lógico/físico): 512B/4096B
Tabla de particiones: gpt
Disk Flags:

Numero  Inicio  Fin     Tamaño  Sistema de archivos  Nombre   Banderas
 1      0,00TB  3,00TB  3,00TB                       primary  lvm

(parted)
quit
Información: Puede que sea necesario actualizar /etc/fstab.
#


2) Hacemos lo mismo para /dev/sdb, tal y como se ve:


# parted /dev/sdb print
Modelo: ATA ST3000VX006-1HH1 (scsi)
Disco /dev/sdb: 3001GB
Tamaño de sector (lógico/físico): 512B/4096B
Tabla de particiones: gpt
Disk Flags:

Numero  Inicio  Fin     Tamaño  Sistema de archivos  Nombre   Banderas
 1      1049kB  3001GB  3001GB                       primari  lvm
#


3)Creamos los volúmenes físicos para LVM

#pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created

# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created


Nota: se puede hacer en una sola línea (pvcreate /dev/sdb1 /dev/sdc1) , pero en mi experiencia, si son pocos, prefiero hacerlos de uno en uno.

Si no ha habido ningún problema podemos ver  con pvscan los volúmenes:
# pvscan
  PV /dev/sdc1                      lvm2 [2,73 TiB]
  PV /dev/sdb1                      lvm2 [2,73 TiB]
  Total: 2 [5,46 TiB] / in use: 0 [0   ] / in no VG: 2 [5,46 TiB
]

Con pvdisplay podemos ver la información en más detalle para cada volumen.
# pvdisplay
  "/dev/sdc1" is a new physical volume of "2,73 TiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name
  PV Size               2,73 TiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               MoApzg-ZxNp-vecS-DOw0-dmnK-H1W9-JCTkGV

  "/dev/sdb1" is a new physical volume of "2,73 TiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name
  PV Size               2,73 TiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               c2iEmj-1igD-tlXM-vmtR-dmqw-VDUf-Eck7b7

4) Creamos el volume group, que como sabemos no es más que un pool de almacenamiento que consiste en uno o varios discos. En nuestro caso hacemos:
# vgcreate vgzm_data /dev/sdb1 /dev/sdc1
  Volume group "vgzm_data" successfully created

El parámetro zm_data no es más que el nombre que yo le he puesto a este volumen, que en vuestro caso puede llamarse como queráis.

LVM procesa el almacenamiento en unidades llamadas extents (en el momento de crear está entrada por defecto eran de 4MB). Podéis cambiar este tamaño por defecto cuando se hace el vgcreate con el parámetro -s  (tal y como pone en la página del manual   -s Tamaño [kKmMgGtT] ).

Podemos ver con vgdisplay nuestro nuevo volumen:
 # vgdisplay
  --- Volume group ---
  VG Name               vgzm_data
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               5,46 TiB
  PE Size               4,00 MiB
  Total PE              1430792
  Alloc PE / Size       0 / 0
  Free  PE / Size       1430792 / 5,46 TiB
  VG UUID               8yhV48-Tm0j-TNEF-i8tC-S7vZ-VI1J-rFJhFW



5) Finalmente creamos el volumen lógico. En mis caso lo voy a crear al máximo de capacidad, ya que este VG sólo se va a usar para un fin y lo que necesito es que se puedan añadir más discos a futuro si es necesario.

# lvcreate -l 100%FREE -n zm_data vgzm_data
  Logical volume "zm_data" created.


Aunque los parámetros están claros, quizás el -l sea el más confuso que es la longitud en extends, en la que se puede poner un entero o un porcentaje de, en este caso el espacio vacío que queda (man lvcreate para más info).
Con lvdisplay ya podemos ver nuestro nuevo volumen lógico.

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vgzm_data/zm_data
  LV Name                zm_data
  VG Name                vgzm_data
  LV UUID                XBD7IP-21M9-49Ad-RDeu-OoXN-dL0Y-yudhiu
  LV Write Access        read/write
  LV Creation host, time srvcam, 2016-06-06 14:24:21 +0200
  LV Status              available
  # open                 0
  LV Size                5,46 TiB
  Current LE             1430792
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

 Si observáis el vgdisplay, veréis que en Free PE ahora pone 0, mientras antes ponía la cantidad de extends / espacio disponible sin usar en ningún volumen, al contrario que los usados Alloc PE:

 #vgdisplay
  --- Volume group ---
  VG Name               vgzm_data
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               5,46 TiB
  PE Size               4,00 MiB
  Total PE              1430792
  Alloc PE / Size       1430792 / 5,46 TiB
  Free  PE / Size       0 / 0
  VG UUID               8yhV48-Tm0j-TNEF-i8tC-S7vZ-VI1J-rFJhFW

6) Formatear y usar

# mkfs.ext4 /dev/vgzm_data/zm_data
mke2fs 1.42.13 (17-May-2015)
Se está creando un sistema de ficheros con 1465131008 bloques de 4k y 183144448 nodos-i
UUID del sistema de ficheros: 41323ea1-7512-41d7-b219-51502d57dc6f
Respaldo del superbloque guardado en los bloques:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544

Reservando las tablas de grupo: hecho
Escribiendo las tablas de nodos-i: hecho
Creando el fichero de transacciones (32768 bloques): hecho
Escribiendo superbloques y la información contable del sistema de ficheros: hecho








Y ya lo usáis donde queráis.
# mount /dev/vgzm_data/zm_data /mnt 
# df -h
S.ficheros                    Tamaño Usados  Disp Uso% Montado en
/dev/mapper/vgzm_data-zm_data   5,5T    58M  5,2T   1% /mnt
#



martes, 12 de enero de 2016

Añadir claves que faltan a APT de Debian

Por ejemplo en un apt-update nos da al final...


Leyendo lista de paquetes... Hecho
W: GPG error: http://ftp.de.debian.org lenny Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY AED4B06F473041FA NO_PUBKEY 4D270D06F42584E6


Dos posibilidades:

1) bajarlas del keyserver

gpg --keyserver pgpkeys.mit.edu --recv-key 4D270D06F42584E6
gpg -a --export 4D270D06F42584E6 |sudo apt-key add
gpg --keyserver pgpkeys.mit.edu --recv-key AED4B06F473041FA
gpg -a --export AED4B06F473041FA |sudo apt-key add -

o 2) usar los paquetes keyring de debían

sudo apt-get install debian-keyring
sudo apt-get install debian-archive-keyring


Y listo, ya nos sacamos el error del medio

miércoles, 11 de noviembre de 2009

Error de compilación de vmwaretools 4 en ubuntu

Si al compilar las vmware en ubuntu pone que no soporta el gcc, probar a cambiar las locales y volver a iniciar sesión y compilar de nuevo.

en /etc/default/locales cambiar el LANG a en_US.UTF-8

Reiniciar sesión y probar a compilar ahora...

Hay que ver que cosa

L2TP Ipsec Windows to Mikrotik eror 789

 Add this to registry REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d...