web-dev-qa-db-ja.com

HDDをSSDにキャッシュするためにflashcache / bcacheをインストールして使用するにはどうすればよいですか?

SSDキャッシング用に flashcache または bcache でビルドされたカーネルをインストールして実行しようとした人がいるかどうか知りたいですか?

どうやってそれをやったのですか?

52
kapad

さて、bcacheの回答はありましたが、flashcacheの回答はありませんでした。既存のインストール済み環境があるため、フラッシュキャッシュを選択しました。そのため、bcacheは問題外でした。私にとっては、セットアップも簡単に思えました。カーネルのアップグレードを取得するたびにモジュール/ツールを再構築するのに困らないように、DKMSメソッドを選択しました。

これらの手順は、Githubの README-DKMS で概説されています。

モジュールの構築

  1. 最初に行うことは、建物の前提条件をインストールすることです。

    Sudo apt-get install dkms build-essential linux-headers-$(uname -r) git
    
  2. 次に、ソースをスナッグします:

    git clone git://github.com/facebook/flashcache; cd flashcache
    
  3. モジュールをビルドしてインストールします。

    make -f Makefile.dkms
    

フラッシュキャッシュデバイスの作成

(この例では、デフォルトのライトバックキャッシュを使用していますが、フラッシュキャッシュはライトアラウンドとライトスルーも実行できます)

非ルート(/にマウントされていない)デバイスのキャッシュ

Sudo flashcache_create -p back fcache /dev/sdbX /dev/sdaX fcacheは作成されたデバイス(/ dev/mapper/fcache)、/ dev/sdaXはSSDパーティション(またはディスク全体)、/ dev/sdbXはHDDパーティションです。

ルートデバイスのキャッシュ

ルートデバイスをキャッシュする場合は、さらにいくつかの手順があります。このセクションにはUbuntu LiveCD/USBが必要です。

  1. cd /path/to/flashcache/source

  2. make -f Makefile.dkms boot_conf

  3. /boot/grub/grub.cnfと/ etc/fstabを編集して/ dev/mapper/fcacheから起動します(このステップは本当に必要だとは思いませんが、と言っています)。元のルートデバイスのUUIDを書き留めてください。

  4. LiveCD/LiveUSBで再起動します。

  5. ルートデバイスをマウントします:mount /dev/sda4 /mnt(/ dev/sda4は私の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ライブ環境でDKMSセットアップ全体を実行する必要はありません

  9. ルートデバイスSudo umount /mntをアンマウントします

  10. Sudo flashcache_create -p back fcache /dev/sdbX /dev/disk/by-uuid/[UUID] fcacheが作成されたデバイス(/ etc/fstabおよび/boot/grub/grub.cnfに配置したものと同じである必要があります。私の場合はfcache)、/ dev/sdbXはSSDですパーティション(またはディスク全体)および[UUID]はルートパーティションのUUIDです。

  11. リブート!

ルートデバイス使用時の注意事項

フラッシュキャッシュがルートデバイスに使用されるときの1つの小さな迷惑は、grub-probeがルートデバイスの検出に失敗し、ブートメニューを台無しにして、Ubuntu全体が2つあることです。ただし、上記のmake -f Makefile.dkms boot_confステップにより、initcacheにフラッシュキャッシュデバイスを検出して使用するスクリプトがインストールされるため、実際にどちらを使用するかは問題ではありません。

10
Chuck R

既存のデバイスでbcacheを有効にするための変換ツールがあります(開示:私が書いた)。また、現在のディストリビューションインストーラーはbcacheデバイスの作成方法を知らないため、新規インストールを行う方法でもあります(この場合、HDDへのインストールから始めます)。

手順については、 blocks READMEの ルートファイルシステムのbcacheへの変換 を参照してください。

bcacheにはLinux 3.10以降が必要です。これは生意気で、 http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D から手動でインストールできます。 (最新のタグ付きリリース、現在v3.11.5-saucyを探し、アーキテクチャに合ったdebをインストールしてください)。

bcache-toolsおよびblocksは、 my storage ppa からインストールできます。

12
Gabriel

事前の警告:bcacheは、既存のUbuntuインストールに使用できません。オペレーティングシステムにSSDキャッシュが必要な場合は、SSDキャッシュをセットアップできるUbuntuインストーラーの将来または特別なバージョンを待つ必要があります。 Oliによるこの回答を参照してください: bcacheは新規インストールが必要ですか?

OS以外のデータ用のbcacheドライブを必要とする他のすべてのユーザー向け:

カーネルメインラインPPAを使用して13.04以前を使用している場合、最初に行うことはカーネルをアップグレードすることです。これを使用するための指示はここにあります:

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

起動時に3.9以上のカーネルを選択しないと、動作しなくなり、ドライブが消えます。

Bcache-toolsをインストールします。現時点では、gitリポジトリからインストールする必要があります。

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

bcache-toolsをdebianにパッケージ化することができた場合はお知らせください。この質問は更新されます。 (bcache-toolsのビルド依存関係はuuid-devおよびlibblkid-devです。bcache-toolsをビルドするには、これらをインストールする必要があります。)

すべてのツールを準備したら、次のガイドを試してみてください。

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

このガイドでは、ドライブ(SSDおよびハードドライブ)をフォーマットし、それらを接続してbcacheを使用して新しいデバイスブロックを作成する方法を示します。説明がわかりにくい場合はコメントを投稿してください。この回答を簡略化して更新します。

私はここに来て、新しいカーネルをインストールしたときに私に何が起こったのかについてコメントすると思いました。/home /フォルダパーティションにのみフラッシュキャッシュを使用していました。新しいカーネルをインストールして起動し、起動中に停止し、/ dev/mapper/home_cachedが見つからないと言いました。このメッセージを受け取ったときに3つの選択肢があり、rootとしてログインするオプションを選択します。修正を試みてください。私は最初にフラッシュキャッシュモジュールをロードしようとしましたが、見つからないと言いました。それで、インストールしたばかりのこの新しいカーネル用にコンパイルしてインストールする必要があると考えました。私はまだ/ root /内に/ flashcache /フォルダーがあるので、そこにcd'dして実行しました

make -f Makefile.dkms boot_conf

それから私は走った

make install

次に、フラッシュキャッシュモジュールをロードしました

modprobe flashcache

その後、既存のフラッシュキャッシュデバイスをロードする必要がありました

flashcache_load /dev/sdb1

それからちょうど私の家のパーティションをマウントします

mount /home

その後、コマンドラインでexitを使用してrootとしてログインすることを終了し、通常どおり起動を続行する必要があります。全部終わった!

2