Javier

Javier

Este usuario no ha compartido ninguna información de perfil

Entradas de Javier

Redimensionar disco en Ubuntu 18.04 con discos GPT

Es posible que en algún momento necesitemos ampliar el espacio de una partición de nuestra máquina virtual. En esta ocasión vamos a explicar cómo ampliar el espacio en la última partición de nuestro sistema debido a una solicitud de ampliación de disco.

Primero, entramos en nuestra máquina con un usuario con privilegios administrativos, y ejecutamos el siguiente comando para ver la información de los discos de sistema:

root@virtual:~# fdisk -l
Disk /dev/vda: 7 GiB, 7516192768 bytes, 14680064 sectors
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: DBEC8619-407D-4752-848E-B7E95EAD6A21

Device     Start      End  Sectors Size Type
/dev/vda1   2048     4095     2048   1M BIOS boot
/dev/vda2   4096 12582882 12578786   6G Linux filesystem

Como vemos, tenemos un disco GPT de 7G pero la partición del sistema de archivos (/dev/vda2) es de solo 6GB, y queremos ampliar ese gigabyte restante a la partición de sistema que coincide que es la ultima partición (esto es habitual en las máquinas virtuales estándar que entregamos a los alumnos).

Para ello, tan solo deberemos ejecutar los siguientes comandos:

sgdisk -d 2 /dev/vda
sgdisk -N 2 /dev/vda
partprobe /dev/vda
resize2fs /dev/vda2

El primer comando sirve para eliminar la partición numero 2.Los datos no se borrarán ya que en el siguiente paso vamos a volver a crear la partición, y usara el primer sector disponible que coincidirá con el primer sector de la partición 2 que acabamos de borrar.

El segundo comando para crear la partición numero 2 hasta final de disco. El tercer comando sirve para que el kernel de Linux vuelva a leer los discos y ver los cambios que se han hecho. Por último, el cuarto comando sirve para ampliar el sistema de archivos al nuevo tamaño de la partición.

No suele ser necesario reiniciar la maquina, tan solo debemos reiniciarla si nos falla el comando partprobe  y volver a ejecutarlo (así como el último comando también).

Liberar espacio en disco en Ubuntu

Muchos de vosotros nos escribís pidiendo aumentaros el disco porque os habéis quedado sin espacio en vuestra maquina virtual o simplemente que no podéis trabajar.

Lo primero de todo aclarar que siempre os podréis conectar por SSH a vuestra máquina si se os ha llenado el disco. Si no podéis entrar lo mas probable es que hayáis roto algo. No pasa nada, a todos nos ha pasado alguna vez.

Pero vamos al grano con lo que trata esta entrada: Cómo liberar espacio en disco en Ubuntu.

Por lo general, cuando actualizamos el sistema o si hemos instalado Ubuntu con la opción de actualizaciones automáticas, lo más normal es que se instalen actualizaciones del núcleo de Linux, es decir, el kernel. Estas actualizaciones ocupan bastante, y si no eliminamos los núcleos antiguos y que ya no vamos a usar lo mas probable es que tarde o temprano se termine llenando el disco.

Para librerar este espacio, es tan simple como ejecutar el siguiente comando como root, o escribir sudo delante de él si nuestro usuario tiene permisos para ello.

apt-get autoremove

Este comando elimina todas las dependencias no utilizadas y que están instaladas del software que tenemos instalado o que en algún momento hemos llegado a tener instalado y hemos decidido desinstalarlo después. Una vez finalizado, podremos ver que hemos liberado bastante espacio en el disco. De media, un núcleo con sus headers puede llegar a ocupar unos 300MB.

Si aun así, no tenemos suficiente espacio, podemos ver en que lo estamos gastando con el comando «du». Para ello, podemos ejecutar como root (o con sudo delante del comando si tenemos un usuario con permisos de administración) el siguiente comando:

cd /      (nos situamos en el directorio raíz)

du -sh *

Esto nos sacará un listado de los directorios que están en el raíz del disco duro con su respectivo tamaño. Podéis omitir el tamaño ocupado por los directorios /proc, /sys y /dev ya que suelen ser directorios de dispositivos especiales, directorios que contienen todos los detalles de tu sistema Linux, etcétera y su tamaño no afecta al espacio ocupado en disco. Una vez visto cual es el directorio que ocupa mucho, nos situamos en él y volvemos a ejecutar el comando anterior hasta llegar al final de los directorios y ver por qué ocupa tanto y cual es el software que está generando este problema.

Montar imagenes de dispositivos de bloques

Como suele ser habitual, muchas de las imagenes para Raspberry-PI, vienen creadas mediante un volcado completo a traves del comando «dd» en Linux. Este volcado completo incluye todas las particiones, las cuales pueden llegar a tener dificil acceso mediante el uso del comando «mount».

Si hacemos un volcado sobre una particion no hay problemas para montar luego la imagen, pero si se hace el volcado sobre el dispositvo completo, las opciones habituales del mount no nos valen para acceder a las particiones, impidiendo de esta forma, que se puedan montar.

Existen varios metodos para extraer o montar una partición de un volcado de disco completo, pero en esta ocasión nos vamos a centrar en «losetup». Por general, este comando viene instalado por defecto en todas las distros de Linux, pero de no tenerlo en nuestro sistema, tan solo habria que buscar el paquete que lo contiene e instalarlo.

Losetup nos permite montar un archivo de imagen obtenido mediante dd, en un dispositivo al estilo /dev/loopX. Posteriormente se puede utilizar /dev/loopX como si fuera un disco mas en el sistema.

Los pasos a realizar serian los siguientes:

  • Volcar una imagen completa de una SD o bien bajar una para nuestras Raspberry’s.
  • Para montar en /dev ejecutamos: losetup -f imagen.dd

Una vez en este punto, tenemos nuestra imagen completa sobre /dev/loop0, el cual podemos tratar como un disco mas del sistema. Podemos ejecutar fdisk o cualquier otra utilidad de disco.

Para montar la particion primera, ejecutariamos:

root@ubuntu:~# mount -t ext3 /dev/loop0p1 /mnt

Una vez que hemos hecho todo lo que queriamos, primero tenemos que desmontar el punto de montaje que se ha montado con anterioridad y despues ejecutar:

root@ubuntu:~# losetup -d /dev/loop0

Esta utilidad vale tanto para tarjetas de memoria, Pendrives, discos duros, etc… Resumiendo, para cualquier tipo de dispositivo de bloques.

Conexión a MySQL desde App PHP

PHP soporta compatibilidad con accesos a múltiples sistemas de bases de datos, sin embargo, el modo de programación sobre cada tipo de base de datos, no presenta, como en otros casos, la misma nomenclatura. PHP utiliza funciones de nombre genérico, pero precedidas normalmente por el nombre del sistema de base de datos, de modo que las funciones que ofrece el lenguaje para el acceso a cada tipo de base de datos son diferentes.

Un ejemplo sencillo de lo que puede ser una conexión a MySQL desde PHP es el siguiente:

<?php 
 
// Conectamos con MySQL 
$conexion = mysql_connect("host","usuario","passwd_bbdd") 
or die ("Fallo en el establecimiento de la conexion."); 
 
// Seleccionamos la base de datos a usar 
mysql_select_db("test") 
or die("Error en la seleccion de la base de datos."); 
 
// ////////////////////////////////////////////////////// // 
// Aqui insertaremos las consultas sobre la base de datos // 
// ////////////////////////////////////////////////////// // 
 
// Cerramos la conexión con MySQL 
mysql_close($conexion); 
 
?>

Si lo que hemos creado es una aplicación para que sea ejecutada desde un terminal, podemos ejecutarlo mediante el siguiente codigo, de lo contrario, podremos probarlo via Web y Apache.

root@ubuntu:~# php conexion_bbdd.php

Conexión a MySQL desde App Java

A continuación ponemos un ejemplo sencillo de una conexión a MySQL desde Java.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*
 * PruebaMySQL.java
 *
 * Programa de prueba para conectar a una base de datos de MySQL.
 * Se presupone que el servidor de base de datos esta arrancado, disponible
 * y en el puerto por defecto.
 * El usuario y password de conexion la base de datos debe cambiarse.
 * En la base de datos se supone que hay una base de datos llamada test y que
 * tiene una tabla persona con tres campos, de esta manera:
 * mysql> create database test;
 * mysql> use test;
 * mysql> create table persona (id smallint auto_increment, nombre varchar(60), 
 *      nacimiento date, primary key(id)); 
 */
 
import java.sql.*;
 
/**
 * Clase de prueba de conexion una base de datos MySQL
 */
public class PruebaMySQL {
 
    /** 
     * Crea una instancia de la clase MySQL.
     */
    public PruebaMySQL() 
    {
        // Se mete todo en un try por los posibles errores de MySQL
        try
        {
            // Se registra el Driver de MySQL
            DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
 
            // Se obtiene una conexion la base de datos. Hay que cambiar
            // el usuario "usuario" y la clave "passwd_bbdd" por las
            // adecuadas a la base de datos que estemos usando.
            Connection conexion = DriverManager.getConnection (
                "jdbc:mysql://localhost/test", "usuario", "passwd_bbdd");
 
            // Se crea un Statement, para realizar la consulta
            Statement s = conexion.createStatement();
 
            // Se realiza la consulta. Los resultados se guardan en el 
            // ResultSet rs
            ResultSet rs = s.executeQuery ("select * from persona");
 
            // Se recorre el ResultSet, mostrando por pantalla los resultados.
            while (rs.next())
            {
                System.out.println (rs.getInt ("Id") + " " + rs.getString (2)+ 
                    " " + rs.getDate(3));
            }
 
            // Se cierra la conexion la base de datos.
            conexion.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
 
    /**
     * Metodo principal, instancia una clase PruebaMySQL
     *
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
        new PruebaMySQL();
    }
 
}

Posteriormente, podemos compilar el codigo y probarlo mediante los siguientes comandos.

root@ubuntu:~# javac PruebaMySQL.java 
root@ubuntu:~# java PruebaMySQL

Instalar Apache Tomcat 7 y driver JDBC para MySQL en Ubuntu

En esta ocasión, vamos a instalar Apache Tomcat con soporte JDBC para MySQL. La instalación es muy sencilla, y vamos a partir de que ya tenemos Java instalado, como hemos comentado en la entrada de Instalar Java 7 de Oracle en Ubuntu via PPA.

Para ello ejecutamos como root el siguiente comando:

root@ubuntu:~# apt-get install tomcat7

A continuación, vamos a instalar el driver JDBC de MySQL, que por suerte lo podemos encontrar dentro de los repositorios de Ubuntu.

root@ubuntu:~# apt-get install libmysql-java

Por último, debemos cambiar el CLASSPATH de Java para que encuentre la libreria JDBC y nuestras aplicaciones Java puedan realizar la conexión al servidor MySQL sin problemas. Para ello editaremos el archivo de variables de entorno, que en Ubuntu se encuentra en /etc/environment

root@ubuntu:~# vi /etc/environment

Y añadimos lo siguiente:

1
2
CLASSPATH=".:/usr/share/java/mysql-connector-java.jar"
JAVA_HOME="/usr/lib/jvm/java-7-oracle/jre/bin"

Ahora tan solo hay que reiniciar la maquina para ver si todo funciona correctamente, o si no queremos reiniciar, cargamos la variable CLASSPATH en el terminal de la siguiente forma:

root@ubuntu:~# export CLASSPATH="$CLASSPATH:/usr/share/java/mysql-connector-java.jar:."

Ahora nuestro servidor Tomcat ya estaría funcionando y escuchando en el puerto 8080. La ruta local del servidor donde se desplegaran las aplicaciones es /var/lib/tomcat7/webapps.

NOTA IMPORTANTE: Aunque Tomcat 7 viene mas seguro por defecto que en versiones anteriores, deberiamos configurar los usuarios y contraseñas para acceder al Manager. El archivo en cuestión se localiza en /etc/tomcat7/tomcat-users.xml y con todo cambio que hagamos en la configuración, tendremos que reiniciar el servicio.

Instalar Apache2 y PHP con soporte MySQL en Ubuntu

La instalación del servidor Web Apache con soporte para PHP y a su vez, con MySQL, es bien sencilla. Tan solo tenemos que ejecutar los siguientes comandos en un Terminal como root:

root@ubuntu:~# apt-get install apache2 php5 php5-mysql

De esta sencilla forma, ya tenemos instalado todo lo necesario para empezar a montar una pagina web con PHP y ademas poder hacer la conexión contra una Base de Datos MySQL.

La ruta por defecto para desplegar las aplicaciones es /var/www. En otra ocasión explicaremos como cambiar todos estos parámetros e incluso crear VirtualHost’s.

Feed RSS de Javier
Ir arriba