「EnhanceIO」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(Pkg/AUR テンプレートの更新)
(内容を「​ #redirect ArchWiki:アーカイブ Category:アーカイブ」で置換)
タグ: 置換
1行目: 1行目:
  +
[[Category:ファイルシステム]]
 
  +
#redirect [[ArchWiki:アーカイブ]]
[[en:EnhanceIO]]
 
  +
[[Category:アーカイブ]]
[https://github.com/stec-inc/EnhanceIO EnhanceIO] は SSD を他のブロックデバイスストレージ (HDD, ネットワークストレージなど) のキャッシュデバイスとして使用することを可能にします。設定はほとんど必要ありません。[[Flashcache]] が元になっていますが、設定は簡単です。[[Bcache]] と違ってファイルシステムの変換は必要ありません。
 
 
{{Warning|
 
* EnhanceIO を使用する前にドキュメントを注意深く読むようにしてください。HDD と SSD を混同しないように注意し、また、SSD に消したら困るデータが存在しないことを確認してください。
 
* キャッシュが立ち上がる前にファイルシステムで fsck が実行されると EnhanceIO によってファイルシステムが破壊されるという [https://github.com/stec-inc/EnhanceIO/issues/30 既知の問題] が存在します。
 
* 2015年10月現在、EnhanceIO は新しいカーネルでは[https://github.com/stec-inc/EnhanceIO/issues/106 動作しません]。}}
 
 
==インストール==
 
 
[[AUR]] から {{AUR|enhanceio-dkms-git}}{{Broken package link|パッケージが存在しません}} をインストールしてください。
 
 
{{Note|以下、速度が遅いドライブを {{ic|/dev/sda}}、高速なドライブを {{ic|/dev/sdb}} とします。あなたの構成にあわせて適宜置き換えてください。}}
 
 
===モジュールとドライブの設定===
 
 
EnhanceIO コマンドラインインターフェース (eio_cli) を使用してセットアップを管理します。高速な SSD に低速な HDD のキャッシュを設定するには:
 
# eio_cli create -d /dev/sda -s /dev/sdb -c my_first_enhanceio
 
上記のコマンドは安全なデフォルトオプションを使用します。さらに速度を向上させたい場合、{{ic|-m wb}} を追加することで WriteThrough モードのかわりに WriteBack モードが有効になります。データが破損する危険性があるので注意してください。
 
 
キャッシュドライブは再起動しても使用されます。無効化したい場合はまずキャッシュを読み取り専用モードに設定してください (まだ書き込まれていないブロックを消失させないため):
 
# eio_cli edit -c my_first_enhanceio -m ro
 
以下のコマンドで0が返ってくるようになるまで待機してください:
 
$ grep nr_dirty /proc/enhanceio/enchanceio_test/stats
 
HDD に全てのブロックが書き込まれたらキャッシュデバイスを削除しても安全です:
 
# eio_cli delete -c my_first_enhanceio
 
 
===キャッシュの情報を取得===
 
 
キャッシュの基本情報を取得するには:
 
# eio_cli info
 
詳細情報を取得するには:
 
$ cat /proc/enhanceio/my_first_enhanceio/stats
 
 
{{Tip|EnhanceIO を開始した後、システムが遅くなっているように感じた場合。これは、最初にキャッシュを構築したことが原因であると思われます。通常どおりにシステムを使用し、すばやく起動したいアプリケーションを開いてみたり。もう一度再起動などして、動作を観察してみてください。}}
 
 
=== initcpio で EnhanceIO を有効化 ===
 
 
EnhanceIO が動作するのを確認できたら、システムの起動時間を短縮させるのにも EnhanceIO を使うことができます。ルートファイルシステムがマウントされる前よりもできるだけ早く EnhanceIO を起動する必要があります。それには initcpio で EnhanceIO を有効にする必要があります。
 
 
{{Warning|EnhanceIO は、rootfs を高速化する際の WriteBack 方式 {{ic|-m wb}} をサポートしておらず、 {{ic|-m ro}} または WriteThrough (デフォルト)のみサポートします。ルートボリュームで WriteBack を有効にすると、問題が発生します。}}
 
 
まず、[[AUR]] から {{AUR|pyinstaller}} パッケージをインストールしてください。initcpio イメージに EnhanceIO を含めるために EnhanceIO の Python スクリプト {{ic|eio_cli}} を実行可能ファイルにコンパイルします。
 
 
起動時にキャッシュの初期化を実行する EnhanceIO のフックとなる {{ic|/etc/initcpio/hooks/enhanceio}} ファイルを作成してください:
 
{{bc|<nowiki>
 
#!/usr/bin/bash
 
 
run_hook ()
 
{
 
local mod
 
for mod in enhanceio enhanceio_lru enhanceio_fifo; do
 
modprobe "$mod"
 
done
 
 
msg -n ":: Activating EnhanceIO..."
 
udevadm trigger
 
}
 
</nowiki>}}
 
 
{{ic|eio_cli}} を実行可能ファイルとしてコンパイルして initcpio から EnhanceIO をロードするのに必要なモジュールが含まれた {{ic|/etc/initcpio/install/enhanceio}} ファイルを作成してください:
 
{{bc|<nowiki>
 
#!/bin/bash
 
 
build ()
 
{
 
local mod
 
for mod in enhanceio enhanceio_lru enhanceio_rand enhanceio_fifo; do
 
add_module "$mod"
 
done
 
 
add_binary "/usr/lib/libutil.so.1"
 
add_file "/etc/udev/rules.d/94-enhanceio-my_first_enhanceio.rules"
 
 
sudo -u ${SUDO_USER} pyinstaller --distpath=/tmp/eio_cli/dist --workpath=/tmp/eio_cli --specpath=/tmp/eio_cli --clean --onefile --noconfirm --strip --console /usr/bin/eio_cli
 
add_binary "/tmp/eio_cli/dist/eio_cli" "/usr/bin/eio_cli"
 
 
add_runscript
 
}
 
 
help ()
 
{
 
echo "This hook loads the necessary modules for EnhanceIO when caching your root device."
 
}
 
</nowiki>}}
 
 
{{ic|/etc/mkinitcpio.conf}} を編集して HOOKS 変数の '''udev''', '''block''', '''modconf''' の後に {{ic|enhanceio}} フックを追加してください:
 
HOOKS="base udev block modconf enhanceio ..."
 
 
eio_cli のパーミッションを変更:
 
# chmod uga+xr /usr/bin/eio_cli
 
 
最後に、initcpio を再生成:
 
# mkinitcpio -p linux
 
 
再起動するとシステムが飛ぶように速く起動します。
 

2021年7月2日 (金) 14:40時点における版