¿cuanta gente a visto el blog?

Raid con PHP

 Crear archivos

lsblk 
dnf install -y mdadm

sudo dnf update


mdadm --version
sudo nano /var/www/html/configurar_raid.sh

#!/bin/bash

# Parámetros recibidos
TIPO_RAID=$1           # Tipo de RAID (ejemplo: 0, 1, 5)
DISCO1=$2              # Primer disco
DISCO2=$3              # Segundo disco
MOUNTPOINT=$4          # Punto de montaje

# Verificar que los parámetros no estén vacíos
if [ -z "$TIPO_RAID" ] || [ -z "$DISCO1" ] || [ -z "$DISCO2" ] || [ -z "$MOUNTPOINT" ]; then
    echo "Error: Faltan parámetros. Uso: ./configurar_raid.sh <TIPO_RAID> <DISCO1> <DISCO2> <MOUNTPOINT>"
    exit 1
fi

# Crear el RAID
sudo mdadm --create --verbose /dev/md0 --level=$TIPO_RAID --raid-devices=2 $DISCO1 $DISCO2

# Crear un sistema de archivos en el RAID
sudo mkfs.ext4 /dev/md0

# Crear el directorio de montaje si no existe
sudo mkdir -p $MOUNTPOINT

# Montar el RAID
sudo mount /dev/md0 $MOUNTPOINT

# Verificar que el RAID esté montado
if mount | grep /dev/md0; then
    echo "RAID $TIPO_RAID creado y montado correctamente en $MOUNTPOINT."
else
    echo "Error al montar el RAID."
fi
sudo chmod +x /var/www/html/configurar_raid.sh



sudo nano /var/www/html/raid_config.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Configurar RAID</title>
</head>
<body>
    <h1>Configurar RAID</h1>
    <form action="raid_config.php" method="post">
        <label for="tipo_raid">Tipo de RAID:</label>
        <input type="text" id="tipo_raid" name="tipo_raid" placeholder="Ejemplo: 0, 1, 5" required><br><br>

        <label for="disco1">Primer Disco:</label>
        <input type="text" id="disco1" name="disco1" placeholder="/dev/nvme0n2" required><br><br>

        <label for="disco2">Segundo Disco:</label>
        <input type="text" id="disco2" name="disco2" placeholder="/dev/nvme0n3" required><br><br>

        <label for="mountpoint">Punto de Montaje:</label>
        <input type="text" id="mountpoint" name="mountpoint" placeholder="/mnt/raid" required><br><br>

        <button type="submit">Configurar RAID</button>
    </form>

    <?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $tipo_raid = escapeshellarg($_POST['tipo_raid']);
        $disco1 = escapeshellarg($_POST['disco1']);
        $disco2 = escapeshellarg($_POST['disco2']);
        $mountpoint = escapeshellarg($_POST['mountpoint']);



        // Ejecutar el script Bash
        $comando = "/var/www/html/configurar_raid.sh $tipo_raid $disco1 $disco2 $mountpoint";
        $salida = shell_exec("sudo $comando 2>&1");

        echo "<h2>Resultado:</h2>";
        echo "<pre>$salida</pre>";
    }
    ?>
</body>
</html>
sudo visudo

apache ALL=(ALL) NOPASSWD: /var/www/html/configurar_raid.sh

*Presiona ESC y luego / en tu teclado. Esto habilita el modo de búsqueda. 

apache ALL=(ALL) NOPASSWD: /var/www/html/configurar_raid.sh

como saber que se creo correctamente

cat /proc/mdstat

mount | grep /dev/md0
echo "Prueba de RAID 0" > /mnt/raid/prueba.txt
cat /mnt/raid/prueba.txt

sudo mdadm --detail /dev/md0
lsblk 
mkdir -p /root/scripts


crea un RAID 0 usando los discos nvme0n2 y nvme0n3

nano /root/scripts/crear_raid0.sh
#!/bin/bash

# Asegurarse de que el script se ejecuta como root
if [ "$EUID" -ne 0 ]; then
  echo "Por favor, ejecuta este script como root."
  exit 1
fi

# Instalar mdadm si no está instalado
if ! command -v mdadm &> /dev/null; then
  echo "mdadm no está instalado. Instalando..."
  yum install -y mdadm  # Para sistemas basados en RHEL, como AlmaLinux
fi

# Crear el RAID 0 con nvme0n2 y nvme0n3
echo "Creando RAID 0 con nvme0n2 y nvme0n3..."
mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/nvme0n2 /dev/nvme0n3

# Crear el sistema de archivos en el RAID
echo "Creando sistema de archivos ext4 en /dev/md0..."
mkfs.ext4 /dev/md0

# Crear un punto de montaje y montar el RAID
echo "Montando el RAID en /mnt/raid0..."
mkdir -p /mnt/raid0
mount /dev/md0 /mnt/raid0

# Añadir el RAID al archivo fstab para montar automáticamente al iniciar
echo "Añadiendo el RAID al archivo /etc/fstab..."
echo "/dev/md0 /mnt/raid0 ext4 defaults 0 0" >> /etc/fstab

# Confirmar que el RAID se creó correctamente
cat /proc/mdstat

echo "RAID 0 creado y montado en /mnt/raid0. ¡Listo!"

 chmod +x /root/scripts/crear_raid0.sh
sudo /root/scripts/crear_raid0.sh


raid 1

nano /root/scripts/crear_raid1.sh

#!/bin/bash

# Asegurarse de que el script se ejecuta como root
if [ "$EUID" -ne 0 ]; then
  echo "Por favor, ejecuta este script como root."
  exit 1
fi

# Instalar mdadm si no está instalado
if ! command -v mdadm &> /dev/null; then
  echo "mdadm no está instalado. Instalando..."
  yum install -y mdadm
fi

# Crear el RAID 1 con nvme0n4 y nvme0n5
echo "Creando RAID 1 con nvme0n4 y nvme0n5..."
mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/nvme0n4 /dev/nvme0n5

# Crear el sistema de archivos en el RAID
echo "Creando sistema de archivos ext4 en /dev/md1..."
mkfs.ext4 /dev/md1

# Crear un punto de montaje y montar el RAID
echo "Montando el RAID en /mnt/raid1..."
mkdir -p /mnt/raid1
mount /dev/md1 /mnt/raid1

# Añadir el RAID al archivo fstab para montar automáticamente al iniciar
echo "Añadiendo el RAID al archivo /etc/fstab..."
echo "/dev/md1 /mnt/raid1 ext4 defaults 0 0" >> /etc/fstab

# Confirmar que el RAID se creó correctamente
cat /proc/mdstat

echo "RAID 1 creado y montado en /mnt/raid1. ¡Listo!"

chmod +x /root/scripts/crear_raid1.sh

sudo /root/scripts/crear_raid1.sh

raid 5

nano /root/scripts/crear_raid5.sh

#!/bin/bash

# Asegurarse de que el script se ejecuta como root
if [ "$EUID" -ne 0 ]; then
  echo "Por favor, ejecuta este script como root."
  exit 1
fi

# Instalar mdadm si no está instalado
if ! command -v mdadm &> /dev/null; then
  echo "mdadm no está instalado. Instalando..."
  yum install -y mdadm
fi

# Crear el RAID 5 con nvme0n6, nvme0n7, y nvme0n8
echo "Creando RAID 5 con nvme0n6, nvme0n7 y nvme0n8..."
mdadm --create --verbose /dev/md2 --level=5 --raid-devices=3 /dev/nvme0n6 /dev/nvme0n7 /dev/nvme0n8

# Crear el sistema de archivos en el RAID
echo "Creando sistema de archivos ext4 en /dev/md2..."
mkfs.ext4 /dev/md2

# Crear un punto de montaje y montar el RAID
echo "Montando el RAID en /mnt/raid5..."
mkdir -p /mnt/raid5
mount /dev/md2 /mnt/raid5

# Añadir el RAID al archivo fstab para montar automáticamente al iniciar
echo "Añadiendo el RAID al archivo /etc/fstab..."
echo "/dev/md2 /mnt/raid5 ext4 defaults 0 0" >> /etc/fstab

# Confirmar que el RAID se creó correctamente
cat /proc/mdstat

echo "RAID 5 creado y montado en /mnt/raid5. ¡Listo!"

raid 6

nano /root/scripts/crear_raid6.sh

#!/bin/bash

# Asegurarse de que el script se ejecuta como root
if [ "$EUID" -ne 0 ]; then
  echo "Por favor, ejecuta este script como root."
  exit 1
fi

# Instalar mdadm si no está instalado
if ! command -v mdadm &> /dev/null; then
  echo "mdadm no está instalado. Instalando..."
  yum install -y mdadm
fi

# Crear el RAID 6 con nvme0n2 a nvme0n8
echo "Creando RAID 6 con nvme0n2, nvme0n3, nvme0n4, nvme0n5, nvme0n6, nvme0n7 y nvme0n8..."
mdadm --create --verbose /dev/md3 --level=6 --raid-devices=7 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4 /dev/nvme0n5 /dev/nvme0n6 /dev/nvme0n7 /dev/nvme0n8

# Crear el sistema de archivos en el RAID
echo "Creando sistema de archivos ext4 en /dev/md3..."
mkfs.ext4 /dev/md3

# Crear un punto de montaje y montar el RAID
echo "Montando el RAID en /mnt/raid6..."
mkdir -p /mnt/raid6
mount /dev/md3 /mnt/raid6

# Añadir el RAID al archivo fstab para montar automáticamente al iniciar
echo "Añadiendo el RAID al archivo /etc/fstab..."
echo "/dev/md3 /mnt/raid6 ext4 defaults 0 0" >> /etc/fstab

# Confirmar que el RAID se creó correctamente
cat /proc/mdstat

echo "RAID 6 creado y montado en /mnt/raid6. ¡Listo!"

chmod +x /root/scripts/crear_raid6.sh

sudo /root/scripts/crear_raid6.sh

raid 10 

nano /root/scripts/crear_raid10.sh

#!/bin/bash

# Asegurarse de que el script se ejecuta como root
if [ "$EUID" -ne 0 ]; then
  echo "Por favor, ejecuta este script como root."
  exit 1
fi

# Instalar mdadm si no está instalado
if ! command -v mdadm &> /dev/null; then
  echo "mdadm no está instalado. Instalando..."
  yum install -y mdadm
fi

# Crear el RAID 10 con nvme0n2 a nvme0n8
echo "Creando RAID 10 con nvme0n2, nvme0n3, nvme0n4, nvme0n5, nvme0n6, nvme0n7 y nvme0n8..."
mdadm --create --verbose /dev/md4 --level=10 --raid-devices=6 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4 /dev/nvme0n5 /dev/nvme0n6 /dev/nvme0n7

# Crear el sistema de archivos en el RAID
echo "Creando sistema de archivos ext4 en /dev/md4..."
mkfs.ext4 /dev/md4

# Crear un punto de montaje y montar el RAID
echo "Montando el RAID en /mnt/raid10..."
mkdir -p /mnt/raid10
mount /dev/md4 /mnt/raid10

# Añadir el RAID al archivo fstab para montar automáticamente al iniciar
echo "Añadiendo el RAID al archivo /etc/fstab..."
echo "/dev/md4 /mnt/raid10 ext4 defaults 0 0" >> /etc/fstab

# Confirmar que el RAID se creó correctamente
cat /proc/mdstat

echo "RAID 10 creado y montado en /mnt/raid10. ¡Listo!"

chmod +x /root/scripts/crear_raid10.sh

sudo /root/scripts/crear_raid10.sh

todo en uno 

Archivo PHP: raid_manager.php 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>RAID Manager</title>
</head>
<body>
    <h1>RAID Manager</h1>
    <form method="POST" action="raid_manager.php">
        <label for="raid_type">Seleccione el tipo de RAID:</label>
        <select name="raid_type" id="raid_type" required>
            <option value="0">RAID 0</option>
            <option value="1">RAID 1</option>
            <option value="5">RAID 5</option>
            <option value="6">RAID 6</option>
            <option value="10">RAID 10</option>
        </select>
        <br><br>
        <label for="disks">Seleccione los discos a usar (Ctrl + clic para selección múltiple):</label>
        <select name="disks[]" id="disks" multiple required>
            <option value="nvme0n2">nvme0n2</option>
            <option value="nvme0n3">nvme0n3</option>
            <option value="nvme0n4">nvme0n4</option>
        </select>
        <br><br>
        <button type="submit" name="execute">Ejecutar</button>
    </form>
    <?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['execute'])) {
        $raidType = $_POST['raid_type'];
        $disks = $_POST['disks'];
        if (count($disks) < 2) {
            echo "<p style='color: red;'>Debe seleccionar al menos dos discos.</p>";
            exit;
        }
        $disks = array_map(function ($disk) {
            return "/dev/" . $disk;
        }, $disks);
        $diskList = implode(' ', $disks);
        $bashScript = "/root/scripts/configure_raid.sh";
        $command = "sudo $bashScript $raidType $diskList";
        $output = shell_exec($command . ' 2>&1');
        echo "<h2>Resultado:</h2>";
        echo "<p>Comando ejecutado: <code>$command</code></p>";
        echo "<pre>$output</pre>";
    }
    ?>
</body>
</html>


configure_raid.sh

#!/bin/bash
if [ "$EUID" -ne 0 ]; then
    echo "Por favor, ejecuta este script como root."
    exit 1
fi
RAID_TYPE=$1
shift
DISKS=("$@")
DEVICE="/dev/md$RAID_TYPE"
echo "Creando RAID $RAID_TYPE con los discos: ${DISKS[*]}"
yes | mdadm --create --verbose $DEVICE --level=$RAID_TYPE --raid-devices=${#DISKS[@]} "${DISKS[@]}"
mkfs.ext4 $DEVICE
MOUNT_POINT="/mnt/raid$RAID_TYPE"
mkdir -p $MOUNT_POINT
mount $DEVICE $MOUNT_POINT
echo "$DEVICE $MOUNT_POINT ext4 defaults 0 0" >> /etc/fstab
echo "RAID $RAID_TYPE configurado y montado en $MOUNT_POINT."

http://10.10.10.129/raid_manager.php 


1. Limpiar el dispositivo RAID existente  


nano /root/scripts/borrar_raid.sh
#!/bin/bash

# Asegurarse de que el script se ejecuta como root
if [ "$EUID" -ne 0 ]; then
  echo "Por favor, ejecuta este script como root."
  exit 1
fi

echo "Desmontando y deteniendo todos los RAID configurados..."

# Desmontar RAID 0
if mount | grep "/mnt/raid0" &> /dev/null; then
  echo "Desmontando /mnt/raid0..."
  umount /mnt/raid0
fi

if [ -e /dev/md0 ]; then
  echo "Deteniendo /dev/md0 (RAID 0)..."
  mdadm --stop /dev/md0
fi

# Desmontar RAID 1
if mount | grep "/mnt/raid1" &> /dev/null; then
  echo "Desmontando /mnt/raid1..."
  umount /mnt/raid1
fi

if [ -e /dev/md1 ]; then
  echo "Deteniendo /dev/md1 (RAID 1)..."
  mdadm --stop /dev/md1
fi

# Desmontar RAID 5
if mount | grep "/mnt/raid5" &> /dev/null; then
  echo "Desmontando /mnt/raid5..."
  umount /mnt/raid5
fi

if [ -e /dev/md2 ]; then
  echo "Deteniendo /dev/md2 (RAID 5)..."
  mdadm --stop /dev/md2
fi

# Borrar configuraciones de RAID en los discos
echo "Eliminando configuraciones de RAID de los discos..."
mdadm --zero-superblock /dev/nvme0n2
mdadm --zero-superblock /dev/nvme0n3
mdadm --zero-superblock /dev/nvme0n4
mdadm --zero-superblock /dev/nvme0n5
mdadm --zero-superblock /dev/nvme0n6
mdadm --zero-superblock /dev/nvme0n7
mdadm --zero-superblock /dev/nvme0n8

# Eliminar entradas de RAID en /etc/fstab
echo "Eliminando entradas de RAID en /etc/fstab..."
sed -i '/\/mnt\/raid0/d' /etc/fstab
sed -i '/\/mnt\/raid1/d' /etc/fstab
sed -i '/\/mnt\/raid5/d' /etc/fstab

echo "Todos los RAID han sido eliminados y los discos han vuelto a su estado normal."



chmod +x /root/scripts/borrar_raid.sh
sudo /root/scripts/borrar_raid.sh

umount /mnt/raid6
mdadm --stop /dev/md3

umount /mnt/raid10
mdadm --stop /dev/md4


No hay comentarios.:

Publicar un comentario