Administración de discos e particións en Linux

De Manuais Informática - IES San Clemente.
Revisión del 08:19 26 oct 2021 de Vieites (discusión | contribs.)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

Introdución

Os discos e as particións en Linux aparecen como dispositivos no sistema de ficheiros do seguinte xeito:

  • /dev/hda: disco 1 IDE/ATAPI
  • /dev/hdb: disco 2 IDE/ATAPI
  • /dev/sda: disco 1 SCSI
  • /dev/sdb: disco 2 SCSI
  • /dev/hda1: partición 1 do disco 1 IDE/ATAPI
  • /dev/sda1: partición 1 do disco 1 SCSI
  • /dev/fd0: disquete ordinario
  • /dev/ram0: Disco RAM
  • /dev/nvme0n1: disco 1 NVME
  • /dev/nvme0n2: disco 2 NVME
  • /dev/nvme0n1p1: partición 1 do disco 1 NVME


Aprende.png
Configuración máquina virtual:

Para facer a práctica que nesta páxina se detalla debedes ter un equipo ou máquina virtual con dous discos, nun teredes instalado o Linux e o outro debe estar valeiro, neste caso emprégase un de 2GB.

fdisk

Para coñecer os discos duros existentes no sistema, e as particións que estes teñen, empregaremos o seguinte comando:

# fdisk -l

Disco /dev/sda: 10.7 GB, 10737418240 bytes
255 cabezas, 63 sectores/pista, 1305 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Identificador de disco: 0x00072620

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sda1   *           1         747     6000246   83  Linux
/dev/sda2             748         871      996030    5  Extendida
/dev/sda5             748         871      995998+  82  Linux swap / Solaris

Disco /dev/sdb: 2147 MB, 2147483648 bytes
255 cabezas, 63 sectores/pista, 261 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Identificador de disco: 0x00000000

El disco /dev/sdb no contiene una tabla de particiones válida

Analizando a saída deste comando vemos que no sistema no que foi executado:

  • O equipo ten dous discos duros SATA:
  • sda de 10,7 GB de tamaño.
  • sdb de 2147 MB de tamaño.
  • O disco duro sda ten as seguintes particións:
  • sda1 partición primaria cun sistema de arquivos linux.
  • sda2 partición estendida.
  • sda5 partición lóxica que é a partición de intercambio (swap).
  • O disco duro sdb non ten particións ou ten a táboa de particións danada.

Unha vez que temos toda esta información seleccionamos o disco duro a particionar, neste caso o sdb:

# fdisk /dev/sdb
El dispositivo no contiene una tabla de particiones DOS válida ni una etiqueta de disco Sun o SGI o OSF
Se está creando una nueva etiqueta de disco DOS con el identificador 0x6ff75258.
Los cambios sólo permanecerán en la memoria, hasta que decida escribirlos. 
Tras esa operación, el contenido anterior no se podrá recuperar.

Atención: el indicador 0x0000 inválido de la tabla de particiones 4 se corregirá mediante w(rite)

Orden (m para obtener ayuda):

Vemos que introducindo o carácter m aparecerá unha axuda:

Orden (m para obtener ayuda): m
Orden  Acción
   a   Conmuta el indicador de iniciable
   b   Modifica la etiqueta de disco bsd
   c   Conmuta el indicador de compatibilidad con DOS
   d   Suprime una partición
   l   Lista los tipos de particiones conocidos
   m   Imprime este menú
   n   Añade una nueva partición
   o   Crea una nueva tabla de particiones DOS vacía
   p   Imprime la tabla de particiones
   q   Sale sin guardar los cambios
   s   Crea una nueva etiqueta de disco Sun
   t   Cambia el identificador de sistema de una partición
   u   Cambia las unidades de visualización/entrada
   v   Verifica la tabla de particiones
   w   Escribe la tabla en el disco y sale
   x   Funciones adicionales (sólo para usuarios avanzados)

Orden (m para obtener ayuda):

Imos facer unha partición primaria formateada en ext3 de 1.024MB, unha partición estendida que ocupe o resto do disco e, dentro dela, unha partición lóxica de 512MB formateada en FAT32:

Orden (m para obtener ayuda): n
Acción de la orden
e   Partición extendida
   p   Partición primaria (1-4)
p
Número de partición (1-4): 1
Primer cilindro (1-261, valor predeterminado 1): 1
Last cilindro, +cilindros or +size{K,M,G} (1-261, valor predeterminado 261): +1G

Orden (m para obtener ayuda): n
Acción de la orden
e   Partición extendida
   p   Partición primaria (1-4)
e
Número de partición (1-4): 2
Primer cilindro (133-261, valor predeterminado 133): 133
Last cilindro, +cilindros or +size{K,M,G} (133-261, valor predeterminado 261): 261

Orden (m para obtener ayuda): n
Acción de la orden
l   Partición lógica (5 o superior)
   p   Partición primaria (1-4)
l
Primer cilindro (133-261, valor predeterminado 133): 133
Last cilindro, +cilindros or +size{K,M,G} (133-261, valor predeterminado 261): +512M

Orden (m para obtener ayuda): t
Número de partición (1-5): 5
Código hexadecimal (escriba L para ver los códigos): c
Se ha cambiado el tipo de sistema de la partición 5 por c (W95 FAT32 (LBA))

Orden (m para obtener ayuda): p

Disco /dev/sdb: 2147 MB, 2147483648 bytes
255 cabezas, 63 sectores/pista, 261 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Identificador de disco: 0x6ff75258

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sdb1               1         132     1060258+  83  Linux
/dev/sdb2             133         261     1036192+   5  Extendida
/dev/sdb5             133         198      530113+   c  W95 FAT32 (LBA)

Orden (m para obtener ayuda): w
¡Se ha modificado la tabla de particiones!

Llamando a ioctl() para volver a leer la tabla de particiones.

ATENCIÓN: Si ha creado o modificado alguna de las
particiones DOS 6.x, consulte la página man de fdisk
para ver información adicional.
Se están sincronizando los discos.
#

lsblk

Outro comando que nos permite listar todos os dispositivos de bloque é lsblk.

#Moi interesante a saida que obtemos có parámetro -a
$ lsblk -a
#Tamén se lle indicamos xusto os parámetros que nos interesan
$ lsblk -o PATH,TYPE,FSTYPE,SIZE,FSUSED,MOUNTPOINT,MODEL
PATH      TYPE FSTYPE  SIZE FSUSED MOUNTPOINT MODEL
/dev/sda  disk         120G                   VBOX_HARDDISK
/dev/sda1 part ext4   74,5G   1,9G /
/dev/sda2 part           1K
/dev/sda5 part swap    1,9G        [SWAP]
/dev/sr0  rom         1024M                   VBOX_CD-ROM

lsscsi

El comando lsscsi se trata de otro comando que nos permite ver todos los dispositivos SCSI existentes en el equipo.

parted

El comando fdisk o sfdisk no enumerará ningún tamaño de partición superior a 2 TB. Para resolver este problema, se debe usar el comando GNU parted con particiones GPT. Es compatible con tablas de particiones Intel EFI / GPT. Recuerda que EFI usa GPT y BIOS usa Master Boot Record (MBR). Para mostrar las particiones de todos los dispositivos:

$ parted -l

En este ejemplo, enumere las particiones en / dev / sdb usando el comando parted:

$ parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
# Indicamos las unidades
(parted) unit GB
# Pedimos la lista de particiones
(parted) print
...
# Mellor empregar o parámetro '-l'
$ parted -l /dev/sdb
...

sfdisk

Se queremos copiar a configuración dun HD noutro podemos empregar a ferramenta sfdisk. Vexamos un exmplo onde se copia o particionamento de /dev/sdb no disco /dev/sda:

$ sfdisk -d /dev/sdb | sfdisk /dev/sdc

mkfs

Agora hai que instalar na partición sdb1 o sistema de arquivos ext3:

# mkfs.ext3 -b 4096 /dev/sdb1
mke2fs 1.41.3 (12-Oct-2008)
Etiqueta del sistema de ficheros=
Tipo de SO: Linux
Tamaño del bloque=4096 (bitácora=2)
Tamaño del fragmento=4096 (bitácora=2)
66384 nodos-i, 265064 bloques
13253 bloques (5.00%) reservados para el superusuario
Primer bloque de datos=0
Número máximo de bloques del sistema de ficheros=272629760
9 bloque de grupos
32768 bloques por grupo, 32768 fragmentos por grupo
7376 nodos-i por grupo
Respaldo del superbloque guardado en los bloques: 
	32768, 98304, 163840, 229376

Escribiendo las tablas de nodos-i: hecho                           
Creating journal (8192 blocks): hecho
Escribiendo superbloques y la información contable del sistema de ficheros: hecho

Este sistema de ficheros se revisará automáticamente cada 38 montajes o
180 días, lo que suceda primero.  Utilice tune2fs -c o -i para cambiarlo.
#

E tamén crear o sistema de arquivos FAT32 na partición sdb5:

# mkfs.vfat -F 32 /dev/sdb5
mkfs.vfat 2.11 (12 Mar 2005)


Aprende.png
mkfs constrúe un sistema de ficheiros de Linux

mkfs [-V] [-t tipo-sf] [opcións-sf] sistema-de-ficheiros [bloques]
mkfs emprégase para construir un sistema de ficheiros de Linux sobre un dispositivo, normalmente unha partición dun disco duro.
sistema-de-ficheiros é o nome do dispositivo (como por exemplo /dev/hda1 ou /dev/sdb2) ou o punto de montaxe (como /, /usr ou /home) para o sistema de ficheiros.
bloques é o número de bloques que o sistema de ficheiros irá a empregar.
O código de saída devolto por mkfs é 0 se termina con éxito e 1 se termina en faio.
En realidade, mkfs é simplemente un frontal para os diversos constructores de sistemas de arquivos disponibles baixo Linux.
- mkfs.ext3 ---- Crea un sistema de arquivos ext3.
- mkfs.vfat ---- Crea un sistema de arquivos FAT

Agora podemos comprobar como quedaron particionados os discos:

# fdisk -l

Disco /dev/sda: 10.7 GB, 10737418240 bytes
255 cabezas, 63 sectores/pista, 1305 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Identificador de disco: 0x00072620

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sda1   *           1         747     6000246   83  Linux
/dev/sda2             748         871      996030    5  Extendida
/dev/sda5             748         871      995998+  82  Linux swap / Solaris

Disco /dev/sdb: 2147 MB, 2147483648 bytes
255 cabezas, 63 sectores/pista, 261 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Identificador de disco: 0x6ff75258

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sdb1               1         132     1060258+  83  Linux
/dev/sdb2             133         261     1036192+   5  Extendida
/dev/sdb5             133         198      530113+   c  W95 FAT32 (LBA)

mount

Despois hai que montar as particións, montaremos en /datosext3 a partición sdb1 e en /datosfat a partición sdb5. Para facer iso, primeiro debemos abrir o arquivo /etc/fstab e engadir as seguintes liñas:

# /dev/sdb1
/dev/sdb1	/datosext3	ext3	defaults,auto,rw	0	0
# /dev/sdb5
/dev/sdb5	/datosfat	vfat	defaults,user,auto	0	0

Logo debemos crear os directorios onde imos motar as particións, empregando o comando mkdir, e montar as particións neses directorios, empregando o comando mount.

# mkdir /datosext3
# mkdir /datosfat
# mount /datosext3
# mount /datosfat


Aprende.png
fstab

O ficheiro fstab (file systems table) é un arquivo que se encontra no directorio /etc/ e forma parte da configuración do sistema. O mais destacado deste ficheiro é a lista de discos e particións disponibles. Nel se indica como montar cada dispositivo e que configuración utilizar. A estrutura das instrucións é de 6 columnas separadas por espacios ou tabuladores:

[dispositivo] [punto_de_montaxe] [sistema_de_arquivos] [opcións] [dump-freq] [pass-num]
  • [dispositivo] é o directorio lóxico que fai referencia a unha partición ou recurso.
  • [punto_de_montaxe] é a carpeta en que se proxectaran os datos do sistema de arquivos.
  • [sistema de arquivos] é o algoritmo que se utilizará para interpretalo.
  • [opcións] é o lugar onde se especifican os parámetros que mount utilizará para montar o dispositivo.
  • [dump-freq] é o comando que utiliza dump para facer respaldos do sistema de arquivos, se é cero non se toma en conta ese dispositivo.
  • [pass-num] indica a orde na que a aplicación fsck revisará a partición en busca de erros durante inicio, se é cero o dispositivo non se revisa.

Podemos ver dun xeito gráfico a creación destas particións coa utilidade GParted: Particions.jpg

O arquivo /etc/mtab indícanos os sistemas de arquivos montados nese momento no equipo.

Para montar as particións nun directorio determinado empregamos o comando mount.

Vexamos un exemplo no que se monta a partición /dev/sdb1 formateada en ext3 no directorio /var/html:

 #mount -t ext3 /dev/sdb1 /var/html/

Se queremos que o sistema monte todo o indicado no arquivo /etc/fstab neste intre executaremos o comando:

 #mount -a

umount

Para desmontar unha partición do directorio no que se atopa montada empregaremos o comando umount.

No seguinte exemplo desmontamos a partición previamente montada no directorio /var/html.

 #umount /var/html/

df

O comando df da información sobre a utilización do espazo en disco nos diferentes sistemas de arquivos montados no sistema.

$ df -h /dev/sda1
S.ficheros     Tamaño Usado  Disp Uso% Montado en
/dev/sda1         18G  1,3G   16G   8% /
# Para descubrir en que partición está un directorio, por exemplo /home:
$ df -h /home
/dev/sda1         18G  1,3G   16G   8% /
# Para descubrir en que partición está o directorio no que nos atopamos:
$ df -h .

du

O comando du mostra o espazo que ocupa un directorio

# du -s -h /var/html
20K /var/html