<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=0xVERS</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=0xVERS"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/0xVERS"/>
	<updated>2026-06-09T08:44:23Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:0xVERS&amp;diff=28967</id>
		<title>利用者:0xVERS</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:0xVERS&amp;diff=28967"/>
		<updated>2022-12-24T09:13:02Z</updated>

		<summary type="html">&lt;p&gt;0xVERS: ページの作成:「GitHub: [https://github.com/0xNOY 0xNOY]」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GitHub: [https://github.com/0xNOY 0xNOY]&lt;/div&gt;</summary>
		<author><name>0xVERS</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=I3&amp;diff=28965</id>
		<title>I3</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=I3&amp;diff=28965"/>
		<updated>2022-12-23T22:54:57Z</updated>

		<summary type="html">&lt;p&gt;0xVERS: i3barの代替パッケージを列挙&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:i3}}&lt;br /&gt;
[[Category:タイル型ウィンドウマネージャ]]&lt;br /&gt;
[[Category:動的ウィンドウマネージャ]]&lt;br /&gt;
[[en:i3]]&lt;br /&gt;
[[ko:I3]]&lt;br /&gt;
[[ru:I3]]&lt;br /&gt;
[[zh-hans:I3]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|タイル型ウィンドウマネージャの比較}}&lt;br /&gt;
{{Related|ウィンドウマネージャ}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://i3wm.org/ i3] は wmii にインスパイアされて開発された動的[[Wikipedia:ja:タイル型ウィンドウマネージャ|タイル型ウィンドウマネージャ]]で、主に開発者や上級ユーザーをターゲットにしています。&lt;br /&gt;
&lt;br /&gt;
i3 が公表している目標は、わかりやすいドキュメント、適切なマルチモニタサポート、ウィンドウのツリー構造、[[vim]] のような様々なモードなどです。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
&lt;br /&gt;
i3 は、{{Pkg|i3-wm}} パッケージでインストールできます。&lt;br /&gt;
&lt;br /&gt;
{{Grp|i3}} パッケージグループも利用可能です。これには、ウィンドウマネージャ、スクリーンロッカー、標準出力を介して i3bar にステータスラインを書き込む２つのプログラムが含まれています。 &lt;br /&gt;
&lt;br /&gt;
{{Note|{{Pkg|i3-wm}} は {{Pkg|i3-gaps}} (gapsなどの機能を持つ &#039;&#039;i3&#039;&#039; のフォーク) と競合し、デフォルトでは {{Pkg|i3-gaps}} がインストールされます。}}&lt;br /&gt;
&lt;br /&gt;
== 起動 ==&lt;br /&gt;
&lt;br /&gt;
=== tty ===&lt;br /&gt;
&lt;br /&gt;
[[xinit]] で {{ic|i3}} を実行します&lt;br /&gt;
&lt;br /&gt;
=== ディスプレイマネージャー ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|i3-wm}} にはウィンドウマネージャーを起動する [[Xsession]] として {{ic|i3.desktop}} が含まれています。{{ic|i3-with-shmlog.desktop}} はログを有効にします(デバッグに便利です)。{{AUR|i3-gnome}} は &#039;&#039;i3&#039;&#039; を [[GNOME]] に統合します。&lt;br /&gt;
&lt;br /&gt;
==使用方法==&lt;br /&gt;
&lt;br /&gt;
詳しい情報は [https://i3wm.org/docs 公式のドキュメント]、すなわち [https://i3wm.org/docs/userguide.html i3 User’s Guide] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===キーバインド===&lt;br /&gt;
&lt;br /&gt;
i3 では修飾キー ({{ic|$mod}} と表記されます) を使ってコマンドを呼び出します。デフォルトでは {{ic|Alt}} (Mod1) ですが、{{ic|Super}} (Mod4) も良く使われます。大抵のキーボードでは Super は Windows アイコンが印されたキーになります。Apple キーボードなら Command キーです。&lt;br /&gt;
&lt;br /&gt;
デフォルトのキーバインドについては [https://i3wm.org/docs/refcard.html i3 リファレンスカード] や [https://i3wm.org/docs/userguide.html#_using_i3 Using i3] を見て下さい。新しくショートカットを追加する方法は [https://i3wm.org/docs/userguide.html#keybindings Keyboard bindings] に載っています。&lt;br /&gt;
&lt;br /&gt;
Qwerty 以外のキーボード配列を使っている場合は[[#設定ウィザードとキーボードレイアウト|設定ウィザードとキーボードレイアウト]]に書かれているように設定ウィザードを迂回すると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
===コンテナとレイアウト===&lt;br /&gt;
&lt;br /&gt;
i3 はコンテナを基本単位としたツリー構造でウィンドウを管理します。この構造は縦や横に分岐していきます。デフォルトではコンテナはタイル状に並べられますが、タブでまとめたり積み重ねるレイアウトに設定したり、フロートさせることもできます (ダイアログウィンドウのように)。フローティングウィンドウは常に一番上に表示されます。&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://i3wm.org/docs/userguide.html#_tree i3 Tree] や [https://www.youtube.com/watch?v=AWA8Pl57UBY Containers and the tree data structure] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===アプリケーションランチャー===&lt;br /&gt;
&lt;br /&gt;
i3 はアプリケーションランチャーとして [[dmenu]] を使っており、デフォルトでは {{ic|$mod+d}} で呼び出せます。dmenu の代わりに、透過機能や xft フォントのサポートなどが搭載されている AUR の {{AUR|dmenu2}} を使うこともできます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|i3-wm}} には &#039;&#039;dmenu&#039;&#039; の [[Wikipedia:ja:Perl|Perl]] ラッパーである &#039;&#039;i3-dmenu-desktop&#039;&#039; が含まれており、[[デスクトップエントリ]]を利用してインストールされている全てのアプリケーションのリストを作成します。また、{{AUR|j4-dmenu-desktop-git}} パッケージを使うこともできます。こちらは &#039;&#039;i3-dmenu-desktop&#039;&#039; とほぼ同様に使える上に、高速に動作します [https://github.com/enkore/j4-dmenu-desktop/blob/master/README.md]。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|rofi}} は人気のある dmenu の代替品であり、デスクトップエントリを一覧表示できます。&lt;br /&gt;
&lt;br /&gt;
==== KDE Plasma/i3 のアプリケーションランチャーとしての KRunner ====&lt;br /&gt;
&lt;br /&gt;
ここに示すように、KDE Plasma といっしょにi3を実行することができます: [[KDE#KDE で別のウィンドウマネージャを使う]]&lt;br /&gt;
&lt;br /&gt;
{{ic|1=KDEWM=/usr/bin/i3}} で Plasma を実行している場合、&#039;&#039;i3&#039;&#039; の設定に以下を追加することで、[[KRunner]] を {{ic|$mod+d}} でアプリケーションランチャーとして代替することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/i3/config|2=&lt;br /&gt;
set $menu --no-startup-id qdbus org.kde.krunner /App display&lt;br /&gt;
bindsym $mod+d exec $menu&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==設定==&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://i3wm.org/docs/userguide.html#configuring Configuring i3] を参照。この記事では &#039;&#039;i3&#039;&#039; の設定ファイルは {{ic|~/.config}} に置くことにします (&#039;&#039;i3-config-wizard&#039;&#039; では {{ic|~/.i3/config}} に作成されます)。&lt;br /&gt;
&lt;br /&gt;
===設定ウィザードとキーボードレイアウト===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;i3&#039;&#039; を最初に起動したとき、設定ウィザードの &#039;&#039;i3-config-wizard&#039;&#039; が実行されます。このツールは {{ic|/etc/i3/config.keycodes}} にあるテンプレート設定ファイルを書き換えることで {{ic|~/.i3/config}} を作成します。デフォルトテンプレートには以下の2つの変更が加えられます:&lt;br /&gt;
&lt;br /&gt;
#ウィザードはデフォルトの修飾キーを何にするかユーザーに尋ねます。{{ic|set $mod Mod1}} のような行がテンプレートに追加されます。&lt;br /&gt;
#ユーザーの現在のキーボードレイアウトにあわせて &#039;&#039;bindcode&#039;&#039; 行をすべて &#039;&#039;bindsym&#039;&#039; 行で置き換えます。&lt;br /&gt;
&lt;br /&gt;
後者が実行されることで、4つのナビゲーションショートカット {{ic|j}}, {{ic|k}}, {{ic|l}} と Qwerty キーボードの&amp;quot;セミコロン&amp;quot;が正しいキーシムにマッピングされます。例えば [[Dvorak]] キーボードなら {{ic|h}}, {{ic|t}}, {{ic|n}}, {{ic|s}} になります。ただし副作用として他のキーシムのマッピングが変更されるため Dvorak ユーザーはむしろ混乱してしまうかもしれません。&amp;quot;再起動&amp;quot;は {{ic|$mod1+r}} ではなく {{ic|$mod1+p}} に、&amp;quot;横に分割&amp;quot;は {{ic|$mod1+h}} ではなく {{ic|$mod1+d}} にバインドされます。チュートリアルに記載されているバインドと同じ、覚えやすいキーバインドを使いたい場合は {{ic|/etc/i3/config}} を {{ic|~/.config/i3/config}} (または {{ic|~/.i3/config}}) にコピーしてください。&lt;br /&gt;
&lt;br /&gt;
キーボードレイアウトを頻繁に変更するユーザーなどに対応するために、キーコードによる設定も可能です。&lt;br /&gt;
&lt;br /&gt;
=== 自動起動 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.config/i3/config}} ファイルに {{ic|exec}} コマンドを追加します。例えば、以下のようになります。&lt;br /&gt;
&lt;br /&gt;
 exec terminator&lt;br /&gt;
&lt;br /&gt;
また、[[XDG Autostart]] を使用することもできます。&lt;br /&gt;
&lt;br /&gt;
===カラースキーム===&lt;br /&gt;
&lt;br /&gt;
設定ファイルを使ってウィンドウ装飾の色をカスタマイズすることができますが、構文のためにテーマを作成したり共有するのは現実的ではありません。ユーザーが様々なテーマを作るのを楽にさせるプロジェクトが複数存在します。&lt;br /&gt;
&lt;br /&gt;
* {{App|j4-make-config|あなたの設定をテーマのコレクションや個人用の設定パーツ (たとえばホスト用の設定) と組み合わせます。テーマの簡単な変更や、柔軟でダイナミックな設定のカスタマイズを可能にします。|https://github.com/okraits/j4-make-config|{{Aur|j4-make-config-git}}}}&lt;br /&gt;
&lt;br /&gt;
===i3bar===&lt;br /&gt;
&lt;br /&gt;
i3bar はワークスペースの情報を表示するほかに、次のセクションで説明している、i3status などに入力を行うこともできます。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/i3/config|2=&lt;br /&gt;
bar {&lt;br /&gt;
    output            LVDS1&lt;br /&gt;
    status_command    i3status&lt;br /&gt;
    position          top&lt;br /&gt;
    mode              hide&lt;br /&gt;
    workspace_buttons yes&lt;br /&gt;
    tray_output       none&lt;br /&gt;
    &lt;br /&gt;
    font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1&lt;br /&gt;
&lt;br /&gt;
    colors {&lt;br /&gt;
        background #000000&lt;br /&gt;
        statusline #ffffff&lt;br /&gt;
&lt;br /&gt;
        focused_workspace  #ffffff #285577&lt;br /&gt;
        active_workspace   #ffffff #333333&lt;br /&gt;
        inactive_workspace #888888 #222222&lt;br /&gt;
        urgent_workspace   #ffffff #900000&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://i3wm.org/docs/userguide.html#_configuring_i3bar Configuring i3bar] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
====i3bar の代替====&lt;br /&gt;
&lt;br /&gt;
旧来の[[デスクトップ環境]]に入っているようなパネルを使いたいというユーザーもいるかもしれません。起動時に i3 の中でパネルアプリケーションを起動することで他のパネルを使うことができます。&lt;br /&gt;
&lt;br /&gt;
[[Xfce#パネル|XFCE パネル]]の場合、次の行を {{ic|~/.config/i3/config}} のどこかに追加してください:&lt;br /&gt;
&lt;br /&gt;
 exec --no-startup-id xfce4-panel --disable-wm-check&lt;br /&gt;
&lt;br /&gt;
{{Note|[[デスクトップ環境]]固有のパネル機能は基本的に動作しません (例: ワークスペースやセッションを管理するウィジェット)、ただし i3 の機能がそれによって影響を受けることはないはずです。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.config/i3/config}} の {{ic|&amp;lt;nowiki&amp;gt;bar{ }&amp;lt;/nowiki&amp;gt;}} セクションをコメントアウトすることで i3bar は無効にできます。もしくは以下を使ってください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/i3/config|&lt;br /&gt;
# bar toggle, hide or show&lt;br /&gt;
bindsym $mod+m bar mode toggle&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この方法では好きなようにバーを表示したり隠したりできます。&lt;br /&gt;
&lt;br /&gt;
以下はデスクトップ環境に依存しない置き換えです。&lt;br /&gt;
&lt;br /&gt;
* {{App|[[polybar]]|高速で使いやすく拡張性の高いステータスバー。一般的なサービスの情報を表示する機能が予め組み込まれています。|https://github.com/polybar/polybar|{{Pkg|polybar}}}}&lt;br /&gt;
&lt;br /&gt;
* {{App|excalibar|C言語で実装された軽量かつカスタマイズ可能なステータスバー。|https://github.com/nullgemm/excalibar|{{AUR|excalibar-git}}}}&lt;br /&gt;
&lt;br /&gt;
===i3status===&lt;br /&gt;
&lt;br /&gt;
デフォルトの設定ファイルをホームディレクトリにコピーしてください:&lt;br /&gt;
&lt;br /&gt;
 $ cp /etc/i3status.conf ~/.config/i3status/config&lt;br /&gt;
&lt;br /&gt;
デフォルトの設定では定義されていないプラグインがあり、いくつかの設定はあなたのシステムでは無効かもしれません。そのためシステムに応じて設定を更新する必要があります。詳しくは {{ic|man 1 i3status}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
====i3status の代替====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[conky]]|拡張性の高いシステムモニター。i3bar で使用する場合は [https://i3wm.org/docs/user-contributed/conky-i3bar.html このチュートリアル] を見て下さい。|https://github.com/brndnmtthws/conky|{{Pkg|conky}}}}&lt;br /&gt;
&lt;br /&gt;
* {{App|i3blocks|シェルスクリプトで拡張することができます。クリックイベントや割り込み、ブロックごとによるリフレッシュ間隔の定義などを管理可能。|https://github.com/vivien/i3blocks|{{Pkg|i3blocks}}}}&lt;br /&gt;
&lt;br /&gt;
* {{App|i3phtatus|PHP で書かれた i3status の代替。簡単に拡張できます。|https://github.com/mwgg/i3phtatus}}&lt;br /&gt;
&lt;br /&gt;
* {{App|goi3bar|Go で書かれた i3status の代替。コンポーネントを自由にアップデートすることができます。|https://github.com/denbeigh2000/goi3bar|{{AUR|goi3bar-git}}}}&lt;br /&gt;
&lt;br /&gt;
* {{App|i3pystatus|デフォルトで多数のプラグインと設定オプションがある拡張可能な Python 3 ステータスバー。|https://github.com/enkore/i3pystatus i3pystatus|{{AUR|i3pystatus-git}}}}&lt;br /&gt;
&lt;br /&gt;
* {{App|i3situation|もうひとつの Python 3 ステータスバージェネレータ。|https://github.com/HarveyHunt/i3situation|{{Aur|i3situation-git}}}}&lt;br /&gt;
&lt;br /&gt;
* {{App|j4status|C で書かれており、プラグインで設定ができる、ステータスラインを提供します。追加プラグインは {{Aur|j4status-plugins-git}} に入っています。|http://j4status.j4tools.org/|{{Aur|j4status-git}}}}&lt;br /&gt;
&lt;br /&gt;
====i3status のラッパー====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[en2:h2status|h2status]]|i3status の Bash ラッパー、カスタム json エントリを入力として、非同期のステータスバーの更新だけでなくクリックイベントの処理が可能。|https://wiki.archlinux.org/index.php/H2status|{{Aur|h2status}}{{Broken package link|{{aur-mirror|h2status}}}}}}&lt;br /&gt;
&lt;br /&gt;
* {{App|i3cat|[[go]] ベースのラッパーで外部の複数のソースからの入力を繋げることができます。クリックイベントの処理、ユーザーが定義した信号を子プロセスに転送することが可能。|http://vincent-petithory.github.io/i3cat/|{{AUR|i3cat-git}}}}&lt;br /&gt;
&lt;br /&gt;
* {{App|py3status|Python による拡張可能な i3status ラッパー。|https://github.com/ultrabug/py3status|{{Pkg|py3status}}}}&lt;br /&gt;
&lt;br /&gt;
====ステータスバーにアイコンフォント====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;i3bar&#039;&#039; には XBM アイコンサポートの[[#パッチ|パッチ]]をあてることができますが、代わりにアイコンフォントを使うこともできます。&lt;br /&gt;
&lt;br /&gt;
* {{App|ttf-font-awesome|CSS でカスタマイズできるスケーラブルなベクターアイコン。それぞれの記号の Unicode を記した [http://fortawesome.github.io/Font-Awesome/cheatsheet/ チートシート] があります。|http://fortawesome.github.io/Font-Awesome/|{{Pkg|ttf-font-awesome}}}}&lt;br /&gt;
&lt;br /&gt;
* {{App|ttf-font-icons|Awesome と Ionicons の重複をなくしてサイズを合わせたミックス。DejaVu Sans と Awesome が重複しないようにします。|http://kageurufu.net/icons.pdf|{{AUR|ttf-font-icons}}}}&lt;br /&gt;
&lt;br /&gt;
フォントを混ぜ合わせるには、設定ファイルにフォントのフォールバックを定義してください、以下のように {{ic|,}} でフォントを区切ります:&lt;br /&gt;
{{hc|~/.config/i3/config|2=&lt;br /&gt;
bar {&lt;br /&gt;
  ...&lt;br /&gt;
  font pango:DejaVu Sans Mono, Icons 8&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://developer.gnome.org/pango/stable/pango-Fonts.html#pango-font-description-from-string pango syntax] に従って、カンマで区切ったフォントファミリーのリストを記述してそれから一番後ろにサイズをひとつだけ指定してください。各フォントにサイズを設定するのは最後のフォントを除いて無視される原因となります。&lt;br /&gt;
&lt;br /&gt;
最後に、アイコングラフをフォーマット文字列にして {{ic|~/.config/i3status/config}} に入力します。入力するために、上でリンクしているチートシートを見てユニコード番号を使います。入力方法はテキストエディタによって異なります。例えば &amp;quot;ハート&amp;quot; アイコン (ユニコード番号 f004) を入力するには:&lt;br /&gt;
&lt;br /&gt;
*様々な GUI のテキストエディタ (例: [[gedit]] や Leafpad) とターミナル (例: GNOME Terminal, xfce4-terminal): {{ic|ctrl+shift+u}}, {{ic|f004}}, {{ic|Enter}}&lt;br /&gt;
*[[Emacs]]: {{ic|ctrl+x}}, {{ic|8}}, {{ic|Enter}}, {{ic|f004}}, {{ic|Enter}}&lt;br /&gt;
*[[Vim]] (挿入モード): {{ic|Ctrl+v}}, {{ic|uf004}}&lt;br /&gt;
*[[urxvt]]: {{ic|Ctrl+Shift}} を押して、{{ic|f004}} を入力&lt;br /&gt;
&lt;br /&gt;
===ターミナルエミュレータ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは {{ic|$mod+Return}} を押すとターミナルを呼び出すスクリプトの {{ic|i3-sensible-terminal}} が起動します。ターミナルを呼び出す順番については {{ic|man i3-sensible-terminal}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
他のターミナルを起動するには、{{ic|~/.config/i3/config}} の次の行を変更してください:&lt;br /&gt;
&lt;br /&gt;
 bindsym $mod+Return exec i3-sensible-terminal&lt;br /&gt;
&lt;br /&gt;
または、{{ic|$TERMINAL}} 変数を[[環境変数#ユーザーごと|ローカルで定義]]してください:&lt;br /&gt;
&lt;br /&gt;
 $ export TERMINAL=&#039;&#039;yourterminal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== タイトルクリックを無効にする ===&lt;br /&gt;
&lt;br /&gt;
タイトルフレームをクリックしたときにウィンドウを選択しないようにするための {{ic|bindsym button1 nop}} を追加します。デフォルトのレイアウトがタブになっていて、アプリケーション内で何かをクリックする代わりに i3 のタブをクリックしてしまうことが多い場合に便利です。&lt;br /&gt;
&lt;br /&gt;
==ヒントとテクニック==&lt;br /&gt;
&lt;br /&gt;
===開いているウィンドウにジャンプ===&lt;br /&gt;
&lt;br /&gt;
*{{App|quickswitch-i3|i3 でウィンドウを素早く切り替え・確認するための Python ユーティリティ。|https://github.com/OliverUv/quickswitch-for-i3/|{{Aur|quickswitch-i3}}}}&lt;br /&gt;
&lt;br /&gt;
*{{App|i3-wm-scripts|正規表現にマッチする名前を持ったウィンドウを検索してジャンプ。|https://github.com/yiuin/i3-wm-scripts||}}&lt;br /&gt;
&lt;br /&gt;
*{{App|winmenupy|クライアントのリストと一緒に dmenu を起動、ワークスペースの後にソートされます。クライアントを選択するとそのウィンドウにジャンプ。|https://github.com/ziberna/i3-py/blob/master/examples/winmenu.py||}}&lt;br /&gt;
&lt;br /&gt;
*{{App|rofi|スクラッチパッドウィンドウを検索してジャンプして開く。|https://davedavenport.github.io/rofi/|{{Pkg|rofi}}}}&lt;br /&gt;
&lt;br /&gt;
=== 緊急ウィンドウにジャンプ ===&lt;br /&gt;
&lt;br /&gt;
{{ic|.i3/config}} に次を追加: [https://faq.i3wm.org/question/853/how-to-jump-to-urgent-workspace/]&lt;br /&gt;
&lt;br /&gt;
 bindsym $mod+x [urgent=latest] focus&lt;br /&gt;
&lt;br /&gt;
===ウィンドウレイアウトの保存と復元===&lt;br /&gt;
&lt;br /&gt;
バージョン 4.8 から、&#039;&#039;i3&#039;&#039; のワークスペースレイアウトの保存・復元が可能になっています。これを行うには、次のパッケージが必要です: [[公式リポジトリ]]の {{Pkg|perl-anyevent-i3}} と {{Pkg|perl-json-xs}}。&lt;br /&gt;
&lt;br /&gt;
{{note|このセクションではワークスペースの現在のウィンドウレイアウトを保存して後から復元する方法だけを説明します。詳細は [https://i3wm.org/docs/layout-saving.html 公式ドキュメント] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
====ワークスペースの現在のウィンドウレイアウトを保存====&lt;br /&gt;
&lt;br /&gt;
現在のウィンドウレイアウトを保存するには、以下の手順を実行:&lt;br /&gt;
&lt;br /&gt;
#まず、様々なコマンドを使ってワークスペースにウィンドウを開いて適当にリサイズしてください。それぞれのウィンドウを開くのに実行したコマンドを書き出します。&lt;br /&gt;
#次に、新しいワークスペースで、ターミナルを開いて次を実行: {{bc|i3-save-tree --workspace N &amp;gt; ~/.i3/workspace_N.json}}N は保存したいワークスペースの番号に置き換えてください。これで N 番目のワークスペースのレイアウトが {{ic|~/.i3/workspace_N.json}} ファイルに保存されます。&lt;br /&gt;
#作成したファイルを編集してください。次のコマンドで行うことができます: {{bc|&amp;lt;nowiki&amp;gt;tail -n +2 ~/.i3/workspace_N.json | fgrep -v &#039;// splitv&#039; | sed &#039;s|//||g&#039; &amp;gt; ~/.i3/workspace_N.json&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====ワークスペースのウィンドウレイアウトを復元====&lt;br /&gt;
&lt;br /&gt;
ワークスペースのレイアウトを復元する方法は2つ存在します: スクリプトを書くか、あるいは {{ic|~/.i3/config}} を編集して自動的にレイアウトをロードするかです。このセクションでは前者だけを説明します。後者については [https://i3wm.org/docs/layout-saving.html#_restoring_the_layout 公式ドキュメント] を参照。&lt;br /&gt;
&lt;br /&gt;
前のセクションで保存したレイアウトを復元するには、以下の内容で {{ic|load_layout.sh}} というファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
*最初の行:&lt;br /&gt;
&lt;br /&gt;
{{hc|head=~/load_layout.sh|output=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
i3-msg &amp;quot;workspace M; append_layout ~/.i3/workspace_N.json&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
M は保存したレイアウトをロードしたいワークスペースの番号に、N は前のセクションで保存したワークスペースの番号に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
*前のセクションでウィンドウを開くのに使用したコマンド (コマンドは括弧で括り、閉じ括弧の前にアンパサンドを追加します)。&lt;br /&gt;
&lt;br /&gt;
例えば、3つの {{ic|uxterm}} ウィンドウを開く場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|head=~/load_layout.sh|output=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# First we append the saved layout of worspace N to workspace M&lt;br /&gt;
i3-msg &amp;quot;workspace M; append_layout ~/.i3/workspace_N.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# And finally we fill the containers with the programs they had&lt;br /&gt;
(uxterm &amp;amp;)&lt;br /&gt;
(uxterm &amp;amp;)&lt;br /&gt;
(uxterm &amp;amp;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
それからファイルに実行可能属性を付与:&lt;br /&gt;
&lt;br /&gt;
 $ chmod u+x ~/load_layout.sh&lt;br /&gt;
&lt;br /&gt;
最後に、スクリプトを実行して N 番目のワークスペースのレイアウトを M 番目のワークスペースにロードします:&lt;br /&gt;
&lt;br /&gt;
 $ ~/load_layout.sh&lt;br /&gt;
&lt;br /&gt;
{{tip|{{ic|~/.i3/config}} に {{ic|bindsym $mod+g exec ~/load_layout.sh}} を追加して i3 を再起動することで Mod+g で上記のスクリプトを実行できるようになります。}}&lt;br /&gt;
&lt;br /&gt;
{{note|上のスクリプトが上手く動作しない場合、[https://i3wm.org/docs/layout-saving.html#_editing_layout_files 公式ドキュメント] を参照してください。{{ic|~/.i3/workspace_N.json}} の &#039;&#039;swallows&#039;&#039; セクションを手動で編集する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
===スクラッチパッドコンテナ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、[https://i3wm.org/docs/userguide.html#_scratchpad スクラッチパッド] は一つのウィンドウしか含んでいません。しかしながら、コンテナをスクラッチパッドにすることが可能です。&lt;br /&gt;
&lt;br /&gt;
新しいコンテナを作成して (例えば、{{ic|Mod+Enter}})、コンテナを分割し ({{ic|Mod+v}}) 別のコンテナを作成します。親にフォーカスして ({{ic|Mod+a}})、反対方向に分割し ({{ic|Mod+h}})、もう一度作成します。&lt;br /&gt;
&lt;br /&gt;
最初のコンテナにフォーカスして (必要なら親にもフォーカス)、ウィンドウをフロートさせ ({{ic|Mod+Shift+Space}})、スクラッチパッドに移動します ({{ic|Mod+Shift+-}})。これで自由にコンテナを分割できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|フロートしているウィンドウでコンテナのサイズを個別に変更することはできません。ウィンドウをフロートさせる前にコンテナのサイズを変えて下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|ターミナルアプリケーションしか使わない場合は、代わりに [[tmux]] などのマルチプレクサを使っても良いでしょう。}}&lt;br /&gt;
&lt;br /&gt;
マルチスクラッチパッドについては [https://faq.i3wm.org/question/138/multiple-scratchpad/i3] も参照してください。&lt;br /&gt;
&lt;br /&gt;
===スクリーンセーバーと電源管理===&lt;br /&gt;
&lt;br /&gt;
[[電源管理#xss-lock|xss-lock]] を使うことで i3 セッションの画面ロッカーを登録することが可能です。&lt;br /&gt;
&lt;br /&gt;
もしくは、&#039;&#039;xautolock&#039;&#039; の {{ic|-lockaftersleep}} オプションを使って、スリープやハイバネーションから復帰した後に画面をロックすることができます。{{ic|-time}} オプションは指定時間後に画面をロックします。&lt;br /&gt;
&lt;br /&gt;
 xautolock -time 10 -locker &amp;quot;i3lock -i &#039;background_image.png&#039;&amp;quot; -lockaftersleep &amp;amp;&lt;br /&gt;
&lt;br /&gt;
[[DPMS]] も参照。&lt;br /&gt;
&lt;br /&gt;
===シャットダウン, 再起動, 画面ロック===&lt;br /&gt;
&lt;br /&gt;
シャットダウン、再起動、画面ロックのキーコンビネーションを {{ic|~/.config/i3/config}} に追加することができます。以下の例では[[systemd#電源管理|電源管理]]コマンドを実行する権限がないユーザーに権限を与えるために {{Pkg|polkit}} をインストールする必要があります。&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
set $Locker i3lock &amp;amp;&amp;amp; sleep 1&lt;br /&gt;
&lt;br /&gt;
set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown&lt;br /&gt;
mode &amp;quot;$mode_system&amp;quot; {&lt;br /&gt;
    bindsym l exec --no-startup-id $Locker, mode &amp;quot;default&amp;quot;&lt;br /&gt;
    bindsym e exec --no-startup-id i3-msg exit, mode &amp;quot;default&amp;quot;&lt;br /&gt;
    bindsym s exec --no-startup-id $Locker &amp;amp;&amp;amp; systemctl suspend, mode &amp;quot;default&amp;quot;&lt;br /&gt;
    bindsym h exec --no-startup-id $Locker &amp;amp;&amp;amp; systemctl hibernate, mode &amp;quot;default&amp;quot;&lt;br /&gt;
    bindsym r exec --no-startup-id systemctl reboot, mode &amp;quot;default&amp;quot;&lt;br /&gt;
    bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode &amp;quot;default&amp;quot;  &lt;br /&gt;
&lt;br /&gt;
    # back to normal: Enter or Escape&lt;br /&gt;
    bindsym Return mode &amp;quot;default&amp;quot;&lt;br /&gt;
    bindsym Escape mode &amp;quot;default&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bindsym $mod+Pause mode &amp;quot;$mode_system&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
追加したら {{ic|$mod+pause}} を押すことでプロンプトが表示されます。より複雑な動作をさせたい場合は、スクリプトに分離し、mode の中で参照してください [https://gist.github.com/anonymous/c8cd0a59bf4acb273068]。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=&amp;lt;br&amp;gt;&lt;br /&gt;
* {{ic|sleep 1}} で小さなディレイを追加することで、サスペンドにより起こりうる競合状態を防いでいます [https://bugs.launchpad.net/ubuntu/+source/unity-2d/+bug/830348]。&lt;br /&gt;
* {{ic|systemctl poweroff}} の {{ic|-i}} 引数は、たとえ他のユーザーがログインしていたり ({{Pkg|polkit}} を必要とします)、&#039;&#039;logind&#039;&#039; が (誤って) そのように認識していてもシャットダウンを行います [https://bugs.freedesktop.org/show_bug.cgi?id=62676]。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
他の画面ロッカーについては、[[アプリケーション一覧/セキュリティ#スクリーンロック]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== ターミナルウィンドウを飲み込む ===&lt;br /&gt;
&lt;br /&gt;
[[dwm]] と同じように、i3 は現在のターミナルウィンドウを新しい GUI ウィンドウで「飲み込む」ことができます。これは {{AUR|i3-swallow}} や {{AUR|i3-swallow-git}} パッケージを使うことで可能です。&lt;br /&gt;
&lt;br /&gt;
例えば、[[mpv]] のウィンドウが元のターミナルを飲み込むようにするには以下のようにします:&lt;br /&gt;
&lt;br /&gt;
 $ i3-swallow mpv &#039;&#039;video.mp4&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===外部ディスプレイの手動管理===&lt;br /&gt;
&lt;br /&gt;
[[xrandr]] を使うことで簡単にディスプレイを管理することができます。以下は i3 の設定ファイルを使って統合する例で、上記の電源管理セクションと同じように振る舞います。&lt;br /&gt;
&lt;br /&gt;
VGA と HDMI 出力が存在するノートパソコンでメニューを使ってオンオフを切り替えます:&lt;br /&gt;
&lt;br /&gt;
 ## Manual management of external displays&lt;br /&gt;
 # Set the shortcuts and what they do&lt;br /&gt;
 set $mode_display Ext Screen (v) VGA ON, (h) HDMI ON, (x) VGA OFF, (y) HDMI OFF&lt;br /&gt;
 mode &amp;quot;$mode_display&amp;quot; {&lt;br /&gt;
     bindsym v exec --no-startup-id xrandr --output VGA1 --auto --right-of LVDS1, mode &amp;quot;default&amp;quot;&lt;br /&gt;
     bindsym h exec --no-startup-id xrandr --output HDMI1 --auto --right-of LVDS1, mode &amp;quot;default&amp;quot;&lt;br /&gt;
     bindsym x exec --no-startup-id xrandr --output VGA1 --auto --off, mode &amp;quot;default&amp;quot;&lt;br /&gt;
     bindsym y exec --no-startup-id xrandr --output HDMI1 --auto --off, mode &amp;quot;default&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     # back to normal: Enter or Escape&lt;br /&gt;
     bindsym Return mode &amp;quot;default&amp;quot;&lt;br /&gt;
     bindsym Escape mode &amp;quot;default&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 # Declare here the shortcut to bring the display selection menu&lt;br /&gt;
 bindsym $mod+x mode &amp;quot;$mode_display&amp;quot;&lt;br /&gt;
&lt;br /&gt;
オフになったディスプレイで表示していたウィンドウは自動的に他のアクティブなディスプレイに移動されます。&lt;br /&gt;
&lt;br /&gt;
デバイスの名前を確認したいときは、使用したいデバイスを接続して次を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ xrandr --query&lt;br /&gt;
&lt;br /&gt;
利用可能なオプションについては [[xrandr]] のページや man ページ、[https://i3wm.org/docs/userguide.html i3 ユーザーガイド] や [https://www.reddit.com/r/i3wm i3 reddit の FAQ] を見てください。&lt;br /&gt;
&lt;br /&gt;
===タブまたはスタックによるウェブブラウジング===&lt;br /&gt;
&lt;br /&gt;
タブの管理はブラウザの仕事ではなく、ウィンドウマネージャの仕事だとして、故意にタブを実装していないウェブブラウザというのが存在します。&lt;br /&gt;
&lt;br /&gt;
[[uzbl]] など、タブのないウェブブラウザを i3 で管理するには、次の行を {{ic|~/.config/i3/config}} に追加して下さい:&lt;br /&gt;
&lt;br /&gt;
 for_window [class=&amp;quot;Uzbl-core&amp;quot;] focus child, layout stacking, focus&lt;br /&gt;
&lt;br /&gt;
これはスタックのウェブブラウジング用で、ウィンドウは縦に表示されます。タブブラウジングと違って、たとえブラウザのウィンドウを大量に開いていても、ウィンドウのタイトルを全て見ることができます。&lt;br /&gt;
&lt;br /&gt;
水平方向のタブブラウジングの方が良い場合は (&#039;タブ&#039;)、次を使って下さい:&lt;br /&gt;
&lt;br /&gt;
 for_window [class=&amp;quot;Uzbl-core&amp;quot;] focus child, layout tabbed, focus&lt;br /&gt;
&lt;br /&gt;
===ワークスペース変数===&lt;br /&gt;
&lt;br /&gt;
i3 ではワークスペースを複数定義するので、ワークスペース変数を指定すると便利です。例えば [https://github.com/dkeg/bloat2.0/blob/master/i3config#L55]:&lt;br /&gt;
&lt;br /&gt;
 set $WS1 term&lt;br /&gt;
 set $WS2 web&lt;br /&gt;
 set $WS3 misc&lt;br /&gt;
 set $WS4 media&lt;br /&gt;
 set $WS5 code&lt;br /&gt;
&lt;br /&gt;
次にワークスペースの名前を対応する変数で置き換えます:&lt;br /&gt;
&lt;br /&gt;
 bindsym $mod+1          workspace $WS1&lt;br /&gt;
 ...&lt;br /&gt;
 bindsym $mod+Shift+1    move container to workspace $WS1&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://i3wm.org/docs/userguide.html#_changing_named_workspaces_moving_to_workspaces Changing named workspaces] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===フロートするダイアログを正しく扱う===&lt;br /&gt;
&lt;br /&gt;
デフォルトではダイアログはフロートモードで開かれることになっていますが [https://i3wm.org/docs/userguide.html#_floating]、ダイアログはタイルモードで開いてしまうこともあります。この挙動を変更するには {{pkg|xorg-xprop}} でダイアログの {{ic|WM_WINDOW_ROLE}} をチェックして適切なルールを {{ic|~/.i3/config}} に追加してください:&lt;br /&gt;
&lt;br /&gt;
 for_window [window_role=&amp;quot;pop-up&amp;quot;] floating enable&lt;br /&gt;
 for_window [window_role=&amp;quot;task_dialog&amp;quot;] floating enable&lt;br /&gt;
&lt;br /&gt;
また、タイトルルールと正規表現を使うこともできます:&lt;br /&gt;
&lt;br /&gt;
 for_window [title=&amp;quot;Preferences$&amp;quot;] floating enable&lt;br /&gt;
&lt;br /&gt;
または {{ic|WM_CLASS}}:&lt;br /&gt;
&lt;br /&gt;
 for_window [class=&amp;quot;(?i)mplayer&amp;quot;] floating enable&lt;br /&gt;
&lt;br /&gt;
===ネットワークのダウンロード・アップロード速度をステータスバーに表示===&lt;br /&gt;
&lt;br /&gt;
上流の [http://code.stapelberg.de/git/i3status/tree/contrib/measure-net-speed.bash スクリプト] を編集して使うことができます。&lt;br /&gt;
&lt;br /&gt;
*システムに応じて両方のネットワークカードをリネームしてください ({{ic|ip addr}} を使ってください)。&lt;br /&gt;
*{{ic|/sys/devices}} でネットワークカードを検索して適切に置き換えます:&lt;br /&gt;
&lt;br /&gt;
 $ find /sys/devices -name &#039;&#039;network_interface&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|/sys/class/net/&#039;&#039;interface&#039;&#039;/statistics/}} を使うことで PCI の位置に依存しなくなります。}}&lt;br /&gt;
&lt;br /&gt;
スクリプトを適切な場所 (例: {{ic|~/.config/i3}}) に保存して、ステータスプログラムから実行するように設定してください。&lt;br /&gt;
&lt;br /&gt;
=== ウィンドウの分割方向を自動的に水平/垂直に切り替える ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|autotiling}} パッケージ は、ウィンドウの分割方向を自動的に水平/垂直に切り替えることができます。インストール後、{{ic|~/.config/i3/config}} に以下を追加し、i3 をリロードしてください。&lt;br /&gt;
&lt;br /&gt;
 exec_always --no-startup-id &#039;&#039;autotiling&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
&lt;br /&gt;
===一般===&lt;br /&gt;
&lt;br /&gt;
多くの場合、開発版である {{AUR|i3-git}} と {{AUR|i3status-git}} でバグは修正されているため、上流では開発版を使ってエラーが再現できるかどうか訊いてきます  [https://i3wm.org/docs/debugging.html]。[[デバッグ - トレースを取得#一般]]も見てください。&lt;br /&gt;
&lt;br /&gt;
===i3 メッセージバーのボタンが動作しない===&lt;br /&gt;
&lt;br /&gt;
{{ic|i3-nagbar}} の &amp;quot;Edit config&amp;quot; などのボタンは {{ic|i3-sensible-terminal}} を呼び出します。[[#ターミナルエミュレータ|ターミナルエミュレータ]]が i3 によって認識されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
===タイル化されたターミナルで行の折り返しがおかしい===&lt;br /&gt;
&lt;br /&gt;
i3 v4.3 以上ではタイル配置したウィンドウのサイズ増加ヒントは無視されます [https://www.mail-archive.com/i3-discuss@i3.zekjur.net/msg00709.html]。これによってターミナルで行が早いところで折り返されてしまうなどの問題が生じます。解決方法としては、問題のウィンドウをフロートさせてから、もう一度タイル化してください。&lt;br /&gt;
&lt;br /&gt;
===マウスカーソルが待機状態のままになる===&lt;br /&gt;
&lt;br /&gt;
起動通知をサポートしていないスクリプやアプリケーションを起動すると、マウスカーソルは60秒間の間、ビジー/砂時計状態になります。&lt;br /&gt;
&lt;br /&gt;
特定のアプリケーションでこの問題を解決するには、{{ic|--no-startup-id}} パラメータを使って下さい、例えば:&lt;br /&gt;
 exec --no-startup-id ~/script&lt;br /&gt;
 bindsym $mod+d exec --no-startup-id dmenu_run&lt;br /&gt;
&lt;br /&gt;
このアニメーションを全てのアプリケーションで無効にするには、[[カーソルテーマ]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===キーバインドが反応しない===&lt;br /&gt;
&lt;br /&gt;
標準のキーバインド (キーを押して実行) を使っている場合、[[スクリーンショットの取得#scrot|scrot]] などのツールが動作しないことがあります。そのようなときは、{{ic|--release}} でキーをリリースしてからコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 bindsym --release Print exec --no-startup-id scrot &#039;%Y-%m-%d$&lt;br /&gt;
 bindsym --release Shift+Print exec --no-startup-id scrot &#039;%Y$&lt;br /&gt;
&lt;br /&gt;
[https://i3wm.org/docs/userguide.html#keybindings] を参照。&lt;br /&gt;
&lt;br /&gt;
===ティアリング===&lt;br /&gt;
&lt;br /&gt;
i3 は [http://bugs.i3wm.org/report/ticket/661 ダブルバッファをちゃんと実装していない] ためにティアリングやちらつきが発生することがあります。問題を修正したいときは、[[Xorg#コンポジット|コンポジットマネージャ]]を使ってみて下さい。&lt;br /&gt;
&lt;br /&gt;
===トレイアイコンが表示されない===&lt;br /&gt;
&lt;br /&gt;
{{ic|tray_output primary}} ディレクティブでは、 &#039;&#039;xrandr&#039;&#039; でプライマリ出力を設定する必要があります。明示的に出力を指定するか、ディレクティブを削除してください [https://github.com/i3/i3/issues/1144]。詳しくは [[Xrandr]] を参照。i3 のバージョン 4.12 から、i3-config-wizard によって作成されるデフォルト設定ではディレクティブが追加されないようになりました。&lt;br /&gt;
&lt;br /&gt;
=== Spotify のためのデフォルトのワークスペース ===&lt;br /&gt;
&lt;br /&gt;
Spotify ウィンドウにデフォルトのワークスペースを割り当てるには、{{ic|assign}} で標準ルートを使用することはできず、次のような {{ic|for_window}} コマンドを使用する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/i3/config|2=&lt;br /&gt;
...&lt;br /&gt;
for_window [class=&amp;quot;Spotify&amp;quot;] move to workspace $ws10&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|for_window}} がすでに {{ic|ws10}} にある場合にウィンドウを移動しないようにするには、代わりに {{ic|move --no-auto-back-and-forth}} を使用できます。&lt;br /&gt;
&lt;br /&gt;
==参照==&lt;br /&gt;
&lt;br /&gt;
*[http://i3wm.org 公式ウェブサイト]&lt;br /&gt;
*[http://www.funtoo.org/I3_Tiling_Window_Manager funtoo Wiki]&lt;br /&gt;
*[http://code.stapelberg.de/git/i3 i3 ソースコード]&lt;br /&gt;
*[https://github.com/ashinkarov/i3-extras i3-extras] - スクリプトとパッチのコレクション&lt;br /&gt;
*[https://github.com/acrisci/i3ipc-glib i3ipc-glib] - i3 拡張のためのライブラリ&lt;br /&gt;
*[https://github.com/veelenga/i3ipc-ruby i3ipc-ruby] - An improved library for i3 extensions in Ruby&lt;br /&gt;
*[http://www.j4tools.org/ j4tools] - non-official tools designed to work with i3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Arch Linux フォーラム&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*[https://bbs.archlinux.org/viewtopic.php?id=99064 The i3 thread] - A general discussion about i3&lt;br /&gt;
*[https://bbs.archlinux.org/viewtopic.php?id=103369 i3 desktop screenshots and config sharing]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;スクリーンキャスト&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*[https://www.youtube.com/watch?v=Wx0eNaGzAZU i3 ウィンドウマネージャの v4.1 スクリーンキャスト]&lt;br /&gt;
*[https://www.youtube.com/watch?v=j1I63wGcvU4&amp;amp;index=1&amp;amp;list=PL5ze0DjYv5DbCv9vNEzFmP6sU7ZmkGzcf i3 window manager v4.1X screencasts]&lt;/div&gt;</summary>
		<author><name>0xVERS</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Btrfs&amp;diff=20957</id>
		<title>Btrfs</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Btrfs&amp;diff=20957"/>
		<updated>2021-07-31T16:16:18Z</updated>

		<summary type="html">&lt;p&gt;0xVERS: ブロックサイズ指定のフラグが間違っていた&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Btrfs]]&lt;br /&gt;
[[fr:Btrfs]]&lt;br /&gt;
[[zh-hans:Btrfs]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ファイルシステム}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related|Snapper}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化#Btrfs サブボリュームとスワップ}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Btrfs]] より:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Btrfs (B-tree File System: 読み方は &amp;quot;バター FS&amp;quot;, &amp;quot;ベター FS&amp;quot;, &amp;quot;B木 FS&amp;quot;, &amp;quot;ビーティーアール FS&amp;quot; など) は Linux 向けの実験的なコピーオンライトのファイルシステムで GPL でライセンスされています。Oracle Corporation によって2007年から開発が開始されました。2014年8月にはディスク上のフォーマットが固まっています。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs Wiki] より:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Btrfs は Linux 用の全く新しいコピーオンライト (COW) のファイルシステムです。先進的な機能を実装することを目指しつつ、障害耐性を持ち簡単に管理できることに焦点が置かれています。Btrfs は Oracle, Red Hat, Fujitsu, Intel, SUSE, STRATO やその他多くの人々によって共同で開発されており GPL でライセンスされていて誰でも貢献できるように開かれています。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Warning|Btrfs には実験的な機能が存在します。詳しくは Btrfs Wiki の [https://btrfs.wiki.kernel.org/index.php/Status Status] や [https://btrfs.wiki.kernel.org/index.php/FAQ#Is_btrfs_stable.3F Is Btrfs stable?]、[https://btrfs.wiki.kernel.org/index.php/Getting_started Getting started] などを見てください。[[#既知の問題]]も参照。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Btrfs はデフォルトのカーネルに含まれており、ツール ({{pkg|btrfs-progs}}) は[[公式リポジトリ]]から入手できます。[[GRUB]], [[mkinitcpio]], [[Syslinux]] には Btrfs のサポートがあるので追加の設定は必要ありません。&lt;br /&gt;
&lt;br /&gt;
=== 追加のパッケージ ===&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|btrfs-progs}} には Btrfs ファイルシステムのエラーを修正できるツール &#039;&#039;btrfsck&#039;&#039; が含まれています。&lt;br /&gt;
* {{AUR|btrfs-progs-git}} はナイトリービルドです。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Btrfs を効率的に動かす提案が [https://btrfs.wiki.kernel.org/index.php/Getting_started Btrfs Wiki Getting Started] に載っています。}}&lt;br /&gt;
&lt;br /&gt;
== Btrfs の一般的な管理 ==&lt;br /&gt;
&lt;br /&gt;
=== 新しいファイルシステムを作成する ===&lt;br /&gt;
&lt;br /&gt;
Btrfs ファイルシステムは新規作成することも既存のファイルシステムから変換することも可能です。&lt;br /&gt;
&lt;br /&gt;
パーティションをフォーマットするには次を実行してください:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.btrfs -L &#039;&#039;mylabel&#039;&#039; /dev/&#039;&#039;partition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|1=2013年11月の[https://git.kernel.org/cgit/linux/kernel/git/mason/btrfs-progs.git/commit/?id=c652e4efb8e2dd76ef1627d8cd649c6af5905902 この] コミット以降、Btrfs のデフォルトのブロックサイズは 16KB になっています。}}&lt;br /&gt;
&lt;br /&gt;
大きいブロックサイズをデータ・メタデータに使うには、下の例のように {{ic|-n}} スイッチを使って {{ic|nodesize}} の値を指定して下さい (例: 16KB ブロック):&lt;br /&gt;
&lt;br /&gt;
 # mkfs.btrfs -L &#039;&#039;mylabel&#039;&#039; -n 16k /dev/&#039;&#039;partition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のデバイスを入力して RAID を作成することもできます。サポートされている RAID レベルは RAID 0, RAID 1, RAID 10 などです。デフォルトではメタデータはミラーされデータはストライピングされます。より多くの情報が必要な場合、[https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices Using Btrfs with Multiple Devices] を見てください。&lt;br /&gt;
&lt;br /&gt;
 # mkfs.btrfs [options] /dev/&amp;lt;part1&amp;gt; /dev/&amp;lt;part2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|ミラーリングをしない場合、&#039;&#039;raid0&#039;&#039; オプションを使って下さい: {{ic|# mkfs.btrfs -d raid0 /dev/&#039;&#039;part1&#039;&#039; /dev/&#039;&#039;part2&#039;&#039;}}。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Btrfs の RAID 5 と RAID 6 モードには致命的な欠点があります。壊れても良いデータ以外でテストすべきではありません。現状については https://btrfs.wiki.kernel.org/index.php/RAID56 を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== 使用済み・空き容量を表示する ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr/bin/df}} などの linux の一般的なユーザー空間ツールは Btrfs パーティションの空き容量について間違った報告をします。なぜならメタデータによって使用される予約済みのスペースを考慮しないからです。btrfs パーティションに問い合わせるときは {{ic|/usr/bin/btrfs}} を使うのが推奨されています。以下は {{ic|df -h}} を使った時と、{{ic|btrfs filesystem df}} を使った時の出力の例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ df -h /|&lt;br /&gt;
Filesystem      Size  Used Avail Use% Mounted on&lt;br /&gt;
/dev/sda3       119G  3.0G  116G   3% /&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|$ btrfs filesystem df /|2=&lt;br /&gt;
Data: total=3.01GB, used=2.73GB&lt;br /&gt;
System: total=4.00MB, used=16.00KB&lt;br /&gt;
Metadata: total=1.01GB, used=181.83MB&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|df -h}} は 3.0GB 使用されているとしているのに対して {{ic|btrfs filesystem df}} はデータは 2.73GB だと報告しているのに気づいて下さい。これは Btrfs がスペースをプールに割り当てているためです。本当のディスク使用量は3つの &#039;used&#039; を合計した値であり、{{ic|df -h}} による 3.0GB よりかは下回ります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=カーネル 3.15 以上で {{ic|btrfs filesystem df}} の出力にタイプ {{ic|unknown}} のエントリが表示される場合、これは表示のバグです。[http://thread.gmane.org/gmane.comp.file-systems.btrfs/34419 このパッチ] によって、このエントリは一種のバッファである GlobalReserve を意味しています。このエントリは RAID では {{ic|unknown, single}} として表示され re-balance することができません。}}&lt;br /&gt;
&lt;br /&gt;
他にも大まかに使用容量を読み出すコマンドとして {{ic|btrfs filesystem show}} が使用できます:&lt;br /&gt;
&lt;br /&gt;
 # btrfs filesystem show /dev/sda3&lt;br /&gt;
&lt;br /&gt;
空き容量の情報を取得する最新のコマンドは {{ic|btrfs filesystem usage}} です:&lt;br /&gt;
&lt;br /&gt;
 # btrfs filesystem usage&lt;br /&gt;
&lt;br /&gt;
{{Note|1={{ic|btrfs filesystem usage}} コマンドは RAID レベルが {{ic|RAID5/RAID6}} だと上手く機能しません。}}&lt;br /&gt;
&lt;br /&gt;
== 既知の問題 ==&lt;br /&gt;
&lt;br /&gt;
試行する前に知っておくべき制限事項が存在します。&lt;br /&gt;
&lt;br /&gt;
=== 暗号化 ===&lt;br /&gt;
&lt;br /&gt;
Btrfs にはビルトインの暗号化サポートはありません(将来実装される予定です)が、&amp;lt;code&amp;gt;mkfs.btrfs&amp;lt;/code&amp;gt; をする前にパーティションを暗号化することができます。[[dm-crypt]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
既に btrfs ファイルシステムを作成してしまっている場合、[[EncFS]] や [[TrueCrypt]] などを使うことができます。ただし btrfs のいくつかの機能が使えなくなるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== スワップファイル ===&lt;br /&gt;
&lt;br /&gt;
Btrfs の [[スワップファイル]] は Linux カーネル5.0 以降でサポートされています。[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ed46ff3d423780fa5173b38a844bf0fdb210a2a7] スワップファイルを初期化する適切な方法は、最初にファイルをホストする非圧縮、非スナップショットのサブボリュームを作成し、そのディレクトリに &#039;&#039;cd&#039;&#039; してから、長さゼロのファイルを作成し、{{ic|No_COW}} を設定することです。 属性を [https://wiki.archlinux.jp/index.php/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E5%B1%9E%E6%80%A7#chattr_.E3.81.A8_lsattr chattr] で指定し、圧縮が無効になっていることを確認します。&lt;br /&gt;
&lt;br /&gt;
 # cd &#039;&#039;/path/to/swapfile&#039;&#039;&lt;br /&gt;
 # truncate -s 0 ./swapfile&lt;br /&gt;
 # chattr +C ./swapfile&lt;br /&gt;
 # btrfs property set ./swapfile compression none&lt;br /&gt;
&lt;br /&gt;
詳細な設定については、 [https://wiki.archlinux.jp/index.php/%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97#.E3.82.B9.E3.83.AF.E3.83.83.E3.83.97.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E4.BD.9C.E6.88.90 スワップファイルの作成] を参照してください。スワップファイルへの休止状態の構成については、[https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file_on_Btrfs Hibernation into swap file on Btrfs]で説明されています。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=Linux カーネル5.0 以降、 Btrfs にはネイティブスワップファイルのサポートがありますが、いくつかの制限があります。&lt;br /&gt;
* スワップファイルをスナップショットサブボリュームに置くことはできません。適切な手順は、スワップファイルを配置する新しいサブボリュームを作成することです。&lt;br /&gt;
* 複数のデバイスにまたがるファイルシステム上のスワップファイルはサポートされていません。 [https://btrfs.wiki.kernel.org/index.php/FAQ#Does_btrfs_support_swap_files.3F Btrfs wiki: Does btrfs support swap files?] および [https://bbs.archlinux.org/viewtopic.php?pid=1849371#p1849371 Arch forums discussion]。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 機能 ==&lt;br /&gt;
&lt;br /&gt;
様々な機能が備わっていて、それぞれ設定が可能です。&lt;br /&gt;
&lt;br /&gt;
=== クォータ ===&lt;br /&gt;
&lt;br /&gt;
{{warning|Qgroup はまだ安定状態ではなくサブボリュームのスナップショットとクォータを組み合わせると操作によってパフォーマンスに問題をきたします (スナップショットの削除など)。さらに [https://btrfs.wiki.kernel.org/index.php/Quota_support#Known_issues 既知の問題] が存在しています。}}&lt;br /&gt;
&lt;br /&gt;
Btrfs におけるクォータのサポートはクォータグループ (qgroup) を利用してサブボリュームレベルで実装されています: 各サブボリュームにはデフォルトで &#039;&#039;0/&amp;lt;subvolume id&amp;gt;&#039;&#039; という形式でクォータグループが割り当てられています。必要であればクォータグループを作成することもできます。&lt;br /&gt;
&lt;br /&gt;
クォータグループを使うにはまずクォータを有効にする必要があります:&lt;br /&gt;
&lt;br /&gt;
 # btrfs quota enable &amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを実行してから新しいサブボリュームを作成すると、グループによって制御が可能になります。既存のサブボリュームでも制御を行いたい場合、クォータを有効にしてから、&#039;&#039;&amp;lt;subvolume id&amp;gt;&#039;&#039; を使ってサブボリュームごとにクォータグループを作成して再スキャンしてください:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume list &amp;lt;path&amp;gt; | cut -d&#039; &#039; -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} &amp;lt;path&amp;gt;&lt;br /&gt;
 # btrfs quota rescan &amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Btrfs のクォータグループはツリー構造になっていて、サイズ制限はクォータグループごとに設定し、ツリーに属しているサブボリュームに制限が課せられます。&lt;br /&gt;
&lt;br /&gt;
クォータグループで設定できる制限は合計データ使用量・非共有のデータ使用量・圧縮データ使用量、あるいはそれらを組み合わせたものです。元のボリュームファイルを削除してコピーを残す場合、他のクォータグループの非共有制限が変わるため、ファイルのコピーや削除で制限に抵触する可能性があります。例えば、新しいスナップショットが元のサブボリュームの全てのブロックと同じデータを持っている場合、どちらかのサブボリュームだけで共通データを削除するともう片方のサブボリュームの制限に引っかかる可能性があります。&lt;br /&gt;
&lt;br /&gt;
クォータグループに制限を設定するには、{{ic|btrfs qgroup limit}} コマンドを使います。合計使用量の制限や非共有制限 ({{ic|-e}}) または圧縮制限 ({{ic|-c}}) が設定できます。ファイルシステムの特定のパスにおける使用量や制限を表示するには:&lt;br /&gt;
&lt;br /&gt;
 # btrfs qgroup show -reF &amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== コミット間隔の設定 ===&lt;br /&gt;
&lt;br /&gt;
ファイルシステムにどのデータを書き込むかは BTRFS とシステム全体の設定によって決められます。BTRFS のデフォルトでは30秒のチェックポイントインターバルでファイルシステムに新しいデータが送られます。この間隔は[[#チェックポイントインターバル|後述]]のマウントオプションで調整可能です。&lt;br /&gt;
&lt;br /&gt;
システム全体の設定もインターバルに影響を与えます。それには /proc/sys/vm/* 以下のファイルも含まれており、この wiki では扱っていません。Documentation/sysctl/vm.txt にこれらのファイルに関するカーネルドキュメントがあります。&lt;br /&gt;
&lt;br /&gt;
=== コピーオンライト (CoW) ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、いついかなる時も、全てのファイルに対して btrfs は CoW を行います: 今までに存在していなかったファイルを書き込もうとした場合、データは空き領域に書き込まれて、ファイルシステムのメタデータブロックが CoW されます。&amp;quot;通常の&amp;quot;ファイルシステムでは、ファイルの一部を上書きした場合、置換先のデータに直接上書きがなされます。CoW ファイルシステムでは、新しいデータはディスクの空き容量に書き込まれて、それから、新しいデータを参照するようにファイルのメタデータが変更されます。元のデータはどこからも参照されなくなって始めて削除されます。&lt;br /&gt;
&lt;br /&gt;
CoW にはアドバンテージがありますが、大きなファイルに小さなランダム書き込みを行うときのパフォーマンスについてはあまり良い影響を与えません。たとえ&amp;quot;コピー&amp;quot;を行わないときでもファイルを断片化させるからです。データベースファイルや仮想マシンイメージについては CoW を無効化することが推奨されます。&lt;br /&gt;
&lt;br /&gt;
CoW を無効にする方法の一つは &amp;quot;nodatacow&amp;quot; オプションを使ってマウントすることです。しかしながら、これではファイルシステム全体で CoW を無効にすることになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|nodatacow}} は新規作成されたファイルにのみ影響します。既存のファイルにはまだ CoW が行われる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
ファイルやディレクトリ単体で CoW を無効化するには、次のコマンドを使って下さい:&lt;br /&gt;
&lt;br /&gt;
 $ chattr +C &amp;lt;/dir/file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
以上のコマンドで CoW が無効化されるのはファイルの参照が一つしかない操作の場合に限られます。複数の参照がある場合 (例: {{ic|1=cp --reflink=always}} を使用したりファイルシステムのスナップショットが存在する場合)、CoW は依然として実行されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|chattr の man ページより: btrfs では、 &#039;C&#039; フラグは新しい、または空のファイルにセットしなければなりません。既にデータブロックを持つファイルにフラグを設定した場合、ファイルに新しいブロックが割り当てられると完全な安定のためにフラグの定義が消されます。ディレクトリに &#039;C&#039; フラグがセットされている場合、そのディレクトリ自体には影響がなく、ディレクトリに作成された新しいファイルに {{ic|No_COW}} 属性が付けられます。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|上の Note に従い、ディレクトリ内の既存のファイルで CoW を無効にするときは、次のようにします:&lt;br /&gt;
 $ mv &#039;&#039;/path/to/dir&#039;&#039; &#039;&#039;/path/to/dir&#039;&#039;_old&lt;br /&gt;
 $ mkdir &#039;&#039;/path/to/dir&#039;&#039;&lt;br /&gt;
 $ chattr +C &#039;&#039;/path/to/dir&#039;&#039;&lt;br /&gt;
 $ cp -a &#039;&#039;/path/to/dir&#039;&#039;_old/* &#039;&#039;/path/to/dir&#039;&#039;&lt;br /&gt;
 $ rm -rf &#039;&#039;/path/to/dir&#039;&#039;_old&lt;br /&gt;
作業中にファイルが使用されないように気を付けてください。また、 {{ic|mv}} や下で説明する {{ic|cp --reflink}} では CoW を無効にできないことに注意してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
同じように、ファイルのコピー時に CoW を強制してスペースを節約するには次を使って下さい (デフォルトでは {{ic|cp}} を使った場合、実際にデータがコピーされます):&lt;br /&gt;
&lt;br /&gt;
 $ cp --reflink source dest&lt;br /&gt;
&lt;br /&gt;
dest ファイルが変更されると、元から変更されたブロックだけがディスクに書き込まれます。cp を &#039;cp --reflink=auto&#039; にするエイリアスを作ってもいいかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== マルチデバイスファイルシステムと RAID 機能 ===&lt;br /&gt;
&lt;br /&gt;
[https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices Using Btrfs with Multiple Devices] の提案も見て下さい。&lt;br /&gt;
&lt;br /&gt;
====マルチデバイスファイルシステム====&lt;br /&gt;
&lt;br /&gt;
{{Note|適当な &#039;&#039;.device&#039;&#039; ジョブ以外でマルチデバイスファイルシステムをマウントするとファイルシステムの [https://github.com/systemd/systemd/issues/1921 バグ] が原因でフリーズして systemd が起動できなくなります。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;btrfs&#039;&#039; ファイルシステムを作成する際に、&#039;&#039;mkfs.btrfs&#039;&#039; したい分だけのパーティション・デバイスを指定することができます。ファイルシステムは指定された全てのデバイスにわたって作成されます。このように &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039;pool&#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; することによって、複数のパーティションやデバイスを一つの大きな &#039;&#039;btrfs&#039;&#039; ファイルシステムにできるのです。&lt;br /&gt;
&lt;br /&gt;
また、既に存在している btrfs ファイルシステムからデバイスを追加・削除することも可能です(用心が必要ですが)。&lt;br /&gt;
&lt;br /&gt;
(btrfs ボリュームとも呼ばれる) マルチデバイス &#039;&#039;btrfs&#039;&#039; ファイルシステムは {{ic|btrfs device scan}} を実行するまで認識されません。&#039;&#039;btrfs&#039;&#039; mkinitcpio フックがこれを行います。&lt;br /&gt;
&lt;br /&gt;
====RAID 機能====&lt;br /&gt;
&lt;br /&gt;
{{Note|カーネル 3.19 から、復元や再構築のコードもマージされています。通常の使用に耐えうるようになっています。新しいコードなので、安定化するのは次かその次のバージョンのカーネルになると思われます。}}&lt;br /&gt;
&lt;br /&gt;
マルチデバイスファイルシステムを作成するとき、ファイルシステムに追加したデバイス全体で RAID0, RAID1, RAID10, RAID5, RAID6 を使うように指定することもできます。RAID レベルはデータとメタデータで別個に適用することができます。デフォルトでは、メタデータはシングルボリュームやマルチディスクの RAID1 で複製されます。&lt;br /&gt;
&lt;br /&gt;
btrfs は raid0, raid1, raid10 のブロックペアで動作します:&lt;br /&gt;
&lt;br /&gt;
raid0 - 2つのデバイスに分散されるブロックペア&lt;br /&gt;
&lt;br /&gt;
raid1 - 2つのデバイスに書き込まれるブロックペア&lt;br /&gt;
&lt;br /&gt;
マウント中に {{ic|btrfs balance}} コマンドを使って RAID レベルを変更することができます:&lt;br /&gt;
&lt;br /&gt;
 # btrfs balance start -mconvert=RAIDレベル -dconvert=RAIDレベル マウントポイント&lt;br /&gt;
&lt;br /&gt;
ディスクが2つある場合、md-raid ([[mdadm]]) で定義する raid レベルと一致します。ディスクが3つ以上の場合は、md-raid とは全く異なるものになります。&lt;br /&gt;
&lt;br /&gt;
例えば:&lt;br /&gt;
* md による raid1 の3つの 1TB ディスクを使って、1TB の空き容量で、2つのディスクを失ってもデータが消失しないようにすることが出来ます。&lt;br /&gt;
* data=raid1 の Btrfs ボリュームの3つの 1TB ディスクを使って、満杯になるまでほぼ 1.5TB のデータを保存することができます。ディスクが1つなくなってもデータは消失しません。&lt;br /&gt;
&lt;br /&gt;
Btrfs はディスクに分散してブロックペアを配置するのにラウンドロビン方式を使っています。Linux 3.0 から,ブロックペアを分散する際に大きなディスクを優先するように quasi-round-robin 方式が使われています。これによって複数のディスクからディスクセットが出来ているときに raid0 や raid1 でほとんど (もしくは全て) の領域を効率的に利用することが可能になっています。例えば、1台の 1TB のディスクと2台の 500GB のディスクからなるセットで data=raid1 を使用すると 1TB のディスクには全てのブロックのコピーが、500GB のそれぞれのディスクにはブロックが交互に (ラウンドロビンで) 配置されます。完全な利用効率が実現されます。1TB のディスクと 750GB のディスク、500GB のディスクからなるセットでも同じことが行われますが、ファイルシステムは 750GB のディスクの 250GB が利用できないことを報告します。いつでも全ての領域を活用できるようにするには (最後に上げた例でも)、data=single を使って下さい (data=single は raid コントローラによって定義される JBOD と同じです)。詳しくは [https://btrfs.wiki.kernel.org/index.php/FAQ#How_much_space_do_I_get_with_unequal_devices_in_RAID-1_mode.3F BTRFS FAQ] を参照。&lt;br /&gt;
&lt;br /&gt;
{{Warning|パリティ RAID (RAID 5/6) のコードにはデータを消失する可能性のある深刻なバグが存在します。詳しくは Btrfs Wiki の [https://btrfs.wiki.kernel.org/index.php/RAID56 RAID5/6] のページや [https://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg55161.html linux-btrfs メーリングリスト] のバグレポートを読んでください。}}&lt;br /&gt;
&lt;br /&gt;
=== サブボリューム ===&lt;br /&gt;
&lt;br /&gt;
btrfs の機能のひとつにサブボリュームがあります。サブボリュームは基本的にファイルとディレクトリを保持している名前の付いた b 木です。root ツリーのツリーの中に inode を持ち、root 以外の所有者やグループも設定できます。サブボリュームは任意でブロックを割り当てることもできます。ブロックとファイルエクステントの全ては参照カウントでありスナップショットを可能にしています。仮想マシンの動的な容量拡張に似て、必要な時に必要な分だけのデバイス上の容量を使います。また、サブボリュームを異なったマウントオプションを使ってマウントすることでセキュリティの柔軟性を持たせることもできます。&lt;br /&gt;
&lt;br /&gt;
==== サブボリュームを作成する ====&lt;br /&gt;
&lt;br /&gt;
サブボリュームを作成するには:&lt;br /&gt;
 # btrfs subvolume create &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== サブボリュームを一覧する ====&lt;br /&gt;
&lt;br /&gt;
現在のサブボリュームのリストを表示するには:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume list -p .&lt;br /&gt;
&lt;br /&gt;
==== サブボリュームをマウントする ====&lt;br /&gt;
&lt;br /&gt;
サブボリュームは {{ic|1=subvol=&#039;&#039;/path/to/subvolume&#039;&#039;}} や {{ic|1=subvolid=&#039;&#039;objectid&#039;&#039;}} マウントフラグを使うことでファイルシステムのパーティションと同じようにマウントできます。例えば、{{ic|subvol_root}} という名前のサブボリュームが存在したら {{ic|/}} にマウントすることができます。ファイルシステムのトップレベルにサブボリュームを作成して適切なマウントポイントにマウントすることで、伝統的なファイルシステムのパーティションと同じように使うことができ、[[#スナップショット|スナップショット]]を使用してファイルシステムを前の状態に簡単に戻すことが可能です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=トップレベルのサブボリューム (ID=5) を {{ic|/}} として使用しないことでサブボリュームのレイアウトの変更を簡単にできます。サブボリュームを作成して実際のデータを保存して {{ic|/}} にマウントします。}}&lt;br /&gt;
&lt;br /&gt;
[[Snapper#推奨ファイルシステムレイアウト]], [https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Managing_Snapshots Btrfs SysadminGuide#Managing Snapshots], [https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Layout Btrfs SysadminGuide#Layout] などにサブボリュームを使用するファイルシステムレイアウトの例が存在します。&lt;br /&gt;
&lt;br /&gt;
===== マウントオプション =====&lt;br /&gt;
&lt;br /&gt;
{{ic|1=subvol=}} でサブボリュームをマウントする際、複数のマウントオプションが利用できます。例えば、[[#圧縮|圧縮]]や[[#コピーオンライト (CoW)|コピーオンライト (CoW)]] に関するマウントオプションが使えます。&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://btrfs.wiki.kernel.org/index.php/Mount_options Btrfs Wiki Mount options] や [https://btrfs.wiki.kernel.org/index.php/Gotchas Btrfs Wiki Gotchas] を見てください。様々なマウントオプションを使うことで Btrfs の特性は大きく変わります。活発に開発されているファイルシステムであるため、リグレッションも考慮してください。[[#参照|参照]]セクションには複数のベンチマークへのリンクが存在します。&lt;br /&gt;
&lt;br /&gt;
{{Warning|特定のマウントオプションは安全を保証するための機能を無効化して、ファイルシステムが完全に破損する危険性を引き上げてしまいます。}}&lt;br /&gt;
&lt;br /&gt;
==== サブボリュームをルートとしてマウントする ====&lt;br /&gt;
&lt;br /&gt;
サブボリュームをルートマウントポイントとして使用するには、{{ic|1=rootflags=subvol=&#039;&#039;/path/to/subvolume&#039;&#039;}} を使用して [[カーネルパラメータ#設定|カーネルパラメータ]] 経由でサブボリュームを指定します。{{ic|/etc/fstab}} でルート・マウントポイントを編集し、マウント・オプションに {{ic|1=subvol=}} を指定します。または、サブボリュームの ID {{ic|1=rootflags=subvolid=&#039;&#039;objectid&#039;&#039;}} をカーネルパラメータとして使い、{{ic|1=subvolid=&#039;&#039;objectid&#039;&#039;}} を {{ic|/etc/fstab}} のマウントオプションとして指定することもできます。&lt;br /&gt;
&lt;br /&gt;
==== デフォルトのサブボリュームを設定する ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|btrfs subvolume set-default}} でデフォルトのサブボリュームを変更すると、{{ic|1=subvolid=0}} マウントオプションを使わない限り、ファイルシステムのトップレベルがアクセスできなくなります。参照: [https://btrfs.wiki.kernel.org/index.php/SysadminGuide Btrfs Wiki Sysadmin Guide]。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|1=subvol=}} マウントオプションが指定されていない場合、デフォルトのサブボリュームがマウントされます。&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume set-default &#039;&#039;subvolume-id&#039;&#039; /.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;サンプル:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{hc|# btrfs subvolume list .|&lt;br /&gt;
ID 258 gen 9512 top level 5 path root_subvolume&lt;br /&gt;
ID 259 gen 9512 top level 258 path home&lt;br /&gt;
ID 260 gen 9512 top level 258 path var&lt;br /&gt;
ID 261 gen 9512 top level 258 path usr&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume set-default 258 .&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;リセット:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume set-default 0 .&lt;br /&gt;
&lt;br /&gt;
==== スナップショット ====&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Snapshots Btrfs Wiki SysadminGuide#Snapshots] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
スナップショットを作成するには:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume snapshot &#039;&#039;source&#039;&#039; [&#039;&#039;dest&#039;&#039;/]&#039;&#039;name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
スナップショットは再帰的ではありません、つまりサブボリューム内にある全てのサブボリュームはスナップショットでは空のディレクトリになります。&lt;br /&gt;
&lt;br /&gt;
==== 送信/受信 ====&lt;br /&gt;
&lt;br /&gt;
サブボリュームは {{ic|send}} コマンドを使って標準出力やファイルに送信することができます。Btrfs の {{ic|receive}} コマンドにパイプで渡すことで非常に便利に使うことが可能です。例えば、{{ic|/root_backup}} という名前のスナップショットを {{ic|/backup}} に送信するには以下のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 # btrfs send /root_backup | btrfs receive /backup&lt;br /&gt;
&lt;br /&gt;
送信するスナップショットは読み取り専用である必要があります。上記のコマンドは外部デバイスにサブボリュームをコピーするのにも使えます (例えば上の {{ic|/backup}} を USB ディスクにマウント)。&lt;br /&gt;
&lt;br /&gt;
また、スナップショットの差分だけを送信することも可能です。例えば、上記のように {{ic|root_backup}} のコピーを送信したことがある場合、{{ic|root_backup_new}} という名前の読み取り専用のスナップショットを新しく作成してから、増加差分だけを {{ic|/backup}} に送信するには:&lt;br /&gt;
&lt;br /&gt;
 # btrfs send -p /root_backup /root_backup_new | btrfs receive /backup&lt;br /&gt;
&lt;br /&gt;
これで {{ic|root_backup_new}} という名前の新しいサブボリュームが {{ic|/backup}} に作成されます。&lt;br /&gt;
&lt;br /&gt;
差分バックアップをしたり自動的にバックアップを行うツールは [https://btrfs.wiki.kernel.org/index.php/Incremental_Backup Btrfs Wiki&#039;s Incremental Backup] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== デフラグメンテーション ===&lt;br /&gt;
&lt;br /&gt;
Btrfs はオンラインデフラグをサポートしています。root フォルダのメタデータをデフラグするには、次を実行してください:&lt;br /&gt;
 # btrfs filesystem defragment /&lt;br /&gt;
上のコマンドはファイルシステム全体のデフラグを&#039;&#039;行いません&#039;&#039;。詳しくは、btrfs wiki の[https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#Defragmenting_a_directory_doesn.27t_work このページ]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
ファイルシステム全体をデフラグするには、次を実行してください:&lt;br /&gt;
 # btrfs filesystem defragment -r -v /&lt;br /&gt;
&lt;br /&gt;
=== 圧縮 ===&lt;br /&gt;
&lt;br /&gt;
Btrfs は透過圧縮をサポートしています、これはパーティション上の全てのファイルが自動的に圧縮されることを意味します。このことはファイルの容量を減らすだけでなく、特に [https://www.phoronix.com/scan.php?page=article&amp;amp;item=btrfs_lzo_2638&amp;amp;num=1 lzo アルゴリズム] を使っている場合は [https://www.phoronix.com/scan.php?page=article&amp;amp;item=btrfs_compress_2635&amp;amp;num=1 パフォーマンスを向上させる] こともできます。&lt;br /&gt;
&lt;br /&gt;
圧縮は {{ic|1=compress=zlib}} か {{ic|1=compress=lzo}} マウントオプションを使って有効にします。マウントオプションが追加された後に作成・変更されたファイルだけに圧縮が適用されます。ただし、{{ic|btrfs filesystem defragment -c&#039;&#039;alg&#039;&#039;}} コマンドを使うことで既存のファイルに圧縮を適用することも簡単にできます (例えば ext3/4 から変換した後)。{{ic|&#039;&#039;alg&#039;&#039;}} は {{ic|zlib}} または {{ic|lzo}} のどちらかに置き換えてください。{{ic|lzo}} を使ってファイルシステム全体を再圧縮するには、次のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 # btrfs filesystem defragment -r -v -clzo /&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|compress}} マウントオプションを使わずファイルごとに圧縮を有効にすることも可能です。ファイルに {{ic|chattr +c}} を適用するだけです。ディレクトリに適用した場合、新しいファイルは自動的に圧縮されます。}}&lt;br /&gt;
&lt;br /&gt;
空の Btrfs パーティションに Arch をインストールする際に、[[ビギナーズガイド#ドライブの準備|ドライブの準備]]をした後 {{ic|compress}} オプションを設定してください。他のターミナルに切り替えて ({{ic|Ctrl+Alt+number}})、次のコマンドを実行してください:&lt;br /&gt;
 # mount -o remount,compress=lzo /mnt/target&lt;br /&gt;
&lt;br /&gt;
インストールが完了した後に、{{ic|/etc/[[fstab]]}} の root ファイルシステムのマウントオプションに {{ic|1=compress=lzo}} を加えて下さい。&lt;br /&gt;
&lt;br /&gt;
=== チェックポイントインターバル ===&lt;br /&gt;
Linux 3.12 から、チェックポイントインターバルをデフォルトの30秒から変えることができるようになっています。{{ic|/etc/fstab}} の btrfs パーティションに {{ic|commit}} マウントフラグを追加してください。&lt;br /&gt;
&lt;br /&gt;
 LABEL=arch64 / btrfs defaults,noatime,compress=lzo,commit=120 0 0&lt;br /&gt;
&lt;br /&gt;
=== パーティショニング ===&lt;br /&gt;
&lt;br /&gt;
Btrfs はデータストレージデバイス全体を占領して [[Master Boot Record|MBR]] や [[GUID Partition Table|GPT]] パーティショニングスキームを置き換えることができます。[[#サブボリューム|サブボリューム]]を使ってパーティションを模すことが可能です。ディスクを一つしか使っていない場合、このアプローチにはいくつか制限があります:&lt;br /&gt;
&lt;br /&gt;
* [[fstab|マウントポイント]]によって異なる[[ファイルシステム]]を使うことはできません&lt;br /&gt;
* Btrfs は[[スワップ#スワップファイル|スワップファイル]]をサポートしていないので[[スワップ|スワップ領域]]を使うことができません。[[スワップ#スワップパーティション|スワップパーティション]]も作れません。ハイバネーションイメージはスワップ領域に保存されるので、ハイバネーション/レジュームも使えません&lt;br /&gt;
* [[Unified Extensible Firmware Interface|UEFI]] を使って起動できません&lt;br /&gt;
&lt;br /&gt;
既存のパーティションテーブルを Btrfs で上書きするには、次のコマンドを実行してください:&lt;br /&gt;
 # mkfs.btrfs /dev/sdX&lt;br /&gt;
{{ic|/dev/sdaX}} を指定するとパーティションスキーム全体を置き換える代わりに既存のパーティションがフォーマットされます。&lt;br /&gt;
&lt;br /&gt;
[[Master Boot Record|MBR]] のデータストレージデバイスと同じ方法で[[ブートローダー]]をインストールしてください。例えば [[GRUB]] なら:&lt;br /&gt;
 # grub-install --recheck /dev/sdX&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|btrfs subvolume set-default}} コマンドを使ってデフォルトのサブボリュームをトップレベル (ID 0) 以外に変更すると GRUB を破壊するおそれがあります。リセットするには [[#デフォルトのサブボリュームを設定する]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== Scrub ===&lt;br /&gt;
&lt;br /&gt;
Btrfs の scrub はオンラインのファイルシステムチェックツールです。ファイルシステム上の全てのデータとメタデータを読み込んで、チェックサムと RAID ストレージの重複コピーを使用してデータに破損がないか確認して修復を行います。&lt;br /&gt;
&lt;br /&gt;
 # btrfs scrub start /&lt;br /&gt;
 # btrfs scrub status /&lt;br /&gt;
&lt;br /&gt;
{{Warning|scrub プロセスが動作しているとシステムはサスペンドできません、詳しくは [http://comments.gmane.org/gmane.comp.file-systems.btrfs/33106 このスレッド] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
==== systemd サービス ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|btrfs-progs}} パッケージには特定のマウントポイントをひと月毎にスクラブする {{ic|btrfs-scrub@.timer}} ユニットが付属しています。エンコードしたパスを指定してタイマーを[[有効化]]してください。例えば {{ic|/}} なら {{ic|btrfs-scrub@-.timer}} を、{{ic|/home}} なら {{ic|btrfs-scrub@home.timer}} を使います。&lt;br /&gt;
&lt;br /&gt;
{{ic|btrfs-scrub@.service}} を[[起動]]することで手動でスクラブを実行することもできます (同じくエンコードしたパスを指定してください)。{{ic|btrfs scrub}} コマンドを手動で実行するのとは違って systemd サービスを使うことで [[systemd#Journal|journal]] にログが記録されます。&lt;br /&gt;
&lt;br /&gt;
=== Balance ===&lt;br /&gt;
&lt;br /&gt;
balance はファイルシステム上の全てのデータをアロケータに再度流し込みます。デバイスが追加されたり削除された場合にファイルシステム上のデータを再配置するために実行します。balance はデバイスが故障した場合に、冗長な RAID レベルのコピーを再生成します。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|btrfs-progs}}-3.12 から&#039;&#039;バランシング&#039;&#039;はバックグラウンドプロセスになりました - 詳しくは {{ic|man 8 btrfs-balance}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
 # btrfs balance start /&lt;br /&gt;
 # btrfs balance status /&lt;br /&gt;
&lt;br /&gt;
=== SSD TRIM ===&lt;br /&gt;
&lt;br /&gt;
{{ic|discard}} オプションを使ってマウントした場合、Btrfs ファイルシステムは TRIM コマンドをサポートしている SSD ドライブの空きブロックを自動的に開放します。&lt;br /&gt;
&lt;br /&gt;
SATA 3.1 よりも古い場合、TRIM コマンドは同期的で、コマンドが実行されている間は全ての I/O がブロックされます。ファイルシステムの同期などによって、プチフリーズが発生する可能性があります。このような場合、{{ic|discard}} を使用する代わりに定期的な trim を有効にすることができます:&lt;br /&gt;
&lt;br /&gt;
 # systemctl enable fstrim.timer&lt;br /&gt;
&lt;br /&gt;
SATA バージョンを確認するには次を実行:&lt;br /&gt;
&lt;br /&gt;
 # smartctl --info /dev/sd&#039;&#039;X&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳しくは[[ソリッドステートドライブ#TRIM]] を参照。&lt;br /&gt;
&lt;br /&gt;
=== 重複排除 ===&lt;br /&gt;
&lt;br /&gt;
コピーオンライトを使用した場合、Btrfs は実際にはデータをコピーしないでファイルやサブボリュームをコピーできます。ファイルに変更が加えられたときに新しい本当のコピーが作成されます。重複排除はさらに共通部分が存在するデータブロックを認識して、コピーオンライトと同じようにエクステントにまとめてしまいます。&lt;br /&gt;
&lt;br /&gt;
Btrfs パーティションの重複排除に使用するツールについては [https://btrfs.wiki.kernel.org/index.php/Deduplication#Batch 上流の Wiki エントリ] を見てください。{{Pkg|duperemove}}, {{aur|bedup}}, &#039;&#039;btrfs-dedup&#039;&#039; などが存在します。{{pkg|rmlint}} あるいは {{aur|jdupes}} などを使うことでファイルベースでデータの重複排除を行うこともできます。&lt;br /&gt;
&lt;br /&gt;
Btrfs の開発者はインバンド (同期的・インライン) 重複排除に取り組んでおり、新しいデータがファイルシステムに書き込まれたときに重複排除が実行されます。現在のところ実験的な機能としてツリー外で開発されています。新しい機能をテストしてみたい場合は [https://btrfs.wiki.kernel.org/index.php/User_notes_on_dedupe カーネルの wiki ページ] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 既知の問題 ==&lt;br /&gt;
&lt;br /&gt;
試す前に、いくつかの制限を知っておく必要があります。&lt;br /&gt;
&lt;br /&gt;
=== 暗号化 ===&lt;br /&gt;
&lt;br /&gt;
Btrfs には暗号化のサポートが組み込まれていませんが、この [https://lwn.net/Articles/700487/] は将来的に提供される可能性があります。 ユーザーは、 {{ic|mkfs.btrfs}} を実行する前にパーティションを暗号化できます。 [https://wiki.archlinux.jp/index.php/Dm-crypt/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E5%85%A8%E4%BD%93%E3%81%AE%E6%9A%97%E5%8F%B7%E5%8C%96#Btrfs_.E3.82.B5.E3.83.96.E3.83.9C.E3.83.AA.E3.83.A5.E3.83.BC.E3.83.A0.E3.81.A8.E3.82.B9.E3.83.AF.E3.83.83.E3.83.97 dm-crypt/スワップを使用したsystem#Btrfsサブボリューム全体の暗号化] を参照してください。&lt;br /&gt;
&lt;br /&gt;
既存の Btrfs ファイルシステムは [[EncFS]] や [[TrueCrypt]] のようなものを使用できますが、おそらく Btrfs の機能の一部はありません。&lt;br /&gt;
&lt;br /&gt;
=== TLP ===&lt;br /&gt;
&lt;br /&gt;
TLP を使用するには、ファイルシステムの破損を回避するために特別な予防措置が必要です。 詳細については、 [[TLP#Btrfs|TLP の Btrfs セクション]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== btrfs チェックの問題 ===&lt;br /&gt;
ツール{{ic|btrfs check}} には既知の問題があるため、セクション [[#btrfscheck]] をよく参照してから実行してください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== パーティションレス Btrfs ディスク ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* ほとんどのユーザーはこのタイプのセットアップを望まず、代わりに通常のパーティションにBtrfsをインストールする必要があります。 さらに、 GRUB はパーティションレスディスクへのインストールを強くお勧めしません。&lt;br /&gt;
* {{Pkg|grub}} 2.04 以降、GRUB の {{ic|core.img}} は大きすぎてBtrfsVBRに収まりません。 {{Bug|63656}} を参照してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Btrfs は、 [[#Subvolumes|subvolumes]] を使用してパーティションをシミュレートし、 [[MBR]] または [[GPT]] パーティションスキームを置き換えて、データストレージデバイス全体を占有できます。 ただし、別の方法で作成された既存の [https://wiki.archlinux.jp/index.php/%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0 パーティション] で [[#File systemcreation|create a Btrfsfilesystem]] を実行するためにパーティションレスセットアップを使用する必要はありません。 パーティションレスのシングルディスクセットアップには、いくつかの制限があります。&lt;br /&gt;
&lt;br /&gt;
* 他の [[ファイルシステム]] を同じディスク上の別のパーティションに配置することはできません。&lt;br /&gt;
* バージョン5.0より前の Linux カーネルを使用している場合、 [[スワップ|スワップ領域]] は使用できません。 Btrfs は[https://wiki.archlinux.jp/index.php/%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97#.E3.82.B9.E3.83.AF.E3.83.83.E3.83.97.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB スワップファイル] 5.0 より前をサポートしておらず、 [https://wiki.archlinux.jp/index.php/%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97#.E3.82.B9.E3.83.AF.E3.83.83.E3.83.97.E3.83.91.E3.83.BC.E3.83.86.E3.82.A3.E3.82.B7.E3.83.A7.E3.83.B3 スワップパーティション] を作成する場所もありませんでした。&lt;br /&gt;
* [[UEFI]] を使用して起動することはできません。&lt;br /&gt;
&lt;br /&gt;
既存のパーティションテーブルを Btrfs で上書きするには、次のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.btrfs /dev/sd&#039;&#039;X&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
たとえば、 {{ic|/dev/sda1}} ではなく {{ic|/dev/sda}} を使用します。後者は、パーティショニングスキーム全体を置き換えるのではなく、既存のパーティションをフォーマットします。ルートパーティションは Btrfs なので、 {{ic|btrfs}} がカーネルに組み込まれていることを確認するか、 {{ic|btrfs}} を [[mkinitcpio.conf#MODULES]] と [https://wiki.archlinux.jp/index.php/Mkinitcpio#.E3.82.A4.E3.83.A1.E3.83.BC.E3.82.B8.E4.BD.9C.E6.88.90.E3.81.A8.E3.82.A2.E3.82.AF.E3.83.86.E3.82.A3.E3.83.99.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3 initramfsを再生成する] に入れてください。&lt;br /&gt;
&lt;br /&gt;
[https://wiki.archlinux.jp/index.php/Arch_%E3%83%96%E3%83%BC%E3%83%88%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9#.E3.83.96.E3.83.BC.E3.83.88.E3.83.AD.E3.83.BC.E3.83.80.E3.83.BC ブートローダ] を、 [https://wiki.archlinux.jp/index.php/%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0#Master_Boot_Record マスターブートレコード] を備えたデータ記憶装置の場合と同様にインストールします。[[Syslinux#手動インストール]] または [[GRUB/Tips and tricks#パーティションまたはパーティションレスディスクへのインストール]] を参照してください。 {{ic|/sysrootをマウントできませんでした。}} が原因でカーネルがブートしない場合は、 {{ic|/etc/default/grub}} に {{ic|1=GRUB_PRELOAD_MODULES=&amp;quot;btrfs&amp;quot;}} を追加して、 grub 設定 ([[GRUB#メインの構成ファイルを生成する]]) を生成してください。&lt;br /&gt;
&lt;br /&gt;
=== Ext3/4 から Btrfs への変換 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|btrfs メーリングリストには、不完全/破壊/破損した変換に関する多くの報告があります。 失いたくないデータや &#039;&#039;作業中&#039;&#039; のバックアップがあることを確認してください。 詳細については、 btrfswiki の [https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3Conversion fromExt3] を参照してください。}}&lt;br /&gt;
{{Warning| btrfs-progs 5.6.1 以前にはバグがあり、最後のブロックグループのサイズが間違った btrfs ファイルシステムが生成され、新しく変換されたbtrfsをマウントできなくなります。 このバグは、 [https://github.com/kdave/btrfs-progs/commit/0ff7a9b5210723bd4ad0d9d78dbbb18ee8fdd2b1#diff-31168275dcaac634489082b54c4c66d0 thiscommit] の btrfs-progs5.7 で修正されています。 btrfs-progs5.7-1 以降の btrfs-convert を使用してください。}}&lt;br /&gt;
&lt;br /&gt;
インストール CD から起動し、次の手順で変換します:&lt;br /&gt;
&lt;br /&gt;
 # btrfs-convert /dev/&#039;&#039;partition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
パーティションをマウントし、ファイルをチェックして変換をテストします。 変更を反映するために、必ず {{ic|/etc/fstab}} を変更してください( &#039;&#039;&#039;type&#039;&#039;&#039; を {{ic|btrfs}} に、 &#039;&#039;&#039;fs_passno&#039;&#039;&#039; [最後のフィールド] を {{ic|0}} Btrfs は起動時にファイルシステムチェックを行わないため)。 また、パーティションの UUID が変更されることに注意してください。したがって、 UUID を使用する場合は、それに応じて fstab を更新してください。 {{ic|chroot}} をシステムにインストールし、 GRUB メニューリストを再構築します ([[既存の Linux からインストール]] および [[GRUB]] の記事を参照)。 ルートファイルシステムを変換する場合、 chroot されたまま {{ic|mkinitcpio -p linux}} を実行して initramfs を再生成しないと、システムが正常に起動しません。 &#039;unknown filesystem&#039; で grub でスタックした場合は、 {{ic|grub-install /dev/&#039;&#039;partition&#039;&#039;}} で grub を再インストールし、構成も再生成してください {{ic|grub-mkconfig -o /boot/grub/grub.cfg}}&lt;br /&gt;
&lt;br /&gt;
{{Note|新しく変換された btrfs にファイルをマウントまたは書き込みできないなどの問題がある場合は、バックアップサブボリューム {{ic|/ext2_saved}} がまだ存在する限り、常にロールバックするオプションがあります。 {{ic|btrfs-convert -r /dev/&#039;&#039;partition&#039;&#039;}} コマンドを使用してロールバックします。これにより、新しく変換された btrfs ファイルシステムへの変更が破棄されます。}}&lt;br /&gt;
&lt;br /&gt;
問題がないことを確認したら、バックアップ {{ic|ext2_saved}} サブボリュームを削除して変換を完了します。 これがないと ext3/4 に戻れないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume delete /ext2_saved&lt;br /&gt;
&lt;br /&gt;
最後に [[#Balance|balance]] ファイルシステムでスペースを再利用します。&lt;br /&gt;
&lt;br /&gt;
以前にインストールされた一部のアプリケーションは、 Btrfs に適合させる必要があることに注意してください。 特に [[TLP#Btrfs]] はファイルシステムの破損を避けるために特別な注意が必要です。&lt;br /&gt;
&lt;br /&gt;
=== チェックサムのハードウェアアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
Btrfs のチェックサムでハードウェアアクセラレーションが使われているかどうか確認するには:&lt;br /&gt;
{{hc|&amp;lt;nowiki&amp;gt;$ dmesg | grep crc32c&amp;lt;/nowiki&amp;gt;|&amp;lt;nowiki&amp;gt;Btrfs loaded, crc32c=crc32c-intel&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;nowiki&amp;gt;crc32c=crc32c-generic&amp;lt;/nowiki&amp;gt;}} と表示された場合、ルートパーティションが Btrfs であるため、ハードウェアアクセラレーションを使うにはカーネルに {{ic|crc32c-intel}} を組み込む必要があります。[[mkinitcpio.conf]] に {{ic|crc32c-intel}} を追加するだけでは機能しません。&lt;br /&gt;
&lt;br /&gt;
=== ファイルシステム破損のリカバリ ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|btrfs check}} ツールには既知の問題があります。セクション [[Btrfs#btrfs check|btrfs check]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;btrfs-check&#039;&#039; はマウントされているファイルシステムでは使えません。ライブ USB から起動しないで &#039;&#039;btrfs-check&#039;&#039; を使えるようにするには、初期 RAM ディスクに以下のように追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/mkinitcpio.conf|output=&lt;br /&gt;
BINARIES=&amp;quot;/usr/bin/btrfs&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定したら [[mkinitcpio]] を使って initramfs を再生成してください。&lt;br /&gt;
&lt;br /&gt;
起動に問題が発生したら、ユーティリティを使って修復することができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|fsck でキャッシュを無効化する必要がある場合、起動後に一定時間フリーズするのは通常の動作です (btrfs-transaction がハングアップしているというメッセージがコンソールに表示されます)。しばらく経てばシステムは復帰します。}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://btrfs.wiki.kernel.org/index.php/Btrfsck Btrfs Wiki] を参照。&lt;br /&gt;
&lt;br /&gt;
=== スナップショットから起動する ===&lt;br /&gt;
&lt;br /&gt;
スナップショットをブートするためには、セクション [[Btrfs#サブボリュームをルートとしてマウントする|サブボリュームをルートとしてマウントする]] で説明されているように、サブボリュームをルートパーティションとしてマウントする場合と同じ手順が適用されます。スナップショットはサブボリュームのようにマウントできます。&lt;br /&gt;
&lt;br /&gt;
* [[GRUB]] を使用している場合、{{Pkg|grub-btrfs}} または {{AUR|grub-btrfs-git}} を使用して構成ファイルを再生成すると、自動的に btrfs スナップショットをブートメニューに取り込むことができます。&lt;br /&gt;
* [[rEFInd]] を使用している場合は、{{ic|refind-btrfs.service}} を [[systemd#ユニットを使う|有効]] にして開始後に、{{AUR|refind-btrfs}} を使用してブートメニューに btrfs スナップショットを自動的に取り込むことができます。&lt;br /&gt;
&lt;br /&gt;
=== systemd-nspawn で Btrfs サブボリュームを使う ===&lt;br /&gt;
&lt;br /&gt;
[[Systemd-nspawn#Btrfs のサブボリュームをコンテナのルートとして使う]]や [[Systemd-nspawn#コンテナの一時的な Btrfs スナップショットを使う]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== アクセス時間のメタデータ更新を削減 ===&lt;br /&gt;
&lt;br /&gt;
Btrfs は書き込み時にコピーの性質を持つため、ファイルにアクセスするだけでメタデータのコピーと書き込みを開始します。アクセス時間の更新頻度を減らすと、この予期しないディスク使用がなくなり、パフォーマンスが向上する可能性があります。使用可能なオプションについては、 [[fstab#atime オプション|atime オプション]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
一般的なトラブルシューティングについては [https://btrfs.wiki.kernel.org/index.php/Problem_FAQ Btrfs Problem FAQ] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== GRUB ===&lt;br /&gt;
&lt;br /&gt;
==== パーティションオフセット ====&lt;br /&gt;
&lt;br /&gt;
[[GRUB]] は Btrfs パーティションを起動することができますが、そのモジュールは ext4 などよりも大きく、&#039;&#039;grub-install&#039;&#039; によって作成される {{ic|core.img}} が MBR と最初のパーティションの間に収まらない可能性があります。GPT を使うか、最初のパーティションの前に数 MB の空きスペースを作ることでこの問題を解決できます。&lt;br /&gt;
&lt;br /&gt;
==== root が見つからない ====&lt;br /&gt;
&lt;br /&gt;
RAID セットアップから起動した時にエラー {{ic|1=error no such device: root}} が表示される場合、{{ic|/usr/share/grub/grub-mkconfig_lib}} を編集して {{ic|1=echo &amp;quot;  search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}&amp;quot;}} からクォートを削除してください。grub の設定を再生成すればエラーを出さずに起動できるはずです。&lt;br /&gt;
&lt;br /&gt;
=== BTRFS: open_ctree failed ===&lt;br /&gt;
&lt;br /&gt;
2014年11月現在、{{ic|mkinitcpio.conf}} で {{ic|btrfs}} フックを使用してマルチデバイスの Btrfs を使っている場合に以下のエラーが発生するというバグが [[systemd]] か [[mkinitcpio]] のどちらかに存在します:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
BTRFS: open_ctree failed&lt;br /&gt;
mount: wrong fs type, bad option, bad superblock on /dev/sdb2, missing codepage or helper program, or other error&lt;br /&gt;
&lt;br /&gt;
In some cases useful info is found in syslog - try dmesg|tail or so.&lt;br /&gt;
&lt;br /&gt;
You are now being dropped into an emergency shell.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/mkinitcpio.conf}} の {{ic|HOOKS}} 行から {{ic|btrfs}} を削除して代わりに {{ic|MODULES}} 行に {{ic|btrfs}} を追加することで解決します。修正を施したら {{ic|mkinitcpio -p linux}} で initramfs を再生成して (必要ならプリセットを調整します) 再起動してください。&lt;br /&gt;
&lt;br /&gt;
詳細は [https://bbs.archlinux.org/viewtopic.php?id=189845 フォーラムスレッド] や {{Bug|42884}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
デバイスが存在しない raid アレイをマウントしようとしたときも同じエラーが表示されます。その場合は {{ic|/etc/fstab}} に {{ic|degraded}} マウントオプションを追加してください。ルートパーティションがアレイ上にある場合、[[カーネルパラメータ]]に {{ic|1=rootflags=degraded}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== btrfs check ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|Btrfs はまだ開発途上であり、特に {{ic|btrfs check}} コマンドについては仕様が固まっていないので、{{ic|--repair}} スイッチを付けて {{ic|btrfs check}} を実行するときはあらかじめ Btrfs のドキュメントを読んでバックアップを作成することを強く推奨します。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-check btrfs check]&#039;&#039; コマンドを使うことでアンマウントされた Btrfs ファイルシステムをチェックしたり修復することが可能です。ただし、この修復ツールはまだ開発中であり、特定のファイルシステムエラーは修復することができません。&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://btrfs.wiki.kernel.org/index.php/Btrfsck Btrfsck] を参照。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* 公式サイト&lt;br /&gt;
** [https://btrfs.wiki.kernel.org/ Btrfs Wiki]&lt;br /&gt;
* パフォーマンス関連&lt;br /&gt;
** [https://superuser.com/questions/432188/should-i-put-my-multi-device-btrfs-filesystem-on-disk-partitions-or-raw-devices Btrfs on raw disks?]&lt;br /&gt;
** [http://comments.gmane.org/gmane.comp.file-systems.btrfs/19440 Varying leafsize and nodesize in Btrfs]&lt;br /&gt;
** [http://comments.gmane.org/gmane.comp.file-systems.btrfs/15646 Btrfs support for efficient SSD operation (data blocks alignment)]&lt;br /&gt;
** [https://btrfs.wiki.kernel.org/index.php/FAQ#Is_Btrfs_optimized_for_SSD.3F Is Btrfs optimized for SSDs?]&lt;br /&gt;
** Phoronix によるマウントオプションのベンチマーク&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=btrfs-mount-linux49 Linux 4.9]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=linux_314_btrfs Linux 3.14]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=linux_btrfs_311&amp;amp;num=1 Linux 3.11]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTM0OTU Linux 3.9]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=btrfs_linux37_mounts&amp;amp;num=1 Linux 3.7]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=linux_btrfs_options&amp;amp;num=1 Linux 3.2]&lt;br /&gt;
** [http://blog.erdemagaoglu.com/post/4605524309/lzo-vs-snappy-vs-lzf-vs-zlib-a-comparison-of Lzo vs. zLib]&lt;br /&gt;
* その他&lt;br /&gt;
** [http://www.funtoo.org/wiki/BTRFS_Fun Funtoo Wiki Btrfs Fun]&lt;br /&gt;
** [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTA0ODU Avi Miller presenting Btrfs] at SCALE 10x, January 2012.&lt;br /&gt;
** [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTA4Mzc Summary of Chris Mason&#039;s talk] from LFCS 2012&lt;br /&gt;
** [https://git.kernel.org/?p&amp;amp;#61;linux/kernel/git/torvalds/linux-2.6.git;a&amp;amp;#61;commit;h&amp;amp;#61;35054394c4b3cecd52577c2662c84da1f3e73525 Btrfs: stop providing a bmap operation to avoid swapfile corruptions] 2009-01-21&lt;br /&gt;
** [http://marc.merlins.org/perso/btrfs/post_2014-03-22_Btrfs-Tips_-Doing-Fast-Incremental-Backups-With-Btrfs-Send-and-Receive.html Doing Fast Incremental Backups With Btrfs Send and Receive]&lt;/div&gt;</summary>
		<author><name>0xVERS</name></author>
	</entry>
</feed>