Mostrando entradas con la etiqueta sistema de archivos. Mostrar todas las entradas
Mostrando entradas con la etiqueta sistema de archivos. Mostrar todas las entradas

sábado, 24 de junio de 2023

¿Como muevo el directorio /home a una nueva partición o disco en Ubuntu?

Interrogado en el Aeropuerto de Campodichino durante un viaje en su exilio europeo, Juan Perón explica cómo mover el directorio /home a un disco nuevo en Ubuntu.

Periodistas: General, una corta interrogante y lo dejamos que está ocupado, sabemos que tiene que viajar a Roma. ¿Cómo trasvasamos el directorio /home a otra partición o a un disco nuevo en Ubuntu?

Perón: Vea, es una buena pregunta que surge de una necesidad. Pero esto se debe a la imprevisión, que es la madre de todos los problemas en la vida. El verdadero Conductor ha de saber ver para prever, y eso es algo que no lo dan los ojos, lo da la experiencia, ¿sabe?

Es indudable que en cualquier sistema GNU con Linux que se precie, uno de los directorios más suele crecer en tamaño es su directorio /home. Esto se debe a que en este residen las cuentas de los usuarios que lo operan, y es allí donde lo ocuparán sus documentos y, bien, un sinnúmero de otros ficheros de forma continuada.
 
Otro directorio importante con la misma tesitura es /var, que contiene los ficheros de bitácora ("logs"), cuyo tamaño es dable de verse gradualmente incrementado en la medida que el sistema continúa en uso. Junto a los consabidos logs, pueden residir ficheros web, archivos temporales de cola de impresión, y otros servicios de trabajo. No es de extrañar que se siga la consigna Justicialista "de /var a /home y de /home a /var".

Pues bien señores, cuando estos directorios colman una partición o unidad de almacenamiento en disco, pueden dar lugar a problemáticas críticas en cuanto al sistema de archivo; podrían incluso provocar que el sistema no pueda iniciarse correctamente, y que fuese necesario tronar el escarmiento.

En la Argentina ha de obrarse obrarse con previsión, pues es preferible medir dos veces y cortar una. Pero en otra, esto solo puede percibirse una vez probado el traje: ya se han configurado todos los directorios en el sistema de archivo y particionado, lo que suele acarrear la necesidad de establecer una clara política de solución. En este caso, poco vale la persuasión, ya nos comimos el paquete. Y solo queda elaborar un Plan Quinquenal de redimensionado de partición, o bien directamente instalar un nuevo disco en la máquina y mandár allí el /home.

Instalar y particionar una nueva unidad de disco en Linux

Antes de proceder a explicar lo que me piden, remozaré brevemente cómo agregar un nuevo disco a un equipo de escritorio o servidor que ya camina y se lava los dientes.

Para propósitos didácticos, asumamos el agregado de un disco rígido de estado sólido (nomenclado /dev/sdb de un tamaño de 270GB, al que dividiremos en dos particiones /dev/sdb1 y /dev/sdb2). Normalmente querrían hoy en día uno más grande, pero de momento este disco SSD nos viene bien.

El número de particiones a crear en el mismo así como la tabla de partición se determinarán en el tipo de etiqueta de disco, y en los primeros bytes de espacio en el mismo definen la MBR (Tabla Maestra de Inicio), encargada de almacenar la Tabla de Partición así como el cargador de arranque (en los discos arrancables, naturalmente). Si bien existen muchos tipos de etiquetas, Linux sólo acepta dos: MSDOS MBR (de 516 bytes de tamaño), o GPT (Tabla de Particionado GUID) MBR.

Primero, necesitamos contar con la herramienta parted o fdisk (por si no la tuviésemos en el sistema). Para ello abrimos una terminal con Ctrl+Alt+t e ingresamos el siguiente comando de organización:

sudo apt-get install parted fdisk

Una vez instalada parted, la utilizaremos para configurar el tipo de etiqueta de disco utilizando fdisk. Utilizaremos el nombre de etiqueta GPT en este ejemplo:

sudo parted /dev/sdb mklabel gpt

Nota: fdisk por ahora unicamente soporta la antigua MBR MSDOS, mientras que parted soporta ambas.

En caso de disco nuevo, creamos la primer partición (/dev/sdb1) con un tamaño, a modo de ejemplo, de 106 GB. Reservaríamos 1024 MB (1GB) para la MBR.

sudo parted -a cylinder /dev/sdb mkpart primary 1074MB 107GB

En este comando -a indica la alineación de partición a cilindros en el disco, mkpart crea la partición, primary crea una partición de tipo primaria (los otros valores podrían ser logical o extended), mientras que 1074MB es el comienzo y 107GB es el final de la partición.

Acto seguido revisamos el espacio libre en el disco como sigue:

parted /dev/sdb print free

Ahora crearemos una segunda partición (/dev/sdb2)  con un tamaño, por ejemplo de 154GB

sudo parted -a cylinder /dev/sdb mkpart primary 115GB 208GB

Ahora, configuramos el tipo de sistema de archivo para cada una de las particiones (por ejemplo, el popular ext4 de Linux que recomiendo y el xfs favorecido en servidores de RedHat, que puede venir bien para intercambio):

mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb2 

Para listar todos los dispositivos de almacenamiento adosados al sistema, ingresamos:

parted -l

 

Mover la carpeta /home a una partición dedicada

Pues bien señores. Ya agregado el disco nuevo a la máquina y creadas las particiones necesarias, es hora de trasvasar la carpeta home a una de dichas particiones. Para usar un sistema de archivaje habremos de montarlo en la raíz del sistema utilizando un directorio como punto de montaje: un directorio destino, tal como /home.

Como primer medida para este cometido, listemos el uso del sistema de archivaje de nuestro GNU con Linux gracias al comando df, de esta manera:

df -hl

Comprobada la lista, comenzaremos creando un nuevo directorio de circunstancias /srv/home, donde podremos montar la partición /dev/sdb1 temporalmente:

mkdir -p /srv/home
mount /dev/sdb1 /srv/home

Ahora usamos el comando rsync o cp para copiar el contenido de /home al directorio de circunstancias /srv/home (de este modo trasvasaremos todos los contenidos de usuarios a la partición /dev/sdb1).

Normalmente recomiendo usar rsync para este menester, sobre todo en ambientes de red:

rsync -av /home/* /srv/home/

...pero si no tuviésemos rsync bien podremos usar el comando cp de toda la vida:

cp -aR /home/* /srv/home/

El proceso naturalmente tardará acorde a la masa a copiar. Concluida la copia del contenido de los usuarios, conviene analizar diferencias entre ambos directorios utilizando el comando diff.

diff -f /home /srv/home

Si todo sale bien, no debería existir diferencia alguna entre el original y la copia, asegurándonos del resguardo efectivo.

Si no deseamos contar con un duplicado opcional, podremos borrar todo el contenido en el /home viejo con:

rm -rf /home/*

Ahora, desmontamos /srv/home:

umount /srv/home

...y como último paso montamos la partición /dev/sdb1 a /home, por esta sesión.

mount /dev/sdb1 /home
ls -l /home

Montar /home desde otro disco automáticamente

Ahora bien, debemos tener en cuenta que si bien acabamos de montar el disco /dev/sdb1 como partición de usuario en el sistema de archivos, este cambio sólo operará en esta sesión, en otras palabras, hasta reiniciar la máquina. Para no tener que montar a mano todas las veces que reiniciamos el equipo, será imperioso agregar por única vez una línea de entrada específica a la tabla del sistema de archivaje, el fichero /etc/fstab, lo que volverá permanentes los cambios. De esta manera, toda vez que arranque el sistema, se montará la partición /dev/sdb1 en /home.

En primer lugar obtenemos el identificador UUID del disco con el comando:

sudo blkid /dev/sdb1

El sistema nos devolverá algo como:

/dev/sdb1: UUID="e087e709-20f9-42a4-a4dc-d74544c490a6" TYPE="ext4" PARTLABEL="primary" 
PARTUUID="52d77e5c-0b20-4a68-ada4-881851b2ca99"

Una vez conocida la UUID de nuestra unidad, editamos la tabla /etc/fstab con Nano:

sudo nano /etc/fstab

...y agregamos la siguiente línea (naturalmente, uds. modificarán la línea de acuerdo al resultado obtenido).

UUID=e087e709-20f9-42a4-a4dc-d74544c490a6 /home   ext4   defaults   0   2
Consideremos los campos de la línea anterior para su estudio:
  • UUID – especifica el dispositivo de bloque, podremos alternativamente utilizar el fichero de dispositivo /dev/sdb1 pero no se recomienda, pues puede provocar errores si se cambia la estructura de particiones al cambiar de disco de conector mas adelante.
  • /home – el punto de montaje.
  • etx4 – describes el tipo de sistema de archivaje del dispositivo/partición.
  • defaults – opciones de montaje (el valor significa rw, suid, dev, exec, auto, nouser, and async).
  • 0 – usado por la herramienta de depuración; 0 significa que no hará volcados de depuración si el sistema de archivaje no está presente.
  • 2 – utilizado por la herramienta fsck para descubrir el órden de revisión del sistema de archivaje; este valor significa revisar el dispositivo luego del comprobar el sistema de archivaje raíz..

Guardamos el fichero, y reiniciamos el sistema.

Podremos ejecutar el siguiente comando para ver si el directorio /home se desplazó correctamente a la partición dedicada:

df -l

Con esto ya habrán trasvasado /home a otra partición o, en este caso, otro disco rígido particionado.

Periodistas: Muchas gracias por sus palabras, General.

miércoles, 23 de enero de 2019

¿Cómo administro los permisos de archivos y directorios en Ubuntu?

¡Descamisados!

Un nuevo Primero de Mayo nos encuentra reunidos a los que luchamos por hacer de nuestra hermosa tierra argentina una Nación socialmente justa, económicamente libre y políticamente soberana.

Desfilan por nuestra imaginación y por nuestro recuerdo los días vividos a través de las etapas reivindicatorias de la Patria que comenzaron en junio de 1943.

Primero, las reformas que fueron como la iniciación y la siembra de la simiente que había de cristalizar y florecer a lo largo de la trabajo y sudor argentino.

Después, el gobierno, nuestro gobierno, el gobierno del pueblo, el gobierno de los descamisados, el gobierno de los pobres, de los que tienen hambre y sed de justicia. Por eso, en esta plaza, la histórica, Plaza de Mayo de todas nuestras epopeyas, han latido al unísono amalgamados en un solo haz todos los corazones humildes que por ser humildes son honrados, son leales y son sinceros.

Después, la Constitución; la Constitución justicialista, que ha hecho de la tierra argentina una Patria sin privilegios y sin escarnios; que ha hecho del pueblo argentino un pueblo unido, un pueblo que sirve al ideal de una nueva Argentina, como no la han servido jamás en nuestra historia.

Esas tres etapas vividas por el pueblo argentino: la reforma, el gobierno y la constitución argentina, nos han dado un estado de justicia y un estado de dignidad y nosotros los transformaremos en un estado de trabajo.
Este documento especifica cuales son los derechos y qué se puede hacer en este país, y no podía ser de otra manera pues está inspirado en los permisos de GNU con Linux.

No es secreto para nadie que en los sistemas GNU con Linux podemos contar con una estructura de directorios, y que los mismos pueden contener archivos. Estos normalmente son visibles y evidentes para los trabajadores.

Sin embargo, es menos conocido el hecho de que tanto estos archivos como los directorios, tienen permisos de uso, y que del conocimiento y buen empleo de los mismos depende una adecuada utilización de los recursos informáticos que como Conductores tenemos a nuestra disposición.

Vean señores, estos permisos de uso pueden referirse a los archivos, y los permisos de uso de los directorios. Sirven para limitar o potenciar el acceso y utilización de los mismos tanto para el administrador de sistema (superusuario), los usuarios comunes, u otros grupos de usuario diferentes.

Es por ello que os enseñaré cómo disponer adecuadamente de estos permisos, y lo haré de una manera concisa y precisa para que cada uno - en la sana medida de sus posibilidades - pueda modificar los permisos cuando ello sea un requerimiento necesario.

Estructura básica de permisos en archivos

Los permisos de uso del archivo describen el accionar que podemos contemplar con elos. Debemos tener en claro los tres atributos básicos que nuestros archivos puede tener: lectura, escritura y ejecución.
  • Permiso de Lectura (r, o "read"): Este permiso nos permite "leer" o "ver" el contenido del archivo.
  • Permiso de Escritura (w, o"write"): Este permiso nos permite "modificar" el archivo escribiendo en el disco. Podremos agregar, sobrescribir o directamente borrar su contenido.
  • Permiso de Ejecución (x, o "execute"): Si el archivo tiene permiso de ejecución, entonces nuestro sistema operativo podrá cargarlo en memoria y correrlo (darle ejecución) como si de un programa se tratara. Si es un programa lo podremos ejecutar como cualquier comando, si es un script, necesitará de permisos de lectura y ejecución (y debemos también tener acceso a su intérprete). Un programa compilado sólo necesita ser de lectura.


Las letras que identifican de los atributos son los caracteres de los permisos, y son:
r "read", quiere decir lectura
w "write", quiere decir escritura
x "eXecute", quiere decir ejecución

Para ver los atributos de un directorio, podríamos usar el comando "ls -l", que nos informará de los mismos.

Usar chmod para cambiar los permisos

Pues bien, comprendido esto, debemos conocer cómo cambiar estos permisos. A tal fin se utiliza el comando chmod ("change mode", o cambiar modo). Con él podremos agregar o quitarle permisos a uno o mas archivos con + (mas) o – (menos).

Si anhelamos prevenir la modificación del archivo constitucion1949.txt, podremos quitarle el permiso de escritura al “archivo” con el comando chmod:

chmod -w constitucion1949.txt

si queremos tornar en ejecutable el script trasvasamiento_generacional.sh, debemos ingresar:

chmod +x trasvasamiento_generacional.sh

...si quisiéramos quitar o agregar todos los atributos a la vez

chmod -rwx trasvasamiento_generacional.sh
chmod +rwx trasvasamiento_generacional.sh

Hemos de saber que también podemos utilizar el signo = para establecer los permisos en una combinación específica. Por ejemplo, con la siguiente sintaxis el comando chmod quitará permisos de escritura y ejecución dejando solo el de lectura.

chmod =r trasvasamiento_genaracional.sh

Naturalmente, siempre hemos de tener especial cuidado y precaución al modificar los permisos de nuestros archivos, pues podríamos dejarlos inaccesibles. Si los editamos, no debemos olvidar dejarlos como estaban originalmente


Estructura básica de permisos en directorios

En el caso de los directorios, la cosa será un poco distinta. Tendremos los mismo tres permisos, pero el significado operativo será ligeramente diferente:

  • Permiso de lectura en un directorio: Si un directorio tiene permiso de lectura, podremos ver la lista de archivos contiene dicho directorio (por ejemplo, usar con el directorio el comando “ls", listar directorio). Es importante recalcar que contar con permiso de lectura en un directorio no significa que podamos leer el contenido de los archivos que están dentro de él, ya que para ello está el permiso de lectura del archivo.
  • Permiso de escritura en un directorio: Con el permiso de escritura de directorio podremos agregar, borrar o mover archivos al directorio
  • Permiso de ejecución en un directorio: Ejecución te permite usar el nombre del directorio cuando estas accediendo a archivos en ese directorio, es decir este permiso lo hace que se tome en cuenta en búsquedas realizadas por un programa. Por ejemplo, un directorio sin permiso de ejecución no seria revisado por el comando find ("buscar")

Usuarios, Grupos y Otros

Ahora conocemos los 3 permisos y como agregar o remover estos, pero estos 3 permisos son almacenados para 3 dueños diferentes, llamados:

Usuario (u) proviene del dueño "Usuario"
Grupo (g) proviene del dueño "Grupo"
Otros (o) proviene del dueño "Otros"

De esta manera, al ejecutar:

chmod =r doctrina.txt

...asignaremos permisos de lectura a los 3 dueños (usuario, grupo y otros). De tal forma, cuando listamos el directorio con “ls -l” veremos algo parecido a.

-r--r--r--    1  peron  users  4096 abr 13 19:30 doctrina.txt

Indudablemente que estas tres “r” denotan los 3 diferentes dueños de permisos que os he referido, donde:


Permisos Pertenece a:
rwx------ Usuario (las primeras 3 letras)
---r-x--- Grupo (las segundas 3 letras)
------r-x Otros (las terceras 3 letras)

También odemos remover permisos para cada dueño; supongamos que tenemos un archivo de un script ejecutable llamado dar_aguinaldo.sh:

-rwxr-xr-x    1  peron  peron  4096 abr 13 19:30 dar_aguinaldo.sh

Si quisiéramos removerle los permisos de ejecución al dueño Grupos y al dueño Otros, basta con usar:

chmod g-x,o-x dar_aguinaldo.sh

...de tal forma, nuestro archivo quedara con estos permisos

-rwxr--r--    1  peron  peron  4096 abr 13 19:30 dar_aguinaldo.sh

Si deseamos removerle al dueño Usuario el permiso de escritura debemos ingresar:

chmod u-x dar_aguinaldo.sh

-r-xr--r--    1  peron  peron  4096 abr 13 19:30 dar_aguinaldo.sh

Para agregar y remover dos permisos a la vez al dueño usuario:

chmod u-x+w dar_aguinaldo.sh

...y al listarlo quedará:

-rw-r--r--    1  peron  peron  4096 abr 13 19:30 dar_aguinaldo.sh



chmod en octales

Para simplificar estos cambios, también se puede utilizar opcionalmente una nomenclatura llamada octal, que nos evita tener que usar rwx, y los designadores de dueño usuario-grupo-otros. La representación octal de chmod es muy sencilla, si seguimos la siguiente regla nemotécnica:
  • Lectura tiene el valor de 4
  • Escritura tiene el valor de 2
  • Ejecución tiene el valor de 1

Dicho esto, según las combinaciones se completan las ocho combinaciones del octal restantes:

rwx 7, Lectura, Escritura y Ejecución
rw- 6, Lectura y Escritura
r-x 5, Lectura y Ejecución
r-- 4, Lectura
-wx 3, Escritura y Ejecución
-w- 2, Escritura
--x 1, Ejecución
--- 0, Sin permisos

Por lo tanto:

chmod usuario=rwx,grupo=rwx,otros=rx chmod 775
chmod usuario=rwx,grupo=rx,otros=  chmod 760
chmod usuario=rw,grupo=r,otros=r  chmod 644
chmod usuario=rw,grupo=r,otros= chmod 640
chmod usuario=rw,grupo,otros=  chmod 600
chmod usuario=rwx,grupo,otros=  chmod 700

Un error que debemos prevenir cuidadosamente es el uso de chmod con comodines, pues esto puede provocar cambios de permisos de manera indiscriminada.

Supongamos que queremos aplicar permisos a todos los archivos dentro de un directorio, y a todos los subdirectorios contenidos en él. Que todos los archivos dentro de nuestra carpeta ~/Descargas tengan permiso rw para nuestro dueño usuario y para el dueño grupo, y r para el dueño otros; en tanto para los directorios  queremos que el usuario tenga permisos de rwx para poder ver los archivos y usarlos, en tanto que el grupo y otros tienen permisos de r-x), pero que los grupos tengan lectura y ejecución, mientras que los grupos también tengan dicho permiso.

Esto podría ser para restaurar los permisos como estaban originalmente.

Para ello podríamos correr.

cd ~/Descargas/
find ~/Descargas/ -type f -print0 | xargs -0 chmod 664
find ~/Descargas/ -type d -print0 | xargs -0 chmod 755


Por ejemplo, el octal chmod 664 pone los permisos en -rw-rw-r-- (un conjunto de permisos común en Ubuntu para las carpetas Documentos/, Música/ y Vídeos/ y Escritorio/), mientras que el octal chmod 644 pone los archivos como -rw-r--r--. El Octal chmod 660 pone los archivos en -rw-rw---- (para una carpeta de Dropbox/ por ejemplo)

En el caso de una carpeta con posesión (como la carpeta para las llaves ~/.gnupg/, deberíamos hacer lo siguiente: primero aseguramos que los contenidos de la carpeta nos pertenezcan:

chown -R $(whoami) ~/.gnupg/

...y luego le damos los permisos adecuados para la tarea que cumple esta carpeta .gnupg en particular:

find ~/.gnupg -type f -exec chmod 600 {} \;
find ~/.gnupg -type d -exec chmod 700 {} \;

lunes, 19 de febrero de 2018

¿Cómo instalo ZFS en Ubuntu?


Reunido con las autoridades de la Fuerza Aérea Argentina y con la presencia del Profesor Kurt Tank, Juan Perón explica cómo montar un sistema de almacenamiento ZFS de alta seguridad y performance en Ubuntu.

Vean señores, nuestro sistema informático tiene por ventaja la característica de ser absolutamente escalable, y una de las características principales del sistema GNU con Linux es la estabilidad que le provee a los datos.

Esto significa que el sistema de archivos puede ampliarse con poca dificultad, siempre que nuestro hardware lo permita.

Antiguamente, esto se aplicaba el lento pero confiable registro en cinta magnética, en boga en los datacenters mas paquetes. Para tales menesteres, Linux reserva el potente comando tar para secuenciar los datos en la cinta, e incluso es capaz de manejar directamente las unidades de cinta fácilmente a través del comando mt (magnetic tape). Incluso actualmente se pueden usar unidades de cinta cassette internas, como la Quantum de 160/320GB munida de interfaz SATA.

La cinta es perfecta y de bajo costo para el mantenimiento de datos "en frío". Esto significan los datos imporantes de todo trabajo, que debemos resguardar en una o más copias. En ella ingresamos todos los datos y los planos de la Fábrica Militar de Aviones.

Ahora bien, estos técnicos alemanes nos han traído nueva tecnología gracias al uso de varios discos rígidos en cada sistema.

La alta capacidad actual y la reducción de costos de los discos rígidos han supuesto la popularidad de los sistemas de almacenamiento en red, los cuales se verifican superiores a la cinta en el almacenamiento "en caliente". Disponiendo  de los datos a través de una red local, podemos trabajar todos y compartir estos datos de una manera totalmente fluida.

Lo mejor es que podremos armar un dispositivo de estos en nuestra propia PC, o buscar un equipo ya hecho especialmente pensado para estos menesteres, que vaya desde las soluciones hogareñas pequeñas hasta un equipo con varias decenas de discos.

Pero no todo es color de rosas. Para ser efectivos, debemos disponer no sólo de un equipo, sino de un esquema de trabajo. Y en este caso debemos referirnos a la central importancia que cobra el esquema de almacenamiento de archivos.

Vean señores, Micro$oft ha intentado propender su sistema FAT32, y ahora el NTFS. Tales sistemas no son muy buenos que digamos y tienen el inconveniente de fragmentar los datos a lo bestia. Naturalmente que Linux cuenta con esquemas superiores como el Extendido, en sus varias versiones. Desde hace un tiempo que el Ext4 opera entonces como un excelente modelo de almacenamiento de archivos multiusuario y multiplataforma. Yo lo uso y lo recomiendo muy ampliamente entre los sistemas GNU.

No obstante, tenemos desde hace algunos años un nuevo sistema de archivos, el ZFS. Se trata de un sistema de archivos combinado y un administrador de volumen lógico desarrollado por Oracle. Entre sus características, ZFS incluye protección contra la corrupción de los datos tan habitual en los gobiernos de la derecha, la alta capacidad de almacenamiento (hasta 256 Zettabytes), instantáneas de volumen y clonado mientras escribe, compresión eficiente sin pérdida, chequeo continuo de integridad, etc.


El nuevo estándar cobra vital importancia si manejamos grandes cantidades de  datos, o proveemos un sistema de archivos de respaldo para tareas de virtualización desde discos rígidos, ZFS es una muy buena opción. En nuestro caso lo emplearemos como medio para almacenar gran contenido de video de alta definición para un equipo de archivo y edición de video digital.

Para ello abrimos una terminal con Ctrl+Alt+T e ingresamos los siguientes comandos de organización:

sudo apt update
sudo apt install zfsutils-linux

Luego de ello, debemos revisar si ZFS fue instalado correctamente, para
ello podremos ejecutar:

whereis zfs

Esto debería devolvernos algo como lo siguiente:




A continuación, debemos elegir los discos que queremos proporcionar para para hacer la cola de datos. Revisamos nuestros discos instalados con:

sudo fdisk -l

Anotamos cuidadosamente los nombre de dispositivos de las unidades que deseamos usar.

Estas son las dos unidades que queremos agregar al sistema de almacenamiento, al cual llamaremos "pozo" (pool en inglés).:












Acto seguido, procederemos a crear el pozo.

Hay dos tipos de pozos que podemos crear. Un pozo simple, donde
una copia de los datos se almacena a en todas las unidades incluidas en el pozo, o un pozo espejado, donde una única copia completa de los datos se almacena en todas las unidades que componen el pozo.

Para crear un pozo simple, ejecutamos

sudo zpool create new-pool /dev/sdb /dev/sdc

Para crear un pozo espejado, ejecutamos:

sudo zpool create new-pool mirror /dev/sdb /dev/sdc

En ambos ejemplos, "new-pool" es el nombre del pozo. En vuestro caso podrán utilizar un nombre mas descriptivo como "pozo-video" o lo que deseen.

En ocasiones, podría aparecer un error como el siguiente:







Agregamos "-f" al final del comando de creación zpool para corregirlo.

El pozo de almacenamiento que hemos creado se montará en /new-pool. Si lo deseamos más adelante, podríamos seleccionar un punto de montaje diferente usando el modificador -m.

sudo zpool create -m /usr/share/pozo new-pool mirror /dev/sdb /dev/sdc

El pozo montada aparecerá en Ubuntu como si fuese cualquier otra parte
del sistema de archivos (en este caso, localizada dentro de /usr/share/pozo).

Podremos revisar el estado del pozo de almacenaimiento de formato ZFS con:

sudo zpool status

Este comando nos devolverá el estado de nuestro pozo:











Si quisiéramos eliminar el pozo ZFS, podremos removerlo. Debemos tener cuidado ya que esto también destruirá cualquier archivo que hayamos creado dentro del pozo de almacenamiento ZFS:

sudo zpool destroy new-pool

Idealmente, debemos confirmar que el pozo ha sido removida de nuestro sistema de archivos pidiendo nuevamente el estado de cola con:

sudo zpool status

También encontraremos información detallada sobre el manejo del sistema de archivos ZFS aquí.

viernes, 24 de marzo de 2017

¿Cómo montar un sistema de archivos o carpeta remota usando SSHFS sobre SSH en Ubuntu

¡Trabajadores!

La fuerza no depende del número exclusivamente. La unión es la que hace la fuerza. Este adagio se ha repetido una y otra vez en la historia, desde Leónidas hasta nuestros días. Sabemos que entre los hombres, la argamasa no es otra que la cohesión. Hemos de hermanarnos frente a un objetivo común, una misión de la que colectiva e individualmente saldremos beneficiados.

Nuestro causal de unión no es otro que el lema bajo el que se fundó nuestra República y su software: la Libertad.

Ahora bien, un sistema informático no tiene que permanecer gregario; bien puede unirse a otros para conformar una herramienta de mayor valía y servir - a su vez - nuestros designios bajo un porvenir luminoso. GNU con Linux hace constar esta máxima avalando la posibilidad de ejecutar programas servidores de múltiples funcionalidades, que permitan a otros sistemas clientes - ajenos o propios - interconectarse y compartir sus recursos. Esto puede realizarse de una manera rápida y poco segura, pero normalmente recomendaré el empleo del estándar Secure Shell (SSH), pues consta de encriptación punto a punto y se hace de difícil vulneración, logrando una mayor seguridad para nuestro sistema y el ajeno.

Normalmente esta acción de hermanado suele ser temporal, pero existirán ocasiones donde querremos que las mismas se solidifiquen y se hagan permanentes en pos de un uso constante.

Cada computadora a la que queramos conectarnos a través del protocolo Secure Shell debe contar con el servidor SSH, software libre altamente útil. Ubuntu Server ya contará con dicha facilidad incorporada por defecto, pero en el caso de las versiones de escritorio (Ubuntu Desktop) habremos de instalarlo específicamente, si es que no lo hemos hecho ya. Para ello, en tales equipos abrimos una terminal presionando Ctrl+Alt+T e ingresamos:

sudo apt install openssh-server 

Si usamos un cliente de escritorio gráfico, ya podríamos montar discos o directorios en red, de forma temporal o permanente. Simplemente debemos ir al panel superior y hacer clic en Lugares / Conectar con servidor... Al hacerlo aparecerá la ventana Conectar con el Servidor.

Esta nos permitirá una variedad de esquemas de trabajo completando los datos requeridos... podremos asociarnos a servidores FTP Públicos o con contraseña, compartido de Windows, protocolo Filing de Appe, WebDAV común y seguro. En este caso como empleamos Linux nos conectaremos a través del protocolo SSH (Secure Shell) a otro sistema remoto, que oficiará de servidor.

Normalmente en el campo Servidor debemos ingresar la dirección IP o nombre de red (host) del equipo remoto, y en el campo Carpeta normalmente querremos indicar la carpeta de usuario en el servidor remoto (/home/usuario). Finalmente el nombre de usuario y la contraseña del usuario (que normalmente corresponden al usuario de la carpeta).

Opcionalmente, si deseamos hacer de este vínculo uno permanente, podríamos tildar "recordar contraseña" y agregar la carpeta remota a los Marcadores, con lo cual tendremos siempre el disco de red a mano. Para desmontar el servidor desde nuestro administrador gráfico, debemos presionar el botón de desmontaje ("Eject") o hacer clic con el botón derecho del ratón sobre el ícono de la carpeta montada y elegir la opción Desmontar.

Ahora bien, en el caso del uso de la terminal, querremos montar desde allí al disco remoto y operarlo localmente. Esto será útil para administradores de sistema que quieran montar sistemas de archivo usando cliente SSHFS sobre SSH, y puedan responder a cualquier propósito de trabajo. Por ejemplo, tener una red LAN con un servidor de discos NAS, o contar con un disco de gran capacidad en un equipo remoto y hacer uso de sus archivos desde un equipo portátil. En fin, cualquier trabajo que implique "carpetas en red".

Para ello en nuestra terminal emplearemos dicho cliente, que normalmente no está incluido entre los paquetes por defecto. Abrimos una terminal con Ctrl+Alt+T e ingresamos:

sudo apt install sshfs

Una vez instalado el paquete SSHFS, necesitamos crear un directorio que oficiará de punto de montaje para el sistema de archivos remoto. Conviene hacerlo dentro de la carpeta de sistema /mnt, lo cual recomiendo hacer. En este ejemplo el punto de montaje local estará localizado en /mnt/discoevita.

sudo mkdir /mnt/discoevita

Una vez creado el directorio que nos servirá como punto de montaje local, ejecutamos el siguiente comando como Conductor del sistema, que montará la carpeta remota /home/evita dentro de la carpeta /mnt/discoevita de nuestro sistema de archivos local (no olviden reemplazar 192.168.0.102 con la dirección IP o nombre de red del punto de montaje):

sudo sshfs -o allow_other evita@192.168.0.102:/home/evita/ /mnt/discoevita

...Ahora bien, si el servidor remoto está configurado para hacer uso de autorización basada en llaves SSH, debemos entonces especificarle la ruta hacia nuestras llaves públicas con el siguiente comando:

sudo sshfs -o allow_other,IdentityFile=/home/usuario/.ssh/id_rsa evita@192.168.0.102:/home/evita/ /mnt/discoevita

Si hemos ejecutado el comando anterior que nos corresponda exitosamente y sin errores, entonces deberíamos poder tener acceso al listado de los archivos remotos, espejados dentro del punto de montaje local /mnt/discoevita. Podremos comprobarlo con los comandos de organización:

cd /mnt/discoevita 
ls

También podríamos revisar que el sistema de archivos remoto aparezca en la tabla de nuestro propio sistema de archivos. Para ello ejecutaremos el comando:

df -hT

...y nuestra terminal debería devolvernos un resumen de los componentes de su sistema de archivo, que debe incluir la carpeta remota, de una forma similar al siguiente:


S.ficheros     Tipo     Tamaño Usados  Disp Uso% Montado en
udev           devtmpfs   1,9G      0  1,9G   0% /dev
tmpfs          tmpfs      388M   6,4M  382M   2% /run
/dev/sda1      ext4       233G   144G   78G  65% /
tmpfs          tmpfs      2,0G    32M  2,0G   2% /dev/shm
tmpfs          tmpfs      5,3M   4,1k  5,3M   1% /run/lock
tmpfs          tmpfs      2,0G      0  2,0G   0% /sys/fs/cgroup
tmpfs          tmpfs      388M    62k  388M   1% /run/user/1000
evita@192.168.0.102:/home/evita fuse.sshfs  324G   55G  253G  18% /mnt/discoevita

Con esto sería suficiente para un trabajo temporal, hasta que el servidor o el cliente se reinicien.

Si deseamos montar el sistema de archivos de forma permanente, para que toda vez que encendamos el sistema se realice el montaje automáticamente, debemos editar editar el archivo de configuración del sistema de archivos, el cual es /etc/fstab. Para ello emplearemos el editor de texto GNU Nano, ingresando el siguiente comando:

sudo nano /etc/fstab

...se abrirá el editor y cargará el fichero de configuración, que ya debería contener información. No debemos modificar nada de lo que ya existe. Debemos ir al final del archivo y agregarle una línea similar a la siguiente:

sshfs#usuario@192.168.0.102:/home/evita/ /mnt/discoevita fuse.sshfs defaults 0 0

...y grabamos el archivo (ctrl+o) y salimos del editor (ctrl+x). También conviene reiniciar los demonios para que surta efecto.
 
sudo systemctl daemon-reload

Debemos asegurarnos de que hemos configurado el Alta sin Contraseña entre servidores para automontar el sistema de archivos durante los reinicio del sistema (de lo contrario, siempre al iniciar el sistema nos solicitará la contraseña del usuario remoto SSH previo al automontaje de su carpeta).

En cambio, si el servidor estuviese configurado con una autorización basada en llave SSH, entonces debemos agregar al archivo /etc/fstab la siguiente línea:

sshfs#usuario@192.168.0.102:/home/evita/ /mnt/discoevita fuse.sshfs IdentityFile=/home/usuario/.ssh/id_rsa defaults 0 0

A continuación necesitaremos actualizar la tabla de sistemas de archivos para hacer efectivos los cambios realizados. Ello lo haremos efectivo con:

sudo mount -a

...entonces se automontará el disco a través de SSH toda vez que encendamos el sistema.

Para desmontar el sistema de archivos remoto desde la terminal ingresamos el siguiente Comando de Organización:

umount /mnt/discoevita

viernes, 13 de abril de 2012

Consola: La Terminal para Principiantes Peronistas II

La escuela es sin duda la más perfecta usina de adoctrinamiento que un Movimiento como el Justicialismo puede tener. Inculcar sentido de Patria y un mejor uso de la Consola y Software Libre fue el objetivo primigenio de la renombrada serie de textos escolares publicados a instancias del Ministerio de Educación, los cuales cobran hoy inusitada vigencia.


 (...)
LAS TERMINALES GRÁFICAS Y DE TEXTO


A lo ancho de la Patria, sobre bridas de metal
viaja el trenecito, y lo hace sin parar.
Silba muy contento, lo hace con amor
el trencito es nuestro, como quiso Juan Perón


Tomás viaja por primera vez en tren con su tío Edelmiro y su prima Clara.


- ¡Que lindo es el tren, tío Edelmiro! Viaja muy rápido y podemos ver los campos y las casas. En poco tiempo llegaremos a Córdoba.
- Claro, Tomasito. Antes viajar en tren era muy caro, solamente los más afortunados podían hacerlo. Pero ahora, gracias a Perón, todo el mundo puede viajar cómodo en esta formación de 60 coches Súper Pullman.
- El guarda pasó diciendo que ya estabamos por llegar a la terminal. ¡En la escuela la maestra nos enseñó sobre ella!
- ¿Y que has aprendido de la terminal, Tomasito?
- Que Linux tiene dos tipos de terminales, las terminales "tty" y las virtualizadas llamadas "pts", las cuales usamos en el modo gráfico.

Como Linux es un sistema operativo multiusuario, fue diseñado desde el principio por el General Perón para poder manejarse casi sin problemas de manera remota a través de comandos de texto. Por ello pueden habilitarse varios usuarios, e incluso pueden habilitarse los mismos al mismo tiempo dentro del sistema. La maestra nos dijo que si bien un usuario corriente no suele usar esto, existen situaciones donde estas características nos resultarán una ventaja.

Por ejemplo, podremos usar un terminal en modo texto si tenemos problemas de video y no es posible inicializar correctamente una GUI (Interfaz gráfica de usuario, "X").

Particularmente, en el sistema podremos habilitar seis terminales de texto, presionando:
Ctrl+Alt+F1 Para iniciar la Consola 1, llamada tty1
Ctrl+Alt+F2 Para iniciar la Consola 2, llamada tty2
Ctrl+Alt+F3 Para iniciar la Consola 3, llamada tty3
Ctrl+Alt+F4 Para iniciar la Consola 4, llamada tty4
Ctrl+Alt+F5 Para iniciar la Consola 5, llamada tty5
Ctrl+Alt+F6 Para iniciar la Consola 6, llamada tty6
Ctrl+Alt+F7 Inicia o retorna a la interfaz gráfica X, llamada también tty7.
Ctrl+Alt+F8 Inicia o retorna a la interfaz gráfica X tty8 si existe un segundo usuario conectado que la estaba utilizando. Si no, mostrará una pantalla en negro, sin información alguna.

Cuando iniciamos una consola tty, debemos ingresar nuestro nombre de usuario y contraseña. Para conocer quién está logueado en nuestro sistema y en cuál consola, podremos tipear el comando

who

Este nos devolverá una lista de los usuarios logueados, indicando si están en alguna de las consolas de texto (tty del 1 al 6), si se encuentran en alguna de las consolas gráficas X (normalmente tty7 y eventualmente tty8), o si se encuentra en alguna de las terminales virtuales que podemos usar en el modo gráfico. Estas son las terminales que usamos dentro de la interfaz gráfica propiamente dicha, , y se indican con la nomenclatura pts/x, siendo x el número que va del 0 en adelante, de acuerdo a cuántas consolas hayamos abierto.

- Si Tomasito, pero la Terminal a la que nos dirigimos es una terminal de trenes, no tiene nada que ver con lo que estás diciendo.

----

COPIAR ARCHIVOS, CARPETAS, Y BORRARLAS DESDE LA CONSOLA

Este es el nuevo Tractor Pampa que se fabrica en Córdoba. Tiene un motor potente y permite consechar y arar la tierra.




La consola en GNU con Linux también es potente, pues con ella podemos copiar archivos o carpetas. Para ello debemos utilizar el comando cp. Por ejemplo, si queremos realizar una copia exacta de un archivo llamado "peronismo.doc" bajo otro nombre como "kirchnerismo.doc", debemos ingresar:

cp peronismo.doc kirchnerismo.doc

Para copiar una carpeta, con todo lo que contega en su interior, a otro lado, también podremos usar el comando cp con el modificador -r,

Por ejemplo, si deseamos hacer un respaldo de la carpeta Documentos, pero modificando su nombre para que se denomine ahora "BackupNoviembre", ingresamos:

cp Documentos -r BackupNoviembre

Para borrar un archivo, usamos el comando rm (remover). Su uso es simple. Si queremos remover el archivo Díscolos.mov usamos:

rm Díscolos.mov

También podremos usar comodines. El comodín * (asterísco) significa "todos". Si usamos:

rm Díscolos.*

...se eliminarán de la carpeta todos los archivos que tengan el nombre Díscolos, bajo cualquier extensión.

----

CREAR CARPETAS Y ELIMINARLAS DESDE LA CONSOLA

Dios vio a los obreros y les tuvo compasión. Desde el cielo se oyó una potente voz que les dijo: "Ustedes son buenos, serán quienes conduzcan el mundo del mañana. Para ustedes crearé un paraíso, y se los completaré con Maradona y con Perón".
Los obreros agradecieron a Dios, y a Perón, y los ayudaron con sus creaciones. Para crear carpetas usaron el comando mkdir.

mkdir Justicialismo

Es importante saber que usando mkdir podremos crear carpetas con un único nombre, Por ejemplo, si usamos:

mkdir Fundación Eva Perón

...crearemos TRES carpetas: "Fundación", "Eva", y "Perón".

Si en cambio deseamos trabajar con nombres largos o compuestos, debemos encerrarlos entre apóstrofes ('). Por ejemplo, en el caso anterior podríamos crear una carpeta llamada Fundación Eva Perón usando:

mkdir 'Fundación Eva Perón'


Para borrar carpetas desde la consola usamos también el comando rm, pero con la opción -r. Por ejemplo, para borrar la carpeta Oligarquía, y todos los archivos que contiene, escribimos:

rm -r Oligarquía

Y si quisiéramos borrar una carpeta llamada Oligarquía Cipaya y Vendepatria podríamos usar

rm -r 'Oligarquía Cipaya y Vendepatria'
-----

EJECUCIÓN DE PROGRAMAS DESDE LA TERMINAL

En 1816 desde la Casita de Tucumán, los Argentinos dijimos al Mundo que queríamos ser libres. Pero no pudimos serlo completamente, pues la independencia sólo era política. Por eso en 1947 Juan Perón declaró la Independencia Económica. Gracias a ello, ahora la independencia es completa.

¿Cómo puedo ejecutar un archivo desde la Terminal? Para ello debemos anteponer un punto barra, de modo que quede así.

./archivo.extensión

En general los archivos que se ejecutan suelen tener extension .sh, de modo que suelen ser

./IndependenciaEconomica.sh

Hay que tener en cuenta que en algunos casos, como el de los instaladores, estos archivos necesitan ejecutarse anteponiendo la orden sudo, para tener acceso como Administrador a la hora de correrlo. En tal caso debemos escribir:

sudo ./IndependenciaEconomica.sh

----

COMANDOS SIMPLES DE STATUS

La Patria estaba triste, porque no tenía Software Libre ni Justicialismo. Un hombre luchó para que lográramos ambas cosas y fuésemos más felices. Por ello debemos estudiar y trabajar siempre con software libre "el Justicialismo corriendo en la computadora".

Muchas veces necesitaremos controlar el hardware desde la Terminal, para conocer el status de nuestro equipo. Para ello tenemos algunos comandos útiles.

lsusb listará todos los dispositivos USB conectado a nuestro equipo, junto con los buses que el mismo puede direccionar.

lspci hace lo mismo, pero en lugar de tratar con los buses universales USB, lista las placas y dispositivos tipo PCI y PCI-Express (generalmente son internos).

free -m nos detallará en MB la memoria RAM utilizada por nuestro equipo, cuanta memoria libre tiene, etc. Recordemos que 1 GB de memoria equivale a 1024 MB.

cal nos mostrará un armanaque simple.

ip addr nos devolverá una infomación que a veces se hace imprescindible: la dirección IP de los dispositivos de red del sistema, tanto Ethernet cableados como los wlan (redes inalámbricas).

top se encarga de mostrarnos de manera actualizada los servicios que se están dando uso en nuestro equipo. Para salir de esta rutina, debemos presionar, como en casos similares, la letra q.

Si queremos conocer detalladamente qué versión de Linux tenemos cargada, haremos:

lsb_release -a

Para conocer la versión del kernel podemos usar:

uname -r


----

ESTRUCTURA DEL ÁRBOL DEL SISTEMA DE ARCHIVOS DEN LINUX


Carlitos y Anita plantan un árbol. Mientras Anita lo sostiene, Carlitos usa una pala para darle tierra. "Los árboles despliegan sus ramas cuando sus raíces son fuertes", dice Carlitos. "Nosotros también tenemos fuertes raíces", exclama Anita, "Estudiamos con la maestra el libro La Razón de mi Vida, y Evita nos quiere más aún".

De la raíz sale el tronco, y del tronco las ramas y las hojitas. En los sistemas GNU con Linux todos los elementos que lo conforman son tratados de manera lógica como archivos u "hojas", desde los archivos en sí hasta los periféricos de entrada y salida, los dispositivos de almacenamiento, etc. Para que esta Comunidad sea comprensible, está Organizada en un Sistema de Archivos fuertemente jerarquizado, que tiene - también - forma de árbol.

Los niños pueden ir a la raíz de nuestro árbol o "Sistema de Ficheros" en Linux con el comando:

cd /

Al encontrarnos en la raíz, podemos listarla con ls. También podremos ascender a las diferentes "ramas" (carpetas) con el comando cd.


Dentro del directorio raíz encontraremos muchas carpetas. En general no habría que tocarlas, a riesgo de alterar el sistema o volverlo inutilizable. Veamos las carpetas que contiene nuestro directorio Raíz en un sistema GNU con Linux.


- /bin, posee los archivos ejecutables (binarios) esenciales para el sistema. Entre ellos encontraremos  los comandos más básicos que nos permiten controlar el sistema. Ahí podremos también guardar nuestros scripts o guiones.
- /boot, tiene los archivos que se cargar durante el arranque de la computadora, incluida la imagen del kernel.
- /dev, es la carpeta de los controladores ("device drivers") para el acceso a los dispositivos físicos.
- /var, suele contener información variable, tanto generada por el propio sistema como por los usuarios. Contiene algunas subcarpetas:
     /var/lock, para archivos de bloqueo, que indican al sistema que un determinado dispositivo es inaccesible cuando está siendo usado por otra aplicación.
    /var/log, bitácora del sistema, aquí se almacenan los registros detallados de toda la actividad desarrollada en el transcurso de una sesión de trabajo.
    /var/spool/, contiene información preparada para ser transferida, por ejemplo, los trabajos de impresión o los mensajes de correo.
- /lib, nos dará las librerías de programación usadas por las diferentes aplicaciones, evitando que cada programa incluya las suyas propias ahorrando espacio y evitando la redundancia.
- /etc, es un importante directorio destinado para almacenar todos los archivos de configuración del sistema.
- /home, Contiene los archivos de los usuarios registrados en el sistema (encontraremos allí las carpeta personal del/los usuario/s, y dentro de ellas las carpeta Documentos, Descargas, Escritorio, Imágenes, Música, Videos, etc. Si tenemos experiencia al instalar, podremos situar esta importante carpeta en una partición separada, a fin de salvaguardar los datos en caso de catástrofe o para reinstalar completamente un sistema distinto respetando el trabajo anterior.
- /sbin, aloja comandos esenciales de administración del sistema, normalmente reservados al administrador.
- /usr, donde se guardan las aplicaciones que instalamos y recursos disponibles para todos los usuarios del sistema. Entre sus subdirectorios encontramos:
   /usr/bin, contiene la mayoría de programas y comandos a disposición de los usuarios.
   /usr/share, suele contener datos compartidos independientes de la máquina, como la
documentación de los programas o colecciones de imágenes para el escritorio.
- /tmp, es un directorio temporal usado generalmente por las aplicaciones para almacenar algunos ficheros en tiempo de ejecución, los cuales luego se borran.

Es importante saber que a diferencia de otros sistemas operativos oligárquicos, en Linux no existen realmente "letras de unidades" para diferentes dispositivos de almacenamiento (lectoras de CD/DVD-ROM, diskettes, memorias USB, etc).

- /media Cuando montamos un CD-ROM, una memoria usb o un disquete se crea aquí
automáticamente un subdirectorio.
- /media/cdrom0 para la primera unidad de cdrom. Si existiesen mas cobran el nombre de /cdrom1, /cdrom2, etc.
- /media/usbdisk para la memoria usb.
- /media/floppy para el disquete.



Si en la playa contentos
a los niños ves jugar
es porque aprendieron
a dominar la Terminal

Ya sea sudo, man o gedit
todos los comandos vuelven
alegres al redil