como mesclar duas partições ext3 no Ubuntu a partir da linha de comando?

6

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

Eles são ambos em /etc/fstab com UUIDs adequados e montados como /opt e /home

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?

    
por sal 30.04.2009 / 19:21

7 respostas

1

Não que eu saiba, embora você possa excluir uma partição e redimensionar a outra: link

Obviamente, para que isso funcione, você precisa ter espaço suficiente para armazenar os dados em outra partição, no entanto.

    
por 30.04.2009 / 19:27
4

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

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

    
por 30.04.2009 / 20:14
3

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

Você só precisa emprestar espaço alocado para um e usá-lo no outro? Você pode usar mount --bind se não quiser usar links simbólicos.

    
por 30.04.2009 / 20:04
2

Tem certeza de que é / dev / sdb e / dev / sdc? Por convenção / dev / sdb e / dev / sdc são discos individuais e não partições em um disco. As partições de disco normalmente têm um número associado a elas (por exemplo, / 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 é realmente possível mesclá-los. Você teria que mover os dados e redimensionar as partições apropriadamente.

    
por 30.04.2009 / 20:25
1

Você não pode mesclar /opt e /home sem ter um dentro do outro.

Por exemplo, /home - > /opt/home .

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

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

A entrada

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

Na verdade, adicionei o seguinte ao meu arquivo /etc/fstab . (na verdade, meu verdadeiro usa o UUID da partion em vez de [ /dev/sdb1 ])

/etc/fstab

/dev/sdb1    /share ext3  noatime,errors=remount-ro 0       1
/share/home  /home  none  bind
    
por 30.04.2009 / 19:52
0

Isso pode 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 a cada linha ou executar como root [ sudo bash ].

    
por 04.05.2009 / 17:26
0

A fusão 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 você tiver dois. As estruturas internas do sistema de arquivos entrariam em conflito da mesma maneira.

A absorção de um sistema de arquivos em outro é teoricamente viável, mas não acho que tenha sido tentado, porque as ferramentas que atendem a casos de uso raros têm um risco maior de erros, o que pode ter consequências fatais. Você precisaria fazer backups e, agora que tem backups, não precisa de conversão no local. Se você quisesse implementar isso, a ferramenta mais próxima é btrfs-convert, que phagocita um sistema de arquivos ext4 mantendo ambos os sistemas de arquivos na mesma partição, com as estruturas btrfs se referindo às estruturas ext4 e copy-on-write assegurando que novos arquivos sejam btrfs apenas.

    
por 01.12.2011 / 21:58