Jak zainstalować i używać pamięci flashcache / bcache do buforowania dysku twardego na dysk SSD?


52

Chcę wiedzieć, czy jest ktoś, kto próbował zainstalować i uruchomić jądro zbudowane z pamięci flashcache lub bcache do buforowania SSD?

Jak ci się to udało?


Dobre pytanie. Sugerowałem flashcache w niektórych moich odpowiedziach ( 1 , 2 ). Wydaje się narzędziem do pracy, obok pamięci podręcznej dm. Dotyczy to również wszystkich tych, którzy szukają alternatywy dla Intel Smart Response dla Ubuntu / Linux.
gertvdijk

Ja, tooo, patrzyłem na to jako alternatywę dla Intel SRT. Arch wiki tutaj w kilku słowach mówi, że to nie jest dla osób o słabym sercu. Problem polega na tym, że planuję bawić się nim na moim jedynym komputerze zarówno do pracy, jak i zabawy :), więc byłam pełna obaw i miałam nadzieję, jak to zrobić. Czy uważasz, że będzie możliwe uruchomienie Ubuntu na maszynie wirtualnej i przetestowanie jednego dysku (na podstawie pliku) na dysku na dysku SSD (ponownie na podstawie pliku). Chętnie to
spróbuję

Ładne pytanie, ale czy odpowiedź, która wykorzystuje maszyny wirtualne jako łóżko testowe, jest uważana za kompletną? Wiele osób nie ma niezbędnego sprzętu, aby naprawdę na to odpowiedzieć.
RobotHumans

4
już próbowałeś tego dla Flashcache? gerrit-tamboer.net/...
jaśminy

4
dm-cache został teraz włączony do stabilnej wersji jądra Linuksa 3.9. Wydaje mi się, że to 26-głosowe pytanie zasługuje teraz na odpowiedź. :)
gertvdijk

Odpowiedzi:


10

Mamy odpowiedź na pamięć podręczną, ale brak odpowiedzi na pamięć flash. Wybrałem flashcache, ponieważ miałem już istniejącą instalację, więc nie było mowy o bcache. Dla mnie też wydawało się, że łatwiej jest skonfigurować. Wybrałem metodę DKMS, aby nie utknąć przy przebudowywaniu modułu / narzędzi za każdym razem, gdy otrzymuję aktualizację jądra.

Te kroki opisano w README-DKMS na Github.

Budowanie modułu

  1. Pierwszą rzeczą, którą robisz, jest instalacja wymagań wstępnych budynku:

    sudo apt-get install dkms build-essential linux-headers-$(uname -r) git
    
  2. Następnie złap źródło:

    git clone git://github.com/facebook/flashcache; cd flashcache
    
  3. Zbuduj i zainstaluj moduły:

    make -f Makefile.dkms
    

Tworzenie urządzenia flashcache

(W tym przykładzie używam buforowania z zapisem wstecznym - domyślnie - ale flashcache może także wykonywać zapisywanie i zapisywanie)

Buforowanie urządzenia innego niż root (nie zamontowane w /)

sudo flashcache_create -p back fcache /dev/sdbX /dev/sdaX Gdzie fcache jest utworzonym urządzeniem (/ dev / mapper / fcache), / dev / sdaX to część SSD (lub cały dysk), a / dev / sdbX to partycja HDD.

Buforowanie urządzenia roota

Jest jeszcze kilka kroków, jeśli buforujesz urządzenie root. Będziesz potrzebował Ubuntu LiveCD / USB dla tej sekcji.

  1. cd /path/to/flashcache/source

  2. make -f Makefile.dkms boot_conf

  3. Edytuj /boot/grub/grub.cnf i / etc / fstab, aby uruchomić z / dev / mapper / fcache (nie sądzę, aby ten krok był naprawdę konieczny, ale tak mówi). Pamiętaj, aby zapisać identyfikator UUID oryginalnego urządzenia root.

  4. Uruchom ponownie z LiveCD / LiveUSB.

  5. Podłącz urządzenie root: mount /dev/sda4 /mnt(/ dev / sda4 to moja partycja root 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 Nie ma potrzeby wykonywania całej konfiguracji DKMS w środowisku na żywo

  9. Odmontuj urządzenie root sudo umount /mnt

  10. sudo flashcache_create -p back fcache /dev/sdbX /dev/disk/by-uuid/[UUID] Gdzie fcache jest utworzonym urządzeniem (powinno być takie samo jak w / etc / fstab i /boot/grub/grub.cnf, w moim przypadku było to fcache), / dev / sdbX to partycja SSD (lub cały dysk ), a [UUID] to UUID partycji głównej.

  11. Restart!

Ostrzeżenia dotyczące korzystania z urządzenia root

Jedną z drobnych irytujących sytuacji, gdy flashcache jest używany dla urządzenia root, jest to, że grub-probe nie wykrywa urządzenia root i może zepsuć menu startowe, dzięki czemu masz dwa wejścia Ubuntu. Ale nie powinno mieć znaczenia, którego używasz w rzeczywistości, ponieważ make -f Makefile.dkms boot_confpowyższy krok instaluje w twoim initrd kilka skryptów, które wykryją i użyją urządzenia flashcache.


2
Widzę, że przynajmniej w raringu są pakiety dla flashcache-dkms i flashcache-utils. Jak zmieni się instalacja?
ivant

Naprawdę? Nie zauważyłem. Używam również Raring, ale zainstalowałem go z repozytorium Git. Muszę spojrzeć na pakiet, ale mogę sobie wyobrazić, że można pominąć kilka pierwszych sekcji i nadal uruchomić proces uruchamiania urządzenia root.
Chuck R

1
Pakiet flashcache-dkms w Ubuntu 13.10 nie zawiera modułów flashcache i plików binarnych do initramfs, dlatego jeśli flashujesz pamięć root, nie będziesz mógł jej uruchomić. Utworzyłem błąd: bugs.launchpad.net/ubuntu/+source/flashcache/+bug/1290148 Zbudowałem flashcache ze źródła, jak opisano powyżej i udało mi się uruchomić następujący łańcuch: sda7 -> flashcache -> dm- crypt -> lvm -> ext4. Po prostu dodaj program flashcache do / etc / crypttab i update-initramfs -u
Martin Vysny

czy możesz dodać komentarz do zmian, które musiałeś wprowadzić w pliku grub.
kapad

Nie modyfikuję już grub.cfg, nie wydaje się to konieczne. Jednak dokonujesz zmiany w ten sposób: linux /boot/vmlinuz-3.19.0-51-lowlatency root=UUID=0a540b91-5990-4df0-bc99-5d6e2cd3fed6 ro recovery nomodesetna linux /boot/vmlinuz-3.19.0-51-lowlatency root=/dev/mapper/fcache ro recovery nomodeset(tj. Zmień parametr root =)
Chuck R

12

Istnieje narzędzie do konwersji umożliwiające włączenie bcache na istniejącym urządzeniu (ujawnienie: napisałem to). Jest to również droga do nowych instalacji, ponieważ obecni instalatorzy dystrybucji nie wiedzą, jak tworzyć urządzenia bcache (w takim przypadku: zacznij od instalacji na dysku twardym).

Instrukcje można znaleźć w sekcji Konwertowanie głównego systemu plików na pamięć podręczną w blocksREADME.

bcache wymaga Linuksa 3.10 lub nowszego, który jest pyskaty i można go zainstalować ręcznie ze strony http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D (poszukaj najnowszej oznaczonej wersji , obecnie v3.11.5-saucyi zainstaluj debaty pasujące do Twojej architektury).

bcache-toolsi blocksmoże być zainstalowany z mojego magazynu ppa .


1
To narzędzie jest zepsute w obecnej wersji Ubuntu (15.04); patrz github.com/g2p/maintboot/issues/1 i github.com/g2p/blocks/issues/13
Jean Jordaan

W rzeczywistości samo narzędzie nie jest obecnie uszkodzone (testowane wczoraj na dysku twardym o pojemności 350 GB). Jednak obecne wersje nie może być użyty do konwersji dysków systemowych ( /, /home, /usr/, ...) podczas pracy systemu (jak maintboot jest uszkodzony). Alternatywnie możesz użyć pamięci USB na żywo, zainstalować blocksją i użyć do konwersji dysków. Należy jednak pamiętać, że to narzędzie działa tylko na podstawowych tablicach partycji MBR i GPT i wymaga 1 MB dodatkowego miejsca przed każdą partycją.
ntninja

5

Wcześniejsze ostrzeżenie: Bcache nie może być używany do twojej instalacji Ubuntu. Jeśli potrzebujesz buforowania SSD dla twojego systemu operacyjnego, powinieneś poczekać na przyszłą lub specjalną wersję instalatora Ubuntu, która może skonfigurować pamięć podręczną SSD. Zobacz odpowiedź Oli tutaj: czy bcache wymaga nowej instalacji?

Dla wszystkich innych, którzy chcą dysku bcache dla danych innych niż OS:

Pierwszą rzeczą do zrobienia jest uaktualnienie jądra, jeśli używasz 13.04 lub starszej wersji, używając głównego PPA jądra. Instrukcje korzystania z tego można znaleźć tutaj:

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

Upewnij się, że wybrałeś jądro w wersji 3.9 lub wyższej podczas uruchamiania, w przeciwnym razie dysk nie będzie działał, a dysk zniknie.

Zainstaluj narzędzia bcache, w tej chwili będziesz musiał zainstalować z repozytorium git:

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

Jeśli uda ci się spakować pakiet bcache-toolsdla Debiana, daj nam znać, a to pytanie zostanie dla Ciebie zaktualizowane. ( bcache-toolsZależnościami kompilacji są uuid-devi libblkid-dev. Muszą być zainstalowane, aby budować bcache-tools.)

Gdy masz już wszystkie narzędzia, możesz spróbować zastosować się do przewodnika tutaj:

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

Ten przewodnik pokazuje, jak sformatować dyski (SSD I dysk twardy), a następnie połączyć je ze sobą, aby utworzyć nowy blok urządzenia za pomocą bcache. Opublikuj komentarz, jeśli uznasz instrukcje za mylące, a ja zaktualizuję tę odpowiedź z uproszczeniami.


Czy można utworzyć dysk startowy z jądrem 3.9, a następnie utworzyć dysk bcache i zainstalować ubuntu na tym dysku?
kapad

kapad - powinno być to możliwe, ale musisz upewnić się, że instalacja Ubuntu ma odpowiednie sterowniki dostępne w czasie uruchamiania i być może będziesz musiał wykonać rozruch poza bcache, aby grub mógł go znaleźć.
Martin Owens -doctormo-

2

myślałem, że przyjdę tutaj i skomentuję, co mi się przydarzyło, gdy zainstalowałem nowe jądro. Używałem flashcache tylko do partycji / home / folder. Zainstalowałem nowe jądro, uruchomiłem je i zatrzymało się podczas uruchamiania i powiedziałem, że nie może znaleźć / dev / mapper / home_cached, są 3 opcje, które masz po otrzymaniu tego komunikatu i wybieram opcję zalogowania się jako root i spróbuj to naprawić. Najpierw próbowałem załadować moduł flashcache i powiedział, że nie może go znaleźć. Pomyślałem, że będę musiał go skompilować i zainstalować dla nowego właśnie zainstalowanego jądra. wciąż miałem folder / flashcache / w katalogu / root /, więc zapisałem go i uruchomiłem

make -f Makefile.dkms boot_conf

potem pobiegłem

make install

następnie załadowałem moduł flashcache

modprobe flashcache

po prostu musiałem załadować moje istniejące urządzenie flashcache, które było

flashcache_load /dev/sdb1

następnie po prostu zamontuj moją partycję domową za pomocą

mount /home

następnie wyjdź z bycia zalogowanym jako root z wyjściem w linii poleceń i powinien kontynuować normalne uruchamianie. wszystko gotowe!


jestem ciekawy, czy to nadal działa, skończyłem z przełączaniem i nieużywaniem flashcache, właśnie zainstalowałem Arch na 64 GB SSD (jądro Linuksa uważa, że ​​to tylko 32 GB) z powodu wewnętrznego oprogramowania. Widziałem, że jest to korzystne jako pamięć podręczna dla niektórych gier Steam.
Ubu the Tech Guru
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.