Como alterar os pontos de montagem

6

Eu não estou muito envolvido com essa coisa de montagem / desmembramento no Linux, então aqui vai a minha pergunta:

Com df -h , obtenho a seguinte visão geral:

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             323M  306M     0 100% /
tmpfs                 502M     0  502M   0% /lib/init/rw
udev                  497M  116K  497M   1% /dev
tmpfs                 502M     0  502M   0% /dev/shm
/dev/sda9              47G  181M   44G   1% /home
/dev/sda8             368M   12M  338M   4% /tmp
/dev/sda5             8,3G  1,1G  6,8G  14% /usr
/dev/sda6             2,8G  433M  2,2G  17% /var

Estou usando esta máquina como servidor da web, onde todos os materiais relacionados à web residem em /srv/ . Como isso faz parte de / , estou sem espaço em disco aqui. Eu vi /home com 44G de espaço disponível na web, o que é pura bobagem no meu caso. Então eu quero ter /home não como partição própria (em vez parte de / ), mas /srv como partição própria, pegando o espaço consumido por /home . Então, depois disso df -h deve ficar assim ( /home substituído por /srv ):

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             323M  306M     0 100% /
tmpfs                 502M     0  502M   0% /lib/init/rw
udev                  497M  116K  497M   1% /dev
tmpfs                 502M     0  502M   0% /dev/shm
/dev/sda9              47G  181M   44G   1% /srv
/dev/sda8             368M   12M  338M   4% /tmp
/dev/sda5             8,3G  1,1G  6,8G  14% /usr
/dev/sda6             2,8G  433M  2,2G  17% /var

O que tem que fazer para chegar até aqui?

    
por acme 10.03.2011 / 14:44

3 respostas

9

Como você tem bastante espaço em /home , mova todo o material de /srv para /home e, em seguida, (opcionalmente) mova o material que estava em /home para a partição raiz.

A solução mais simples, se você não se importa com o tempo de inatividade de alguns minutos, é mover /srv para a partição maior e criar uma ligação simbólica:

mv /srv /home
ln -s /home/srv /

Se você realmente quiser mover /home para a partição raiz, será necessário alguns renomeamentos. Eu suponho que não há um diretório chamado /home/srv ou /srv/srv .

mv /srv home
mkdir /srv
mount --move /home /srv
mv /srv/acme … /home/
mv /srv/srv/* /srv
rmdir /srv/srv

Finalmente (se você não estiver usando o método de link simbólico) edite /etc/fstab para alterar o ponto de montagem: na linha que começa com /dev/sda9 /home , substitua /home por /srv .

    
por 10.03.2011 / 21:11
2

Antes de fazer qualquer coisa, você precisará descobrir um local para manter os 180 megabytes de dados que o / home está usando atualmente. Eu recomendaria reparticionar o / dev / sda9 atual em, digamos, dois shows para /home e 42 para /srv .

Em seguida, você vai ter que ser um pouco complicado. Isso tudo é melhor realizado no modo de usuário único, de modo que somente o root esteja conectado e você não tenha problemas com alguém tentando acessar o /home enquanto você o move.

Você tem uma quantidade decente de espaço em / var, então vamos usar isso como um espaço temporário: mkdir /var/tmp/oldhome

cd /home

'tar -cvf - ./ | (cd / var / tmp / oldhome & & tar -xvf -)

Agora, temos /home backup em algum lugar enquanto reparticionamos /dev/sda9 em 2 GB por /dev/sda9 e 42 GB por /dev/sda10

Quando terminar de reparticionar e criar novos sistemas de arquivos (suponho que você saiba como fazer isso), será necessário editar /etc/fstab .

Em algum lugar, você verá uma linha dizendo algo nos moldes

/dev/sda9 /home ext3 defaults 0 2

Supondo que você tenha feito /dev/sda9 a menor das duas partições, você pode deixar essa linha inalterada; você só precisa adicionar

/dev/sda10 /srv ext3 defaults 0 2

diretamente abaixo.

Uma vez que essas linhas tenham sido adicionadas, basta digitar

mount /home ; mount /srv

e verifique com df -h para garantir que ambas as partições estejam montadas.

Em seguida, substitua os dados de / home:

cd /var/tmp/oldhome

tar -cvf - ./ | ( cd /home && tar -xvf - )

Reinicialize seu sistema no modo multiusuário e tudo deve funcionar.

    
por 10.03.2011 / 14:57
1

Como uma solução rápida, mas não muito bonita, você poderia remontar um diretório em um de seu disco menos utilizado até algum ponto em /srv e mover algo para lá para limpar um pouco de espaço em /srv propriamente dito.

Leia sobre --bind em man mount . Tudo se resume a algo como mount --bind /some/spare/dir /busy/dir/mountpoint . Funciona em qualquer Linux moderno.

Suponha que você tenha /srv/some/stuff .

  • mkdir /home/offload/some/stuff - isso está na partição de espaço livre de 44G
  • mv /srv/some/stuff /srv/some/previous-stuff - temporariamente, liberar o nome
  • mount --bind /home/offload/some/stuff /srv/some/stuff - agora algum / material está em outra partição!
  • mv /srv/some/previous-stuff/* /srv/some/stuff - coloque as coisas de volta sob o nome original, libere o espaço em / srv.
por 10.03.2011 / 15:55