AUFS: Como criar uma ramificação de leitura/gravação de apenas parte de uma árvore de diretórios?

AUFS: Como criar uma ramificação de leitura/gravação de apenas parte de uma árvore de diretórios?

AuFS (outro sistema de arquivos união) nos permite mesclar duas árvores em uma, mesmo quando essas árvores se sobrepõem. Podemos então direcionar as gravações na árvore mesclada para um dos ramos e as leituras para outro.

O uso clássico disso é com um sistema de arquivos flash e um disco RAM, comoesse(ref 1) para criar um sistema de arquivos raiz somente leitura que não interrompa o Linux. Todas as gravações de arquivos vão para a memória RAM. Após uma reinicialização, o sistema restaura a configuração original.

  • /dir1= somente leitura
  • /dir2= ler/escrever
  • /aufs= fusão de /dir1e/dir2

/aufsé então remontado para --movetorná-lo /(root)

Simplificado, o exemplo em (ref 1) apenas faz isso

mount -t aufs br=/dir2:/dir1 /aufs
mount --move /aufs /

No entanto, quero usá-lo de forma que o gravável ( /dir2) esteja em um disco real, não em um disco RAM. Dessa forma, após uma reinicialização, ele reterá seus dados.

Mas preciso garantir que determinados arquivos em dir2 não sejam preservados e restaurados para seus /dir1padrões (). Isso garante que inicializações futuras sempre usem os arquivos enviados. Sem perder dados de usuário e registro.

por exemplo, arquivos alterados em /etc, /bin, /boot, /usrnão devem sobreviver a uma reinicialização.

OPágina da AUFS(ref 2) tem muito poucos exemplos.

Então vamos à pergunta: Qual é a maneira correta de fazer isso usando AuFS?

Posso pensar no seguinte:

  1. Modifique o primeiro comando de montagem de alguma forma
  2. Adicione mais comandos de montagem usando aufs add/del antes da segunda montagem
  3. Simplesmente exclua as árvores que não devem ser preservadas /dir2no momento da inicialização
  4. Árvore parcial ( etc, bin, boot, lib, etc) emtmpfs

Referência 1:https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash
Referência 2:http://aufs.sourceforge.net/aufs.html

Responder1

Opção 1: auFSpor si só não suporta essa opção de montagem, então a opção nº 1 está inoperante. Você tem que contornar isso.

Opção nº 3: Claro, você pode simplesmente excluir esses diretórios a cada inicialização. Pode ser a maneira mais simples que vejo aqui.

Opção 2: Você poderia trabalhar com um arquivo tmpfs. Então primeiro crie um arquivo tmpfs, digamos de 500 MB:

mount -t tmpfs -o rw,size=500M tmpfs /tmpfs

Temos agora:

  • /dir1: somente leitura
  • /dir2: ler escrever
  • /tmpfs: leitura/gravação na RAM
  • /aufs: a sobreposição de /dir1e/dir2

Dentro /tmpfs, criamos os diretórios que você deseja preservar:

mkdir -p /tmpfs/{etc,usr,boot,bin}

Observe, fazemos isso quando já mesclamos os dois diretórios. Então, quando a árvore de diretórios /aufsjá existir. Porém, agora fazemos uma montagem aufs por diretório que deve ser preservada:

mount -t aufs -o dirs=/tmpfs/etc=rw:/dir2/etc=ro none /aufs/etc
mount -t aufs -o dirs=/tmpfs/usr=rw:/dir2/usr=ro none /aufs/usr
mount -t aufs -o dirs=/tmpfs/boot=rw:/dir2/boot=ro none /aufs/boot
mount -t aufs -o dirs=/tmpfs/bin=rw:/dir2/bin=ro none /aufs/bin

Agora você tem uma árvore de diretórios /aufsonde pode gravar arquivos em qualquer lugar, mas quando você escreve, /etcpor exemplo, ele será gravado /tmpfs/etc, que está na RAM, portanto, não sobrevive a uma reinicialização. Outros arquivos, /homepor exemplo, são gravados em /dir2/home, que é um sistema de arquivos gravável e de leitura e, portanto, sobrevive a uma reinicialização.

Outra solução: Eu também uso um sistema cliente que usa um sistema de arquivos de sobreposição e dados de usuário preservados. Aqui está como eu resolvi isso: Simplesmente um sistema de arquivos somente leitura e um tmpfs montado sobre ele. Mais tarde, quando o usuário fizer login, monto seu diretório inicial a partir de um servidor samba com leitura e gravação. Portanto, todos os dados do usuário são armazenados e preservados /homee o restante não sobrevive a uma reinicialização. No seu caso, você pode simplesmente colocar /homeem outra partição física que seja legível e montá-la posteriormente em /aufs/home.

informação relacionada