Como instalo e uso o flashcache / bcache para armazenar em cache o HDD no SSD?

52

Quero saber se alguém tentou instalar e executar o kernel construído com flashcache ou bcache para cache de SSD?

Como você conseguiu fazer isso?

kapad
fonte
Boa pergunta. Eu tenho sugerido o flashcache em algumas das minhas respostas ( 1 , 2 ). Parece a ferramenta para o trabalho, ao lado de dm-cache. Também é relevante para todos aqueles que procuram uma alternativa ao Intel Smart Response para Ubuntu / Linux.
gertvdijk
Eu também estava olhando para ele como uma alternativa ao Intel SRT. O wiki do arco aqui diz, em mais algumas palavras, que não é para os fracos de coração. O problema é que eu estou planejando brincar com ele no meu único PC, tanto para o trabalho quanto para o lazer :), então fiquei apreensivo e esperando saber como fazê-lo aqui. Você acha que será possível executar o ubuntu em uma VM e ter uma unidade (baseada em arquivo) no disco e uma no SSD (novamente, baseada em arquivo) para testar. Dispostos a dar-lhe um ir, então :)
kapad
Boa pergunta, mas uma resposta que usa VMs como um banco de testes é considerada completa? Muitas pessoas não têm o hardware necessário para realmente responder a isso.
10119 RobotHumans
4
já tentou isso para Flashcache? gerrit-tamboer.net/…
jasmines
4
O dm-cache agora foi incorporado à versão estável do kernel 3.9 do Linux. Eu acho que essa pergunta de 26 votos merece uma resposta agora. :)
gertvdijk

Respostas:

10

Bem, nós temos uma resposta bcache, mas nenhuma resposta flashcache. Eu escolhi o flashcache porque já tinha uma instalação existente, portanto o bcache estava fora de questão. Para mim, parecia mais fácil configurar também. Eu escolhi o método DKMS para não ficar preso na reconstrução do módulo / ferramentas toda vez que recebi uma atualização do kernel.

Essas etapas estão descritas em README-DKMS no Github.

Construindo o módulo

  1. A primeira coisa a fazer é instalar os pré-requisitos de construção:

    sudo apt-get install dkms build-essential linux-headers-$(uname -r) git
    
  2. Em seguida, pegue a fonte:

    git clone git://github.com/facebook/flashcache; cd flashcache
    
  3. Crie e instale os módulos:

    make -f Makefile.dkms
    

Criando um dispositivo flashcache

(Neste exemplo, eu uso o cache de write-back - o padrão -, mas o flashcache também pode gravar e gravar)

Armazenando em cache um dispositivo não raiz (não montado em /)

sudo flashcache_create -p back fcache /dev/sdbX /dev/sdaX Onde fcache é o dispositivo criado (/ dev / mapper / fcache), / dev / sdaX é a partição SSD (ou disco inteiro) e / dev / sdbX é a partição HDD.

Armazenando em cache seu dispositivo raiz

Existem mais algumas etapas se você estiver armazenando em cache o seu dispositivo raiz. Você precisará de um Ubuntu LiveCD / USB para esta seção.

  1. cd /path/to/flashcache/source

  2. make -f Makefile.dkms boot_conf

  3. Edite /boot/grub/grub.cnf e / etc / fstab para inicializar a partir de / dev / mapper / fcache (não acredito que essa etapa seja realmente necessária, mas é o que diz). Certifique-se de anotar o UUID do seu dispositivo raiz original.

  4. Reinicie com o LiveCD / LiveUSB.

  5. Monte seu dispositivo raiz: mount /dev/sda4 /mnt(/ dev / sda4 é minha partição raiz do Linux)

  6. cd /mnt/path/to/flashcache/source

  7. sudo apt-get install dkms build-essential linux-headers-$(uname -r)

  8. make; sudo make install Não é necessário fazer toda a configuração do DKMS no ambiente ao vivo

  9. Desmonte o dispositivo raiz sudo umount /mnt

  10. sudo flashcache_create -p back fcache /dev/sdbX /dev/disk/by-uuid/[UUID] Onde fcache é o dispositivo criado (deve ser o mesmo que você colocou em / etc / fstab e /boot/grub/grub.cnf, no meu caso, era fcache), / dev / sdbX é a partição SSD (ou todo o disco ) e [UUID] é o UUID da sua partição raiz.

  11. Reinicie!

Advertências ao usar o dispositivo raiz

Um pequeno aborrecimento quando o flashcache é usado para o dispositivo raiz é que o grub-probe falha ao detectar o dispositivo raiz e pode atrapalhar o menu de inicialização para que você tenha duas entradas do Ubuntu. Porém, não importa qual você usará em toda a realidade, pois a make -f Makefile.dkms boot_confetapa acima instala alguns scripts no initrd que detectarão e usarão o dispositivo flashcache.

Chuck R
fonte
2
Vejo que pelo menos em raring existem pacotes para flashcache-dkms e flashcache-utils. Como a instalação mudaria?
Ivant # 03
Sério? Eu não tinha notado. Também estou executando o Raring, mas instalei-o no repositório Git. Eu precisaria olhar o pacote, mas posso imaginar que você poderia pular as primeiras seções e ainda executar o processo de inicialização de um dispositivo raiz.
mandril R
11
O pacote flashcache-dkms do ubuntu 13.10 não inclui módulos e binários do flashcache no initramfs; portanto, se você fizer o flashcache na raiz, não poderá inicializá-lo. Eu criei um bug: bugs.launchpad.net/ubuntu/+source/flashcache/+bug/1290148 Criei o flashcache a partir da fonte, conforme descrito acima, e consegui inicializar a seguinte cadeia: sda7 -> flashcache -> dm- criptografia -> lvm -> ext4. Basta adicionar o flashcache dev para / etc / crypttab e update-initramfs -u
Martin Vysny
você pode adicionar um comentário com as alterações que você teve que fazer no arquivo grub.
#
Não modifico mais o grub.cfg, não parece necessário. No entanto, você faz uma alteração como esta: linux /boot/vmlinuz-3.19.0-51-lowlatency root=UUID=0a540b91-5990-4df0-bc99-5d6e2cd3fed6 ro recovery nomodesetpara linux /boot/vmlinuz-3.19.0-51-lowlatency root=/dev/mapper/fcache ro recovery nomodeset(ou seja, alterar o parâmetro root =) #
Chuck R
12

Existe uma ferramenta de conversão para ativar o bcache em um dispositivo existente (divulgação: eu escrevi). Também é o caminho a seguir para novas instalações, já que os instaladores de distro atuais não sabem como criar dispositivos bcache (nesse caso: comece instalando no HDD).

Consulte a conversão de seu sistema de arquivos raiz para bcache no blocksREADME para obter instruções.

O bcache requer Linux 3.10 ou mais recente, que é atrevido e pode ser instalado manualmente a partir de http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D (procure a versão mais recente marcada) , atualmente v3.11.5-saucy, e instale as debs que correspondem à sua arquitetura).

bcache-toolse blockspode ser instalado no meu ppa de armazenamento .

Gabriel
fonte
11
Esta ferramenta está corrompida para a versão atual (15.04) do Ubuntu; veja github.com/g2p/maintboot/issues/1 e github.com/g2p/blocks/issues/13
Jean Jordaan
Na verdade, a ferramenta em si não está quebrada atualmente (testada ontem em um disco rígido de 350 GB). No entanto versões atuais não pode ser usado para converter discos do sistema ( /, /home, /usr/, ...) enquanto o sistema está em execução (como maintboot está quebrado). Como alternativa, você pode usar um USB Stick ativo, instalá blocks-lo e usá-lo para converter seus discos. Cuidado, porém, que esta ferramenta funciona apenas nas tabelas de partição MBR e GPT primária e requer 1MiB de espaço extra antes de cada partição.
Ntninja 7/08
5

Aviso prévio: o bcache não pode ser usado para a instalação existente do Ubuntu. Se você precisar do armazenamento em cache do SSD para o seu sistema operacional, aguarde uma versão futura ou especial do instalador do Ubuntu, que possa configurar o cache do SSD. Veja esta resposta de Oli aqui: O bcache requer uma nova instalação?

Para todos os outros que desejam uma unidade bcache para dados que não sejam do sistema operacional:

A primeira coisa a fazer é atualizar o kernel se você estiver usando o 13.04 ou mais antigo usando o PPA da linha principal do kernel. Instruções para usar isso podem ser encontradas aqui:

https://wiki.ubuntu.com/Kernel/MainlineBuilds

Certifique-se de selecionar o kernel 3.9 ou superior ao inicializar, ou ele não funcionará e sua unidade desaparecerá.

Instale o bcache-tools, no momento você terá que instalar a partir do repositório git:

git clone http://evilpiepirate.org/git/bcache-tools.git

Se você conseguir empacotar o bcache-toolsdebian, informe-nos e esta pergunta será atualizada para você. ( bcache-toolsas dependências de compilação de são uuid-deve libblkid-dev. Elas devem ser instaladas para serem construídas bcache-tools.)

Depois de ter todas as ferramentas no lugar, você está pronto para tentar seguir o guia aqui:

http://atlas.evilpiepirate.org/git/linux-bcache.git/tree/Documentation/bcache.txt

Este guia mostra como formatar as unidades (SSD E disco rígido) e, em seguida, conectá-las para criar um novo bloco de dispositivo usando o bcache. Poste um comentário se achar as instruções confusas e atualizarei esta resposta com simplificações.

Martin Owens -doctormo-
fonte
É possível criar um disco de inicialização executando o kernel 3.9 e, em seguida, criar a unidade bcache e instalar o ubuntu em cima dessa unidade?
Kapad
kapad - deveria ser possível, mas você teria que garantir que a instalação do ubuntu tivesse os drivers corretos disponíveis no momento da inicialização e que talvez fosse necessário fazer a inicialização fora do bcache para que o grub pudesse encontrá-lo.
Martin Owens -doctormo-
2

Eu pensei em vir aqui e comentar sobre o que me ocorreu quando instalei um novo kernel. Eu estava usando o flashcache apenas para minha partição / home / folder. Eu instalei um novo kernel, inicializei nele e ele parou durante a inicialização e disse que não podia encontrar / dev / mapper / home_cached, existem 3 opções que você tem quando recebe essa mensagem e eu escolho a opção de fazer login como root e tente consertá-lo. Primeiro tentei carregar o módulo flashcache e ele disse que não o encontrava. Então imaginei que teria que compilar e instalar o novo kernel que acabei de instalar. eu ainda tinha a pasta / flashcache / localizada em / root /, então eu coloquei nele e executei

make -f Makefile.dkms boot_conf

então eu corri

make install

carreguei o módulo flashcache com

modprobe flashcache

então eu só tinha que carregar meu dispositivo flashcache existente que era

flashcache_load /dev/sdb1

então apenas monte minha partição inicial com

mount /home

saia do logon como root com exit na linha de comando e deve continuar inicializando normalmente. tudo feito!

Ubu, o Guru da Tecnologia
fonte
Estou curioso para saber se isso ainda funciona, eu acabei alternando e não usando o flashcache por mais tempo. Acabei de instalar o Arch no SSD de 64GB (o kernel do Linux acha que são apenas 32GB no entanto) devido ao firmware interno. Eu pude ver isso sendo benéfico como uma unidade de cache para alguns jogos a vapor.
Ubu the Tech Guru