# Hardware El trabajo con el hardware también es necesario y configurable. # Conocer el hardware en linea de comandos (shell) # Comandos para identificar hardware y configuraciones especificas ## Hardware ### Información procesador ``` # grep 'vendor_id' /proc/cpuinfo ; grep 'model name' /proc/cpuinfo ; grep 'cpu MHz' /proc/cpuinfo vendor_id : GenuineIntel vendor_id : GenuineIntel vendor_id : GenuineIntel vendor_id : GenuineIntel vendor_id : GenuineIntel vendor_id : GenuineIntel vendor_id : GenuineIntel vendor_id : GenuineIntel vendor_id : GenuineIntel vendor_id : GenuineIntel vendor_id : GenuineIntel vendor_id : GenuineIntel model name : Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz model name : Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz model name : Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz model name : Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz model name : Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz model name : Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz model name : Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz model name : Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz model name : Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz model name : Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz model name : Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz model name : Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz cpu MHz : 848.767 cpu MHz : 950.482 cpu MHz : 800.024 cpu MHz : 869.512 cpu MHz : 823.590 cpu MHz : 800.024 cpu MHz : 799.822 cpu MHz : 851.184 cpu MHz : 802.642 cpu MHz : 1182.916 cpu MHz : 1121.081 cpu MHz : 802.441 ``` ### Marca procesador Si el procesdor es intel el comando de abajo devolvera algo ``` # grep -i vmx /proc/cpuinfo ``` Si el procesador es AMD el comnado de abjo devolverá algo ``` # grep -i svm /proc/cpuinfo ``` ### Discos duros #### lsblk (info particiones) ``` lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 3,7T 0 disk ├─sda1 8:1 0 511M 0 part /boot/efi ├─sda2 8:2 0 50G 0 part │ └─md2 9:2 0 50G 0 raid1 / ├─sda3 8:3 0 511M 0 part [SWAP] ├─sda4 8:4 0 1000G 0 part │ └─md4 9:4 0 1000G 0 raid1 /var └─sda5 8:5 0 2,6T 0 part └─md5 9:5 0 2,6T 0 raid1 /home sdb 8:16 0 3,7T 0 disk ├─sdb1 8:17 0 511M 0 part ├─sdb2 8:18 0 50G 0 part │ └─md2 9:2 0 50G 0 raid1 / ├─sdb3 8:19 0 511M 0 part [SWAP] ├─sdb4 8:20 0 1000G 0 part │ └─md4 9:4 0 1000G 0 raid1 /var └─sdb5 8:21 0 2,6T 0 part └─md5 9:5 0 2,6T 0 raid1 /home loop0 7:0 0 2,2G 0 loop /var/tmp ``` #### Discos duros (Atributos) ``` # blkid /dev/md4: LABEL="/var" UUID="bfa920a1-48e4-4d4e-ad9a-1f5289ec630e" TYPE="ext4" /dev/sdb4: UUID="0ceedb71-9478-ba95-a4d2-adc226fd5302" TYPE="linux_raid_member" PARTLABEL="logical" PARTUUID="9ba975e1-1b14-49d3-8971-b936e8d5e4e4" /dev/sda4: UUID="0ceedb71-9478-ba95-a4d2-adc226fd5302" TYPE="linux_raid_member" PARTLABEL="logical" PARTUUID="66b5b2c5-7be1-49e5-a792-9f87e2f7b4f5" /dev/sda1: LABEL="EFI_SYSPART" UUID="42B6-5CF2" TYPE="vfat" PARTLABEL="primary" PARTUUID="da4d4fc9-d837-41d9-a107-e742798f9335" /dev/sda2: UUID="facf2df2-7b51-d62e-a4d2-adc226fd5302" TYPE="linux_raid_member" PARTLABEL="primary" PARTUUID="d9d59890-5495-4d5c-b1a1-9c7cb06ea760" /dev/sda3: LABEL="swap-sda3" UUID="b3455011-b526-4882-9103-53aea1ba8861" TYPE="swap" PARTLABEL="primary" PARTUUID="b5bd8cbf-6bd4-484d-a66f-95e026322fe3" /dev/sda5: UUID="8841cb2a-ce20-324b-a4d2-adc226fd5302" TYPE="linux_raid_member" PARTLABEL="logical" PARTUUID="0a0c4007-1aa6-4bbd-8c94-b059e5e47a0e" /dev/sdb1: LABEL="EFI_SYSPART" UUID="42EC-11F4" TYPE="vfat" PARTLABEL="primary" PARTUUID="96828372-cc5c-4f44-bfc4-0758c394b1bb" /dev/sdb2: UUID="facf2df2-7b51-d62e-a4d2-adc226fd5302" TYPE="linux_raid_member" PARTLABEL="primary" PARTUUID="ea54dfc3-e5c8-4436-be12-9515d1f1f0f1" /dev/sdb3: LABEL="swap-sdb3" UUID="7bf2c3e0-e995-4dbf-9edf-de91db5cc4e0" TYPE="swap" PARTLABEL="primary" PARTUUID="0581737a-20c0-44b7-957c-6190b583f1af" /dev/sdb5: UUID="8841cb2a-ce20-324b-a4d2-adc226fd5302" TYPE="linux_raid_member" PARTLABEL="logical" PARTUUID="c02afe0d-c242-4dd9-8ec7-77ecd90e510b" /dev/md2: LABEL="/" UUID="424a9e66-51b2-4947-97b2-0d632d79a97f" TYPE="ext4" /dev/md5: LABEL="/home" UUID="0de14a77-8d9e-4f25-9c1b-bec542d45f22" TYPE="ext4" /dev/loop0: UUID="8fa0ffb8-aaa1-4321-9d4f-d55a9b021bcc" TYPE="ext3" ``` #### Estado solido o mecánico Devuelve 0 por SSD y 1 por discos mencánicos ``` cat /sys/block/sda/queue/rotational ``` #### Discos NVMe Necesitamos ewl paquete (Ubuntu) nmve-cli para comprobar discos de tipo NVMe ``` # nvme list Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 S439NE0N101969 SAMSUNG MZQLB1T9HAJR-00007 1 958.95 GB / 1.92 TB 512 B + 0 B EDA5202Q /dev/nvme1n1 S439NE0N101968 SAMSUNG MZQLB1T9HAJR-00007 1 1.69 TB / 1.92 TB 512 B + 0 B EDA5202Q ``` #### Discos duros (hdparam) El comando hdparm puede que no este instalado en tu distribución. ``` yum install hdparm -y ``` ``` # hdparm -I /dev/sda /dev/sda: ATA device, with non-removable media Model Number: HGST HUS726040ALA610 Serial Number: N8GNY2YY Firmware Revision: A5GNT920 Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0; Revision: ATA8-AST T13 Project D1697 Revision 0b Standards: Used: unknown (minor revision code 0x0029) Supported: 9 8 7 6 5 Likely used: 9 Configuration: Logical max current cylinders 16383 16383 heads 16 16 sectors/track 63 63 -- CHS current addressable sectors: 16514064 LBA user addressable sectors: 268435455 LBA48 user addressable sectors: 7814037168 Logical Sector size: 512 bytes Physical Sector size: 512 bytes device size with M = 1024*1024: 3815447 MBytes device size with M = 1000*1000: 4000787 MBytes (4000 GB) cache/buffer size = unknown Form Factor: 3.5 inch Nominal Media Rotation Rate: 7200 Capabilities: LBA, IORDY(can be disabled) Queue depth: 32 Standby timer values: spec'd by Standard, no device specific minimum R/W multiple sector transfer: Max = 16 Current = 16 Advanced power management level: 254 DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 Cycle time: min=120ns recommended=120ns PIO: pio0 pio1 pio2 pio3 pio4 Cycle time: no flow control=120ns IORDY flow control=120ns Commands/features: Enabled Supported: * SMART feature set Security Mode feature set * Power Management feature set * Write cache * Look-ahead * Host Protected Area feature set * WRITE_BUFFER command * READ_BUFFER command * NOP cmd * DOWNLOAD_MICROCODE * Advanced Power Management feature set Power-Up In Standby feature set * SET_FEATURES required to spinup after power up SET_MAX security extension * 48-bit Address feature set * Device Configuration Overlay feature set * Mandatory FLUSH_CACHE * FLUSH_CACHE_EXT * SMART error logging * SMART self-test * Media Card Pass-Through * General Purpose Logging feature set * WRITE_{DMA|MULTIPLE}_FUA_EXT * 64-bit World wide name * URG for READ_STREAM[_DMA]_EXT * URG for WRITE_STREAM[_DMA]_EXT * WRITE_UNCORRECTABLE_EXT command * {READ,WRITE}_DMA_EXT_GPL commands * Segmented DOWNLOAD_MICROCODE * unknown 119[6] unknown 119[7] * Gen1 signaling speed (1.5Gb/s) * Gen2 signaling speed (3.0Gb/s) * Gen3 signaling speed (6.0Gb/s) * Native Command Queueing (NCQ) * Host-initiated interface power management * Phy event counters * NCQ priority information * unknown 76[15] Non-Zero buffer offsets in DMA Setup FIS * DMA Setup Auto-Activate optimization Device-initiated interface power management In-order data delivery * Software settings preservation unknown 78[7] unknown 78[10] unknown 78[11] * SMART Command Transport (SCT) feature set * SCT Write Same (AC2) * SCT Error Recovery Control (AC3) * SCT Features Control (AC4) * SCT Data Tables (AC5) * reserved 69[3] * reserved 69[4] * WRITE BUFFER DMA command * READ BUFFER DMA command Security: Master password revision code = 65534 supported not enabled not locked not frozen not expired: security count not supported: enhanced erase Logical Unit WWN Device Identifier: 5000cca244c984a4 NAA : 5 IEEE OUI : 000cca Unique ID : 244c984a4 Checksum: correct ``` ### lshw ``` lshw -class disk -class storage *-sata description: SATA controller product: Cannon Lake PCH SATA AHCI Controller vendor: Intel Corporation physical id: 17 bus info: pci@0000:00:17.0 logical name: scsi0 logical name: scsi1 version: 10 width: 32 bits clock: 66MHz capabilities: sata msi pm ahci_1.0 bus_master cap_list emulated configuration: driver=ahci latency=0 resources: irq:125 memory:91200000-91201fff memory:91203000-912030ff ioport:4050(size=8) ioport:4040(size=4) ioport:4020(size=32) memory:91202000-912027ff *-disk:0 description: ATA Disk product: HGST HUS726040AL physical id: 0 bus info: scsi@0:0.0.0 logical name: /dev/sda version: T920 serial: N8GNY2YY size: 3726GiB (4TB) capabilities: gpt-1.00 partitioned partitioned:gpt configuration: ansiversion=5 guid=9aa4231a-644b-40c9-9105-0e980dbeeeaa logicalsectorsize=512 sectorsize=512 *-disk:1 description: ATA Disk product: HGST HUS726040AL physical id: 1 bus info: scsi@1:0.0.0 logical name: /dev/sdb version: T920 serial: K4KRJ0KB size: 3726GiB (4TB) capabilities: gpt-1.00 partitioned partitioned:gpt configuration: ansiversion=5 guid=2c1a29d1-8bb6-4d02-9990-b9f2fb7b3414 logicalsectorsize=512 sectorsize=512 ``` ``` # lshw -short -C disk H/W path Device Class Description ==================================================== /0/100/17/0 /dev/sda disk 4TB HGST HUS726040AL /0/100/17/1 /dev/sdb disk 4TB HGST HUS726040AL ``` ### smartctl Importante para ver el estado de tus discos. Sobre todo cuando compras o alquilas hardware ``` smartctl -d ata -a -i /dev/sda smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-962.3.2.lve1.5.49.el7.x86_64] (local build) Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Model Family: HGST Ultrastar 7K6000 Device Model: HGST HUS726040ALA610 Serial Number: N8GNY2YY LU WWN Device Id: 5 000cca 244c984a4 Firmware Version: A5GNT920 User Capacity: 4.000.787.030.016 bytes [4,00 TB] Sector Size: 512 bytes logical/physical Rotation Rate: 7200 rpm Form Factor: 3.5 inches Device is: In smartctl database [for details use: -P show] ATA Version is: ACS-2, ATA8-ACS T13/1699-D revision 4 SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s) Local Time is: Sun May 16 17:57:14 2021 CEST SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED General SMART Values: Offline data collection status: (0x84) Offline data collection activity was suspended by an interrupting command from host. Auto Offline Data Collection: Enabled. Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run. Total time to complete Offline data collection: ( 113) seconds. Offline data collection capabilities: (0x5b) SMART execute Offline immediate. Auto Offline data collection on/off support. Suspend Offline collection upon new command. Offline surface scan supported. Self-test supported. No Conveyance Self-test supported. Selective Self-test supported. SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode. Supports SMART auto save timer. Error logging capability: (0x01) Error logging supported. General Purpose Logging supported. Short self-test routine recommended polling time: ( 2) minutes. Extended self-test routine recommended polling time: ( 571) minutes. SCT capabilities: (0x003d) SCT Status supported. SCT Error Recovery Control supported. SCT Feature Control supported. SCT Data Table supported. SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000b 100 100 016 Pre-fail Always - 0 2 Throughput_Performance 0x0005 135 135 054 Pre-fail Offline - 112 3 Spin_Up_Time 0x0007 184 184 024 Pre-fail Always - 265 (Average 315) 4 Start_Stop_Count 0x0012 100 100 000 Old_age Always - 80 5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0 7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0 8 Seek_Time_Performance 0x0005 128 128 020 Pre-fail Offline - 18 9 Power_On_Hours 0x0012 097 097 000 Old_age Always - 27686 10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 75 192 Power-Off_Retract_Count 0x0032 080 080 000 Old_age Always - 24197 193 Load_Cycle_Count 0x0012 080 080 000 Old_age Always - 24197 194 Temperature_Celsius 0x0002 162 162 000 Old_age Always - 37 (Min/Max 19/52) 196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0 197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0 SMART Error Log Version: 1 No Errors Logged SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Short offline Completed without error 00% 26073 - # 2 Short offline Completed without error 00% 26058 - # 3 Short offline Completed without error 00% 26058 - # 4 Short offline Completed without error 00% 16865 - # 5 Short offline Completed without error 00% 16850 - # 6 Short offline Completed without error 00% 16850 - # 7 Short offline Completed without error 00% 15329 - # 8 Short offline Completed without error 00% 15314 - # 9 Short offline Completed without error 00% 15314 - #10 Short offline Completed without error 00% 15288 - #11 Short offline Completed without error 00% 15278 - #12 Short offline Completed without error 00% 15264 - #13 Short offline Completed without error 00% 15264 - #14 Short offline Completed without error 00% 15249 - #15 Short offline Completed without error 00% 15249 - #16 Short offline Completed without error 00% 15099 - #17 Short offline Completed without error 00% 29 - #18 Short offline Completed without error 00% 23 - #19 Short offline Completed without error 00% 23 - #20 Short offline Completed without error 00% 2 - SMART Selective self-test log data structure revision number 1 SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS 1 0 0 Not_testing 2 0 0 Not_testing 3 0 0 Not_testing 4 0 0 Not_testing 5 0 0 Not_testing Selective self-test flags (0x0): After scanning selected spans, do NOT read-scan remainder of disk. If Selective self-test is pending on power-up, resume after 0 minute delay. ``` #### Estado del RAID pro software ``` cat /proc/mdstat Personalities : [raid1] md5 : active raid1 sda5[0] sdb5[1] 2804960192 blocks [2/2] [UU] bitmap: 12/21 pages [48KB], 65536KB chunk md4 : active raid1 sdb4[1] sda4[0] 1048573888 blocks [2/2] [UU] bitmap: 4/8 pages [16KB], 65536KB chunk md2 : active raid1 sdb2[1] sda2[0] 52427712 blocks [2/2] [UU] ``` ### Hardware información general #### Hardware información general resumida ``` # lshw -short H/W path Device Class Description ==================================================== system To Be Filled By O.E.M. (To Be Filled By O.E.M.) /0 bus E3C242D4U2-2T /0/0 memory 64KiB BIOS /0/9 memory 32GiB System Memory /0/9/0 memory 16GiB DIMM DDR4 Synchronous 2666 MHz (0,4 ns) /0/9/1 memory DIMM [empty] /0/9/2 memory 16GiB DIMM DDR4 Synchronous 2666 MHz (0,4 ns) /0/9/3 memory DIMM [empty] /0/14 memory 384KiB L1 cache /0/15 memory 1536KiB L2 cache /0/16 memory 12MiB L3 cache /0/17 processor Intel(R) Xeon(R) E-2136 CPU @ 3.30GHz /0/100 bridge 8th Gen Core Processor Host Bridge/DRAM Registers /0/100/8 generic Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model /0/100/12 generic Cannon Lake PCH Thermal Controller /0/100/14 bus Cannon Lake PCH USB 3.1 xHCI Host Controller /0/100/14/0 usb1 bus xHCI Host Controller /0/100/14/1 usb2 bus xHCI Host Controller /0/100/14.2 memory RAM memory /0/100/15 bus Cannon Lake PCH Serial IO I2C Controller #0 /0/100/15.1 bus Cannon Lake PCH Serial IO I2C Controller #1 /0/100/16 communication Cannon Lake PCH HECI Controller /0/100/16.4 communication Cannon Lake PCH HECI Controller #2 /0/100/17 scsi0 storage Cannon Lake PCH SATA AHCI Controller /0/100/17/0 /dev/sda disk 4TB HGST HUS726040AL /0/100/17/0/1 /dev/sda1 volume 510MiB Windows FAT volume /0/100/17/0/2 /dev/sda2 volume 49GiB EXT4 volume /0/100/17/0/3 /dev/sda3 volume 510MiB Linux swap volume /0/100/17/0/4 /dev/sda4 volume 999GiB EXT4 volume /0/100/17/0/5 /dev/sda5 volume 2675GiB EXT4 volume /0/100/17/1 /dev/sdb disk 4TB HGST HUS726040AL /0/100/17/1/1 /dev/sdb1 volume 510MiB Windows FAT volume /0/100/17/1/2 /dev/sdb2 volume 49GiB EXT4 volume /0/100/17/1/3 /dev/sdb3 volume 510MiB Linux swap volume /0/100/17/1/4 /dev/sdb4 volume 999GiB EXT4 volume /0/100/17/1/5 /dev/sdb5 volume 2675GiB EXT4 volume /0/100/1b bridge Cannon Lake PCH PCI Express Root Port #21 /0/100/1b/0 eth0 network Ethernet Controller 10G X550T /0/100/1b/0.1 eth1 network Ethernet Controller 10G X550T /0/100/1c bridge Cannon Lake PCH PCI Express Root Port #1 /0/100/1c/0 bridge AST1150 PCI-to-PCI Bridge /0/100/1c/0/0 display ASPEED Graphics Family /0/100/1d bridge Cannon Lake PCH PCI Express Root Port #9 /0/100/1e communication Cannon Lake PCH Serial IO UART Host Controller /0/100/1f bridge Intel Corporation /0/100/1f.4 bus Cannon Lake PCH SMBus Controller /0/100/1f.5 bus Cannon Lake PCH SPI Controller /0/1 system PnP device PNP0c02 /0/2 system PnP device PNP0c02 /0/3 communication PnP device PNP0501 /0/4 communication PnP device PNP0501 /0/5 system PnP device PNP0c02 /0/6 generic PnP device INT3f0d /0/7 system PnP device PNP0c02 /0/8 system PnP device PNP0c02 /0/a system PnP device PNP0c02 /0/b system PnP device PNP0c02 ``` #### Hardware información general detallada ``` # lshw | less ``` ### MegaCli MegaCli es una herramienta especifica de la familia de controladoras **LSI MegaRaid** Auqne muchos manuales idtentifican los caomando unas veces en minusculas, otros con alternacia de mayúsculas y minúsculas, lo qmejor es crear un alias, apuntado al que corresponda. Si te falla alguna información en al gun tip, que ves por internet esa es la razón. En mi caso uso MegaCli ya que hice en su día `ln -s /usr/sbin/megacli MegaCli` #### Conocer el estado de la controladora ``` root@pro02:~# MegaCli -EncInfo -aALL Number of enclosures on adapter 0 -- 1 Enclosure 0: Device ID : 252 Number of Slots : 8 Number of Power Supplies : 0 Number of Fans : 0 Number of Temperature Sensors : 0 Number of Alarms : 0 Number of SIM Modules : 1 Number of Physical Drives : 8 Status : Normal Position : 1 Connector Name : Unavailable Enclosure type : SGPIO FRU Part Number : N/A Enclosure Serial Number : N/A ESM Serial Number : N/A Enclosure Zoning Mode : N/A Partner Device Id : Unavailable Inquiry data : Vendor Identification : AVAGO Product Identification : SGPIO Product Revision Level : N/A Vendor Specific : Exit Code: 0x00 ``` ## Sistema ### Arquitectura lshw no tiene porque estar disponible en tu distribucion. Si es asi instalalo o busca alternativa. ``` # sudo lshw -C CPU | grep width width: 64 bits ``` ### Enlaces y agradecimientos - [How to find out Hard Disk Specks /Deatis on Linux](https://www.cyberciti.biz/faq/find-hard-disk-hardware-specs-on-linux/) - [Using NVMe Command Line Tools to Check NVMe Flash Health](https://www.percona.com/blog/2017/02/09/using-nvme-command-line-tools-to-check-nvme-flash-health/) ##### Aviso Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de [Castris](https://castris.com) Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/cart.php?gid=18). # Uso de UUID para montar particiones linux ## Introducción El UUID ([Identificador único universal](https://es.wikipedia.org/wiki/Identificador_%C3%BAnico_universal)) es un identificador estandarizado usado en el desarrollo del software por la OSF (Open Software Foundation) y es parte del Entorno de Distribución de Software (DCE). El objetivo del uso del UUID es permitir que los sistemas distribuidos identifiquen de manera única y sin una coordinación central los elementos de hardware y software. Cualquier administrador puede crear un UUID y usarlo para identificar algo con confianza razonable que nadie involuntariamente usará el mismo identificador en otros elemento o dispositivo. ### Beneficios del uso de UUID Su uso es especialmente útil, en un entorno personal, para asignar por ejemplo, el montaje de discos externos o internos, sin temor a que por razones del hardware, la asignación numérica habitual, haga fracasar el montaje de discos, cuando añadimos o eliminamos algún dispositivo nuevo. Dispositivos, SAN, iSCSI, DAS, volúmenes externos, son los mejores candidatos para el uso de UUID en el fichero `fstab`. ### Comando blkid el sustituto de vol_id Muchos de los tutoriales se han quedado obsoletos, ya que hacen uso del comando `vol_id` sustituido por `blkid` ``` sudo vol_id --uuid /dev/sdb2 sudo: vol_id: orden no encontrada ``` En su lugar podemos usar blkid ``` ❯ sudo blkid /dev/nvme0n1p1: UUID="9047-9E81" TYPE="vfat" PARTUUID="cb856993-8dff-48f8-8646-0a4f333d2e7a" /dev/nvme0n1p2: UUID="dcV8h8-Ie6y-9yey-5RUE-YfPP-E0ra-fZAXSy" TYPE="LVM2_member" PARTUUID="d7a787ab-2143-46c5-b2aa-e46941a9210d" /dev/sda1: UUID="8aa6c0d2-c18e-4606-b1da-f5f1f7617f00" TYPE="xfs" PARTLABEL="backup3t" PARTUUID="f6b13129-366f-4d3c-8b79-05514ebcaff5" /dev/sdb1: LABEL="ssd" UUID="297ddd6c-f224-4385-8f89-e44f4a6912f3" TYPE="ext4" PARTUUID="57b4c3da-5bde-4a2f-83d5-fa43c13b63cb" /dev/mapper/kubuntu--vg-root: UUID="3c55b16d-1ad7-4ced-a552-874cc97ba0d3" TYPE="ext4" /dev/mapper/kubuntu--vg-swap_1: UUID="f6655751-5635-4acb-9ba6-5d3530aace9d" TYPE="swap ❯ sudo blkid /dev/nvme0n1p1 /dev/nvme0n1p1: UUID="9047-9E81" TYPE="vfat" PARTUUID="cb856993-8dff-48f8-8646-0a4f333d2e7a" ❯ sudo blkid /dev/sda1 /dev/sda1: UUID="8aa6c0d2-c18e-4606-b1da-f5f1f7617f00" TYPE="xfs" PARTLABEL="backup3t" PARTUUID="f6b13129-366f-4d3c-8b79-05514ebcaff5" ``` ### Uso de UUID en el fichero /etc/fstab Sintaxis ``` UUID={YOUR-UID} {/path/to/mount/point} {file-system-type} defaults,errors=remount-ro 0 1 ``` Ejemplo para discos XFS Editamos el fichero `/etc/fstab` para que contenga el punto de montaje ``` ❯ sudo cat /etc/fstab | grep 8aa6 UUID=8aa6c0d2-c18e-4606-b1da-f5f1f7617f00 /backups xfs rw,noquota,nofail 0 1 ``` #### Comprobar ``` ❯ sudo mount -a ❯ df -h |grep backups /dev/sda1 2,8T 1,2T 1,6T 43% /backups ``` > Yo uso habitualmente XFS ya que estoy más especializado en sistemas de backup y correo, donde el número de ficheros es mucho más elevado que otros, por lo que el uso de inodos es importante. XFS me permite un mayor control y calidad que ext4 para este tipo de sistemas. Por eso necesito usar `noquota,nofail`en lugar de la sintaxis común de ext4 #### Enlaces - [What is the difference between 'nobootwait' and 'nofail' in fstab?](https://unix.stackexchange.com/questions/53456/what-is-the-difference-between-nobootwait-and-nofail-in-fstab) - [Debian fstab](https://wiki.debian.org/fstab) - [Arch Linux Fstab](https://wiki.archlinux.org/title/Fstab) ##### Aviso Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de [Castris](https://castris.com) Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/cart.php?gid=18). # Instalación GPT con el instalador Centos 7 en discos < 2 TiB # Introducción Uno de los problemas comunes en la generación de templates e incluso en algunas instalaciones, es el uso del obsoleto MBR. **MBR** es anticuado, y además presenta problemas en el caso de que en entornos virtuales, tengamos que hacer una ampliación de disco mayor de 2TiB. La eficiacia de **GPT** es muy superior y recomendable. Además si algun día nuestro disco quiere crecer por encima de los 2 TiB, ya no lo podrá hacer con MBR. **Anaconda** que es el sistema de Centos 7 para particionar el disco, hará lo siguiente: - Si el disco ya está formateado, respetará el esquema de partición. - Si el disco tiene más de 2 32 sectores (2 Tib) usará GPT - Si el disco es de menor tamaño usará MBR. ## Instalar Centos 7 con tabla de particiones GPT ### Aviso Si bien existen algunos artículos sobre cómo convertir una partición con esquema MBR a GPT, esto no es recomendable, ya que GPT sólo es válido en sistemas compatibles con **UEFI**, y por tanto requiere una partición EFI `/boot/efi` de al menos 50 MiB (recomendado 200 MiB) y aunque podemos hacerlo mejor comenzar bien desde el principio. ### Discos menores de 2TiB Al mostrarse el instalador, debemos pulsar Tab para poder añadir a la linea de arranque `inst.gpt` lo cual de forma silenciosa, hará que **anaconda** realice la instalación usando el esquema de particiones GPT. ![AnaCONDA- Instalador Centos](https://multimedia.castris.com/imagenes/wiki/sysadmin/installation_centos_7_anaconda_parted.jpg) Una vez finalizada la instalación tu disco tendrá un esquema de particiones GPT, que podrás ampliar sin problema mas allá de los 2 TiB ![fdisk](https://multimedia.castris.com/imagenes/wiki/sysadmin/installation_centos_7_parted.jpg) #### Enlaces - [CentOs - Installation Destination](https://docs.centos.org/en-US/centos/install-guide/StorageSpoke-x86/#sect-bootloader-x86) - [Anaconda](https://es.wikipedia.org/wiki/Anaconda_(instalador) ##### Aviso Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de [Castris](https://castris.com) Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/cart.php?gid=18). # Ampliación de disco en sistema virtualizado KVM (proxmox) # Introducción En un escenario de uso de discos virtuales, como KVM, Proxmox y otros, a veces es necesario una ampliación del disco. Si usamos LVM esto es posible y sencillo. ## Convenciones Ciertas cosas que hay en esta entrada, así como en otras, requieren un conocimiento previo. No es un sitio para **copiar y pegar** sino para **entender y hacer** No siempre es el disco **vda**, no siempre es la **partición 1**, y así sucesivamente. ## Ampliación de una disco virtual KVM La ampliación de un disco LVM es posible una vez que hemos realizado el cambio virtual del tamaño de la unidad LVM. En el caso de Proxmox acudimos a la administración de nuestro proxmox - Seleccionamos el VPS - Click en **Resize Disk" - Incrementamos el tamaño. > Si el aumento de tamaño implica un tamaño final mayor de 2 TiB deberás tener el esquema de particiones **GPT** de lo contrario, tendrás que modificar bajo tu responsabilidad el esquema MBR a GPT. Esta entrada no trata de eso, y para ello es aconsejable el uso de [Gparted Live](https://gparted.org/livecd.php), lo cual no siempre es posible. > El artículo interpreta que conoces el uso de ciertos comando, que sustituirán el dispositivo (disco) por el tuyo, y que sabes como obtener el esquema de tu disco (particiones) ### Consejo sobre particionamiento durante la instalación Es aconsejable el uso de GPT y de ello hablamos en nuestra wiki, [Instalación GPT con el instalador Centos 7 en discos < 2 TiB](https://wiki.castris.com/books/tips-sobre-la-administracion-de-linux/page/instalacion-gpt-con-el-instalador-centos-7-en-discos-2-tib) ![Resize Disk - Proxmox](https://multimedia.castris.com/imagenes/wiki/sysadmin/resize_disk_kvm_proxmox.jpg) ### Verirficación en un KVM basado en LVM Una vez que hemos ampliado el disco, podemos verificar el cambio de tamaño en nuestro VPS. Esto funcionará hasta que reiniciemos la máquina. Después ya no nos informará. > vda, vdb, sda, ... son nombres de dispositivos. Debes consultar cuales son tus dispositivos de disco usando `fdisk -l` y usar el apropiado en el comando ``` # dmesg | grep vda ... [ 222.436098] vda: detected capacity change from 32212254720 to 37580963840 ``` ### Imprimir la tabla actual del disco ``` # fdisk -l /dev/vda | grep ^/dev /dev/vda1 * 2048 1026047 512000 83 Linux /dev/vda2 1026048 62914559 30944256 8e Linux LVM ``` ### Conocer el uso de las particiones en el sistema LVM ``` # pvscan PV /dev/vda2 VG centos lvm2 [<29,51 GiB / 40,00 MiB free] Total: 1 [<29,51 GiB] / in use: 1 [<29,51 GiB] / in no VG: 0 [0 ] # lvscan ACTIVE '/dev/centos/swap' [3,00 GiB] inherit ACTIVE '/dev/centos/root' [<26,47 GiB] inherit ``` ### Ampliar la partición física ``` parted /dev/vda GNU Parted 3.1 Usando /dev/vda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) print Model: Virtio Block Device (virtblk) Disk /dev/vda: 37,6GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Numero Inicio Fin Tamaño Typo Sistema de ficheros Banderas 1 1049kB 525MB 524MB primary xfs arranque 2 525MB 32,2GB 31,7GB primary lvm (parted) resizepart 2 100% (parted) quit ``` #### Mensajes de error A veces, es posible que tras un acceso con `parted` a nuestro dispositivo, podemos encontrar mensajes relativos a problemas derivados de los instaladores de Centos, de Ubuntu, según cuándo y cómo se hizo la partición que estamos tratando de modificar. Es importante leer y comprender estos mensajes, o corremos el riesgo de perder nuestros datos. En el caso de abajo, viene del instalador de **Centos 7** el cual no hizo del todo bien su trabajo. ``` Error: La copia de la tabla GPT no está al final del disco, como debería ser. Esto quiere decir que otro sistema operativo cree que el disco es más pequeño. ¿Lo quiere arreglar moviendo la copia al final (y borrando la copia vieja)? Arreglar/Fix/Descartar/Ignore/Cancelar/Cancel? Fix Aviso: Not all of the space available to /dev/vda appears to be used, you can fix the GPT to use all of the space (an extra 3005218816 blocks) or continue with the current setting? Arreglar/Fix/Descartar/Ignore? F Model: Virtio Block Device (virtblk) Disk /dev/vda: 1571GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: pmbr_boot Numero Inicio Fin Tamaño Sistema de ficheros Nombre Banderas 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 1076MB 1074MB xfs 3 1076MB 32,2GB 31,1GB lvm ``` ### Asignar el nuevo tamaño al volumen físico de LVM ``` pvresize /dev/vda2 Physical volume "/dev/vda2" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not resized ``` ### Redimensionar el volumen lógico de LVM al nuevo tamaño ``` [root@kvm476 httpd]# lvresize --extents +100%FREE --resizefs /dev/centos/root Size of logical volume centos/root changed from <26,47 GiB (6776 extents) to <31,51 GiB (8066 extents). Logical volume centos/root successfully resized. meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=1734656 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 spinodes=0 data = bsize=4096 blocks=6938624, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=3388, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 6938624 to 8259584 [root@kvm476 httpd]# df -h S.ficheros Tamaño Usados Disp Uso% Montado en devtmpfs 2,9G 0 2,9G 0% /dev tmpfs 2,9G 0 2,9G 0% /dev/shm tmpfs 2,9G 65M 2,8G 3% /run tmpfs 2,9G 0 2,9G 0% /sys/fs/cgroup /dev/mapper/centos-root 32G 25G 7,3G 77% / /dev/vda1 497M 256M 241M 52% /boot stor01.tamainut.net:/srv/storage/backup/kvm476/backupremote 32T 30T 1014G 97% /backupremote2 tmpfs 581M 0 581M 0% /run/user/0 ``` ## Actualizacion 2024-03-21 En nuevas versiones de parted, por ejemplo en ALmalinux 8, no es posible usar el comando como lo hacia anteriormente. Debes de hacerlo directamente en el shell - `sd`, `vd`, el prefijo que corresponda ``` parted /dev/sdx --script resizepart NumeroParticion 100% ``` ##### Aviso Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de [Castris](https://castris.com) Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/cart.php?gid=18). # Parted mejor que fdisk ## Introducción Además de que fdisk no puede particionar creando particiones mayores de 2TB, es mucho mejor amigo del sysadmin `parted`. En este artículo dejo escrito el cómo hacerlo en el caso de discos que uso en montajes de Proxmox con OVH. ### Parted : Creando particiones #### Label si esta no existe Si no existe etiqueta del formato de disco es necesaria así que la creamos ```bash # parted -s /dev/nvme1n1 mklabel gpt ``` ### Hacer la partición disponible al 100% Cómo uso los discos para LVM es necesario crear una partición al 100% [Recomendación LVM Howto](https://tldp.org/HOWTO/LVM-HOWTO/initdisks.html) ```bash # parted -s /dev/nvme1n1 mkpart primary 0% 100% # parted /dev/nvme1n1 GNU Parted 3.4 Using /dev/nvme1n1 Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) print Model: SAMSUNG MZVL2512HCJQ-00B07 (nvme) Disk /dev/nvme1n1: 512GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 512GB 512GB primary ``` ##### Aviso Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de [Castris](https://castris.com) Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/cart.php?gid=18). # Añadir un volumen físico nuevo a un volumen lógico de LVM ## Introducción A veces, queremos o podemos ampliar un grupo de volumenes VG con un nuevo dispositivo. ## Preparación del dispotivo La recomendación es primero [formatear con parted](https://wiki.castris.com/books/tips-sobre-la-administracion-de-linux/page/parted-mejor-que-fdisk) y hacer una partición al 100% de ese dispositivo. ## Control de lo existente ```bash pvs WARNING: PV /dev/nvme0n1p5 in VG vg is using an old PV header, modify the VG to update. PV VG Fmt Attr PSize PFree /dev/nvme0n1p5 vg lvm2 a-- 454.43g 0 /dev/nvme1n1p1 lvm2 --- <476.94g <476.94g ``` Como vemos aqui, tenemos ya un **volumen** llamado "vg" con un disco de 450G y el nuevo disco de otros 450G que queremos añadir al grupo. En mi caso y procedente del instalador de proxmox de OVH, vemos que el dispositivo momntado en el VG tiene una cabacera anticuada, asi que me lo cargo. Si no quisiera hacerlo puedo saltar ese paso. ``` pvdisplay WARNING: PV /dev/nvme0n1p5 in VG vg is using an old PV header, modify the VG to update. --- Physical volume --- PV Name /dev/nvme0n1p5 VG Name vg PV Size <454.44 GiB / not usable 2.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 116335 Free PE 0 Allocated PE 116335 PV UUID 1NEKQh-mYX6-e6CR-Ddud-fY1w-XFhd-dLlOqc "/dev/nvme1n1p1" is a new physical volume of "<476.94 GiB" --- NEW Physical volume --- PV Name /dev/nvme1n1p1 VG Name PV Size <476.94 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID ZENJmY-wgGf-Ahag-3U7N-zc3J-odzn-W5w4ek ``` ## Eliminación y recreacion de /dev/nvme0n1p5 ### Eliminación del volumen Como no esta en uso prefiero empezar de 0 ```bash ```