Raiz do Ubuntu 18.04 no ZFS

No ano passado, eu precisava criar instruções para instalar o sistema operacional Ubuntu 18.04. A propósito, não há nada complicado na instalação do Ubuntu, mas há uma nuance: eu queria usar o sistema de arquivos ZFS como base. Por um lado, o Ubuntu suporta ZFS no nível do kernel, mas ainda não existe um instalador para ele, mas há uma instrução, sim:


https://github.com/zfsonlinux/zfs/wiki/Ubuntu-18.04-Root-on-ZFS


A sequência de ações neste manual geralmente está correta, mas alguns pontos exigem ajustes. Portanto, o que se segue não é uma tradução direta das instruções, mas é gratuita, levando em consideração as correções, minha experiência com o ZFS e outras coisas. Também não considero problemas de criptografia de disco e uso o gerenciador de inicialização MBR. Minhas instruções de instalação podem ser obtidas aqui.



0. Preparação do servidor


A primeira coisa que falta nas instruções e não é considerada de forma alguma é que o ZFS não funciona muito bem com matrizes RAID de hardware, em particular, está conectado ao cache de gravação, o que é compreensível: o sistema de arquivos ZFS é registrado em diário e requer controle completo sobre as operações de gravação. Além disso, ao usar uma matriz RAID de hardware pronta, os recursos do ZFS são perdidos em termos de cache, de reposição e muito mais. Portanto, todos os discos devem ser transferidos para o modo HBA e, se isso não for possível - criar um RAID separado para cada disco e desativar o controlador de cache de gravação.


Além disso, ao usar a agregação de portas de rede, você pode desativá-las no estágio de instalação, para não complicar (executarei todas as operações adicionais sem ligação).


1. Preparando o ambiente de instalação


1.1 Livecd


Como mencionado anteriormente, infelizmente, não existe um instalador pronto do Ubuntu usando raiz no ZFS, portanto a instalação é realizada usando um disco do LiveCD:


Baixe aqui: http://releases.ubuntu.com/18.04/ubuntu-18.04.1-desktop-amd64.iso


Ao mesmo tempo, tentei com os colegas usar várias imagens de disco, pois realmente não queria usar o shell gráfico, mas isso não levou a nada de bom.

Inicializamos a partir do LiveCD, selecione Experimente o Ubuntu e abra o terminal (Ctrl + Alt + T).


1.2 Atualizando e Instalando Repositórios

''
sudo apt-add-repository universe sudo apt update 

Aqui estamos aguardando a primeira chatice se as configurações de rede do servidor não forem determinadas pelo DHCP. A atualização de repositórios não funcionará, então vamos configurar a rede.

Examinamos as interfaces de rede e encontramos aquela através da qual nos conectaremos:


 sudo ip a 

Configure a interface de rede:


 sudo echo "auto {{ NAME }}" >> /etc/network/interfaces sudo echo "iface {{ NAME }} inet static" >> /etc/network/interfaces sudo echo " address {{ IP }}" >> /etc/network/interfaces sudo echo " netmask {{ NETMASK }}" >> /etc/network/interfaces sudo echo " gateway {{ GATEWAY }}" >> /etc/network/interfaces sudo service networking restart 

E resolvedor de DNS:


 sudo echo 'nameserver 8.8.8.8' >> /etc/resolv.conf 

Atualizando repositórios:


 sudo apt update 

1.3 Servidor SSH (opcional)


Para facilitar a instalação, você pode aumentar o servidor OpenSSH e executar todas as operações adicionais através do cliente SSH


Defina a senha para o usuário do ubuntu:


 passwd 

Isso é importante! Caso contrário, o acesso via ssh será realizado sem uma senha com direitos sudo. No entanto, você não pode definir uma senha simples.

Instale e execute o OpenSSH:


 sudo apt install openssh-server sudo service ssh start 

E no terminal da estação de trabalho:


 ssh ubuntu@{{ ip server }} 

1.4 Torne-se root


 sudo -s 

1.5 Instalando o suporte do ZFS em um ambiente LiveCD


 apt install --yes debootstrap gdisk zfs-initramfs 

2. Particionando e formatando discos rígidos


2.0 Definindo matrizes de disco


A instrução principal não contém um ponto importante sobre como determinar matrizes de disco.


Normalmente, o número de discos nos servidores é:


  • 2 discos;
  • 4 discos;
  • muitos discos;

Não consideramos 1 disco, porque geralmente é uma anomalia.


2.0.1 2 discos


Tudo é simples aqui, uma matriz MIRROR (RAID1). Se houver outra terceira unidade, você poderá colocá-la em um hot spare (SPARE) ou montar uma matriz RAIDZ (RAID5). Mas três discos no servidor são muito raros.


2.0.2 4 discos


Se todas as unidades forem iguais, existem apenas três opções (a quarta RAID0 eu basicamente não considero):


  • O MIRROR + MIRROR é um análogo do RAID10, mais precisamente o RAID01, pois no ZFS é espelho + espelho. 50% de espaço em disco disponível;
  • RAIDZ é um análogo do RAID5. 75% do espaço em disco disponível;
  • RAIDZ2 é um análogo do RAID6. 50% de espaço em disco disponível;

Na prática, eu uso a matriz MIRROR + MIRROR, embora seja óbvio que a matriz RAIDZ é mais lucrativa, pois fornece mais espaço em disco, mas há nuances


Em termos de tolerância a falhas, as matrizes são organizadas nesta ordem (da melhor para a pior):


  • RAIDZ2 - dois discos podem ser perdidos sem perda de dados;
  • MIRROR + MIRROR - um disco pode ser perdido sem perda de dados e com uma probabilidade de 66% de um segundo disco pode ser perdido sem perda de dados;
  • RAIDZ - apenas um disco pode ser perdido sem perda de dados;

Em termos de velocidade, as matrizes são organizadas nesta ordem:


  • ESPELHO + ESPELHO - ambos em termos de escrita e leitura;
  • RAIDZ - em termos de gravação é mais lento, pois além da gravação, é necessário calcular a soma de verificação;
  • RAIDZ2 - em termos de escrita é ainda mais lento, pois requer o cálculo de somas de verificação mais complexas;

Em termos de velocidade da matriz durante a degradação de um disco:


  • ESPELHO + ESPELHO - quando uma unidade cai, essencialmente apenas a leitura paralela de um espelho é perdida, o segundo espelho funciona sem degradação do desempenho;
  • RAIDZ2 - a degradação do desempenho é maior, pois exige uma alocação reversa do bloco da soma de verificação para 1/4 da pesquisa de dados + bloco;
  • RAIDZ - a degradação é muito maior, pois requer um recálculo do bloco da soma de verificação para 1/3 da pesquisa de dados + bloco;

A comparação de características é subjetiva, mas reflete suficientemente minha escolha como meio termo.


Ao mesmo tempo, você precisa entender que "mais lento" e "ainda mais lento" às vezes não é, mas apenas 10 a 20% no pior caso; portanto, se seu banco de dados ou aplicativo para trabalhar com discos não for otimizado, você diminuirá a velocidade em princípio, não perceba. O fator de velocidade de gravação deve ser considerado apenas quando você realmente precisar.


2.0.2 Muitos discos


O principal problema é que, se tivermos muitos discos e desejarmos criar uma matriz comum para tudo, precisaremos marcar cada disco com o setor de inicialização ou fazer uma pequena simulação com nossos ouvidos. Na prática, para plataformas multi-disco, tento criar esta configuração:


  • 2 discos SSD - fazemos um espelho e, como matriz principal de inicialização, com o sistema operacional e cache ZFS para a segunda matriz de disco;
  • O restante está entupido com discos SATA ou SAS e, sem marcação, coletamos uma matriz de discos ZFS;

O mesmo se aplica aos servidores de 4 discos, se queremos obter uma plataforma bastante universal;


Se os discos forem todos iguais e não fizer sentido alocar dois discos para uma matriz separada (por exemplo, 6 discos de 8 TB cada), você poderá inicializar os discos do primeiro grupo da matriz. Ou seja, se você criar uma matriz como: MIRROR + MIRROR + MIRROR ou RAIDZ + RAIDZ, marcaremos o setor de inicialização apenas para o primeiro grupo. Em princípio, é possível particionar apenas uma unidade, mesmo para MIRROR e RAIDZ, e substituir o restante na forma bruta, o ZFS criará a matriz pelo próprio elemento menor, mas nesse caso, se a primeira unidade falhar, você perderá o único disco de inicialização. vale a pena fazer isso.


É importante entender que, no sistema de arquivos do ZFS - tarja, isso não é exatamente RAID0 e funciona de maneira um pouco diferente e não requer os mesmos tamanhos de disco; portanto, alocar um pequeno espaço para o setor de inicialização do tempo não fará muito, o principal é indicar no BIOS o disco correto a partir do qual o boot será iniciado. .


2.1 Particionamento e limpeza de disco


O pacote mdadm é usado para marcar o disco, coloque-o:


 apt install --yes mdadm 

Examinamos quais discos temos disponíveis:


 lsblk 

E limpe-os:


 sgdisk --zap-all /dev/{{ disk name }} 

2.2 Layout do disco


Na verdade, a partição de inicialização:


 sgdisk -a1 -n1:34:2047 -t1:EF02 /dev/{{ disk name }} 

A seção principal.


Aqui pode haver variações: se você precisar alocar uma partição adicional de discos SSD, por exemplo, para ZFS Cache ou Aerospike, faça a partição principal de volume limitado:

 sgdisk -n2:0:+100GB -t2:BF01 /dev/{{ disk name }} sgdisk -n3:0:0 -t2:BF01 /dev/{{ disk name }} 

Se usarmos todo o espaço, basta criar uma seção para o espaço restante:


 sgdisk -n2:0:0 -t2:BF01 /dev/{{ disk name }} 

Não se esqueça de verificar como ficou:


 lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1.8T 0 disk ├─sda1 8:1 0 1007K 0 part └─sda2 8:2 0 1.8T 0 part sdb 8:16 0 1.8T 0 disk ├─sdb1 8:17 0 1007K 0 part └─sdb2 8:18 0 1.8T 0 part ... 

2.3 Criando uma matriz ZFS


 zpool create \ -o ashift=12 \ -O atime=off \ -O canmount=off \ -O compression=lz4 \ -O checksum=fletcher4 \ -O normalization=formD \ -m legacy \ -R /mnt \ -f \ tank \ mirror \ /dev/{{ disk a part 2}} \ /dev/{{ disk b part 2}} 

O primeiro rake em que um dos meus administradores familiares entrou imediatamente em ação, é que, ao criar uma matriz ZFS, é necessário especificar não um disco, mas uma partição no disco, se ele for criado especialmente para isso.

Em seguida, em ordem:


  • ashift = 12 - use o tamanho do bloco em 4K; em princípio, ainda não entendo por que, em sistemas operacionais, o tamanho padrão do bloco é de 512 bytes quando praticamente não existem discos desse tipo;
  • atime = off - desativa a atualização da data de acesso aos arquivos, sempre a desativo, pois nunca precisei dessas informações e não é necessário carregar o kernel novamente;
  • canmount = off - desativa a capacidade de montar a partição raiz;
  • compressão = lz4 - ativa a compactação de dados com o algoritmo LZ4. Recomenda-se que este parâmetro seja incluído não apenas para economizar espaço em disco, mas também para reduzir o número de operações de E / S. Ao mesmo tempo, para esse ritmo de compactação, utilização extremamente baixa da CPU;
  • checksum = fletcher4 - o algoritmo de soma de verificação padrão e, portanto, vale a pena verificar novamente o fletcher4;
  • normalização = formD - usada para melhorar o trabalho com UTF-8, limitando de fato a possibilidade de usar nomes de arquivos não UTF-8. Aqui todo mundo decide por si mesmo, em nosso trabalho sempre usamos apenas a codificação UTF-8;
  • xattr = sa - Acelerando o trabalho com atributos estendidos. Eu não uso essa opção devido ao fato de que, quando essa opção é usada, a compatibilidade com outras implementações do OpenZFS fica desabilitada (por exemplo: FreeBSD). E compatibilidade com o Windows e, a propósito, eu preciso. Além disso, esta opção pode ser ativada na seção final;
  • -m legado - ponto de montagem para lugar nenhum, e não é necessário montar a partição raiz;
  • -R / mnt - prefixo de montagem de partição temporário para instalar o kernel;
  • -f - força a criação da matriz. Se a matriz do ZFS tiver sido coletada em discos antes, o comando create não funcionará, você nunca sabe, talvez tenha cometido um erro e queira apagar dados importantes;

Normalmente, indico o nome da matriz de discos do sistema raiz como tanque, embora atualmente eles prefiram usar o nome rpool (pool raiz) no ambiente Linux. Na minha prática, geralmente uso esta nomeação de matrizes:


  • tanque - a matriz principal do sistema;
  • armazenar - uma matriz adicional com discos grandes para armazenamento de dados;
  • cache - uma matriz adicional de discos SSD, se a partição principal não estiver neles;

Em geral, eu recomendo desenvolver imediatamente uma prática de nomear algo que não seria confuso.


3. Instalação do Sistema


3.1 e 3.2. Criando um sistema de arquivos raiz


Combinei especificamente os parágrafos 3.1. e 3.2. pois acredito que especificar a partição raiz no terceiro nível é absolutamente redundante. É verdade que, durante vários anos trabalhando com o ZFS, nunca precisei fazer manipulações com a partição raiz. Além disso, existem fotos com as quais você pode fazer pontos de controle. Portanto, minha seção raiz é tank / root:

 zfs create -o mountpoint=/ tank/root 

Ao mesmo tempo, o primeiro erro fatal é detectado na instrução original, a saber, a falta de uma partição de inicialização para a matriz de discos:

 zpool set bootfs=tank/root tank 

3.3 Crie partições adicionais


Nesta parte das instruções básicas, você pode jogar tudo e esquecer. Os caras obviamente exageraram com esmagamento e opções, por causa dos quais, ao longo do caminho, eu tive que consertar algo. É verdade que não ajudou muito. Como os problemas posteriores aparecem novamente e, no final, verifica-se que tudo isso não funciona, portanto, no parágrafo 4.11. isso é corrigido novamente.


Separar uma seção separada para / var / games parece bastante épico. Eu não me importo, mas isso é claramente demais.


O fato de que as partições são criadas no ZFS simplesmente e suportam uma hierarquia não significa que os diretórios clássicos devem ser abandonados. Um exemplo simples: uma vez eu tive mais de partições ZFS 4K em um grupo de servidores, era necessário, mas a reinicialização do servidor ficou mais lenta por vários minutos devido à montagem dessas partições.


Vamos começar com uma lousa limpa.


Existem partições de arquivo estáticas e dinâmicas.


As seções de arquivo estático incluem seções com programas e suas configurações, são preenchidas uma vez e não são alteradas durante a operação. Ao mesmo tempo, as partições estáticas anteriores foram divididas em partições de sistema e de usuário (/ usr), mas no momento elas são misturadas nos sistemas operacionais Linux e não há sentido em separá-las, e isso não funcionará.


As seções dinâmicas de arquivo incluem seções nas quais estão armazenadas:


  • Dados temporários - eq.: Tmp, swap;
  • Logs de trabalho - eq.: Var / log;
  • Dados do usuário - eq.: Home;
  • Dados - eq.: Var / db e que sorte;
  • Outros resultados do programa na forma de arquivos;

Nas famílias Linux, as partições dinâmicas incluem / tmp e / var, mas isso não é exato, pois elas podem entrar em / var / lib, programas e bibliotecas; em geral, tudo está misturado, mas mesmo assim ...


Primeiro, você precisa decidir se deseja criar a partição / tmp no disco ou na memória como tmpfs. Se criarmos no disco, crie uma partição separada para ele:


 zfs create -o mountpoint=legacy tank/tmp 

Opções com.sun: auto-snapshot = false setuid = off bem, não importa como está o tempo, não complique. Mas com o SWAP, faremos mais adiante na etapa 7.

Separe a seção var separadamente:


 zfs create -o mountpoint=legacy tank/var 

E seções do usuário:


 zfs create -o mountpoint=/home tank/home zfs create -o mountpoint=legacy tank/home/root 

Faz sentido alocar partições de usuário, pois, na prática, elas estão periodicamente entupidas com diferentes artefatos e para facilitar o monitoramento, é melhor criar partições separadas para elas, bem como o diretório inicial do usuário raiz (especialmente para quem gosta de trabalhar como raiz). O uso de cotas nos diretórios do usuário não só não ajuda a obstruir o espaço em disco, como também interfere, pois nesses casos, os usuários começam a deixar artefatos em qualquer lugar e pode ser bastante difícil encontrá-los posteriormente. Isso não é tratado, então você só precisa controlar e vencer as mãos.

O ponto de montagem tank / home / root está listado como legado, não como / root. Isso está correto, pois a montagem desta seção é realizada na seção 4.11


Agora precisamos montar temporariamente nossas partições dinâmicas em / mnt:


 cd /mnt/ mkdir var tmp root mount -t zfs tank/var /mnt/var/ mount -t zfs tank/tmp /mnt/tmp/ mount -t zfs tank/home/root /mnt/root/ 

3.4 Instalando o kernel


Na instrução principal, existem mais alguns comandos desnecessários, não prestamos atenção, aparentemente artefatos de experimentos:

 debootstrap bionic /mnt 

Como resultado, você deve obter algo parecido com isto:


 zfs list NAME USED AVAIL REFER MOUNTPOINT tank 213M 1.76T 96K legacy tank/home 208K 1.76T 96K /mnt/home tank/home/root 112K 1.76T 112K legacy tank/root 147M 1.76T 147M /mnt tank/tmp 96K 1.76T 96K legacy tank/var 64.6M 1.76T 64.6M legacy 

O tamanho da partição 96K vazia, respectivamente, apenas tank / tmp permaneceu vazio e o restante foi registrado durante a instalação do kernel, o que significa que as partições foram montadas corretamente.


4. Configuração do sistema


4.1 Configurar hosts e nome do host


 echo HOSTNAME > /mnt/etc/hostname echo “127.0.0.1 localhost” > /mnt/etc/hosts echo “127.0.0.1 HOSTNAME” >> /mnt/etc/hosts 

4.2 Configure a interface de rede


Então, sim, já temos netplan aqui:

 nano /mnt/etc/netplan/setup.yaml network: version: 2 renderer: networkd ethernets: eno2: dhcp4: no dhcp6: no addresses: [ {{ IP }}/{{ netmask }}, ] gateway4: {{ gateway IP }} nameservers: addresses: [8.8.8.8] 

4.3 Configurar repositórios apt


 nano /mnt/etc/apt/sources.list deb http://archive.ubuntu.com/ubuntu/ bionic main restricted universe deb http://security.ubuntu.com/ubuntu/ bionic-security main restricted universe deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe 

src - não é necessário principalmente

4.4 Montamos seções de arquivos virtuais LiveCD e "vamos" para o novo sistema


 mount --rbind /dev /mnt/dev mount --rbind /proc /mnt/proc mount --rbind /sys /mnt/sys chroot /mnt /bin/bash --login 

é necessário usar - rbind, mas não - bind

Já estamos no novo sistema ...


4.5 Configure o ambiente base


 ln -s /proc/self/mounts /etc/mtab chmod 1777 /tmp apt update 

Local e hora:


 dpkg-reconfigure locales * en_US.UTF-8 * ru_RU.UTF-8 dpkg-reconfigure tzdata 

E editores adicionais que gostam do que:


 apt install --yes vim nano 

4.6 Instalando o suporte do ZFS


 apt install --yes --no-install-recommends linux-image-generic apt install --yes zfs-initramfs 

4.8 Instale o carregador de inicialização


Como dito anteriormente, estou usando um MBR desatualizado:


 apt install --yes grub-pc 

Durante a instalação do carregador de inicialização, é necessário selecionar todos os discos que identificamos como inicializáveis, enquanto o instalador jura em todos os outros discos, exceto o primeiro, concordamos e executamos a etapa 5 (não está claro por que o restante foi deixado para mais tarde):

4.8.1 (5.1) Verifique se o sistema de arquivos raiz é reconhecido:


 grub-probe / zfs 

4.8.2 (5.2) Atualizando o initrd


 update-initramfs -u -k al 

4.8.3 (5.3) Simplifique a depuração do GRUB


 vi /etc/default/grub ... GRUB_CMDLINE_LINUX_DEFAULT="" GRUB_CMDLINE_LINUX="console" ... 

4.8.4 (5.4.) Atualizando a configuração do gerenciador de inicialização


 update-grub 

4.8.5 (5.5.) Instale o carregador de inicialização em cada disco marcado como inicializável


 grub-install /dev/sda grub-install /dev/sdb ... 

É importante que esses comandos funcionem corretamente. Para ser sincero, não consegui fazer o oposto pelo menos uma vez, por isso não sei o que fazer, mas provavelmente, se você tiver um erro, provavelmente fez algo errado ao marcar o disco (Seção 2.2.).

4.8.6 (5.6.) Verifique se o módulo ZFS está instalado


 ls /boot/grub/*/zfs.mod /boot/grub/i386-pc/zfs.mod 

4.10 Defina a senha do root (difícil!)


 passwd 

E sim, instalaremos o openssh imediatamente, caso contrário, teremos uma surpresa após a reinicialização se trabalharmos remotamente:

 apt install --yes openssh-server 

Não esqueça de corrigir a configuração do sshd:


 vi /etc/ssh/sshd_config ... PermitRootLogin yes ... PasswordAuthentication yes ... 

4.11 Corrigir sistemas de arquivos de montagem


Aqui chegamos ao mais interessante. O fato é que as partições do ZFS são montadas após o início de alguns daemons (também alteramos o ZFS_INITRD_ADDITIONAL_DATASETS no / etc / default / zfs), que, por sua vez, criam alguma estrutura por conta própria no / var começam a preencher os logs do sistema. Quando chega a hora de montar partições ZFS, verifica-se que os pontos de montagem não estão vazios e nada é montado, os dados estão dispersos, tudo está ruim. Portanto, você precisa especificar pontos de montagem no / etc / fstab, pois o systemd se concentra principalmente neles ao acessar a pasta:

 vi /etc/fstab tank/var /var zfs noatime,nodev 0 0 tank/tmp /tmp zfs noatime,nodev 0 0 tank/home/root /root zfs noatime,nodev 0 0 

O restante está sujeito à cláusula 6. já feito

6. Primeira reinicialização


6.1 Tire uma foto da partição raiz


 zfs snapshot tank/root@setup 

Não faz sentido dele, na prática nunca abalei a partição raiz do sistema e nunca usei instantâneos desta partição, mas, no entanto, deixe-a repousar, pode ser útil

6.2 Chroot de saída


 exit 

6.3 Desmonte partições do LiveCD e exporte a matriz ZFS


 cd mount | grep -v zfs | tac | awk '/\/mnt/ {print $3}' | xargs -i{} umount -lf {} umount /mnt/root umount /mnt/var umount /mnt/tmp zpool export tank 

Exportação de matriz de disco necessária para limpar o cache zfs

6.4 Reinicialização


A melhor reinicialização é feita no terminal do LiveCD, pois se você trabalha com um cliente ssh, a reinicialização pode levar ao congelamento do servidor.

 reboot 

Se, afinal, algo deu errado e o servidor não foi reinicializado, você pode reinicializar de qualquer forma, pois a matriz ZFS é exportada e é difícil danificá-la.

6.5 Estamos aguardando uma reinicialização e vamos como root


6.6 Crie sua conta de usuário


 zfs create tank/home/{{ LOGIN }} useradd -u {{ UID }} -G adm,sudo -d /home/{{ LOGIN }}/ -s /bin/bash {{ LOGIN }} cp -a /etc/skel/.[!.]* /home/{{ LOGIN }} chown -R {{ LOGIN }}:{{ LOGIN }} /home/{{ LOGIN }} 

Adicione a chave pública ssh ao usuário e defina a senha para ele:


 su - {{ LOGIN }} mkdir .ssh chmod 0700 .ssh vi .ssh/authorized_keys exit passwd {{ LOGIN }} 

No OpenSSH, removemos a capacidade de efetuar login como autenticação root e senha:

 vi /etc/ssh/sshd_config ... PermitRootLogin no ... PubkeyAuthentication yes ... PasswordAuthentication no ... service ssh restart 

6.7 6.8 Não é mais necessário


7. Configurando Troca


7.1 Crie uma partição ZFS


 zfs create \ -V 32G \ -b $(getconf PAGESIZE) \ -o compression=zle \ -o logbias=throughput \ -o sync=always \ -o primarycache=metadata \ -o secondarycache=none \ tank/swap 

  • -V 32G - O tamanho do nosso SWAP, você pode determinar o que é realmente necessário;
  • -b $ (getconf PAGESIZE) - tamanho do bloco (4K com ashift = 12);
  • compressão = zle - escolha o algoritmo de compactação que é mínimo em termos de consumo de recursos, uma vez que, na verdade, o tamanho do bloco é 4K, a compactação não permitirá a utilização da entrada-saída, mas será possível economizar em zero blocos;
  • logbias = throughput - configurando largura de banda para otimizar operações síncronas;
  • sync = always - sempre sincroniza o registro. Isso reduz um pouco o desempenho, mas garante totalmente a confiabilidade dos dados;
  • primarycache = metadados - armazena apenas metadados, pois o swap não será usado para ler o mesmo bloco várias vezes;
  • primarycache = none - desative completamente o cache secundário pelos motivos mencionados acima;

7.2 Configure a partição de troca


 mkswap -f /dev/zvol/tank/swap echo /dev/zvol/tank/swap none swap defaults 0 0 >> /etc/fstab echo RESUME=none > /etc/initramfs-tools/conf.d/resume 

7.3 Ativar troca


 swapon -av 

Seguindo as instruções, não há muito que seja interessante, pois depende muito das preferências de administradores específicos e das tarefas do servidor como um todo, exceto por um ponto, a saber: "Inicialização de emergência"

E não se esqueça de colocar o Firewall


R. Inicialização de emergência


Preparamos o ambiente de instalação (item 1.)


Durante a preparação, a matriz do ZFS é importada; portanto, é necessário reimportá-la, mas com o ponto de montagem correto:


 zpool export -a zpool import -N -R /mnt tank zfs mount -a 

, , , fstab, :

 mount -t zfs tank/var /mnt/var/ mount -t zfs tank/tmp /mnt/tmp/ mount -t zfs tank/home/root /mnt/root/ 

, , chroot .4.4., . 6.3.


D.


3.3. . , : , /spool, /data. ZFS .


Sumário


  • ZFS , , ;
  • ZFS, , . ZFS — , ;
  • .

Source: https://habr.com/ru/post/pt439860/


All Articles