Configurar almacenamiento
Fedora CoreOS se envía con un sencillo esquema de almacenamiento predeterminado: la partición raíz es la última y se expande para ocupar el tamaño completo del disco. Aparte de la partición de inicio, todos los datos se almacenan en la partición raíz. Vea la sección Disposición de disco para más detalles.
A continuación, proporcionamos ejemplos de diversas maneras de personalizar esto.
Fedora CoreOS requiere que el sistema de archivos raíz tenga al menos 8 Gb. Por razones prácticas, las imágenes de disco para algunas plataformas se envían con un sistema de archivo raíz más pequeño, que de modo predeterminado se expande automáticamente para llenar todo el espacio de disco disponible. Si usted añade particiones adicionales después del sistema de archivos raíz, debe asegurarse de cambiar explícitamente el tamaño de la partición raíz como se muestra a continuación de modo que tenga al menos 8 Gb. Actualmente, si el sistema de archivos raíz es menor de 8 Gb se emite una advertencia en el arranque. A partir de Junio de 2021, si el sistema de archivos raíz es menor de 8 Gb y está seguido por otra partición, Fedora CoreOS se negará a arrancar. Para más detalles, vea este error. |
Referencia de dispositivos de bloque desde Ignition
Muchos de los ejemplos siguientes harán referencia a un dispositivo de bloque como /dev/vda
. El nombre del dispositivo de bloque disponible depende de la infraestructura subyacente (bare metal contra nube) y con frecuencia del tipo específico de instancia. Por ejemplo en AWS, algunos tipos de instancia tienen dispositivos NVMe (/dev/nvme*
), otros usan /dev/xvda*
.
Si su configuración de disco es simple y usa el mismo disco desde el que se inició el sistema operativo se puede usar el enlace /dev/disk/by-id/coreos-boot-disk
para hacer referencia conveniente a ese dispositivo. Este enlace está disponible solo durante el aprovisionamiento con el propósito de hacer más fácil referirse al mismo disco desde el que se arrancó el sistema operativo.
En los casos donde usted necesita acceder a otros discos, la cosa más sencilla de hacer es arrancar una única máquina con una configuración Ignition que solo le da acceso SSH e inspeccionar los dispositivos de bloque por medio de, por ejemplo, el comando lsblk
.
Para hardware físico, una buena mejor práctica es referenciar los dispositivos por medio de /dev/disk/by-id/
o enlaces /dev/disk/by-path
.
Configurar montajes /var separados
Aquí hay un ejemplo de una configuración Butane para establecer un`/var` sobre una partición separada en el mismo disco principal:
variant: fcos
version: 1.5.0
storage:
disks:
- # El enlace al dispositivo de bloque desde el que se arrancó el sistema operativo.
device: /dev/disk/by-id/coreos-boot-disk
# No queremos borrar la tabla de particiones ya que este es el dispositivo
# principal.
wipe_table: false
partitions:
- number: 4
label: root
# Localice al menos 8 Gb para el rootfs. Vea la NOTA de arriba sobre esto.
size_mib: 8192
resize: true
- size_mib: 0
# Asignamos una etiqueta descriptiva a la partición. Esto es importante
# para referirse a él de manera independiente en otras partes de la
# configuración.
label: var
filesystems:
- path: /var
device: /dev/disk/by-partlabel/var
# Seleccionamos el sistema de archivos que nos gusta.
format: ext4
# Pedimos a Butane que genere una unidad de montaje para nosotros de modo que
# este sistema de archivos permanezca montado en la raíz real.
with_mount_unit: true
Usted puede, desde luego, montar solo un subconjunto de /var
en una partición separada. Por ejemplo, para montar /var/lib/containers
:
variant: fcos
version: 1.5.0
storage:
disks:
- device: /dev/disk/by-id/coreos-boot-disk
wipe_table: false
partitions:
- number: 4
label: root
# Allocate at least 8 GiB to the rootfs. See NOTE above about this.
size_mib: 8192
resize: true
- size_mib: 0
label: containers
filesystems:
- path: /var/lib/containers
device: /dev/disk/by-partlabel/containers
format: xfs
with_mount_unit: true
Alternativamente, usted también puede montar almacenamiento de un disco separado. Por ejemplo, aquí montamos /var/log
desde una partición en /dev/vdb
:
variant: fcos
version: 1.5.0
storage:
disks:
- device: /dev/vdb
wipe_table: false
partitions:
- size_mib: 0
start_mib: 0
label: log
filesystems:
- path: /var/log
device: /dev/disk/by-partlabel/log
format: xfs
with_mount_unit: true
En este ejemplo, limpiamos el disco y creamos dos nuevas particiones.
variant: fcos
version: 1.5.0
storage:
disks:
-
# Obligatorio. Usamos el Número de ID Mundial de la unidad para asegurar
# la unicidad.
device: /dev/disk/by-id/wwn-0x50014e2eb507fcdf
# Esto asegura que la tabla de partición se vuelve a crear junto con todas las
# particiones.
wipe_table: true
partitions:
# La primera partición (slot número 1) es de 32 Gb y empieza al principio
# del dispositivo. Su type_guid la identifica como una partición Linux
# swap.
- label: part1
number: 1
size_mib: 32768
start_mib: 0
type_guid: 0657fd6d-a4ab-43c4-84e5-0933c84b4f4f
# La segunda partición (implícito slot número 2) se colocará después
# de la partición 1 y ocupará el resto del espacio disponible.
# Como no se especifica su type_guid, será una partición nativa
# Linux.
- label: part2
Reconfigurar el sistema de archivos raíz
Es posible reconfigurar el sistema de archivos raíz mismo. Puede usar la ruta /dev/disk/by-label/root
para referirse a la partición raíz original. Debe asegurarse que el nuevo sistema de archivos también tenga la etiqueta de root
.
Debe tener al menos 4 Gb de RAM para que funcione el reaprovisionamiento raíz. |
Aquí hay un ejemplo de cambiar de xfs a ext4, reutilizando la misma partición en el disco primario:
variant: fcos
version: 1.5.0
storage:
filesystems:
- device: /dev/disk/by-partlabel/root
wipe_filesystem: true
format: ext4
label: root
Igual que en la sección anterior, también puede mover el sistema de archivos raíz por completo. Aquí movemos la raíz a un dispositivo RAID0:
variant: fcos
version: 1.5.0
storage:
raid:
- name: myroot
level: raid0
devices:
- /dev/disk/by-id/virtio-disk1
- /dev/disk/by-id/virtio-disk2
filesystems:
- device: /dev/md/myroot
format: xfs
wipe_filesystem: true
label: root
Usted no necesita las claves path o with_mount_unit ; FCOS sabe que la partición raíz es especial y sabrá como encontrarla y montarla.
|
Si desea replicar el disco de arranque en múltiples dispositivos para resistir a un fallo de disco, necesita hacer espejo de todas las particiones predeterminadas (root, boot, EFI System Partition y código del cargador de arranque). Existe una sintaxis de configuración Butane especial para esto:
variant: fcos
version: 1.5.0
boot_device:
mirror:
devices:
- /dev/sda
- /dev/sdb
Definir un sistema de archivos
Este ejemplo demuestra el proceso de creación del sistema de archivos definiendo y etiquetando las particiones, combinándolas en una matriz RAID y formateando la matriz como ext4.
variant: fcos
version: 1.5.0
storage:
disks:
# Esto define dos particiones, cada una en su propio disco. Los discos se
# identifican por su WWN.
- device: /dev/disk/by-id/wwn-0x50014ee261e524e4
wipe_table: true
partitions:
-
# Cada partición obtiene una etiqueta legible por las personas.
label: "raid.1.1"
# Cada partición se sitúa al principio del disco y tiene 64 Gb
# long.
number: 1
size_mib: 65536
start_mib: 0
- device: /dev/disk/by-id/wwn-0x50014ee0b8442cd3
wipe_table: true
partitions:
- label: "raid.1.2"
number: 1
size_mib: 65536
start_mib: 0
# Usamos las particiones previamente definidas como dispositivos en una matriz RAID1 md.
raid:
- name: publicdata
level: raid1
devices:
- /dev/disk/by-partlabel/raid.1.1
- /dev/disk/by-partlabel/raid.1.2
# La matriz md resultante se usa para crear un sistema de archivos EXT4.
filesystems:
- path: /var/publicdata
device: /dev/md/publicdata
format: ext4
label: PUB
with_mount_unit: true
Almacenamiento cifrado (LUKS)
Este es un ejemplo de cómo configurar un dispositivo LUKS en /var/lib/data
.
variant: fcos
version: 1.5.0
storage:
luks:
- name: data
device: /dev/vdb
filesystems:
- path: /var/lib/data
device: /dev/mapper/data
format: xfs
label: DATA
with_mount_unit: true
El sistema de archivos raíz también se puede mover a LUKS. En este caso, el dispositivo LUKS debe tener pines Clevis. Hay dos tipos de pines disponibles: TPM2 y Tang (o una combinación de los que usan Shamir Secret Sharing).
Los pines TPM2 simplemente vinculan el cifrado a la máquina física en uso. Asegúrese de comprender su modelo de amenaza antes de elegir entre pines TPM2 y Tang. Para más información, vea esta sección de la documentación de pin Clevis TPM2. |
Debe tener al menos 4 Gb de RAM para que funcione el reaprovisionamiento raíz. |
Esta es una sintaxis de configuración Butane simplificada para configurar el cifrado y los pines del sistema de archivos raíz. A continuación un ejemplo de uso para crear un sistema de archivos raíz cifrado con pines TPM2:
variant: fcos
version: 1.5.0
boot_device:
luks:
tpm2: true
Esto es equivalente a la siguiente configuración expandida:
variant: fcos
version: 1.5.0
storage:
luks:
- name: root
label: luks-root
device: /dev/disk/by-partlabel/root
clevis:
tpm2: true
wipe_volume: true
filesystems:
- device: /dev/mapper/root
format: xfs
wipe_filesystem: true
label: root
La configuración expandida no incluye las claves`path` o with_mount_unit
; FCOS sabe que la partición raíz es especial y descubrirá como encontrarla y montarla.
Este siguiente ejemplo vincula el cifrado del sistema de archivos raíz a PCR 7 que corresponde al Componente de Arranque UEFI utilizado para rastrear el certificado Secure Boot (Arranque Seguro) desde la memoria. Por lo tanto, las actualizaciones de firmware/certificados UEFI no deberían afectar al valor almacenado en PCR 7.
El vínculo para PCR 8 (UEFI Boot Component (Componente de Arranque UEFI usado para rastrear comandos y la línea de comandos del kernel) no está soportado puesto que la línea de comando del kernel cambia con cada actualización del sistema operativo. |
variant: fcos
version: 1.5.0
storage:
luks:
- name: root
label: luks-root
device: /dev/disk/by-partlabel/root
clevis:
custom:
needs_network: false
pin: tpm2
config: '{"pcr_bank":"sha1","pcr_ids":"7"}'
wipe_volume: true
filesystems:
- device: /dev/mapper/root
format: xfs
wipe_filesystem: true
label: root
Se puede encontrar más documentación de los campos config
en las páginas de manual de clevis
: man clevis-encrypt-tpm2
Se puede usar el siguiente comando clevis
para confirmar que el cifrado del sistema de archivos raíz se vincula a PCR 7.
$ sudo clevis luks list -d /dev/disk/by-partlabel/root
1: tpm2 '{"hash":"sha256","key":"ecc","pcr_bank":"sha1","pcr_ids":"7"}'
A continuación un ejemplo de la sintaxis de configuración simplificada con Tang:
variant: fcos
version: 1.5.0
boot_device:
luks:
tang:
- url: http://192.168.122.1:80
thumbprint: bV8aajlyN6sYqQ41lGqD4zlhe0E
El sistema contactará con el servidor Tang en el arranque.
Para más información sobre la configuración del servidor Tang vea la documentación upstream. |
Usted puede configurar los pines de Tang y TPM2 (incluyendo múltiples servidores Tang para redundancia). De forma predeterminada, solo el dispositivo TPM2 o un único servidor Tang es necesario para desbloquear el sistema de archivos raíz. Esto se puede cambiar usando la clave threshold
:
variant: fcos
version: 1.5.0
boot_device:
luks:
tang:
- url: http://192.168.122.1:80
thumbprint: bV8aajlyN6sYqQ41lGqD4zlhe0E
tpm2: true
# esto permitirá a rootfs desbloquear solo si los pines TPM2 y Tang están
# accesibles y son válidos
threshold: 2
Dimensionando la partición raíz
Si utiliza Ignition para volver a configurar o mover la partición raíz, esta partición no crece automáticamente en el primer arranque (vea las discusiones relacionadas en esta cuestión). En el caso de mover la partición raíz a un nuevo disco (o múltiples discos), debería establecer el tamaño de partición deseado usando el campo size_mib
. Si vuelve a configurar el sistema de archivos raíz en su lugar, como en el ejemplo LUKS de arriba, puede volver a dimensionar la partición existente usando el campo resize
:
variant: fcos
version: 1.5.0
storage:
disks:
- device: /dev/disk/by-id/coreos-boot-disk
partitions:
- label: root
number: 4
# 0 means to use all available space
size_mib: 0
resize: true
luks:
- name: root
device: /dev/disk/by-partlabel/root
clevis:
tpm2: true
wipe_volume: true
filesystems:
- device: /dev/mapper/root
format: xfs
wipe_filesystem: true
label: root
Añadir swap
Este ejemplo crea una partición swap que abarca todo el dispositivo sdb
, crea un área swap sobre ella y crea una unidad swap en systemd de modo que el área swap se habilita al arranque.
variant: fcos
version: 1.5.0
storage:
disks:
- device: /dev/sdb
wipe_table: true
partitions:
- number: 1
label: swap
filesystems:
- device: /dev/disk/by-partlabel/swap
format: swap
wipe_filesystem: true
with_mount_unit: true
Añadir almacenamiento en red
Los sistemas Fedora CoreOS pueden ser configurados para montar sistemas de archivos en red como NFS y CIFS. Esto se alcanza mejor utilizando Ignition para crear unidades systemd. Los sistemas de archivos pueden ser montados en el arranque creando una unidad estándar de montaje. Alternativamente, un sistema de archivos puede ser montado cuando los usuarios acceden a un punto de montaje mediante la creación de una unidad adicional de auto-montaje. A continuación están ejempos de cada uno para un sistema de archivos NFS.
Configurar montajes NFS
Crear una unidad systemd para montar un sistema de archivos NFS en el arranque.
El archivo .mount debe tener un nombre según la ruta (por ejemplo /var/mnt/data = var-mnt-data.mount )
|
variant: fcos
version: 1.3.0
systemd:
units:
- name: var-mnt-data.mount
enabled: true
contents: |
[Unit]
Description=Mount data directory
[Mount]
What=example.org:/data
Where=/var/mnt/data
Type=nfs4
[Install]
WantedBy=multi-user.target
variant: fcos
version: 1.3.0
systemd:
units:
- name: var-mnt-data.mount
contents: |
[Unit]
Description=Mount data directory
[Mount]
What=example.org:/data
Where=/var/mnt/data
Type=nfs4
[Install]
WantedBy=multi-user.target
- name: var-mnt-data.automount
enabled: true
contents: |
[Unit]
Description=Automount data directory
[Automount]
TimeoutIdleSec=20min
Where=/var/mnt/data
[Install]
WantedBy=multi-user.target
Ejemplos avanzados
Este ejemplo configura un disco de arranque reflejado con un sistema de archivos cifrado con TPM2, anula los tamaños de las replicas de la partición raíz generada automáticamente y añade un partición /var
reflejada cifrada que consume el resto de los discos.
variant: fcos
version: 1.5.0
boot_device:
luks:
tpm2: true
mirror:
devices:
- /dev/sda
- /dev/sdb
storage:
disks:
- device: /dev/sda
partitions:
# Anular el tamaño de la partición raíz en el primer disco, por medio de la
# etiqueta generada por boot_device.mirror
- label: root-1
size_mib: 10240
# Añadir una nueva partición llenando el resto del disco
- label: var-1
- device: /dev/sdb
partitions:
# Similarly for second disk
- label: root-2
size_mib: 10240
- label: var-2
raid:
- name: md-var
level: raid1
devices:
- /dev/disk/by-partlabel/var-1
- /dev/disk/by-partlabel/var-2
luks:
- name: var
device: /dev/md/md-var
# No se ha especificado clave material, de modo que será generada una clave
# aleatoria y almacenada en el sistema de archivos raíz
filesystems:
- device: /dev/mapper/var
path: /var
label: var
format: xfs
wipe_filesystem: true
with_mount_unit: true
Diseño del disco
Todos los sistemas Fedora CoreOS empiezan con la misma imagen de disco que varía ligeramente entre arquitecturas en base a lo que necesitan para la carga de arranque. En el primer arranque el sistema de archivos raíz se expande para llenar el resto del disco. La imagen de disco se puede personalizar usando configuraciones Butane para reparticionar el disco y crear/reformatear sistemas de archivos. Las instalaciones de metal desnudo no son diferentes; el instalador solo copia la imagen cruda en el disco objetivo e inyecta la configuración especificada en /boot
para su uso en el primer arranque.
Vea en Reconfigurar el sistema de archivos raíz ejemplos sobre los cambios en la partición raíz soportados. |
Tabla de particiones
La utilización de números para referirse a particiones específicas está desaconsejado en su lugar se deberían usar etiquetas o UUIDs. Fedora CoreOS reserva las etiquetas boot
, boot-<number>, root
, root-<number>, BIOS-BOOT
, bios-<number>, EFI-SYSTEM
y esp-<number> y los nombres de dispositivos RAID md-boot
y md-root
RAID. La creación de particiones, sistemas de archivos o dispositivos RAID con esas etiquetas no se admite.
Tabla de Partición x86_64
La imagen de disco x86_64 está formateada como con un MBR protector. Admite el arranque por medio de BIOS y UEFI (incluyendo Secure Boot).
El diseño de la tabla de partición ha cambiado con el tiempo. El diseño actual es:
Número |
Etiqueta |
Descripción |
Tipo de partición |
1 |
BIOS-BOOT |
Contiene imagen BIOS GRUB |
datos crudos |
2 |
EFI-SYSTEM |
Contiene imagen EFI GRUB y corrector Secure Boot |
FAT32 |
3 |
boot |
Contiene configuración GRUB, imágenes kernel/initramfs |
ext4 |
4 |
root |
Contiene el sistema de archivos raíz |
xfs |
La partición EFI-SYSTEM puede ser borrada o reformateada cuando haya arranque BIOS. Del mismo modo, la partición BIOS-BOOT puede ser borrada o reformateada cuando haya arranque EFI.
Sistemas de archivos montados
Fedora CoreOS utiliza OSTree, que es un sistema para la administración de múltiples árboles de sistemas operativos arrancables que comparten almacenamiento. Cada versión de sistema operativo es parte del sistema de archivos`/. Todas las implementaciones comparten el mismo `/var
que puede estar en el mismo sistema de archivos o montado separadamente.
Esto muestra los puntos de montaje predeterminados para un sistema Fedora CoreOS instalado sobre un disco /dev/vda
:
$ findmnt --real # Some details are elided
TARGET SOURCE FSTYPE OPTIONS
/ /dev/vda4[/ostree/deploy/fedora-coreos/deploy/$hash] xfs rw
|-/sysroot /dev/vda4 xfs ro
|-/etc /dev/vda4[/ostree/deploy/fedora-coreos/deploy/$hash/etc] xfs rw
|-/usr /dev/vda4[/ostree/deploy/fedora-coreos/deploy/$hash/usr] xfs ro
|-/var /dev/vda4[/ostree/deploy/fedora-coreos/deploy/var] xfs rw
`-/boot /dev/vda3 ext4 ro
La Partición de Sistema EFI se montaba anteriormente sobre /boot/efi
pero ya no es así. Sobre sistemas configurados con dispositivo de arranque en espejo, hay particiones EFI independientes sobre cada disco constituyente.
/
inmutable, /usr
solo lectura
Como OSTree se utiliza para administrar todos los archivos que pertenecen al sistema operativo, no se puede escribir en los puntos de montaje /
y /usr
. Cualquier cambio en el sistema operativo debería ser aplicado por medio de rpm-ostree
.
Del mismo modo, no se puede escribir en el punto de montaje /boot
y la EFI System Partition no se monta de forma predeterminada. Estos sistemas de archivo son administrados por rpm-ostree
y bootupd
y no deben ser modificados directamente por un administrador.
Actualmente no se admite la adición de directorios de nivel superior (esto es /foo
) y el atributo inmutable no lo permite.
El /
real (como en la raíz del sistema de archivos en la partición root
) está montado en solo lectura en /sysroot
y no debe ser accedido o modificado directamente.
Configuración en /etc
y estado en /var
Las únicas ubicaciones de lectura admitidas son /etc
y /var
. /etc
debería contener solo archivos de configuración y no se espera que almacene datos. Todos los datos se deben mantener bajo /var
y no serán tocados por las actualizaciones del sistema. Los lugares tradicionales que pudieran albergar datos (por ejemplo /home
o /srv
) son enlaces simbólicos a directorios en /var
(por ejemplo /var/home
o /var/srv
).
Selección de versión y arranque
Se crea una entrada de menú GRUB por cada versión de Fedora CoreOS disponible en un sistema. Esta entrada de menú hace referencia a una implementación ostree
que consta de un kernel Linux, un initramfs y un hash que enlaza a un compromiso ostree
(pasado por medio del argumento del kernel ostree=
). Durante el arranque, ostree
leerá este argumento del kernel para determinar que implementación usar como sistema de archivos raíz. Cada actualización o cambio en el sistema (instalación de paquete, añadido de argumentos de kernel) crea una nueva implementación. Esto permite la vuelta atrás a implementaciones anteriores si la actualización causa problemas.
Want to help? Learn how to contribute to Fedora Docs ›