「E4rat」の版間の差分
(同期) |
(→e4rat-lite: 情報を更新) |
||
(同じ利用者による、間の4版が非表示) | |||
14行目: | 14行目: | ||
[http://e4rat.sourceforge.net/ e4rat] は e4 'reduced access time' (ext4 ファイルシステムのみ) の略語で、Andreas Rid と Gundolf Kiefer によるプロジェクトです。[http://e4rat.sourceforge.net/ e4rat range of tools] は e4rat-collect, e4rat-realloc, e4rat-preload から成り立っています。 |
[http://e4rat.sourceforge.net/ e4rat] は e4 'reduced access time' (ext4 ファイルシステムのみ) の略語で、Andreas Rid と Gundolf Kiefer によるプロジェクトです。[http://e4rat.sourceforge.net/ e4rat range of tools] は e4rat-collect, e4rat-realloc, e4rat-preload から成り立っています。 |
||
+ | e4rat-lite と呼ばれる別の実装がありますが、これは元の e4rat プロジェクトよりもアクティブで最適化されています。[[#e4rat-lite|e4rat-lite section]] を参照してください。 |
||
− | 現在のバージョンは 0.2.3 です。 |
||
== プロセス == |
== プロセス == |
||
38行目: | 38行目: | ||
* ビルドするために、最初に {{ic|staticlibs}} オプションを明示的に有効にして {{Pkg|audit}} を [[ABS]] からリビルドする必要があります。デフォルトの {{Pkg|audit}} パッケージをインストールするだけではビルドエラーが発生します。 |
* ビルドするために、最初に {{ic|staticlibs}} オプションを明示的に有効にして {{Pkg|audit}} を [[ABS]] からリビルドする必要があります。デフォルトの {{Pkg|audit}} パッケージをインストールするだけではビルドエラーが発生します。 |
||
* audit を使うには audit をサポートしたカーネルが必要です。カーネルコンフィグで audit (CONFIG_AUDIT) と audit のシステムコールのサポート (CONFIG_AUDITSYSCALL) を有効にしてください。[[カーネル/コンパイル/Arch Build System]] も参照。また、カーネルパラメータに {{ic|1=audit=1}} を追加してください。 |
* audit を使うには audit をサポートしたカーネルが必要です。カーネルコンフィグで audit (CONFIG_AUDIT) と audit のシステムコールのサポート (CONFIG_AUDITSYSCALL) を有効にしてください。[[カーネル/コンパイル/Arch Build System]] も参照。また、カーネルパラメータに {{ic|1=audit=1}} を追加してください。 |
||
+ | }} |
||
+ | |||
+ | {{Tip| |
||
+ | * 2020-05-06 の時点で、 {{AUR|e4rat}} は1年以上更新されておらず(最終更新日:2019-04-01)、コンパイルされていません。 代替の {{AUR|e4rat-lite-git}} には利用可能なパッチがありますが、元の {{AUR|e4rat}} に移植または適用されていません。 詳細については、 AUR のコメントセクションと [https://wiki.archlinux.jp/index.php/E4rat#e4rat-lite e4rat-lite] セクションをご覧ください。 |
||
+ | * [https://wiki.archlinux.jp/index.php/E4rat#e4rat-lite e4rat-lite] は再構築された {{Pkg|audit}} を必要とせず、公式リポジトリのバージョンで正常に機能します。 |
||
}} |
}} |
||
69行目: | 74行目: | ||
{{Note| |
{{Note| |
||
+ | * フラグメンテーションカウントをさらに減らすために、終了またはリブートする前に、再割り当て手順を複数回繰り返すことが有効な場合があります。このコマンドを数回再実行して、セットアップでこれが可能かどうかを確認します。その場合、数回実行するとカウント数が減少します。これは完全に安全で、起動時に問題を起こすことはありません。 |
||
− | * It may be worthwhile to repeat the reallocation step multiple times before exiting or rebooting in order to further reduce the fragmentation count. Simply re-run the command a few times to see if this is possible on the your setup. If so you'll see the count number reduced after a few runs. This is perfectly safe and shouldn't cause any issues with booting. |
||
* SysV スタイルの [[init]] システムを使っている場合、{{ic|e4rat-realloc}} を実行する前に {{ic|sudo init 1}} を使ってランレベル 1 に切り替える必要があります。 |
* SysV スタイルの [[init]] システムを使っている場合、{{ic|e4rat-realloc}} を実行する前に {{ic|sudo init 1}} を使ってランレベル 1 に切り替える必要があります。 |
||
}} |
}} |
||
86行目: | 91行目: | ||
== e4rat-lite == |
== e4rat-lite == |
||
− | + | いくつかの改良が加えられた e4rat の代替。また、オリジナルの e4rat パッケージで経験するかもしれないいくつかの問題を回避することも期待できます。 |
|
+ | {{AUR|e4rat-lite-git}} から取得できます。 |
||
+ | |||
+ | {{Note|{{AUR|e4rat-lite-git}} パッケージの競合がすでに発生しているため、両方をインストールすることはできません。[[E4rat#利益を得る人、得ない人]] も参照してください。}} |
||
+ | |||
+ | === e4rat-lite を使用する=== |
||
+ | |||
+ | e4rat-lite のコマンドは、e4rat とほとんど同じように動作します。[https://github.com/ShyPixie/e4rat-lite#how-to-use the README of the project] を見てください。 |
||
+ | |||
+ | collect:{{ic|1=init=/usr/bin/e4rat-lite-collect}}-デフォルトの制限時間は120秒ですが、次のコマンドを使用して収集セッションを終了することもできます。 |
||
+ | |||
+ | # e4rat-lite-collect -k |
||
+ | |||
+ | realloc:{{ic| /usr/bin/e4rat-lite-realloc}} - ランレベル1への切り替えが推奨されます。 [[systemd]] を使用する場合は、事前に以下を実行してください。 |
||
+ | |||
+ | # systemctl isolate rescue.target |
||
+ | |||
+ | preload: {{ic| 1=init=/usr/bin/e4rat-lite-preload}} |
||
− | + | startup.log: {{ic| /var/lib/e4rat-lite/startup.log}} |
|
+ | 構成ファイル:{{ic|/etc/e 4 rat-lite.conf}} - [[systemd]] を使用する場合は、init_file プロパティを次のように変更します。 |
||
− | e4rat-lite のコマンドは e4rat と全く同じです。違うのはパスだけです: |
||
+ | init_file=/usr/lib/systemd/systemd |
||
− | * collect: {{ic|1=init=/usr/bin/e4rat-lite-collect}} |
||
− | * realloc: {{ic|/usr/bin/e4rat-lite-realloc}} |
||
− | * preload: {{ic|1=init=/usr/bin/e4rat-preload}} |
||
== Bootchart == |
== Bootchart == |
||
150行目: | 170行目: | ||
=== /var/lib/e4rat/startup.log にアクセスできない === |
=== /var/lib/e4rat/startup.log にアクセスできない === |
||
+ | これは、起動時にまだマウントされていない別のパーティションに {{ic|/var}} があることを示しています。{{ic|startup.log}} をアクセス可能なパーティションに移動させて ({{ic|/etc/e4rat/}}) 、{{ic|/etc/e 4 rat.conf}} を調整してこの変更を反映する必要があります。 |
||
− | This suggests that you have {{ic|/var}} on a separate partition which is not yet mounted during boot. You need move your {{ic|startup.log}} to an accessible partition ({{ic|/etc/e4rat/}} is just fine) and adjust your {{ic|/etc/e4rat.conf}} to reflect this change: |
||
startup_log_file /etc/e4rat/startup.log |
startup_log_file /etc/e4rat/startup.log |
||
2021年7月4日 (日) 16:36時点における最新版
e4rat は e4 'reduced access time' (ext4 ファイルシステムのみ) の略語で、Andreas Rid と Gundolf Kiefer によるプロジェクトです。e4rat range of tools は e4rat-collect, e4rat-realloc, e4rat-preload から成り立っています。
e4rat-lite と呼ばれる別の実装がありますが、これは元の e4rat プロジェクトよりもアクティブで最適化されています。e4rat-lite section を参照してください。
プロセス
古典的な bootchart を見ると、ブートプロセスの間にディスクも CPU も完全には使われていないことに気づくかもしれません。e4rat はブートプロセスでディスクと CPU をフルに使うようにして、起動時間を劇的に縮めます。3つの段階に分かれています:
- e4rat-collect - 特定時間ファイルを収集します (デフォルトは120秒ですが変更することも可能です)
- e4rat-realloc - ファイルを再配置します
- e4rat-preload - ファイルをプリロードします
利益を得る人、得ない人
X を起動して、多数のプログラムを開くような、典型的なシングルユーザーセットアップで e4rat は大変効果があることが証明されています。サーバーセットアップで CLI で起動するような場合、起動時間の短縮はあまり効果があらわれないでしょう。SSD ドライブを使っている場合も利益はあまりありません、可動部がないためディスクの遅延が(ほとんど)ないためです - Ureadahead はチェックする価値があるかもしれません。
備えあれば憂いなし。パーティションに入っているデータを消失したくないのならばバックアップを取っておきましょう。
インストール
AUR から e4ratAUR をインストールしてください。
使用方法
それでは本題に入ります:
e4rat-collect
e4rat にファイルのリストを収集させるために init=/sbin/e4rat-collect
をカーネルパラメータに追加します。例:
kernel /vmlinuz-linux root=/dev/disk/by-label/ARCH init=/sbin/e4rat-collect ro 5
これは一度だけやれば十分なので、grub のコマンドラインなどにこのコマンドを追加すれば良いでしょう。
起動時に e4rat-collect はデフォルトで120秒間システムを監視します。なので起動したら、2分の間に、X にログインして、お気に入りのブラウザやメールクライアントを開いたりしてください。それらの活動すべてが記録されます。デフォルトの120秒を変更したいときは /etc/e4rat.conf
を編集してください。手動で e4rat-collect を停止するには次を入力:
e4rat-collect -k
もしくは:
pkill e4rat-collect
ちゃんと起動して規定の時間待機したら /var/lib/e4rat/startup.log
ファイルを見て下さい。
そして忘れずにブートローダーの設定ファイルから e4rat-collect コマンドを取り除いておきましょう (grub のコマンドラインに追加した場合は必要ありません)。
e4rat-realloc
e4rat-collect を実行したら、root でログインして次を実行:
e4rat-realloc /var/lib/e4rat/startup.log
startup.log ファイルに記述されたファイルの数によってしばらく時間がかかります。systemctl isolate rescue
でレスキューモードに移行することで (Systemd#ターゲット表)、multiuser.target ではフリーにならない inode やブロックも再配置することができます。
e4rat-preload
init=/sbin/e4rat-preload
を永続的にカーネルパラメータに追加してください。
e4rat と init システム
e4rat-collect はデフォルトで実行時に /sbin/init
を置き換えます。systemd
のデフォルト環境では、このファイルは /lib/systemd/systemd
のシンボリックリンクになっています。他のプロセス (例: /usr/bin/busybox
) を PID 1 に指定する必要がある場合、/etc/e4rat.conf
を編集して init
パラメータを設定することで変更することが可能です:
init /usr/bin/busybox
これによって同一のブートシーケンスで e4rat-preload
と bootchart
の両方を起動することができます。
e4rat-lite
いくつかの改良が加えられた e4rat の代替。また、オリジナルの e4rat パッケージで経験するかもしれないいくつかの問題を回避することも期待できます。 e4rat-lite-gitAUR から取得できます。
e4rat-lite を使用する
e4rat-lite のコマンドは、e4rat とほとんど同じように動作します。the README of the project を見てください。
collect:init=/usr/bin/e4rat-lite-collect
-デフォルトの制限時間は120秒ですが、次のコマンドを使用して収集セッションを終了することもできます。
# e4rat-lite-collect -k
realloc: /usr/bin/e4rat-lite-realloc
- ランレベル1への切り替えが推奨されます。 systemd を使用する場合は、事前に以下を実行してください。
# systemctl isolate rescue.target
preload: init=/usr/bin/e4rat-lite-preload
startup.log: /var/lib/e4rat-lite/startup.log
構成ファイル:/etc/e 4 rat-lite.conf
- systemd を使用する場合は、init_file プロパティを次のように変更します。
init_file=/usr/lib/systemd/systemd
Bootchart
Bootchart を使うことでシステムの起動グラフを生成できます。CPU やディスクの使用量を視覚的に確認することができます。必須ではありませんが、e4rat によるブートプロセスの変化を確認できます。
bootchart
このバージョンの bootchart はディスプレイマネージャが立ち上がるとすぐにログの記録を停止します。以下のように上書きすることでログを停止しないようにすることができます:
ログを続行するには以下のように /etc/bootchartd.conf
を変更:
AUTO_STOP_LOGGER="no"
手動で停止するには次を実行:
# bootchartd stop
e4rat-preload と bootchart の両方を実行するには grub の kernel 行に以下を追加:
init=/sbin/bootchartd bootchart_init=/sbin/e4rat-preload
bootchart2
e4rat と共に bootchart2AUR を動作させるには /sbin/bootchartd2
を編集して次の行を:
init="/sbin/init"
以下のように置き換えて下さい:
init="/sbin/e4rat-preload"
上記の設定で Bootchart2 による情報を使って起動時間を測定できます。
bootchart2 を停止する時間は /etc/bootchartd2.conf
ファイルを編集することで簡単に設定できます。特定のアプリケーションが起動したときに Bootchart2 のログを止めるには以下のように設定してください:
EXIT_PROC="kdm_greet xterm konsole gnome-terminal metacity mutter compiz ldm icewm-session enlightenment"
もしくは、上記の行を空にすることで手動でログを停止することもできます。
チャートを生成するには次のコマンドを実行: pybootchartgui -i
。
トラブルシューティング
startup.log が作られない
- auditd サービスを無効にする
- ヒントがないか次を確認
$ dmesg | grep e4rat
e4rat.conf
の verbose と loglevel を31にまで増やす- e4rat のかわりに e4rat-lite を使用する
e4rat が誤って ext2 ファイルシステムと認識する
rootfstype=ext4
をブートローダーのカーネルパラメータに追加してください。
/var/lib/e4rat/startup.log にアクセスできない
これは、起動時にまだマウントされていない別のパーティションに /var
があることを示しています。startup.log
をアクセス可能なパーティションに移動させて (/etc/e4rat/
) 、/etc/e 4 rat.conf
を調整してこの変更を反映する必要があります。
startup_log_file /etc/e4rat/startup.log
うるさいブートメッセージを削除する
起動中の e4rat-preload のメッセージがうっとうしい場合は、/etc/e4rat.conf
で verbose を 1 に減らします。