mesclar duas partições com disco diferente em centos

1

Eu tenho um lite centos 6 no meu sistema. Eu vou redimensionar uma das suas partições. Aqui está o sistema de arquivos deste sistema:

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_hadoop1-lv_root
                      5.5G  3.7G  1.6G  71% /
tmpfs                 937M     0  937M   0% /dev/shm
/dev/sda1             485M   32M  428M   7% /boot
/dev/sdb1             5.0G  139M  4.6G   3% /disk1
cm_processes          937M     0  937M   0% /var/run/cloudera-scm-agent/process

Desejo redimensionar /disk1 para 1G e redimensionar / para 9,5G. Mas o problema é que / e /disk1 estão em dois dispositivos diferentes! É possível redimensionar / sem formatá-lo?

FYI, aqui está a saída do fdisk -l:

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008d752

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        1306     9972736   8e  Linux LVM

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8376205b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         652     5237158+  83  Linux

Disk /dev/mapper/vg_hadoop1-lv_root: 5981 MB, 5981077504 bytes
255 heads, 63 sectors/track, 727 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/mapper/vg_hadoop1-lv_swap: 4227 MB, 4227858432 bytes
255 heads, 63 sectors/track, 514 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Saída do vgscan:

Found volume group "vg_hadoop1" using metadata type lvm2

Informamos também que esta máquina está localizada dentro do vmware esx como um sistema operacional convidado, embora eu ache que este fato não muda o processo.

Atenciosamente.

    
por Ali n 01.05.2014 / 14:48

1 resposta

2

Como / está em um volume lógico, é possível crescer / dev / mapper / vg_hadoop1-lv_root sem reformatar . Esta operação será muito segura, desde que não haja relâmpagos.

Como / dev / sdb1 (/ disk1) não é um volume lógico, ainda é possível reduzi-lo - no entanto, existem sempre possibilidades de falhar . Eu nunca tive um problema com o redimensionamento de uma partição, desde que houvesse espaço suficiente; mas isso não significa que é impossível! Muitas das ferramentas que você pode usar para encolher uma partição avisarão você desse fato. Mais uma vez, apesar disso: não encontrei ninguém com problemas em fazê-lo.

Agora, se você fez o backup de / disk1 ou não se importa de perder, continue!

Assim, para continuarmos com o pivot de dados, primeiro reduziremos / disk1, para que mais tarde tenhamos espaço suficiente para crescer /. Primeiro, devemos garantir que seja desmontado - você não pode (com segurança) encolher um volume montado.

# umount /dev/sdb1

Ferramentas

[nota para outros leitores: isso só funciona com sistemas de arquivos ext {2,3,4}] Podemos usar resize2fs + fdisk , ou gparted . O fdisk não é para os fracos de coração. Se você quiser usar uma GUI para reduzir sua partição, siga este guia: link ,

Primeiro, vamos redimensionar os limites (partição) para garantir que nenhum dado esteja no final de nossa partição.

# resize2fs /dev/sdb1 1G

Agora, para o fdisk, podemos fazer:

# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help):  

Lembre-se de que partições são apenas limites para dados. A exclusão de uma partição não excluirá os dados subjacentes. Eles são como ponteiros em uma linguagem de programação não coletada. Felizmente, com a sua saída do fdisk -l, temos os limites (localizações dos ponteiros) para a sua partição!

Aqui é possível perder dados. Eu não sou responsável por você excluir coisas muito importantes de / disk1 sem que você tenha feito o backup. Backup de qualquer coisa que você precisa para dois locais antes de realizar esta etapa

Vamos excluir sua partição

Command (m for help): d
Partition number (1-4, default 4): 1
Partition 1 is deleted

Command (m for help): 

E recrie-o com os limites (reduzidos)

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default e): p
Selected partition 1
First sector (1-5368, default 1): <hit enter>
Last sector, +sectors or +size{K,M,G} (2-5368, default 5368): +1G
Partition 1 of type Linux and of size 1 GiB is set

Command (m for help): 

E então, criaremos outra partição que poderemos usar mais tarde com todo o nosso novo espaço livre que criamos

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default e): p
Selected partition 2
First sector (1025-5368, default 1025): <hit enter>
Last sector, +sectors or +size{K,M,G} (1026-5368, default 5368): <hit enter>
Partition 2 of type Linux and of size <remaining> is set

Command (m for help): 

Nossas novas partições são configuradas e podemos continuar na próxima etapa

Legal! A parte difícil está feita. Sua pergunta é um dos recursos impressionantes do LVM e por que ele é usado com tanta frequência (mesclando partições, mesmo em unidades separadas!)

Então, o que estamos tentando fazer é aumentar o volume lógico , que é / dev / mapper / vg_hadoop1-lv_root. Para fazer isso, precisamos de espaço suficiente no nosso grupo de volumes para crescer! Podemos fazer isso adicionando um volume físico ao nosso grupo de volumes .

Então, primeiro criaremos um Physical Volume fora da nossa nova partição, para que ela possa ser reconhecida pelo LVM e, posteriormente, adicionada a um grupo de volumes . Nós fazemos isso com ...

# /sbin/pvcreate /dev/sdb2

O LVM pode adicionar qualquer volume físico a qualquer grupo de volume, então vamos adicioná-lo ao nosso hadoop, que encontramos na saída de

# /sbin/vgscan 

Então, sabemos que queremos o vg_hadoop1. Vamos adicionar nosso novo volume físico a este grupo de volume com ...

# /sbin/vgextend vg_hadoop1 /dev/sdb2

Agora que foi adicionado, executamos um comando rápido para redimensionar o volume lógico atual

# /sbin/lvextend -L +4.0G /dev/mapper/vg_hadoop1-lv_root 

o parâmetro -L para lvextend é muito legal, e pode ter uma variedade de entradas diferentes. Estamos usando + quase como o operador binário + = em muitas linguagens de programação. Estamos dizendo "novo tamanho = tamanho atual + 4.5G"

Agora que tudo foi dito e feito, temos dois sistemas de arquivos que não são do mesmo tamanho que o volume em que estão residindo. Para um sistema de arquivos ext2 / 3 / 4fs [mais comum] (que atualizarei a questão assim que tivermos a saída do fdisk -l para nos dizer qual sistema de arquivos você está usando), podemos alterar o sistema de arquivos para corresponder ao tamanho da partição :

# /sbin/resize2fs /dev/mapper/vg_hadoop1-lv_root
# /sbin/resize2fs /dev/sdb1

Talvez seja necessário remontar root para ver o novo tamanho. Podemos também montar novamente o / disk1 novamente. faça isso com:

# mount -o remount /
# mount /dev/sdb1 /disk1

Vamos garantir que tudo funcionou, usando df (sem disco) e que tudo está no tamanho certo.

# df -H

Quando obtiver a saída desses dois comandos, atualizarei essa pergunta para que você tenha a certeza de que tudo está correto antes de executar.

Boa sorte!

    
por 01.05.2014 / 16:06