Como eu redimensiono partições usando a linha de comando sem usar uma GUI em um servidor?

31

Eu só acesso o servidor via terminal e não posso usar ferramentas gráficas como o gparted!
Eu preciso disso porque eu quero criar uma nova partição de uma parte do root sobre 768mb para criar uma partição swap.

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         20G  1.3G   18G   7% /
udev             10M     0   10M   0% /dev
tmpfs           199M  4.9M  194M   3% /run
tmpfs           100M   12K  100M   1% /run/user
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
    
por Hamid FzM 14.12.2013 / 18:06

3 respostas

29

Você não pode reduzir / editar uma partição se alguma partição no dispositivo de armazenamento estiver montada. Então, para desmontar e editar o sistema de arquivos raiz, o sistema operacional precisa ser desligado. Em seguida, inicialize em um sistema ativo e edite a partição conforme descrito em outras respostas.

Solução alternativa: arquivo de troca

Como alternativa à criação de uma partição inteira, um arquivo de permuta oferece a capacidade de variar seu tamanho durante a execução e é removido mais facilmente. O arquivo de troca pode ser hot plugable . isto é, pode ser adicionado e removido sem desmontar / desligar o sistema operacional.

  1. Crie um arquivo de 512 MB chamado /swapfile . Este será o nosso arquivo de troca.

    fallocate -l 512M /swapfile  
    

    OR

    dd if=/dev/zero of=/swapfile bs=1M count=512
    
  2. Defina as permissões corretas (porque um arquivo de permuta legível no mundo é uma enorme vulnerabilidade local):

    chmod 600 /swapfile
    
  3. Depois de criar o arquivo de tamanho correto, formate-o para trocar:

    mkswap /swapfile
    
  4. Ative o arquivo de troca:

    swapon /swapfile
    
  5. Edite /etc/fstab e adicione uma entrada para o arquivo de troca:

    /swapfile none swap defaults 0 0
    

Mais detalhes em wiki do arch linux .

    
por totti 28.07.2014 / 15:08
23

Antes de tudo, é importante saber que você não pode redimensionar para reduzir sua partição raiz, se estiver usando-a (isso é chamado de encolhimento online). Você só pode crescer on-line. Isso é suportado pelo comando resize2fs . Eu vou assumir o seguinte:

  • Você não quer perder suas informações na partição raiz.
  • Você não tem acesso físico ao disco rígido para usar um LiveCD. Isso pode se aplicar a um ambiente virtual ou remoto. No caso de um virtual, você ainda pode conseguir inicializar a partir de um LiveCD se definir a VM para inicializar a partir de um LiveCD. Isso pressupõe que a VM suporte a saída da GUI da área de trabalho de onde você executaria o aplicativo Gparted para redimensionar facilmente. Mas como isso é menos provável, eu suponho que você não pode.

Existem 2 tipos de partições que você pode redimensionar, as partições LVM ou as partições do Logical Volume Manager que suportam o redimensionamento Online (Redução / Crescimento) desde a criação da galáxia e as partições padrão que a maioria de nós usa. Atualmente, o único que tem quase 100% de suporte ao redimensionamento online completo (Shrink / Grow) é o sistema de arquivos btrfs (que ainda está em desenvolvimento). Vou explicar como fazer as partições normais que a maioria de nós usa no sistema de arquivos ext4.

Redimensionando (aumentando) a partição

Para aumentar sua partição, você pode fazê-lo com a raiz montada. Para fazer isso, basta fazer:

sudo resize2fs /dev/sda1

Desde que você já tenha o espaço vazio pronto para ser mesclado. Depois, recomendo a reinicialização para que as alterações entrem em vigor corretamente. O comando acima seria redimensionado para o máximo permitido. Se você deseja redimensionar para um tamanho específico, basta adicionar o tamanho no final:

sudo resize2fs /dev/sda1 25G

Observe que, se você quiser especificar 25,4 GB, não poderá usar o ".". você precisaria descer uma unidade de medida. Nesse caso, de GB para MB, ficaria assim:

sudo resize2fs /dev/sda1 25400M

Desta forma, você terá uma partição de 25.4G

Redimensionando (encolhendo) a partição

Diminuir a partição é um processo de dois passos que envolve:

  • Reduzindo o tamanho do sistema de arquivos pelo valor necessário.
  • Reduzindo o tamanho do dispositivo de bloco subjacente para corresponder ao do sistema de arquivos.

Antes de reduzir a capacidade de um sistema de arquivos, você precisa reduzir o tamanho do dispositivo de bloco (que pode ser uma partição ou um volume lógico). Como isso não está disponível para nenhum dos sistemas de arquivos ext *, você não poderá reduzi-lo de 20 GB para 19,5 GB para criar um de 500 MB.

Mesmo o Ext4 não suporta encolhimento on-line. Se você tentar fazer isso, você receberá o seguinte:

Sua única aposta, até onde eu sei, é:

  • Instale outra versão do Ubuntu no mesmo servidor (em outra partição) que pode ser usada para reduzir a partição raiz do servidor Ubuntu original.

  • Instale o servidor Ubuntu do zero com o tamanho que você realmente deseja

  • Use o Ubuntu Server Live Image para redimensionar a partição. Para este caso, você precisará chegar a essa tela:

    Escolha a opção Redimensionar, conforme mostrado na imagem acima. De lá, você selecionará qual será o novo tamanho, já que a partir daqui você pode desmontar a unidade e reduzi-la se quiser.

Como uma ajuda adicional aqui está o link do sistema de arquivos gparted, que fornece uma lista bem detalhada dos suportados e inclui se eles redimensionamento online completo. Btrfs está entre eles.

    
por Luis Alvarado 26.07.2014 / 04:25
6

A resposta depende se você pode desmontar a partição para diminuir ou não. No seu caso, você provavelmente não pode desmontar a partição. No Linux (UNIX / MAC OS), montagem uma partição refere-se ao uso do sistema de arquivos e seu mapeamento para o ponto de montagem (no seu caso, / ). Desmontar significa que você parou de usar o sistema de arquivos e remove o mapeamento para o ponto de montagem. Você não pode desmontar o sistema de arquivos que contém o sistema operacional em execução.

Se a partição puder ser desmontada

Vamos supor que você queira reduzir uma partição ext4 de 200 GB em /dev/sda4 montado em /data . Atualmente, ele contém músicas e filmes ou similares, para que você possa desmontá-lo temporariamente. Você quer criar um swap de 4GB.

sudo unmount /dev/sda4

para desmontar a partição.

sudo resize2fs /dev/sda4 196G

para redimensionar o sistema de arquivos ext4 para 196 GB, supondo que haja espaço suficiente. Agora, você tem que diminuir a partição. Eu atualmente acredito que você precisa usar cfdisk para excluir a partição existente e recriar uma partição menor em seu lugar. Você também pode criar uma nova partição para a troca.

sudo cfdisk /dev/sda 

lhe dará um gui baseado em texto para inspecionar sua tabela de partições. Eu recomendaria você a print da tabela de partição para um arquivo ou tela nesse ponto e anotaria a configuração atual como backup. Você pode então selecionar /dev/sda4 e delete da partição. Em seu lugar, free space será exibido. Use new para criar uma nova partição com 196 GB em seu lugar e defina o tipo como ext4. Em seguida, vá para o espaço livre à direita e crie a partição de troca de 4 GB com o tipo swap . Observação: Eu não testei esses comandos, pois não posso brincar com meu / no momento.

Se a partição não puder ser desmontada

Você não pode reduzir uma partição ext3 / 4 montada (consulte a página de manual de resize2fs ). Como você está executando seu sistema operacional a partir de / , não é possível desmontar / . Isso significa que você precisa inicializar outro sistema operacional (por exemplo, a partir da chave USB) para fazer as alterações.

No seu caso, é um servidor remoto (no KVM mais provável), então você pode não ser capaz de inicializar a partir de USB / uma imagem do sistema operacional ao vivo. Pode haver outras maneiras de alterar o particionamento de seu provedor vServer por meio de uma GUI de administração. Acredito que essa é sua melhor aposta atualmente.

    
por noleti 26.07.2014 / 03:39