Monte permanentemente vários diretórios de discos diferentes sob /

2

Eu tenho SSD e HDD. Alguns diretórios como /var , /srv e /tmp devem estar no HDD, enquanto /boot , /usr e /lib no SSD. Mas eu tenho que criar uma partição separada para cada diretório? Eu quero ter 2 ou mais partições. Um para cada disco e distribuir diretórios conforme necessário. É possível e como?

Já ouvi falar sobre links simbólicos, mount --bind , mhddfs , mas:

  • links simbólicos são tratados de maneira diferente por ferramentas como cp , então não tenho certeza se é seguro ter diretórios de sistema principais ligados por links simbólicos
  • Não tenho ideia de como posso usar mount --bind ou mhddfs em fstab
por piotrek 05.06.2014 / 02:15

3 respostas

2

Se você não quiser ter muitas partições e também quiser a flexibilidade de mudar as coisas, recomendo usar o LVM .

Crie a partição /boot no SSD e outras 2 partições grandes: uma no HDD, a outra no SSD. Essas duas partições serão volumes físicos (PVs) para o LVM. Adicione-os a um grupo de volumes (VG) e crie um volume lógico (LV) para cada diretório no PV desejado. Se você descobrir mais tarde que /var deve estar no SSD, não no disco rígido, você pode usar pvmove para mover seu LV correspondente do HDD para o SSD.

Exemplo:

pvcreate /dev/disk/by-id/hdd-part1
pvcreate /dev/disk/by-id/sdd-part2 # part1 is /boot
vgcreate my_vg /dev/disk/by-id/hdd-part1 /dev/disk/by-id/sdd-part2
lvcreate -n root -L 6G my_vg /dev/disk/by-id/sdd-part2
lvcreate -n var -L 2G my_vg /dev/disk/by-id/hdd-part1
lvcreate -n srv -L 10G my_vg /dev/disk/by-id/hdd-part1
pvmove -n var /dev/disk/by-id/hdd-part2 /dev/disk/by-id/sdd-part2

Eu quero enfatizar que o pvmove também pode mover apenas fragmentos de um PV chamado de extensões físicas (PEs). O tamanho padrão de um PE é de 4 MiB e pode ser definido quando o VG é criado.

    
por 05.06.2014 / 03:46
1

Eu nunca usei isso, mas acho que você pode montar / diretório no dispositivo ssd. Em seguida, crie uma pasta chamada / hdd Depois, crie as pastas desejadas, como / hdd / var / hdd / srv / hdd / tmp.

E use a montagem de ligação para atualizar essas entradas

mount --bind /hdd/var /var
mount --bind /hdd/tmp /tmp

Para apenas criar as pastas / boot, / usr, / lib. Não há necessidade de remontar.

    
por 05.06.2014 / 03:11
1

O bind monta deve realizar o que você está tentando fazer. Você pode usar montagens de ligação com facilidade no fstab: uma entrada fstab de montagem de ligação se parece com

/path/to/original /mount/point none bind 0 0

Apenas observe que você precisa de algo montado em / para começar, então eu recomendaria montar seu SSD em / e vincular a montagem de vários diretórios do seu HDD como achar melhor. Então, um fstab como (assumindo partições ext4, altere conforme necessário)

### /etc/fstab ###

# Mount SSD to /
/dev/disk/by-uuid/your-ssd-partition-uuid / ext4 0 1

# Mount HDD somewhere (in this case /mnt/hdd)
/dev/disk/by-uuid/your-hdd-partition-uuid /mnt/hdd ext4 0 2

# Bind mounts
/mnt/hdd/var /var none bind 0 0
/mnt/hdd/srv /srv none bind 0 0
/mnt/hdd/tmp /tmp none bind 0 0

Você também pode ter um diretório "root" dedicado para /, digamos, no seu ssd, isso faria o fstab parecer

### /etc/fstab ###

# Mount SSD somewhere
/dev/disk/by-uuid/your-ssd-partition-uuid /mnt/ssd ext4 0 1

# Mount HDD somewhere (in this case /mnt/hdd)
/dev/disk/by-uuid/your-hdd-partition-uuid /mnt/hdd ext4 0 2

# Mount /
/mnt/ssd/root / none bind 0 0

# Other Bind mounts
/mnt/hdd/var /var none bind 0 0
/mnt/hdd/srv /srv none bind 0 0
/mnt/hdd/tmp /tmp none bind 0 0
/mnt/ssd/lib /lib none bind 0 0
/mnt/ssd/usr /usr none bind 0 0
    
por 05.06.2014 / 05:27