Maneira correta de criar um zfs a partir de um diretório existente?

9

Digamos que eu tenho um rpool com o etc / como um diretório regular e agora quero criar um zfs rpool / etc separado, obviamente herdando todos os dados que eu tinha no original / etc.

Qual seria a maneira mais adequada e segura de fazer isso?

Yurii Rashkovskii
fonte

Respostas:

4

Não há suporte para se transformar /etcem seu próprio sistema de arquivos zfs.

O motivo é /etcnecessário durante os estágios iniciais da inicialização, antes que o (Open) Solaris comece a montar os sistemas de arquivos zfs, portanto, ele estará vazio se você o alterar.

Meu palpite é que você deseja tirar instantâneos de /etc, mas você pode simplesmente tirar instantâneos do sistema de arquivos raiz:

zfs snapshot rpool/ROOT/opensolaris

Pode ser necessário substituir opensolarispelo nome do ambiente de inicialização atual (execute beadm listpara descobrir qual)

Martin
fonte
2
ok, e quanto a qualquer outro diretório, então? digamos, rpool / areas / myzone / export / home / git? :)
Yurii Rashkovskii
11
Se você deseja transformar seu diretório git em um sistema de arquivos zfs, basta criar um arquivo tar do conteúdo atual e, em seguida, "rm -rf" o diretório git, depois dessa execução "zfs create -o mountpoint = / path / to / git rpool / caminho / para / o que for / git "e finalmente descompacte os arquivos salvos.
Martin
2
oh, ok, isso é o que eu pensava ... mas secretamente esperava que houvesse uma maneira transparente para zfs dividir :)
Yurii Rashkovskii
8

Não existe uma maneira integrada ou automatizada de criar um novo DataSet e migrar dados existentes para ele. Para fazer isso, você precisará criar o conjunto de dados e manualmente (por exemplo, rsync) os dados para ele.

Vamos dizer que você tem um conjunto de dados chamado tank\setcom um diretório nele chamado folder. Você deseja 'promover' a pasta para ser um conjunto de dados filho chamado tank\set\folder:

mv /mnt/tank/set/folder /mnt/tank/set/folder-backup # move this out of the way so the new dataset doesn't mount on top of it
zfs create tank/set/folder
rsync -aAX /mnt/tank/set/folder-backup/ /mnt/tank/set/folder # bring over all the old data including acls and attributes

Em seguida, verifique se os dados parecem bons; tire uma captura instantânea do conjunto de dados pai, apenas por precaução, e exclua o folder-backupdiretório.

STW
fonte