Eu tenho um volume físico em uma partição que se estende por todo o disco, digamos /dev/sda1 usando 100% de /dev/sda. Agora preciso reduzi-lo para criar /dev/sda2. Um volume lógico usa aproximadamente 50% do PV, então teoricamente há muito espaço disponível, mas tudo é alocado dentro do único PV. Existe uma maneira segura de reduzir o volume físico (e a partição de disco subjacente) para criar algum espaço extra para a segunda partição? Infelizmente, minha configuração exclui a possibilidade de pvmove temporariamente o volume físico para outro dispositivo.
Claro, eu sei que posso fazer isso em nível de arquivo (como fazer backup do conteúdo, reparticionar a unidade de disco e recriar a configuração do LVM), mas prefiro fazer o trabalho sem a necessidade de configurar o LV do zero.
Obrigado adiantado.
Se você precisar apenas de outro sistema de arquivos separado, não precisará criar uma nova partição: você pode criar outro volume lógico LVM dentro do grupo de volumes existente usando o espaço não alocado no PV. Mas se você precisar especificamente de uma nova partição , deverá fazer como planejado originalmente.
GParted é uma ferramenta GUI que pode fazer toda a operação de redimensionamento de partição + PV para você. Você provavelmente o encontrará na coleção de pacotes da sua distribuição.
Mas se você não puder ou não quiser usá-lo por algum motivo, continue lendo...
Reduzir um volume físico LVM que possui espaço não alocado é bastante simples. Por exemplo, para reduzir o tamanho de /dev/sda1 para 40 GiB:
Este comando é seguro, pois ele se recusará a fazer qualquer coisa se a parte do PV que ele cortar contiver extensões alocadas.
Mas esse é apenas o primeiro passo. O segundo passo será reduzir o tamanho da própria partição.
Para estar seguro, é recomendado que você inicialmente reduza o PV um pouco mais do que planeja realmente reduzir a partição, para que depois de reduzir a partição você possa estender explicitamente o PV para cobrir o tamanho total da partição. Se a operação de extensão falhar, você saberá imediatamente que algo deu errado no redimensionamento da partição e não deixará erros ocultos para prender você ou outra pessoa no futuro.
Você pode reduzir uma partição usando um comando simples do Linux
fdisk
, mas deve ter em mente algumas coisas:fdisk
para redimensionar uma partição, certifique-se de configurá-la para exibir todos os tamanhos de partição e locais iniciais nos setores primeiro. Durante a história do Linuxfdisk
, seu comportamento variou aqui: versões modernas fazem isso por padrão, versões mais antigas podem precisar de uma opção-u
ou-u=sectors
para fazê-lo.Ao usar
fdisk
, quaisquer alterações são gravadas no disco somente quando você usa ow
comando. Então sugiro proceder assim:sfdisk -d /dev/sda > /safe/location/partition_table_backup.dump
para fazer backup da tabela de partição existente.fdisk /dev/sda
no modo interativop
comando para visualizar a tabela de partição atual e verifique se os valores "start" e "end" são exibidos como setores. Anote o valor "start".d
comando para excluir a entrada de partição atual parasda1
.n
comando para recriar a entrada da partição primária 1 parasda1
o tamanho desejado, tendo o cuidado de especificar a localização do primeiro setor exatamente como estava (ou seja, o mesmo número que foi exibido no valor "inicial" dop
comando).t
comando para definir o tipo de partição 1 para "Linux LVM".w
comando para gravar a tabela de partição atualizada e sairfdisk
.Preste atenção na mensagem exibida
fdisk
no final. Se disser "O kernel ainda usa a tabela antiga", algo está bloqueando a atualização da tabela de partição on-line. Você pode tentarpartprobe /dev/sda
dizer ao kernel para reler a tabela de partições (usando uma interface mais recente do que algumas versões mais antigas defdisk
uso, então pode ajudar e certamente não prejudicará) e depoiscat /proc/partitions
verificar se a partição agora é reconhecida pelo kernel no tamanho esperado.Se o redimensionamento da partição for bem-sucedido, agora você poderá executar o
pvresize /dev/sda1
. Se você seguiu meu conselho e redimensionou o PV inicialmente um pouco menor que o novo tamanho desejado da partição, agora ele deve estender com sucesso o PV um pouco para cobrir totalmente a partição redimensionada automaticamente. Se este comando relatar um erro, você provavelmente cometeu um erro ao especificar o novo tamanho e deve usarsfdisk /dev/sda < /safe/location/partition_table_backup.dump
para restaurar a tabela de partição para o que era inicialmente e, em seguida, tente novamente.(Em sistemas muito antigos, talvez seja necessário desativar o VG antes de executar
partprobe
ou até mesmo reinicializar para permitir que o sistema releia a tabela de partição atualizada.)Quando a operação de redimensionamento estiver concluída, você poderá usar
fdisk
novamente para criar a segunda partição necessária. Sim, você também pode fazer isso juntos enquanto redimensiona a partição, mas fazer apenas uma coisa de cada vez é mais seguro e garante que você possa reverter facilmente suas alterações, se necessário.