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 — , ;
- .