Não é possível criar um swapfile para o Solaris 11.3

1

Minhas compilações estão falhando no Solaris 11.3 devido a falta de memória. A caixa é uma estação de trabalho UltraSPARC com unidades de 600 GB e 8 GB de RAM e uma nova instalação do sistema operacional. É absolutamente confuso que não há memória suficiente para o sistema e estou sofrendo DoS'es fora da caixa.

Estou tentando seguir Adicionando o espaço de troca em um sistema Solaris para adicionar mais algum espaço.

# Step 1
$ sudo su -
...

# Step 2
# mkdir /var
mkdir: Failed to make directory "/var"; File exists
# mkfile 2048m /var/swap

# Step 3
# ls -l /var/swap
-rw-------   1 root     root     2147483648 Jul 16 11:42 /var/swap

# Step 4
# swap -a /var/swap
"/var/swap" is not valid for swapping.
It must be a block device or a regular file with the
"save user text on execution" bit set.

Eu tenho duas perguntas. Primeiro, o que está tão quebrado no Oracle que quase todo documento está errado?

Em segundo lugar, como eu crio o maldito espaço de troca? Como faço para que o T apareça em uma listagem ls ?

Aqui está o passo 3 do documento. Observe a adição do T :

Verify that the file was created by typing:

ls -l /directory/swap-file-name

The new file appears in the directory. For example:

ls -l /foo/16mswap    -rw------T   1 root     other    16777216 Dec 12 14:24 /foo/16mswap
    
por jww 16.07.2018 / 14:03

2 respostas

4

A página que você encontrou está relacionada ao Solaris Studio 12.3, que data de 2011, e uma vez que o Solaris ainda usava arquivos de troca. Com o Solaris 11.3, que usa o ZFS como o sistema de arquivos raiz, o processo é um pouco diferente, já que é necessário um dispositivo de bloco real. Felizmente, o ZFS torna o uso de dispositivos de blocos reais muito fácil, por meio de volumes ZFS.

Primeiro, verifique seus volumes existentes:

zfs list -t volume

Você provavelmente verá um volume chamado swap @ /rpool/swap , então você precisará de um nome diferente para o novo dispositivo, como swap2 .

Veja o que vejo:

bash-[501]# zfs list -t volume
NAME         USED  AVAIL  REFER  MOUNTPOINT
rpool/dump  3.08G   139G  2.99G  -
rpool/swap  2.06G   139G  2.00G  -

Além disso, dê uma olhada nos seus dispositivos de troca existentes:

bash-[502]# swap -l
swapfile             dev    swaplo   blocks     free
/dev/zvol/dsk/rpool/swap 275,1         8  4194296  4194296

O próximo passo é criar o novo volume. No próximo comando, a opção -V indica que estamos criando um dispositivo de bloco bruto, em oposição a um dispositivo com um sistema de arquivos, e o 2G é o tamanho:

bash-[503]# zfs create -V 2G rpool/swap2

Agora você verá sua lista de volumes alterada:

bash-[504]# zfs list -t volume
NAME          USED  AVAIL  REFER  MOUNTPOINT
rpool/dump   3.08G   137G  2.99G  -
rpool/swap   2.06G   137G  2.00G  -
rpool/swap2  2.06G   137G  2.00G  -

Então você pode ativar esse dispositivo de bloco como swap:

bash-[505]# swap -a /dev/zvol/dsk/rpool/swap2

E, como sempre, você pode ver seus dispositivos de troca com swap -l .

bash-[506]# swap -l
swapfile             dev    swaplo   blocks     free
/dev/zvol/dsk/rpool/swap 275,1         8  4194296  4194296
/dev/zvol/dsk/rpool/swap2 275,3         8  4194296  4194296
    
por 16.07.2018 / 15:12
2

O atributo T pode ser definido no arquivo usando

chmod +t filename

Observe que o uso de um arquivo de troca não é suportado se o arquivo estiver em um sistema de arquivos ZFS.

    
por 16.07.2018 / 14:24