Como estender uma partição PV do Linux on-line após o crescimento do disco virtual

14

O VMware permite estender o tamanho de um disco virtual online - quando a VM está em execução. As próximas etapas esperadas para o sistema Linux são:

  1. estenda a partição: exclua e crie uma maior com fdisk
  2. estenda o tamanho do PV com pvresize
  3. use extensões gratuitas para lvresizeoperações
  4. e depois resize2fspara sistema de arquivos

Mas estou preso no primeiro passo: fdiske sfdiskainda exibo o tamanho antigo do disco.

Meu disco é um disco virtual SCSI conectado graças ao controlador LSI Logic virtual.

Como atualizar o tamanho do disco virtual e as informações da tabela de partição disponíveis no kernel do Linux sem reinicialização ?

Tanto quanto sei, todas as etapas são possíveis para um Windows em execução, sem reinicialização e sem ações do usuário, graças às ferramentas do VMWare. No Linux, espero executar todas as etapas online também e já sei que as etapas 2, 3 e 4 funcionam online. Mas o primeiro - alterar o tamanho da partição declarada na tabela de partições (ainda) parece exigir uma reinicialização.

Atualização: Meu sistema é um Debian Lenny com o kernel 2.6.26 e o ​​disco que estendi é o disco principal com um PV grande contendo o LV "raiz" de "/".

Yves Martin
fonte

Respostas:

9

Você pode fazer isso sem uma reinicialização. O pvresize não redimensiona o volume físico até que a partição seja atualizada com o espaço adicionado. Você deve fdisk a partição e recriá-la com o novo tamanho completo do disco, depois de digitalizar novamente as unidades para ver o espaço extra em primeiro lugar.

Mais informações: http://theducks.org/2009/11/expanding-lvm-partitions-in-vmware-on-the-fly/

GRegg
fonte
Eu concordo, mas o que fiz para verificar novamente a unidade SCSI, nunca obtive o novo tamanho de disco visível no fdisk, por isso fiquei preso até a primeira reinicialização. E "partprobe" é um novo comando para mim. Definitivamente eu tenho que testar este procedimento ... Obrigado.
Yves Martin
Para obter informações, partprobeé um comando do partedprojeto.
Yves Martin
Se você não estava vendo o novo tamanho de disco fdisk, o problema não está no LVM. Eu teria que perguntar como você estava digitalizando, uma vez que isso geralmente pega o novo tamanho de disco para mim. Também não particiono discos em que vou usar o LVM se puder ajudá-lo. Se pvcreateo disco inteiro for atualizado, a atualização da tabela de partição é apenas uma coisa a menos que você deve fazer quando redimensioná-la.
Bratchley
14

As outras respostas fornecidas não respondem à sua pergunta. Identifiquei o comando correto para verificar novamente um disco já conectado.

É necessário verificar novamente o disco já conectado, primeiro identifique qual disco você deseja verificar novamente.

ls /sys/class/scsi_disk/

No meu exemplo, vejo um link simbólico chamado 0:0:0:0, portanto, verificamos novamente este disco scsi.

echo '1' > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan

Acabei de estender meu disco VMware também e tive que procurar outras respostas para encontrar o comando correto. Espero que isso salve futuros pesquisadores de tentativas inúteis.

JM Becker
fonte
Funcionou perfeitamente!
Emil Styrke
Você também pode encontrar os discos com o nome "/ dev /" /sys/block/, para poder usar, por exemplo /sys/block/sda/device/rescan.
mwfearnley 20/01
4

Na medida em que o sistema de arquivos raiz /está montado no disco redimensionado, a tabela de partição e o tamanho do disco não são atualizados por uma nova varredura SCSI com o Linux 2.6.26.

Eu realmente espero que seja melhor em breve com as versões mais recentes do kernel.

Então eu tive que:

  • reinicie pela primeira vez para ver o novo tamanho do disco em fdisk
  • excluir a antiga partição PV primária em fdisk
  • crie uma entrada de partição com o mesmo número e inicie o setor até o final do disco
  • reinicie uma segunda vez OU execute a partprobepartir do partedpacote apenas se /não estiver montado lá
  • Agora posso executar pvresizepara obter novo espaço livre lvextende resize2fsalocar um pouco mais de espaço para um sistema de arquivos

Foi-me recomendado simplesmente descartar essa tabela de partição estúpida e executá-la pvcreatediretamente no dispositivo, pois o Grub2 é capaz de carregar uma imagem do kernel diretamente de um sistema de arquivos em uma partição LVM. Mas essa configuração não é óbvia para os instaladores de distribuição.

Atualização: Acabei de verificar com o Debian GNU / Linux Jessie 8.2 executando o kernel 3.16 e parted3.2, o partprobeagora é bem-sucedido após a edição da tabela de partição cfdisksem reinicialização. pvresizefunciona imediatamente depois.

Se você deseja estender um PV armazenado como partição lógica do PC, por exemplo, /dev/sda5na partição primária estendida /dev/sda2, não use, fdiskmas prefira parted:

parted /dev/sda2 -1
parted /dev/sda5 -1
pvresize /dev/sda5
Yves Martin
fonte
Os comandos no final não funcionam # parted / dev / sda2 -1 -> parted: opção inválida - '1'
Oskar Berggren
3

Você precisa verificar novamente os discos antes de poder criar a partição maior.

No Centos, você pode fazer isso

ls /sys/class/scsi_host

então para cada host

echo "- - -" > /sys/class/scsi_host/host#/scan

(substitua # pelo número)

Há também mais uma etapa acima, que está expandindo ext ou qualquer sistema de arquivos que você estiver usando depois de redimensionar a partição.

Você ainda precisará desmontar essa partição em algum momento. O que costumamos fazer é adicionar um segundo disco do vmware e usar o lvm para estender o novo disco (e reduzir o antigo se for um substituto), pois isso permite que todo o processo ocorra ao vivo.

JamesRyan
fonte
Meu sistema é um Debian e executo o rescan-scsi-bus.sh do scsitools. Eu acho que é equivalente ao comando que você propõe em / sys / class / scsi_host mas "fdisk" ainda exibir o tamanho de idade no meu disco ...
Yves Martin
Ele reconhece um novo disco vmware quando você redigitaliza?
JamesRyan
Não. Este disco já existe, não é novo. O tamanho do disco foi aumentado no cliente vSphere.
Yves Martin
Eu percebo isso, mas você deve tentar adicionar um novo para ver se suas escolhas digitalizá-lo até reduzir o problema
JamesRyan
Concordo com você e já sei, na prática, que adicionar um novo disco SCSI a uma máquina Linux pode ser feito on-line para todas as etapas listadas. Como o VM pode ser executado por 10 anos ... Eu temo o número total de discos em um futuro próximo ...
Yves Martin
2

Como resposta atualizada, no Ubuntu 16.04.1, pude fazer o seguinte para redimensionar um volume de 1024 GB para 1,4 TB:

echo '1' > /sys/class/scsi_disk/32\:0\:1\:0/device/rescan
pvresize /dev/sdb
lvextend -l +100%FREE /dev/nvr01-opt/opt
resize2fs /dev/nvr01-opt/opt

Não é fdisknecessário, e o espaço estava disponível imediatamente.

peelman
fonte
3
Sortudo. O motivo é que você não possui uma tabela de partição, mas o PV direto /dev/sdb, o que provavelmente é o disco secundário dos dados do aplicativo, mas não o primeiro disco com o sistema (para mencionar que eu configuro meus sistemas da mesma maneira!). Minha pergunta era sobre estender a última partição / PV de um "disco do sistema" (clonado em um modelo), na medida em que as distribuições Linux não suportam a instalação no PV direto, enquanto o kernel Linux e o GRUB devem poder inicializar e executar no disco do sistema sem tabela de partição.
Yves Martin
Ponto justo. Para aqueles que encontrarem isso via Google: lembre-se disso.
22416 peelman
1

Você não forneceu detalhes suficientes para informar os comandos exatos de que precisará, mas essencialmente precisará usar o lvextendcomando para estender o volume lógico, depois o e2fsckcomando e o resize2fscomando para realmente expandir seu sistema de arquivos. Cada um desses comandos precisará de parâmetros adicionais, especificamente informações sobre o dispositivo e o sistema de arquivos, que não podemos fornecer, mas você precisará conhecê-los; basta usar a opção --help para cada comando para informar como usá-los especificamente, além de você provavelmente acabará usando os comandos pvdisplay, lvdisplaye mountpara ajudar a preencher esses parâmetros.

Chopper3
fonte
Conheço todos os comandos para outras etapas. Minha pergunta é: como aumentar a partição primária usada como PV sem reiniciar?
Yves Martin
Desculpe, você quer dizer pvresize?
Chopper3
Concordo que minha pergunta não foi suficientemente explícita (mesmo com a parte em negrito). pvresize é mencionado na etapa 2. Estou preso na etapa 1: aumente o tamanho da partição "PCAT".
Yves Martin
Você já aumentou o tamanho .vmdk através do VSClient?
Chopper3
3
Para confirmar, /sbin/rescan-scsi-busnão altere o tamanho do disco existente. Mas echo "1" > '/sys/class/scsi_disk/0:0:1:0/device/rescan'faz
Yves Martin
0

Ninguém postou um conjunto completo de comandos, então vamos lá:

# the following steps are for adding a new HDD
apt install scsitools
rescan-scsi-bus
pvcreate /dev/sdX
vgextend /dev/vgname /dev/sdx
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root

#if resizing existing HDD
fdisk /dev/sdX
create new partition
pvcreate /dev/sdXn
vgextend /dev/vgname /dev/sdXn
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root
mzhaase
fonte
Desculpe desorganizar, mas acho que adicionar disco, partição e PV a cada crescimento de disco é "feio" e não é escalável. Minha pergunta era sobre estender uma partição primária existente no disco sem adicionar disco, partição ou PV.
Yves Martin