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


52

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

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


良い質問。私は私の答え(の一部でflashcacheを示唆してきた12)。dm-cacheの次の仕事ツールのようです。また、Ubuntu / Linux向けのIntel Smart Responseに代わるものを探しているすべての人にも関係しています。
gertvdijk

私、toooはそれをIntel SRTの代替として見ていました。アーチのwikiはここで、それは心の弱い人のためではないこと、さらにいくつかの言葉で、で述べています。問題は、仕事と遊びの両方のために私の唯一のPCでそれをいじることを計画していることです:)ので、ここに行く方法を手に入れたいと思っていました VMでubuntuを実行し、テストするSSD(もう一度、ファイルベース)上のディスクに1つのドライブ(ファイルベース)を持たせることができると思いますか。それを
やって喜んで

いい質問ですが、テストベッドとしてVMを使用する回答は完全と見なされますか?多くの人は、これに本当に答えるために必要なハードウェアを持っていません。
RobotHumans

4
すでにFlashcacheでこれを試しましたか?gerrit-tamboer.net/...
ジャスミン

4
dm-cacheは、安定版3.9 Linuxカーネルリリースに統合されました。この26票の質問は今、答えに値すると思います。:)
gertvdijk

回答:


10

さて、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. リブート!

ルートデバイスを使用する場合の注意事項

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


2
少なくともraringでは、flashcache-dkmsとflashcache-utilsのパッケージがあることがわかります。インストールはどのように変わりますか?
ivant

まあ、本当に?気づかなかった。Raringも実行していますが、Gitリポジトリからインストールしました。パッケージを確認する必要がありますが、最初のいくつかのセクションをスキップして、ルートデバイスのブートプロセスを実行できることを想像できます。
チャックR

1
ubuntu 13.10のflashcache-dkmsパッケージには、initcacheのフラッシュキャッシュモジュールとバイナリが含まれていないため、ルートをフラッシュキャッシュすると、ブートできなくなります。バグを作成しました:bugs.launchpad.net/ubuntu/+source/flashcache/+bug/1290148上記のようにソースからフラッシュキャッシュを構築し、次のチェーンを起動できました:sda7-> flashcache-> dm- crypt-> lvm-> ext4。ただ、flashcache DEVを/ etc / crypttabとでupdate-initramfs -uを追加
マーティンVysny

grubファイルに加えなければならなかった変更をコメントに追加できますか。
カパッド

私はもうgrub.cfgを変更していません。必要ないと思われます。ただし、次のように変更します:linux /boot/vmlinuz-3.19.0-51-lowlatency root=UUID=0a540b91-5990-4df0-bc99-5d6e2cd3fed6 ro recovery nomodesetto linux /boot/vmlinuz-3.19.0-51-lowlatency root=/dev/mapper/fcache ro recovery nomodeset(つまり、root =パラメーターを変更)
チャックR

12

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

手順については、READMEでルートファイルシステムをbcache変換するをご覧くださいblocks

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

bcache-tools以下とblocksからインストールすることができ、私のストレージPPA


1
このツールは、Ubuntuの現在のバージョン(15.04)では壊れています。github.com/g2p/maintboot/issues/1およびgithub.com/g2p/blocks/issues/13を
Jean Jordaan

実際、ツール自体は現在破損していません(昨日350GBのハードドライブでテスト済み)。しかし、現在のバージョンは、システムディスクを(変換するために使用することができない//home/usr/システムの実行中(maintbootが破壊されるように)、...)。別の方法として、ライブUSBスティックblocksを使用し、そこにインストールして、ディスクの変換に使用することもできます。ただし、このツールはプライマリMBRおよびGPTパーティションテーブルでのみ機能し、各パーティションの前に1MiBの追加スペースが必要であることに注意してください。
ntninja

5

事前の警告: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-toolsdebian用のパッケージを作成できた場合はお知らせください。この質問は更新されます。(bcache-toolsのビルド依存関係はとです。ビルドするにはuuid-devlibblkid-devこれらをインストールする必要がありますbcache-tools。)

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

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

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


カーネル3.9を実行する起動ディスクを作成してから、bcacheドライブを作成し、このドライブの上にubuntuをインストールすることは可能ですか?
カパッド

kapad-それは可能であるはずですが、ブート時にubuntuのインストールに適切なドライバーが利用可能であることを確認する必要があり、grubがそれを見つけられるようにbcacheの外でブートする必要があるかもしれません。
マーティンオーウェンズ-doctormo-

2

私はここに来て、新しいカーネルをインストールしたときに私に何が起こったのかについてコメントすると思いました。/ 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としてログインすることを終了し、通常どおり起動を続行する必要があります。全部終わった!


これがまだ機能するかどうか興味がありますが、フラッシュキャッシュを使用せずに切り替えてしまいました。内部ファームウェアのためにArchを64GB SSDにインストールしました(Linuxカーネルは32GBだけだと考えています)。これは、一部のスチームゲームのキャッシュドライブとして有益であることがわかりました。
ウブテックグル14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.