ZFS - dois conjuntos, uma raiz.

3

Eu tenho uma máquina de mesa com dois conjuntos de discos - pequenos SSDs para coisas que eu preciso para ser HDs rápidos e grandes para coisas que eu preciso ser grande.

Eu configurei os pequenos SSDs em um pool chamado "rpool" e segui as instruções para usá-lo como o sistema de arquivos raiz do Ubuntu - ele até inicializa a partir dele. link

O ZFS não me permite criar um segundo pool ("hpool" para os HDDs) com uma raiz de / . Para contornar isso, usei uma raiz de /hdd para hpool.

Isso significa que todos os meus conjuntos de dados do hdd estão sendo montados em /hdd , não abaixo de / onde eu quero que eles estejam - por exemplo, / hdd / tmp em vez de / tmp.

Como posso consertar isso? (Além de uma confusão de links simbólicos.)

    
por fadedbee 07.10.2016 / 12:12

4 respostas

1

Você está fazendo errado.

O ZFS suporta armazenamento de fiação e silício misturado em um único pool, mas de uma maneira diferente da que você está tentando. Em vez de gerenciar manualmente quais dados vão para onde, o ZFS deseja lidar com isso por meio de seu ZIL e L2ARC caches .

Configure dessa maneira, o ZFS descobrirá o que precisa ser onde, com base nos seus padrões de uso.

Se você precisa ter gerenciamento manual sobre o que vai aonde, sugiro simplesmente fazer três pools: um para cada um dos SSDs e um espelho ou RAID-Z para os HDDs. Use um pool SSD para o sistema de arquivos raiz, um para /home e o pool HDD lento para dados em massa. Tentando esmagar tudo em uma única coisa, mas ainda mantendo o gerenciamento manual é misturar conceitos. Você quer que o ZFS gerencie quais discos seus dados estão ou não.

    
por 07.10.2016 / 18:14
3

Ao criar um novo pool, você pode usar a opção -R para especificar a raiz alternativa. A opção -O canmount=off do ZFS é adicionada para evitar que esse pool seja montado primeiro e para evitar a seguinte mensagem de erro ao criar sistemas de arquivos filho no novo pool:

zfs create tpool/tst
cannot mount 'tpool' on '/': directory is not empty
cannot mount 'tpool/tst' on '/tst': failure mounting parent dataset

Crie o segundo pool da seguinte forma:

zpool create -N -R / -O canmount=off tpool device

Quando você cria um sistema de arquivos no novo pool usando:

zfs create tpool/tst

Ele será exibido como:

NAME                                USED  AVAIL  REFER  MOUNTPOINT
rpool                              15.7G  15.3G    34K  /rpool
.
tpool                               146K   984M    31K  /
tpool/tst                            31K   984M    31K  /tst

ls -l /tst/
total 0
    
por 07.10.2016 / 12:27
3

Answering to the question "How do I fix this?":

Todos os conjuntos de dados têm uma propriedade de ponto de montagem. Você pode configurá-lo para qualquer diretório que você gosta. No seu caso, /hdd é apenas o padrão se você não o definir. por exemplo:

zfs set mountpoint=/foo hdd/foo

Algumas outras respostas até agora dão bons pontos, mas respondem à pergunta não-formulada "O que eu deveria ter feito para evitar isso em primeiro lugar?"

    
por 07.10.2016 / 12:15
2

/hdd foi escolhido em sua configuração porque esse é o ponto de montagem base no qual seu pool foi montado e o ZFS usa herança para propagar determinadas propriedades.

Você pode montar todos os conjuntos de dados do ZFS onde desejar definindo sua propriedade de ponto de montagem.

zfs set mointpoint=/tmp pool2/tmp

Observe que os conjuntos de dados filhos de pool2/tmp herdarão o mointpoint pai, a menos que você o corrija para cada um deles.

Tenha também cuidado ao remontar os diretórios do sistema. É difícil se recuperar de erros facilmente cometidos aqui.

    
por 08.10.2016 / 22:06

Tags