Monte uma pasta em uma unidade no fstab. Mover?

4

Gostaria de fazer uma alteração temporária no meu arquivo fstab para que meu /home esteja em outra unidade. No entanto, não quero que a partição inteira seja montada, mas apenas uma pasta ("home") nessa partição. Estou bem com o restante dos dados indisponíveis.

Qual é a maneira canônica de expressar isso em fstab ? Eu não consigo pensar em uma maneira de fazer isso em um comando (já que não consigo fazer referência a uma pasta em um sistema de arquivos que não montei). Acho que devo fazer uma primeira montagem e depois mover a pasta para /home . Mas eu não sei se eu posso fazer um movimento em fstab , não achei em man (e eu não tenho vontade de tentar cegamente porque eu só tenho acesso ssh à máquina agora). / p>

Por enquanto, tenho uma montagem de ligação em fstab :

/dev/sdd1 /mnt/temphome ntfs defaults,errors=remount-ro 0 2
/mnt/temphome/home /home none bind

No entanto, isso deixa /dev/sdd1 montado em ambos os pontos.

Para resumir:

  • posso fazer uma operação de montagem em movimento em fstab e, se sim, como?
  • é que a abordagem correta e se não, o que é?

Obrigado antecipadamente.

    
por Lev Levitsky 01.08.2012 / 20:48

2 respostas

2

Eu não acho que você pode executar movimentos de /etc/fstab . Se você quiser fazer isso, adicione um comando mount --move em /etc/rc.local . Isso deixa um tempo no processo de inicialização durante o qual os diretórios base não estão disponíveis no local final. Como esses são os diretórios home, eles não devem ser muito usados durante o processo de boot, então tudo bem. A única coisa em que consigo pensar são as diretivas @reboot crontab. Se você tiver algum destes, os diretórios home precisam estar disponíveis, então você deve adicionar mount --move ao lugar certo em /etc/rc.sysinit (logo após mount -a ).

No entanto, usar uma montagem de ligação provavelmente é bom. O que pode dar errado é principalmente processos que atravessam todo o disco, como backups e updatedb. Deixar a ligação montada em /etc/fstab é a opção menos arriscada, mas você deve configurar processos de passagem de disco para ignorar /mnt/temphome/home .

Outra possibilidade é tornar /home um link simbólico. No entanto, isso pode fazer com que alguns programas registrem o caminho absoluto para os diretórios iniciais dos usuários, o que seria /mnt/temphome/home/bob . Uma montagem de ligação ou mover uma submontagem não tem esse problema.

    
por 02.08.2012 / 02:24
1

Não, você não pode fazer o que está pedindo. Como você observou, não é possível fazer referência a um arquivo em um sistema de arquivos que você ainda não montou. [*]

No entanto, existe um esquema que pode funcionar para você: um sistema de arquivos em arquivo na partição do doador, montado através do dispositivo de loop. Considere:

# cd /mnt/temphome
# chmod 700 .
# chown root.root .
# dd if=/dev/zero of=temphome bs=4k count=1M
# mke2fs -j temphome
(answer yes to the annoying question)
# mount temphome /home -o loop

O que isto faz é criar um sistema de arquivos de 4 GiB /home que vive em um arquivo na raiz da partição /mnt/temphome . Você ainda precisa montar a partição doadora e deixá-la montada, mas somente o root pode montá-la ou alterar seu conteúdo diretamente, incluindo a montagem /home via o dispositivo de loop. Uma vez que você montou o novo /home , no entanto, usuários normais podem escrever para esse novo sistema de arquivos porque eles estão fazendo isso através do kernel, que tem o poder de fazer isso, uma energia controlada pelas permissões no sistema de arquivos em loop .

Se por alguma razão ainda expor a partição /mnt/temphome a mais risco do que você deseja aceitar, a melhor alternativa que posso pensar é usar gparted para reduzir a partição doadora e usar o espaço aberto para criar uma nova partição /home temporária. Quando terminar de usá-lo, volte ao gparted, exclua a partição temporária e re-expanda a partição doadora para usar o espaço liberado. Isso tem seus próprios riscos: modificar partições não é 100% seguro.

[*] Bem, isso não é inteiramente verdade. Ocasionalmente você vê truques envolvendo o conhecimento da localização exata do disco (setor, cabeça, trilha) dos arquivos em outros sistemas de arquivos. Isso é mais comum em atividades de baixo nível: hibernação, swap, boot ... Para que isso funcione, você precisa de um arquivo completamente contíguo (ou seja, sem fragmentação) que nunca se move, para que você possa começar a ler e escrever setores brutos e para uma partição não montada.

Se você observar a tendência de tais coisas ao longo do tempo, você perceberá que elas tendem a se tornar menos populares ao longo do tempo, devido às várias conseqüências. Por um lado, os desfragmentadores tendem a quebrar tais esquemas. É uma das razões pelas quais /boot e swap geralmente são partições separadas no Linux.

    
por 02.08.2012 / 02:45