Como determinar o tipo de repositório de contêineres lxc-container (diretório / btrfs / aufs etc.)?

0

Digamos que alguém tenha configurado uma partição BTRFS e criado vários contêineres LXC.

Como, em retrospectiva, pode ser determinado qual tipo de armazenamento de apoio está sendo usado por cada contêiner (portanto, se cada um usa um repositório 'diretório', um 'BTRFS', ou até um 'AUFS' etc. )?

Isso pode ser importante para saber quais são as opções de manutenção do container.

    
por woosting 01.10.2017 / 13:16

2 respostas

1

Quando um contêiner é criado, há um arquivo de configuração que também é criado. O arquivo de configuração define algumas configurações no contêiner. Para contêineres LXC, isso é armazenado, por padrão, em

/var/lib/lxc/ContainerName-foo / config (para contêineres privilegiados).

e

~ / .local / share / lxc / YourContainerName-foo / config (para contêineres sem privilégios).

O armazenamento de dados padrão para contêineres lxc é um sistema de arquivos baseado em diretório chamado dir, isso significa que um determinado sistema de arquivos não está definido. A opção "nenhum" funciona como um alias para dir. Se dir for o repositório de backup definido, o sistema de arquivos raiz do contêiner estará localizado em usr / local / var / lib / lxc / YourContainerName-foo / rootfs e o ext4 será usado como o sistema de arquivos raiz.

O local para verificar o tipo de armazenamento de backup em uso para cada contêiner seria no arquivo de configuração mencionado acima em / var / lib / lxc / container / config.

Na seção "Configuração específica do contêiner", há uma linha que define o rootfs.backend.

por exemplo. lxc.rootfs.backend = lvm

lxc.rootfs.backend = dir

lxc.rootfs.backend = btrfs

etc.

Outro método que pode ser usado, mas não tão confiável, é usar o comando df -Th em um prompt do shell, dentro do contêiner lxc. Isso permitirá que você não só verifique o status do espaço do disco, mas também mostre o tipo de sistema de arquivos. A saída pode ser enganosa ao tentar determinar o armazenamento de backup do sistema de arquivos, pois o dir usará o ext4 e o LVM usará ext3. ou seja, a saída do df seria mostrada como ext3, embora o lvm também seja usado.

Espero que isso ajude

    
por Jason-C 05.11.2017 / 22:31
0

Agora estou curioso sobre sua implementação e ainda não tenho certeza sobre seu ambiente. Mas estou baseando este comentário em algumas suposições:

  1. Você tem acesso a um prompt de shell do Linux (CLI).
  2. Você baixou / instalou o LXC e o btrfs-tools.
  3. Você carregou o módulo do kernel btrfs.

Eu teria pensado que se você fosse clonar um contêiner lxc, ainda haveria uma entrada de back-end do sistema de arquivos raiz, pois é isso que define o tipo rootfs. Dizendo que, da minha experiência com a clonagem de ambientes de virtualização completa, sempre parece haver problemas conflitantes.

Além disso, você criou o sistema de arquivos btrfs real ou apenas o definiu no comando lxc-create? Pode não estar aparecendo porque o dispositivo de bloco real pode não estar definido.

Não sei muito bem qual é o problema geral, mas parece que ele está relacionado ao clone. isto é, o novo contêiner ainda apontando para o dispositivo de blocos dir original dos contêineres para armazenamento, ou algo parecido. Deixe-me dar alguns pontos que podem ajudar a solucionar o problema.

A maneira como eu criaria um contêiner LXC com armazenamento de backup BTRFS seria.

Instale o BTRFS (Parece que você fez isso):

apt-get -y instala o btrfs-tools

Carregue o módulo do kernel (Parece que você fez isso):

modprobe btrfs

Crie o sistema de arquivos btrfs (parece que você fez isso):

mkfs -t btrfs / dev / sda

O sistema de arquivos no dispositivo de bloco seria então montado.

mkdir / home / btrfs-mnt (ou onde quer que o local desejado esteja)

monte / dev / sda / home / btrfs-mnt

Essa seria a etapa que eu tomaria para criar um sistema de arquivos utilizável para os contêineres LXC.

Se você estiver criando um monte de contêineres btrfs,

arquivo -s / dev / sda ( mostra que o tipo de arquivo é um sistema de arquivos btrfs ).

Sistema de arquivos btrfs show ( mostra sistemas de arquivos btrfs ).

subvolume btrfs show / home / btrfs-mnt ( identifica o diretório raiz btrfs ).

cat / proc / mounts | grep btrfs ( mostra dispositivos de bloco btrfs montados ).

Sistema de arquivos btrfs df / home / btrfs-mnt ( mostra o uso do disco btrfs ).

Depois que o dispositivo de bloco btrfs é criado e o LXC é instalado, posso criar um contêiner. O caminho para a montagem btrfs será definido usando a opção --lxcpath = eo tipo rootfs do btrfs é definido usando a opção --bdev. Como o caminho para o local lxc padrão agora é diferente, um link simbólico é necessário para redirecionar para o local real.

Crie o contêiner LXC protegido por btrfs:

lxc-criar --bdev btrfs --lxcpath = / home / btrfs-mnt - nome mybtrfscontainerfoo --template ubuntu

crie o link simbólico para o arquivo de configuração real.

cd / var / lib / lxc / mybtrfscontainerfoo /

ln -s / home / btrfs-mnt / mybtrfscontainerfoo / config / var / lib / lxc / mybtrfscontainerfoo / config

Parece-me que você está tentando configurar os contêineres do btrfs ou copiá-los para que isso ajude. OpenWRT, não tenho certeza do que você está fazendo lá. Eu usei apenas para obter firmware não padrão em um roteador doméstico.

Espero que isso ajude, se não, então, talvez descrevendo um pouco mais seu ambiente, pode me ajudar a ter uma visão mais clara.

deixe-me saber como você se sai.

Melhores esforços,

Jason-C

    
por Jason-C 09.11.2017 / 01:26