ti-enxame.com

Como mesclar duas partições ext3 no Ubuntu da linha de comando?

Eu tenho uma partição /dev/sdb1 e uma partição /dev/sdb2

Eles estão em /etc/fstab com uuids próprios e montado como /opt e /home

Eu gostaria de mesclá-los sem perder nenhum arquivo

Isso pode ser feito a partir da linha de comando sem ter que mover todos os arquivos?

6
sal

Não que eu esteja ciente, embora você possa excluir uma partição e redimensionar o outro: http://www.howtoforge.com/linux_resizing_ext3_Partitions

Obviamente, para isso funcionar, você teria que ter espaço suficiente para armazenar os dados em uma partição em outro lugar.

1
Adam Gibbins

Não, você terá que mover os arquivos.

Mesmo assim, você ainda tem um problema: você teria que montar a partição como "/ home" e symlink "/ home/opt" para/optar.

4
lfaraone

Quando você diz mesclar, eu acomoda que você deseja ter um sistema de arquivos que pode usar todo o espaço atualmente alocado para/opt e/home? A única maneira "direita" que eu sei como fazer isso é recriar as partições, torná-las parte de um volume físico do LVM e criar um volume lógico em cima dele.

Você só precisa pedir espaço emprestado que é alocado para um e usá-lo no outro? Você pode usar mount --bind Se você não quiser usar links símbolos.

3
jaredg

Tem certeza de que é/dev/sdb e/dev/sdc? Por convenção/dev/sdb e/dev/sdc são discos individuais e não divisórias em um disco. As partições de disco normalmente têm um número associado a eles (i.e./dev/sdb1,/dev/sdb2,/dev/sdc1, etc). Você não pode mesclar partições em discos rígidos físicos separados, você tem que mover os dados de um para o outro.

Como já foi dito por outros, não é possível mesclá-los. Você teria que mover os dados e redimensionar as partições apropriadamente.

2
dagorym

Você não pode se fundir /opt e /home sem também ter um dentro do outro.

Por exemplo /home -> /opt/home.

Então você poderia fazer ln -s/home/opt/home.

ou melhor ainda: mount --bind /opt/home /home

ou a entrada fstab é: /opt/home /home none bind

Eu realmente adicionei o seguinte ao meu /etc/fstab Arquivo. (Na verdade, meu real usa o UUID da partion em vez de [/dev/sdb1])

/etc/fstab

/dev/sdb1/share ext3 noatime, errors = remount-ro 0 1 
/Compartilhar/home/home None ligeira 
1
Brad Gilbert

A mesclagem não é viável porque alguns números, como inodes, devem ser exclusivos dentro de um sistema de arquivos, mas alguns serão repetidos quando tiverem dois. As estruturas internas do sistema de arquivos entrariam em conflito da mesma maneira.

Absorver um sistema de arquivos em outro é teoricamente viável, mas não acho que tenha sido tentada, porque ferramentas que atendem a casos de uso raro têm um risco maior de bugs, que podem ter consequências fatais. Você seria obrigado a fazer backups, e agora você tem backups que você não precisa de conversão no lugar. Se você quisesse implementar isso, a ferramenta mais próxima é a BTRFS-Convert, que fhagocita um sistema de arquivos ext4 mantendo os sistemas de arquivos na mesma partição, com as estruturas da BTRFS referentes às estruturas EXT4 e a gravação copiada garantindo que novos arquivos são BTRFS. -só.

0
Tobu

Isso poderia funcionar:

# copy files preserving attributes
cp -Rp /home /opt # --recursive --preserve

# comment out old /home entry
Perl -pie'$_ = "#$_" if m[/home]' /etc/fstab 

# add a bind entry to the end of fstab
echo /opt/home  /home  none  bind >> /etc/fstab


# unmount both partitions
umount /home
umount /opt

# remove original /home partition
# resize /opt partition to use the freed space


# could also just restart here
mount /opt
mount /home

Você precisará anexar Sudo para cada linha ou executar como root [Sudo bash].

0
Brad Gilbert