twitter icon   twitter icon   rss icon

Linux.com Japan

Home Linux Jp チュートリアル Bcache を使って SATA ドライブを速くする方法

Bcache を使って SATA ドライブを速くする方法

原文へのリンクはこちらです。

ソリッド ステート ドライブ (Solid State Drive: SSD) を使用する Linux ユーザーの大半は、OS 格納用には小容量の SSD を使い、データ格納用には低速だが低価格・大容量の HDD ドライブを用いているでしょう。可能な限り最速のシステムを構築しようとすると、データ格納用に最速の SSD を用意しなければなりませんが、問題は大容量 SSD が非常に高価格なことです。それでは、どうすれば良いでしょうか。その答えが bcache です。これは、低速・大容量の HDD のキャッシュとして、高速・小容量の SSD を利用する機能です。これにより、
(1) OS を格納する劇的に速い SSD
(2) 大容量 HDD データ ドライブのキャッシュとして bcache 化した SSD
を実現します。

Bcache は、カーネル 3.10 から実装され、問題なく動作します。このチュートリアルでは、データ ドライブの bcache 化について、セットアップから実行までの手順を示します (SSD を備えた Linux システムを前提とする)。

既にデータが存在するシステムに対して、ここに書いてあるセットアップを実行することはお勧めしません。データを失う確率が高いため、新品の SSD と HDD を用意してください。SSD をキャッシュとして使用し、HDD をストレージ、つまり「バッキング (backing)」として使用します。

ここでは、Ubuntu13.10 を使い、具体的な手順を紹介します。安価な 60GB 程度の SSD と、必要な容量の HDD (バッキング用) を用います。では始めましょう。


ツールのインストール
まず、bcache-tools をインストールします。このツールを使って、bcache として動作するブロック デバイスの作成と登録を行います。インストール前に、次のコマンドでリポジトリを追加します。
sudo  add-apt-repository ppa:g2p/storage
sudo apt-get  update
sudo apt-get  install bcache-tools

デバイスの作成と登録
bcache デバイスの作成前に、両デバイスを ext4 形式でフォーマットします。私は Gparted を使っています。デバイスをフォーマットしたら、bcache-tools を使ってデバイスの作成と登録を行います。ここでは、キャッシュ デバイス (SSD) を /dev/sdc、バッキング デバイス (HDD) を /dev/sdb とします。まず、バッキング デバイスを以下のコマンドで作成します。

sudo make-bcache  -B /dev/sdb1

次にキャッシュ デバイスを作成します。

sudo make-bcache  -C /dev/sdc1

「Non-bcache スーパーブロックが存在する」というエラーが出たら、次のコマンドでエラーを取り除きます。

sudo wipefs -a  /dev/sdb1

Ubuntu のように udev を使用しているシステムでは、次の 2 つのステップは不要です。udev を使用していないシステムでは、次のコマンドでデバイスをカーネルに登録します。

sudo echo  /dev/sdb1 > /sys/fs/bcache/register
sudo echo /dev/sdc1  > /sys/fs/bcache/register

バッキング デバイスを登録すると、/dev/bcacheX (X は数値、/dev/bcache0 など) の形でデバイス ファイルができます。登録は、マニュアル (リブートするたびに再登録が必要) でもできますが、init script で自動化することもできます。init script には、次のように設定します。

echo /dev/sd* >  /sys/fs/bcache/register_quiet

このコマンドは、bcache スーパーブロックを検索し、登録します。その他のものは無視されます。

次に、新規作成されたファイル システムをマウントします。

sudo mount  /dev/bcacheX /path/to/mount/point

ここで、Xはマウントするデバイス (通常は bcache0)、/path/to/mount/point は、マウント ポイントを表します。例えば、DATA フォルダーを作成してマウントするときは、次のようにします。

mount /dev/bcache0  /DATA

注意: DATA ディレクトリに書き込むために、キャッシュ デバイスへの書き込み権限が必要です。

キャッシュ セットが、UUID の形で /sys/fs/bcache/ に作成されます。今後の操作で UUID が必要となります。

デバイスのアタッチ

デバイスの作成と登録が完了したら、キャッシュ デバイスとバッキング デバイスをアタッチして、キャッシング機能を有効にします。このとき UUID が必要になります。UUID は /sys/fs/bcache に書かれています (「ls /sys/fs/bcache」と入力して UUIDを表示させる)。アタッチ ファイル /sys/block/bcache0/bcache に echo コマンドで UUID を設定し、デバイスをアタッチします。

echo UUID >  /sys/block/bcache0/attach

この UUIDは /sys/fs/bcache に書かれていたものです。

これで bcache システムが動き出しました。データを /DATA ディレクトリに書き込んでください。速いですね。

ターミナルを開き、キャッシュが正しく働いていることを次のコマンドで確認してください。

bcache screen shot

The caching device mounted and ready to use.

tail  /sys/block/bcache0/bcache/stats_total/*

Writeback キャッシュの有効化

標準では、bcache は writethrough キャッシュを行います。writethrough キャッシュでは、読み出しのみキャッシュされ、書き込みは即座に backing デバイスに対して行われます。writeback キャッシュを使うことで劇的に速くできます。ただし、writethrough より信頼性が落ちます。停電や SSD の故障によって、データの欠落が生じる可能性があります。しかしどうしても性能を優先する場合は、次のコマンドで writeback を有効にしてください。

echo writeback  > /sys/block/bcache0/bcache/cache_mode

もう一度警告しておきます。writeback は writethrough より信頼性が落ちます。

性能向上のためには、bcache は非常に有効です。適切なハードウェアとちょっとした時間があれば、古くて遅い HDD への書き込み速度が SSD 並みになります。最後に、このような作業を行う場合は必ずデータのバックアップを行ってください。

編集者から: bcache の詳細については、Linux.comの記事 "All About the Linux Kernel Bcache"、または bcacheのドキュメントbcache 機能とパフォーマンスに関する記録を参照してください。

Linux Foundationメンバーシップ

30人のカーネル開発者

人気コンテンツ

  1. Today's Linux 2018/10/09 2018年 10月 08日
  2. Today's Linux 2018/10/10 2018年 10月 09日
  3. Today's Linux 2018/10/12 2018年 10月 11日
  4. Today's Linux 2018/10/17 2018年 10月 16日
  5. Today's Linux 2018/10/18 2018年 10月 17日

Linux Foundationについて

Linux Foundation はLinux の普及,保護,標準化を進めるためにオープンソース コミュニティに資源とサービスを提供しています

 

The Linux Foundation Japan

サイトマップ

問い合わせ先

サイトに関するお問い合わせはこちらまで

Linux Foundation Japan

Linux Foundation

Linux Training

提案、要望

Linux.com JAPANでは広く皆様の提案、要望、投稿を受け付ける予定です。

乞うご期待!