<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://freebsd.seirios.org/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Share FreeBSD based information</title>
        <description></description>
        <link>https://freebsd.seirios.org/</link>
        <lastBuildDate>Sat, 11 Apr 2026 10:18:11 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://freebsd.seirios.org/lib/exe/fetch.php?media=logo.png</url>
            <title>Share FreeBSD based information</title>
            <link>https://freebsd.seirios.org/</link>
        </image>
        <item>
            <title>ファイルシステムの選び方 - [メリット] 14. ...</title>
            <link>https://freebsd.seirios.org/doku.php?id=install:%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E9%81%B8%E3%81%B3%E6%96%B9</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;ファイルシステムの選び方&quot;&gt;ファイルシステムの選び方&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
FreeBSD でハードディスク(またはSSD)を使用する場合、
UFS または ZFS のファイルシステムを選ぶことができます。
&lt;/p&gt;

&lt;p&gt;
UFS はその名の通り UNIX で使われてきた伝統的なファイルシステムの後継であり、
時代に合わせて扱える容量や性能を改善したファイルシステムです。
&lt;/p&gt;

&lt;p&gt;
ZFS はもともと Sun Microsystems が開発した次世代のファイルシステムで
多数のハードディスクを効率的に運用できるように設計されました。
&lt;/p&gt;

&lt;p&gt;
それぞれ次のようなメリット・デメリットがあります。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u9078\u3073\u65b9&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u9078\u3073\u65b9&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-670&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;ufs&quot;&gt;UFS&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;UFS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ufs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;671-685&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit3&quot; id=&quot;メリット&quot;&gt;メリット&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ZFS と比較して少ないメモリで動作する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 今までの UNIX のハードディスクの運用知見が活かせる&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; スナップショット機能 (*1)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ジャーナリング機能 (*1)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; POSIX.1e &lt;abbr title=&quot;Access Control List&quot;&gt;ACL&lt;/abbr&gt; サポート&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; NFS v4 &lt;abbr title=&quot;Access Control List&quot;&gt;ACL&lt;/abbr&gt; サポート&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; TRIM サポート&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
*1: 14.0 からスナップショットとジャーナリングの両方を同時に選択可能。14.0 より前の版ではどちらか一つのみ使用可能。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u30e1\u30ea\u30c3\u30c8&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u30e1\u30ea\u30c3\u30c8&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;686-1165&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit4&quot; id=&quot;デメリット&quot;&gt;デメリット&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ファイルシステムの容量はディスクパーティションに依存する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 冗長構成は GEOM またはハードウェア任せ&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; データのチェックサムがない&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; メタデータのチェックサムは 13.0 以降でサポート予定&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u30c7\u30e1\u30ea\u30c3\u30c8&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u30c7\u30e1\u30ea\u30c3\u30c8&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1166-1460&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;zfs&quot;&gt;ZFS&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ZFS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;zfs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1461-1475&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit6&quot; id=&quot;メリット1&quot;&gt;メリット&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; パーティションにとらわれずに柔軟にファイルシステムのサイズを変更できる&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 全てのデータ、メタデータがチェックサムで検証される&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 効率的なキャッシュ機能 (ARC: adaptive replacement cache)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ストライプ, ミラー, RAID-Z などの冗長構成をファイルシステムレベルでサポートしている&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; RAID-Z によるサイレントクラッシュ防止機能&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 圧縮機能&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; スナップショット機能&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; スナップショットからクローンを作成する機能&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 広大なディスク領域を管理できる(最大 16エクサ=2^64 バイトのファイルシステムが構築可能)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; スナップショットとクローンを合わせてルートファイルシステムを任意に切り替えられる (boot environment)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; NFS v4 &lt;abbr title=&quot;Access Control List&quot;&gt;ACL&lt;/abbr&gt; サポート&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; TRIM サポート&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u30e1\u30ea\u30c3\u30c8&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u30e1\u30ea\u30c3\u30c81&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1476-2388&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit7&quot; id=&quot;デメリット1&quot;&gt;デメリット&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; メモリ使用量が大きい (搭載メモリ 4GB 以上を推奨)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; キャッシュミス時のペナルティが大きい&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; UFS と扱いが大きく異なるため UFS の運用知見が通用しない&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; POSIX.1e &lt;abbr title=&quot;Access Control List&quot;&gt;ACL&lt;/abbr&gt; のサポートがない&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u30c7\u30e1\u30ea\u30c3\u30c8&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u30c7\u30e1\u30ea\u30c3\u30c81&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2389-2671&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit8&quot; id=&quot;どちらを選ぶべきか&quot;&gt;どちらを選ぶべきか&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
FreeBSD を動かすマシンの搭載メモリが少ない(4GB未満)ならば UFS を選ぶべきです。
ZFS を動かすこともできますが、おそらく期待するような性能は得られないでしょう。
&lt;/p&gt;

&lt;p&gt;
また、伝統的な UNIX のハードディスク管理に慣れており、
歴史的な経緯や過去の経験からあまり運用を変えたくないのであれば UFS を選択するべきです。
&lt;/p&gt;

&lt;p&gt;
アプリケーションに多くのメモリを割り当てたい場合も UFS の方が良いでしょう。
ZFS は ARC に大量のメモリを使用します。その分アプリケーションに割り当てられるメモリが
少なくなるため、例えば memcached サーバのような用途には UFS が適しています。
&lt;/p&gt;

&lt;p&gt;
メモリがそれなりに搭載できるならば(4GB〜)、ZFS を選ぶこともできます。
たとえハードディスクが1本しかなくても、ZFS のメリットが魅力的に思えるようならば
十分に ZFS を選ぶ理由になることでしょう。
例えば、圧縮機能はディスクアクセス量を減らし見た目のスループットを向上させます。
また、ARCにも圧縮されたデータが乗るため、見た目のキャッシュサイズも増大することになります。
&lt;/p&gt;

&lt;p&gt;
多数のハードディスク(3〜4本以上)を扱うならば、ZFS は魅力的な選択肢になるでしょう。
冗長構成を組んだ状態から任意にファイルシステムのサイズ割り当てを変えられるため、
より効率的にディスク容量を管理することができます。
&lt;/p&gt;

&lt;p&gt;
データベースのようにアプリケーションにも多くのメモリを割り当てかつ、
ハードディスクの管理を楽に行いたいような場合は一概にどちらが良いかを判断することはできません。
実際にベンチマークをとって選ぶべきだと思います。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u3069\u3061\u3089\u3092\u9078\u3076\u3079\u304d\u304b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u3069\u3061\u3089\u3092\u9078\u3076\u3079\u304d\u304b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;2672-&amp;quot;} --&gt;
&lt;!-- cachefile /home/www/freebsd.seirios.org/dokuwiki/data/cache/1/140c2ad871d4b5774ddddca1b9bd7fe3.xhtml used --&gt;
</description>
            <author>yuichiro@undisclosed.example.com (yuichiro)</author>
            <pubDate>Mon, 22 Apr 2024 00:45:08 +0000</pubDate>
        </item>
        <item>
            <title>10Gbps のパケット転送 - [FIB algorithm] </title>
            <link>https://freebsd.seirios.org/doku.php?id=os:10gbps_%E3%81%AE%E3%83%91%E3%82%B1%E3%83%83%E3%83%88%E8%BB%A2%E9%80%81</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;gbps_のパケット転送&quot;&gt;10Gbps のパケット転送&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
10Gbps の NIC を挿してパケット転送をなるべく高速に行う際のポイントについて列挙します。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;10Gbps \u306e\u30d1\u30b1\u30c3\u30c8\u8ee2\u9001&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;gbps_\u306e\u30d1\u30b1\u30c3\u30c8\u8ee2\u9001&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-169&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;fib_algorithm&quot;&gt;FIB algorithm&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
FreeBSD 13.0 から Fib の検索アルゴリズムが変わりました。
&lt;code&gt;options FIB_ALGO&lt;/code&gt; を付けてカーネルをビルドすると sysctl で次のように検索アルゴリズムを表示・選択できるようになります。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;net.route.algo.debug_level: 5
net.route.algo.inet.algo: bsearch4
net.route.algo.inet.algo_list: bsearch4, radix4_lockless, radix4
net.route.algo.inet6.algo: radix6_lockless
net.route.algo.inet6.algo_list: radix6_lockless, radix6
net.route.algo.fib_max_sync_delay_ms: 1000
net.route.algo.bucket_change_threshold_rate: 500
net.route.algo.bucket_time_ms: 50&lt;/pre&gt;

&lt;p&gt;
デフォルトで IPv4 はロックのかかるアルゴリズムになっていますので、経路表のエントリ数が多い(1万以上?)場合には lockless のアルゴリズムを選びましょう。
このあたりは、経路数、経路の更新頻度や通信量（経路表参照回数)に依存する部分なので、どれが良いとは一概に言えませんが、経路数が多いならば、bsearchよりRadix系を選択する方が良いことが多いと言えます。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Lockless: bsearch4, radix[46]_lockless&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Lockあり: radix[46]&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
なお、FreeBSD-13.2-RELEASE 及び、FreeBSD-14.0-RELEASEでは &lt;code&gt;Options FIB_ALGO&lt;/code&gt; は GENERIC カーネルに入っています。
&lt;/p&gt;

&lt;p&gt;
また、手元で確認した限りでは、FreeBSD-13.2以降は、IPv4 が bsearch4、IPv6ではradix6_locklessが標準となっています。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;FIB algorithm&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fib_algorithm&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;170-1669&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;rss_receive_side_scaling&quot;&gt;RSS (Receive Side Scaling)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Receive Side Scaling を有効にするには以下の全てを満たす必要があります。
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;  multi-queue を持つ NIC を用意すること&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;  該当ドライバが multi-queue を扱えること&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;  `Options  RSS` を付けてビルドしたカーネルであること&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;  sysctl net.isr.maxthreads に NICの持つ queue 以上の数を指定すること (-1 で CPU Core数と同じ数になります）&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;  sysctl net.isr.bindthreads=1 を指定すること&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
なお、FreeBSD-13.2-RELEASE/14.0-RELEASEでは、GENERIC kernelにはRSSは含まれていません。必要に応じてkernelをbuildする必要があります。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;RSS (Receive Side Scaling)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rss_receive_side_scaling&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1670-2353&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;tso_lro&quot;&gt;TSO &amp;amp; LRO&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
10Gbps の NIC にはほとんどの場合、TSO (TCP Segment Offload) や LRO (Large Receive Offload) の機能がついています。
これらは大きなデータを転送する際にパケットの分割、統合を NIC 側で行ってくれるものです。
ルータとして構築する場合、TSO/LROはoffにするべきです。中継段でのパケットの再構成、分割を行うことは望ましくありません。
&lt;/p&gt;

&lt;p&gt;
ifconfig のオプションに &lt;code&gt;-tso -lro -vlanhwtso&lt;/code&gt; を付けておきます。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;TSO &amp;amp; LRO&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tso_lro&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2354-2899&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;freebsd_12系以前の話&quot;&gt;FreeBSD 12系以前の話&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;code&gt;sysctl net.inet.ip.redirect=0&lt;/code&gt; を設定すると fast forwarding するようになり高速にパケット転送されます。
&lt;/p&gt;

&lt;p&gt;
これは、12系以前では net.inet.ip.redirect=1 （デフォルト）だと fast forwarding のコードパスを通らないためです。
&lt;/p&gt;

&lt;p&gt;
以下の commit でこの動作が変更されました。
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://cgit.freebsd.org/src/commit/?id=f389439f50fc4c27d15d3017b622270e25ba71c7&quot; class=&quot;urlextern&quot; title=&quot;https://cgit.freebsd.org/src/commit/?id=f389439f50fc4c27d15d3017b622270e25ba71c7&quot; rel=&quot;ugc nofollow&quot;&gt;https://cgit.freebsd.org/src/commit/?id=f389439f50fc4c27d15d3017b622270e25ba71c7&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
IPv6 を転送する時には同様に &lt;code&gt;net.inet6.ip6.redirect=0&lt;/code&gt; を設定します。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;FreeBSD 12\u7cfb\u4ee5\u524d\u306e\u8a71&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;freebsd_12\u7cfb\u4ee5\u524d\u306e\u8a71&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2900-&amp;quot;} --&gt;
&lt;!-- cachefile /home/www/freebsd.seirios.org/dokuwiki/data/cache/6/63f61ffec91d4565223232f2e8419ac9.xhtml used --&gt;
</description>
            <author>seirios@undisclosed.example.com (seirios)</author>
            <pubDate>Thu, 02 Nov 2023 10:22:16 +0000</pubDate>
        </item>
        <item>
            <title>FreeBSD マシンの引っ越し - [新しい環境で起動する] host id ...</title>
            <link>https://freebsd.seirios.org/doku.php?id=os:freebsd_%E3%83%9E%E3%82%B7%E3%83%B3%E3%81%AE%E5%BC%95%E3%81%A3%E8%B6%8A%E3%81%97</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;freebsd_マシンの引っ越し&quot;&gt;FreeBSD マシンの引っ越し&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://freebsd.seirios.org/doku.php?id=os:boot_environment&quot; class=&quot;wikilink1&quot; title=&quot;os:boot_environment&quot; data-wiki-id=&quot;os:boot_environment&quot;&gt;Boot Environment&lt;/a&gt; を使っているならば、新しいマシンへ簡単に環境を移すことができます。
&lt;/p&gt;

&lt;p&gt;
単に古いマシンの default 環境を新しいマシンの new 環境にコピーし、new 環境から起動するだけです。
&lt;/p&gt;

&lt;p&gt;
以下、古いマシンを old_host 、新しいマシンを new_host として、具体的な手順を示します。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;FreeBSD \u30de\u30b7\u30f3\u306e\u5f15\u3063\u8d8a\u3057&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;freebsd_\u30de\u30b7\u30f3\u306e\u5f15\u3063\u8d8a\u3057&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-426&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;セットアップ&quot;&gt;セットアップ&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
まず、新しいマシンに zfs root で FreeBSD をインストールします。
この時、古いマシンと同じバージョンの FreeBSD か、より新しいバージョンの FreeBSD を選びます。
新しいマシンの設定はネットワークに接続できる最小限の設定で構いません。
ports / pkg のインストールも不要です。
ユーザも作る必要はありません。（どのみち root で作業しますので）
&lt;/p&gt;

&lt;p&gt;
そして、古いマシンと新しいマシンをネットワークに接続します。
IP アドレスやデフォルトルート等は環境に合わせて、適切に設定してください。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;427-1126&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;コピー&quot;&gt;コピー&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
新しいマシン側では new 環境に対して zfs recv を行います。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;new_host# nc -l 9999 | zfs recv zroot/ROOT/new&lt;/pre&gt;

&lt;p&gt;
古いマシン側では default 環境にタグをつけた上でそれを zfs send します。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;old_host# zfs snapshot zroot/ROOT/default@current
old_host# zfs send -L -c zroot/ROOT/default@current | nc -N new_host 9999
old_host# zfs destroy zroot/ROOT/default@current&lt;/pre&gt;

&lt;p&gt;
最近の zfs では large blocks と圧縮をサポートしていますので、 zfs send に -L と -c をつけておくと良いでしょう。
&lt;/p&gt;

&lt;p&gt;
もし、ネットワークが不安定で一度の send で送れないようでしたら、 &lt;a href=&quot;https://freebsd.seirios.org/doku.php?id=os:zfs_tips#send_recv_のレジューム&quot; class=&quot;wikilink1&quot; title=&quot;os:zfs_tips&quot; data-wiki-id=&quot;os:zfs_tips&quot;&gt;send &amp;amp; recv のレジューム&lt;/a&gt;を試してみてください。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u30b3\u30d4\u30fc&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u30b3\u30d4\u30fc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1127-1900&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;古いホストを停止する&quot;&gt;古いホストを停止する&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
コピーが完了したら古いホストを停止します。新しいホストは設定を含めて何もかもが全く同じ状態で立ち上がります。
もし static な IPアドレスを設定していた場合、重複することになりますので、古いホストは停止しておくと良いでしょう。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;old_host# shutdown -p now&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u53e4\u3044\u30db\u30b9\u30c8\u3092\u505c\u6b62\u3059\u308b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u53e4\u3044\u30db\u30b9\u30c8\u3092\u505c\u6b62\u3059\u308b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1901-2313&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;新しい環境で起動する&quot;&gt;新しい環境で起動する&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
新しいホストでは new 環境から起動します。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;new_host# bectl activate new
new_host# shutdown -r now&lt;/pre&gt;

&lt;p&gt;
これで新しいマシンで設定も何もかもが同じ FreeBSD が起動します。
必要ならば IP アドレスを再設定してください。
&lt;/p&gt;

&lt;p&gt;
host id も同じになりますので、以下のコマンドで host id を再設定すると良いでしょう。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;new_host# /etc/rc.d/hostid reset&lt;/pre&gt;

&lt;p&gt;
host id が同じだと bridge(4) や tap(4) に割り当てる MAC アドレスが同じになります。
また、NFS のクライアント識別にも使用されており、古いホストと同時に接続するとエラーが表示されます。
zfs のプールにも import 中のシステムの情報として host id が書き込まれます。物理的なディスク装置を抜き出す時は export してからにしましょう。
古いホストを再起動する際にはこれらにも注意してください。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u65b0\u3057\u3044\u74b0\u5883\u3067\u8d77\u52d5\u3059\u308b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u65b0\u3057\u3044\u74b0\u5883\u3067\u8d77\u52d5\u3059\u308b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2314-&amp;quot;} --&gt;
&lt;!-- cachefile /home/www/freebsd.seirios.org/dokuwiki/data/cache/e/edc80fa1d544ca28a9d6d1a175556d3b.xhtml used --&gt;
</description>
            <author>yuichiro@undisclosed.example.com (yuichiro)</author>
            <pubDate>Wed, 09 Aug 2023 01:04:38 +0000</pubDate>
        </item>
        <item>
            <title>Bluetooth keyboard のセットアップ - [loader.conf の設定] </title>
            <link>https://freebsd.seirios.org/doku.php?id=tips:bluetooth_keyboard_%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;bluetooth_keyboard_のセットアップ&quot;&gt;Bluetooth keyboard のセットアップ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Bluetooth 経由で keyboard を使用する方法についてまとめます。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Bluetooth keyboard \u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bluetooth_keyboard_\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-136&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;loaderconf_の設定&quot;&gt;loader.conf の設定&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
USB の Bluetooth ドングルを指すと Bluetooth オーディオ向けにアイソクロナス転送 (isochronous transfer) の割り込みが非常にたくさん発生します。&lt;code&gt;systat -vmstat&lt;/code&gt; で xhci の割り込みを確認すると毎秒 1000〜2000 の割り込みが発生している様子を観察することができます。ehci の場合は比較的穏やかなので気にならないでしょう。
&lt;/p&gt;

&lt;p&gt;
Bluetooth オーディオを使わないのであれば、システムに余計な負荷をかけるだけですので、OFF にすることができます。
&lt;/p&gt;

&lt;p&gt;
FreeBSD 13.1 以降であれば、loader.conf に以下の設定を書き、再起動するとアイソクロナス転送を無効にできます。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;net.bluetooth.usb_isoc_enable=0&lt;/pre&gt;

&lt;p&gt;
sysctl でも設定できますが、その場合は sysctl で設定後に Bluetooth ドングルを挿してください。
既に挿してある場合には一度抜き差しする必要があります。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;loader.conf \u306e\u8a2d\u5b9a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;loaderconf_\u306e\u8a2d\u5b9a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;137-1162&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;暗号化の設定&quot;&gt;暗号化の設定&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
デフォルトの設定では Bluetooth の通信は暗号化されていません。うっかり root のパスワードをキーボードから打ち込み、それが盗聴されていた場合、パスワードの流出に繋がります。
&lt;/p&gt;

&lt;p&gt;
Bluetooth デバイスのデフォルトの設定は &lt;code&gt;/etc/defaults/bluetooth.device.conf&lt;/code&gt; にあります。これを使用するデバイス毎に設定を上書きすることができます。
&lt;/p&gt;

&lt;p&gt;
Bluetooth のドングルが ubt0 として認識されている場合、&lt;code&gt;/etc/bluetooth/ubt0.conf&lt;/code&gt; を作成して、以下の設定を書き込みます。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;authentication_enable=&amp;quot;YES&amp;quot;
discoverable=&amp;quot;NO&amp;quot;
encryption_mode=&amp;quot;P2P&amp;quot;&lt;/pre&gt;

&lt;p&gt;
この例では認証を有効にして、ホストアダプタを検出されないように設定し、データ通信を暗号化します。
&lt;/p&gt;

&lt;p&gt;
もし、Bluetoothドングルが複数ある場合にはその分のファイル (ubt1.conf, ubt2.conf, …) を作成します。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u6697\u53f7\u5316\u306e\u8a2d\u5b9a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u6697\u53f7\u5316\u306e\u8a2d\u5b9a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1163-2163&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;デーモン起動&quot;&gt;デーモン起動&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Bluetooth キーボードを使うために必要なデーモンを起動します。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;service bthidd enable
service bthidd start
service hcsecd enable
service hcsecd start&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u30c7\u30fc\u30e2\u30f3\u8d77\u52d5&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u30c7\u30fc\u30e2\u30f3\u8d77\u52d5&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2164-2382&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;bluetooth-config&quot;&gt;bluetooth-config&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Bluetooth のペアリングを簡単に行うためのスクリプトが FreeBSD 12.1 から用意されています。rootで &lt;code&gt;bluetooth-config scan&lt;/code&gt; を実行すると、ペアリングモードのデバイスを検索し、対話的に必要な設定を行ってくれます。
&lt;/p&gt;

&lt;p&gt;
以下に動作例を示します。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;予め bluetooth キーボードをペアリングモードにしておく&amp;gt;

# bluetooth-config scan
Scanning for new Bluetooth devices (Attempt 1 of 5) ... done.
Found 2 new bluetooth devices (now scanning for names):
[ 1] b8:f6:b1:00:e7:97  &amp;quot;AppleWirelessKeyboard&amp;quot; ()
[ 2] 28:c1:3c:6e:ce:2f  &amp;quot;AQUOS-4KTVJ17&amp;quot; ()
Select device to pair with [1-2, or 0 to rescan]: &amp;lt;1 を入力&amp;gt;

Adding device b8:f6:b1:00:e7:97 to /etc/bluetooth/hosts.
Enter friendly name. [AppleWirelessKeyboard]:  &amp;lt;リターンキー入力&amp;gt;
Notice: Using sanitized name&amp;quot;AppleWirelessKeyboard&amp;quot; in /etc/bluetooth/hosts.

Writing pairing information description block to /etc/bluetooth/hcsecd.conf.
(To get PIN, put device in pairing mode first.)
Enter PIN [nopin]: &amp;lt;pin 番号入力&amp;gt;
Stopping hcsecd.
Waiting for PIDS: 3027.
Starting hcsecd.

&amp;lt;ここで bluetooth キーボードから pin を入力しリターンキーを押す&amp;gt;

This device provides human interface device services.
Set it up? [yes]: &amp;lt;リターンキー入力&amp;gt;
syntax error in line 1
Writing HID descriptor block to /etc/bluetooth/bthidd.conf ... success.
To re-read its config, bthidd must be restarted.
Warning: If a Bluetooth keyboard is being used, the connectionmight be lost.
It can be manually restarted later with
 service bthidd restart
Restart bthidd now? [yes]: &amp;lt;リターンキー入力&amp;gt;
Stopping bthidd.
Waiting for PIDS: 1813.
Starting bthidd.&lt;/pre&gt;

&lt;p&gt;
もし、エラーが発生した場合は &lt;code&gt;bluetooth-config scan&lt;/code&gt; を再度実行する、もしくは &lt;code&gt;bthidd&lt;/code&gt; や &lt;code&gt;hcsecd&lt;/code&gt; を再起動するなどしてください。機器との相性によってはこれらを複数回行うこともあるかもしれません。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;bluetooth-config&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bluetooth-config&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2383-4423&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;接続確認&quot;&gt;接続確認&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Bluetooth ドングルが ubt0 で認識されている場合、以下のコマンドで接続を確認できます。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ hccontrol -n ubt0hci read_connection_list
Remote BD_ADDR    Handle Type Mode Role Encrypt Pending Queue State
AppleWireless_        71  ACL    2 MAST     P2P       0     0 OPEN&lt;/pre&gt;

&lt;p&gt;
Encrypt が P2P になっていれば、データ通信が暗号化されています。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u63a5\u7d9a\u78ba\u8a8d&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u63a5\u7d9a\u78ba\u8a8d&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;4424-&amp;quot;} --&gt;
&lt;!-- cachefile /home/www/freebsd.seirios.org/dokuwiki/data/cache/d/db71ff2c610df9d1aa2e8b1eb0343b34.xhtml used --&gt;
</description>
            <author>yuichiro@undisclosed.example.com (yuichiro)</author>
            <pubDate>Fri, 07 Apr 2023 12:28:29 +0000</pubDate>
        </item>
        <item>
            <title>open-vm-tools の役割 - open-vm-tools の役割を追加した</title>
            <link>https://freebsd.seirios.org/doku.php?id=trouble:vmware_%E3%81%A7%E3%83%9E%E3%82%A6%E3%82%B9%E3%82%AB%E3%83%BC%E3%82%BD%E3%83%AB%E3%81%8C%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%84</link>
            <description>
&lt;p&gt;
VMware Workstation/Fusion などの VMware 上の仮想マシンに FreeBSD をインストールした場合には、VMware 用の以下のパッケージもインストールしてください。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; VMware 環境でマウスカーソルが動かない問題は、これをインストールしていないためです。&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ sudo pkg install xf86-input-vmmouse
$ sudo pkg install xf86-video-vmware
$ sudo pkg install open-vm-tools&lt;/pre&gt;

&lt;p&gt;
VMware Fusion 12.2.4 (20071091) では、上記のインストールのみで動作するようになりましたが、他のバージョンあるいは Player では何らかの設定ファイルに設定の追加・変更などが必要になることがあるかもしれません。
&lt;/p&gt;

&lt;h3 class=&quot;sectionedit1&quot; id=&quot;open-vm-tools_の役割&quot;&gt;open-vm-tools の役割&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
上記のパッケージのうち、open-vm-tools はインストールしなくても X Window System は正しく動作します。
しかし、open-vm-tools は以下の機能を有しているので、インストールすることをお勧めします。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;open-vm-tools \u306e\u5f79\u5272&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;open-vm-tools_\u306e\u5f79\u5272&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;731-1026&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit2&quot; id=&quot;balloon_ドライバ&quot;&gt;balloon ドライバ&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
VMWare のホストは、ゲスト &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt; がメモリを要求すると確保します。しかし、ホストからはゲストでメモリが不要になったことを知ることができません。balloon ドライバは、不要になったメモリ領域をホストに伝え、ホスト側でメモリを解放できるようにします。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ゲスト &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt; およびその上で動作するアプリケーションが使用するメモリ量が大幅に増減する場合、不要なメモリがホストに返却されるため、ホストおよび他に動作しているゲスト &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt; が恩恵を受ける可能性が考えられます。&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;balloon \u30c9\u30e9\u30a4\u30d0&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;balloon_\u30c9\u30e9\u30a4\u30d0&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1027-1705&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit3&quot; id=&quot;vmware-user_デーモン&quot;&gt;vmware-user デーモン&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
vmware-user デーモンは、仮想マシンのイベントをゲスト OSに送ったり、その逆を行うものです。仮想マシンのウィンドウサイズを変更したときに、その解像度をゲスト &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt; に知らせるイベントが送られます。vmware-user デーモンが上がっていると、解像度を自動的に変更してくれます。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; その他の機能もあるようですが、FreeBSD では動作しないようです。&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;vmware-user \u30c7\u30fc\u30e2\u30f3&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vmware-user_\u30c7\u30fc\u30e2\u30f3&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1706-&amp;quot;} --&gt;
&lt;!-- cachefile /home/www/freebsd.seirios.org/dokuwiki/data/cache/a/a6223607977c4a57183c15f88c9957ac.xhtml used --&gt;
</description>
            <author>asou@undisclosed.example.com (asou)</author>
            <pubDate>Tue, 27 Dec 2022 07:06:54 +0000</pubDate>
        </item>
        <item>
            <title>デスクトップ環境の設定 - [VMware の場合] open-vm-tools を追加した</title>
            <link>https://freebsd.seirios.org/doku.php?id=install:%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0%E5%A2%83%E3%81%AE%E8%A8%AD%E5%AE%9A</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;デスクトップ環境の設定&quot;&gt;デスクトップ環境の設定&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
本ページでは、下記のようなデスクトップ環境の設定手順を説明します。
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://freebsd.seirios.org/lib/exe/detail.php?id=install%3A%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0%E5%A2%83%E3%81%AE%E8%A8%AD%E5%AE%9A&amp;amp;media=install:x11-0000-login.png&quot; class=&quot;media&quot; title=&quot;install:x11-0000-login.png&quot;&gt;&lt;img src=&quot;https://freebsd.seirios.org/lib/exe/fetch.php?w=600&amp;amp;tok=21b952&amp;amp;media=install:x11-0000-login.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://freebsd.seirios.org/lib/exe/detail.php?id=install%3A%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0%E5%A2%83%E3%81%AE%E8%A8%AD%E5%AE%9A&amp;amp;media=install:x11-01-startscreen.png&quot; class=&quot;media&quot; title=&quot;install:x11-01-startscreen.png&quot;&gt;&lt;img src=&quot;https://freebsd.seirios.org/lib/exe/fetch.php?w=600&amp;amp;tok=8068de&amp;amp;media=install:x11-01-startscreen.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u74b0\u5883\u306e\u8a2d\u5b9a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u74b0\u5883\u306e\u8a2d\u5b9a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-227&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;x_window_system_のインストール&quot;&gt;X Window System のインストール&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
FreeBSD でデスクトップ環境を使用するには、X Window System &lt;a href=&quot;https://www.x.org/wiki/&quot; class=&quot;urlextern&quot; title=&quot;https://www.x.org/wiki/&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.x.org/wiki/&lt;/a&gt; と Desktop 環境 Xfce &lt;a href=&quot;https://www.xfce.org/&quot; class=&quot;urlextern&quot; title=&quot;https://www.xfce.org/&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.xfce.org/&lt;/a&gt; をインストールしなければなりません。
また、上記のログイン画面を表示するためには、XDM (X Display Manager) もインストールしなければなりません。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Xorg のインストール手順は、&lt;a href=&quot;https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/x-install.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/x-install.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/x-install.html&lt;/a&gt; に記載されています。&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Desktop 環境のインストール手順は、Handbook &lt;a href=&quot;https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/x11-wm.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/x11-wm.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/x11-wm.html&lt;/a&gt; に記載されています。&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 本ページでは Xfce のインストール手順を記述していますが、上記のハンドブックには GNOME/KDE のインストール手順も記載されています。&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; XDM のインストール手順は、Handbook &lt;a href=&quot;https://docs.freebsd.org/en/books/handbook/x11/#x-xdm&quot; class=&quot;urlextern&quot; title=&quot;https://docs.freebsd.org/en/books/handbook/x11/#x-xdm&quot; rel=&quot;ugc nofollow&quot;&gt;https://docs.freebsd.org/en/books/handbook/x11/#x-xdm&lt;/a&gt; に記載されています。&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;X Window System \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;x_window_system_\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;228-1273&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;パッケージのインストール&quot;&gt;パッケージのインストール&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
FreeBSD のインストール時に作成したユーザー (例では yamada) でログインしてから、pkg コマンドを使用して Xorg, Xfce, 日本語フォントのパッケージをインストールします。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; パッケージのインストールには sudo コマンドを使用することを前提にしています。&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; sudo コマンドをインストールしていない場合には、su コマンドでスーパーユーザーになって「pkg install sudo」でインストールします。&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; sudo コマンドを使用せずに、スーパーユーザーになって以下のコマンドを (sudo なしで) 実行しても構いません。&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ sudo pkg install xorg
$ sudo pkg install xfce
$ sudo pkg install japanese/font-std&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; japanese/font-std をインストールしなくても日本語の表示は可能ですが、その際に使用されるフォントはあまり美しくないので、japanese/font-std をインストールすることをお勧めします。&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
日本語入力のために Fcitx &lt;a href=&quot;https://fcitx-im.org/wiki/Fcitx&quot; class=&quot;urlextern&quot; title=&quot;https://fcitx-im.org/wiki/Fcitx&quot; rel=&quot;ugc nofollow&quot;&gt;https://fcitx-im.org/wiki/Fcitx&lt;/a&gt; もインストールします。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ sudo pkg install ja-fcitx-mozc&lt;/pre&gt;

&lt;p&gt;
Web browser は Firefox をインストールします。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ sudo pkg install firefox&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1274-2569&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit4&quot; id=&quot;vmware_の場合&quot;&gt;VMware の場合&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
VMware Workstation/Fusion などの VMware 上の仮想マシンに FreeBSD をインストールした場合には、VMware 用の以下のパッケージもインストールしてください。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; VMware 環境でマウスカーソルが動かない問題は、これをインストールしていないためです。&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ sudo pkg install xf86-input-vmmouse
$ sudo pkg install xf86-video-vmware
$ sudo pkg install open-vm-tools&lt;/pre&gt;

&lt;p&gt;
VMware Fusion 12.2.4 (20071091) では、上記のインストールのみで動作するようになりましたが、他のバージョンあるいは Player では何らかの設定ファイルに設定の追加・変更などが必要になることがあるかもしれません。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;VMware \u306e\u5834\u5408&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vmware_\u306e\u5834\u5408&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2570-3325&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;システムの設定&quot;&gt;システムの設定&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Xfce4 はメッセージパスに D-Bus を使用するので、以下の手順で D-Bus を有効にしてデーモン (daemon, サービス) を起動します。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ sudo sysrc dbus_enable=&amp;quot;YES&amp;quot;
$ sudo service dbus start&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u30b7\u30b9\u30c6\u30e0\u306e\u8a2d\u5b9a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u30b7\u30b9\u30c6\u30e0\u306e\u8a2d\u5b9a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3326-3586&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;設定ファイルの作成&quot;&gt;設定ファイルの作成&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
vi/emacs などのテキストエディターを使用して、.xinitrc というファイルに以下の内容を書き込んでください。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; .xinitrc ファイルは、ホームディレクトリにおいてください。&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 日本語キーボードを使用している場合には、「#/usr/local/bin/setxkbmap -layout jp」の行頭の「#」を削除してください。&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;export LC_ALL=ja_JP.UTF-8
export LANGUAGE=ja_JP.UTF-8
export LANG=ja_JP.UTF-8
#
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=xim
export XMODIFIERS=@im=fcitx
/usr/local/bin/mozc start
/usr/local/bin/fcitx -r -d
#
#/usr/local/bin/setxkbmap -layout jp
#
exec /usr/local/bin/xfce4-session&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3587-4327&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;x_window_system_の起動&quot;&gt;X Window system の起動&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
コンソールからログインして、startx コマンドを実行します。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ startx&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://freebsd.seirios.org/lib/exe/detail.php?id=install%3A%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0%E5%A2%83%E3%81%AE%E8%A8%AD%E5%AE%9A&amp;amp;media=install:x11-01-startscreen.png&quot; class=&quot;media&quot; title=&quot;install:x11-01-startscreen.png&quot;&gt;&lt;img src=&quot;https://freebsd.seirios.org/lib/exe/fetch.php?w=600&amp;amp;tok=8068de&amp;amp;media=install:x11-01-startscreen.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
左上の「アプリケーション」をクリックして「ウェブブラウザー」をクリックすると、Firefox が起動します。
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://freebsd.seirios.org/lib/exe/detail.php?id=install%3A%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0%E5%A2%83%E3%81%AE%E8%A8%AD%E5%AE%9A&amp;amp;media=install:x11-02-webbrowser.png&quot; class=&quot;media&quot; title=&quot;install:x11-02-webbrowser.png&quot;&gt;&lt;img src=&quot;https://freebsd.seirios.org/lib/exe/fetch.php?w=600&amp;amp;tok=e57b3c&amp;amp;media=install:x11-02-webbrowser.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
キーボードの「Ctrl + SPACE」を押すと日本語の入力ができます。
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://freebsd.seirios.org/lib/exe/detail.php?id=install%3A%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0%E5%A2%83%E3%81%AE%E8%A8%AD%E5%AE%9A&amp;amp;media=install:x11-04-japanese.png&quot; class=&quot;media&quot; title=&quot;install:x11-04-japanese.png&quot;&gt;&lt;img src=&quot;https://freebsd.seirios.org/lib/exe/fetch.php?w=600&amp;amp;tok=cf0c71&amp;amp;media=install:x11-04-japanese.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
左上の「アプリケーション」をクリックして「ログアウト」をクリックすると「Taro Yamada のログアウト」というダイアログが表示されるので、「ログアウト」をクリックすると X Window System が終了します。
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://freebsd.seirios.org/lib/exe/detail.php?id=install%3A%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0%E5%A2%83%E3%81%AE%E8%A8%AD%E5%AE%9A&amp;amp;media=install:x11-05-logout.png&quot; class=&quot;media&quot; title=&quot;install:x11-05-logout.png&quot;&gt;&lt;img src=&quot;https://freebsd.seirios.org/lib/exe/fetch.php?w=600&amp;amp;tok=afeccd&amp;amp;media=install:x11-05-logout.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://freebsd.seirios.org/lib/exe/detail.php?id=install%3A%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0%E5%A2%83%E3%81%AE%E8%A8%AD%E5%AE%9A&amp;amp;media=install:x11-06-logout.png&quot; class=&quot;media&quot; title=&quot;install:x11-06-logout.png&quot;&gt;&lt;img src=&quot;https://freebsd.seirios.org/lib/exe/fetch.php?w=600&amp;amp;tok=bd2f49&amp;amp;media=install:x11-06-logout.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;X Window system \u306e\u8d77\u52d5&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;x_window_system_\u306e\u8d77\u52d5&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;4328-5168&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;xdm_の設定&quot;&gt;XDM の設定&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
ここまでの説明では、下記のような文字列ベースのログイン画面からログインし、startx コマンドを使用してデスクトップ環境を手順を説明しました。
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://freebsd.seirios.org/lib/exe/detail.php?id=install%3A%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0%E5%A2%83%E3%81%AE%E8%A8%AD%E5%AE%9A&amp;amp;media=install:virtualbox-90-login.png&quot; class=&quot;media&quot; title=&quot;install:virtualbox-90-login.png&quot;&gt;&lt;img src=&quot;https://freebsd.seirios.org/lib/exe/fetch.php?w=600&amp;amp;tok=5522a5&amp;amp;media=install:virtualbox-90-login.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
ログイン時から下記のようなグラフィカルベースのログイン画面からログインしてデスクトップ環境を使用するには、XDM (X Display Manager) をインストールしなければなりません。
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://freebsd.seirios.org/lib/exe/detail.php?id=install%3A%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0%E5%A2%83%E3%81%AE%E8%A8%AD%E5%AE%9A&amp;amp;media=install:x11-0000-login.png&quot; class=&quot;media&quot; title=&quot;install:x11-0000-login.png&quot;&gt;&lt;img src=&quot;https://freebsd.seirios.org/lib/exe/fetch.php?w=600&amp;amp;tok=21b952&amp;amp;media=install:x11-0000-login.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
XDM をインストールする前に、上記の「設定ファイルの作成」で作成した .xinitrc ファイルの名称を変更しておきます。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ mv .xinitrc .xsession&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; startx コマンドを使用した場合には .xinitrc ファイルが参照されます。&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; XDM からログインした場合には、.xsession ファイルが参照されます。&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
pkg コマンドを使用して XDM をインストールします。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ sudo pkg install xdm&lt;/pre&gt;

&lt;p&gt;
XDM をインストールしたならば、以下のコマンドを実行して XDM を有効にします。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ sudo sysrc xdm_enable=&amp;quot;YES&amp;quot;
$ sudo service xdm start&lt;/pre&gt;

&lt;p&gt;
service xdm start コマンドを実行すると、コンソールに上記の画面が表示されます。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Login: username + Enter キー
Password: password + Enter キー&lt;/pre&gt;

&lt;p&gt;
を入力すると (password の入力中は何も表示されません)、
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://freebsd.seirios.org/lib/exe/detail.php?id=install%3A%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0%E5%A2%83%E3%81%AE%E8%A8%AD%E5%AE%9A&amp;amp;media=install:x11-0001-login.png&quot; class=&quot;media&quot; title=&quot;install:x11-0001-login.png&quot;&gt;&lt;img src=&quot;https://freebsd.seirios.org/lib/exe/fetch.php?w=600&amp;amp;tok=e20389&amp;amp;media=install:x11-0001-login.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
下記のデスクトップ画面が表示されます。
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://freebsd.seirios.org/lib/exe/detail.php?id=install%3A%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0%E5%A2%83%E3%81%AE%E8%A8%AD%E5%AE%9A&amp;amp;media=install:x11-01-startscreen.png&quot; class=&quot;media&quot; title=&quot;install:x11-01-startscreen.png&quot;&gt;&lt;img src=&quot;https://freebsd.seirios.org/lib/exe/fetch.php?w=600&amp;amp;tok=8068de&amp;amp;media=install:x11-01-startscreen.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;XDM \u306e\u8a2d\u5b9a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;xdm_\u306e\u8a2d\u5b9a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;5169-&amp;quot;} --&gt;
&lt;!-- cachefile /home/www/freebsd.seirios.org/dokuwiki/data/cache/f/f5ce57f6e9f9daa7c748793d22f35e93.xhtml used --&gt;
</description>
            <author>asou@undisclosed.example.com (asou)</author>
            <pubDate>Tue, 27 Dec 2022 06:34:45 +0000</pubDate>
        </item>
        <item>
            <title>ZFS Tips - [atime は off に] </title>
            <link>https://freebsd.seirios.org/doku.php?id=os:zfs_tips</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;zfs_tips&quot;&gt;ZFS Tips&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
ZFS を運用するにあたってのチップスです。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ZFS Tips&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;zfs_tips&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-82&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;atime_は_off_に&quot;&gt;atime は off に&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
UNIX の伝統的なファイルシステムには atime というアクセスされた時刻を保持するフィールドがあります。
ZFS もこの機能をサポートしておりデフォルトでは on に設定されています。
しかし、Copy On Write を基本とする ZFS と atime は非常に相性が悪く、性能劣化を引き起こす要因になります。
なぜならば読み込み操作を行うたびに atime の更新という書き込み処理が発生し、全ての書き込みは Copy On Write で一度コピーが作成されるため、読み込み操作の数に比例して作業用にディスク容量を必要とすることになります。
性能面、資源面ともにデメリットとなりますので、off にしましょう。
&lt;/p&gt;

&lt;p&gt;
なお、FreeBSD のインストーラから ZFS root でインストールした場合、インストーラが zroot の atime を off にします。
そのため、後から自分で追加したプールに対して設定が必要となります。
&lt;/p&gt;

&lt;p&gt;
ただし、 zroot/var/mail だけは atime on に設定されます。tcsh などがメールの到着をチェックするためです。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;atime \u306f off \u306b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;atime_\u306f_off_\u306b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;83-1293&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;プールには必ず空き容量を確保すること&quot;&gt;プールには必ず空き容量を確保すること&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
ZFS は Copy On Write が基本です。
ファイルを削除する場合でもメタデータやディレクトリの書き換えが発生する分、コピーが発生します。
このときコピーできるだけの容量がプールになければファイルを削除することができません。
もし、プールを 100% 使い切ってしまうと、それはリードオンリーになることと同じ意味を持ちます。
そうなる前に不要なスナップショットやファイルを削除するようにしましょう。
もし不幸にも使用率が100%になってしまったら、プールにディスクを追加して容量を増やすか、より大きなプールに全データを移すしかありません。
&lt;/p&gt;

&lt;p&gt;
経験的にはプールの使用率が 70〜80% をキープするくらいが安全と思われます。
もし、性能を厳しく追い求めるならば使用率を 50% くらいまでにすると空き領域の検索が速い分、高速に動作する可能性が高いです。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u30d7\u30fc\u30eb\u306b\u306f\u5fc5\u305a\u7a7a\u304d\u5bb9\u91cf\u3092\u78ba\u4fdd\u3059\u308b\u3053\u3068&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u30d7\u30fc\u30eb\u306b\u306f\u5fc5\u305a\u7a7a\u304d\u5bb9\u91cf\u3092\u78ba\u4fdd\u3059\u308b\u3053\u3068&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1294-2403&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;ハードディスクのパーティション&quot;&gt;ハードディスクのパーティション&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
プールに追加するハードディスクはパーティションを切っておいたほうが良いです。
&lt;/p&gt;

&lt;p&gt;
パーティションがないほうが性能面では有利になりますが、その差はわずかです。
長年運用を続けたあとにハードディスクを故障で交換する際にセクタ数まで含めて同じハードディスクを入手できるかどうかは分かりません。
おそらくより大容量のモデルを購入することになるでしょう。
その場合、予めパーティションを作成しておけば、同じサイズにパーティションを切り直すだけで、
交換ディスクとして使用することができます。
余ったパーティションを他の用途に使うこともできます。
ディスク障害から復旧したら後日、プールサイズの拡張などを検討すればよいのです。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u30cf\u30fc\u30c9\u30c7\u30a3\u30b9\u30af\u306e\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u30cf\u30fc\u30c9\u30c7\u30a3\u30b9\u30af\u306e\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2404-3364&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;arc_の使用量を知る&quot;&gt;ARC の使用量を知る&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
ZFSのプールがあれば top(1) が ARC のサマリを表示します。
以下に表示のサンプルを示します。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ARC: 2864M Total, 884M MFU, 1793M MRU, 1696K Anon, 34M Header, 150M Other
     2065M Compressed, 4466M Uncompressed, 2.16:1 Ratio&lt;/pre&gt;

&lt;p&gt;
それぞれの項目の意味は次の通りです。
&lt;/p&gt;
&lt;div class=&quot;table sectionedit6&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; 項目 &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; 内容 &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Total &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; ARC全体のデータ量 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; MFU &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 最もよく使われるデータとして保持している量 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; MRU &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 最も間近に使われたデータとして保持している量 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Anon &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 一時的なデータとして保持している量 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Header &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; ヘッダのデータ量 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Other &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; その他のデータとして保持している量 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Compressed &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 圧縮した状態で保持しているデータ量 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Uncompressed &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 圧縮前のデータ量 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Ratio &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 圧縮率 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3731-4238&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ARC \u306e\u4f7f\u7528\u91cf\u3092\u77e5\u308b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;arc_\u306e\u4f7f\u7528\u91cf\u3092\u77e5\u308b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3365-4239&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;arc_サイズの制限&quot;&gt;ARC サイズの制限&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
デフォルトでは搭載メモリ量 - 1GB が ARC の最大値として割り当てられます。
つまり 8GB のメモリを搭載した環境では 7GB まで ARC に使われる可能性があります。
&lt;/p&gt;

&lt;p&gt;
これを制限するパラメータが sysctl の vfs.zfs.arc.max &lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt;です。
アプリケーションにどの程度メモリを空けて置きたいのかを考えて、ARC を制限しましょう。
&lt;/p&gt;

&lt;p&gt;
例えば 4GB に制限するには以下のようにします。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sysctl vfs.zfs.arc.max=4294967296&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ARC \u30b5\u30a4\u30ba\u306e\u5236\u9650&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;arc_\u30b5\u30a4\u30ba\u306e\u5236\u9650&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;4240-4865&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;l2arc_のメモリ使用量&quot;&gt;L2ARC のメモリ使用量&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
L2ARC は割り当てた容量の約 1.59% のメモリをその管理に使用します。
つまりキャッシュヒット率をあげようとして 1TB の SSD を割り当てたとすると
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;1 TB * 0.0159 = 15.9 GB&lt;/pre&gt;

&lt;p&gt;
で約16GBのメモリを使用します。
&lt;/p&gt;

&lt;p&gt;
メインメモリがこのサイズ以下の環境では満足な性能を得られないでしょう。
&lt;/p&gt;

&lt;p&gt;
逆に L2ARC の管理に 1GB のメモリを割り当てると考えると、
逆算して 63GB の L2ARC を割り当てるべきということが分かります。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;1 GB / 0.0159 = 62.89 GB&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;L2ARC \u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;l2arc_\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;4866-5503&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;l2arc_はコールドブート&quot;&gt;L2ARC はコールドブート&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
FreeBSD 12.0 現在、 L2ARC の内容は電源を落とすと失われます。
（将来的には改善される見込みです）
&lt;/p&gt;

&lt;p&gt;
厳密には L2ARC のメディアに乗っている内容は保持されますが、
メモリ上の管理データを失いますので、その内容を再利用してくれません。
&lt;/p&gt;

&lt;p&gt;
リブート直後は L2ARC は全てミスヒットすることを覚えておいてください。
必要ならばアプリケーションレベルでウォームアップを行ってください。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;L2ARC \u306f\u30b3\u30fc\u30eb\u30c9\u30d6\u30fc\u30c8&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;l2arc_\u306f\u30b3\u30fc\u30eb\u30c9\u30d6\u30fc\u30c8&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;5504-6072&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;ユーザマウント&quot;&gt;ユーザマウント&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
zfs では特定のユーザに対し、一部のファイルシステム操作を許可する設定ができます。
これを利用すると、例えばユーザのホームディレクトリの下に限って、zfs ファイルシステムの作成、マウント、スナップショットの作成、クローンの作成などを許可することができます。
許可の設定自体は root 権限が必要ですが、一度許可を与えてしまえば限られた範囲の操作はユーザ権限で行うことができます。
&lt;/p&gt;

&lt;p&gt;
例えば、 `zpool/home/alice` にユーザ alice のホームディレクトリがあった場合、
 alice に対して以下の操作を許可するようにします。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# zfs allow alice create,destroy,mount,clone,promote,rename,snapshot,rollback zpool/home/alice&lt;/pre&gt;

&lt;p&gt;
権限の意味はそれぞれ zfs のサブコマンドに対応しています。
上記の例では ファイルシステムの作成、破棄、マウント、クローン、クローン元への依存を削除、リネーム、スナップショット作成、ロールバック、を alice に対して許可しています。
&lt;/p&gt;

&lt;p&gt;
これでユーザ alice は自身のホームディレクトリの下であれば、自由に zfs のファイルシステムを作成・破棄することができます。
&lt;/p&gt;

&lt;p&gt;
なお、FreeBSD ではユーザ権限でマウントを許可する際には `sysctl vfs.usermount=1` が必要です。
&lt;/p&gt;

&lt;p&gt;
/etc/sysctl.conf に `vfs.usermount=1` を書くのを忘れないようにしましょう。
&lt;/p&gt;

&lt;p&gt;
`vfs.usermount=1` を設定すると zfs だけでなく、
CD/DVD などのマウントや fuse によるマウントも権限があれば実行できるようになります。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u30e6\u30fc\u30b6\u30de\u30a6\u30f3\u30c8&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u30e6\u30fc\u30b6\u30de\u30a6\u30f3\u30c8&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;6073-7846&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;send_recv_のレジューム&quot;&gt;send &amp;amp; recv のレジューム&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
zfs のバックアップにスナップショットを send &amp;amp; recv するのは定番とも言えますが、
ファイルシステムの使用量が大きくなるとバックアップに時間がかかるようになります。
ひょっとするとネットワークの不調などで途中で止まってしまうことがあるかもしれません。
その場合、最初からやり直すのはとても辛いため、途中からやり直すことができます。
&lt;/p&gt;

&lt;p&gt;
zfs recv に -s オプションを渡すと recv が途中で止まった際にどこで止まったのかを示すトークンを保存してくれます。
トークンは recv したファイルシステムの receive_resume_token プロパティに保存されます。
このトークンを zfs send の -t オプションに渡すと、途中から再開してくれます。
&lt;/p&gt;

&lt;p&gt;
以下にユーザ alice のホームディレクトリをバックアップする際の簡単な例を示します。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# zfs send zpool/home/alice | zfs recv -s zpool/backup/alice
# ^C (一時停止)
# zfs get -H -o value receive_resume_token zpool/backup/alice
1-d2524e736-d0-789c636064000310a500c4ec50360710e72765a526973030f0419460caa7a515a79680647679c0e4d990e4932a4b528b81b44640743536fd25f9e9a599290c0c193176fb8c54d81e3a20c97382e5f31273531918aa0af2f373f433f27353f52b4b339333328bf2f5cbf38bb21d8c0c0c2d740d0c758dcc196000003b291e6b
# zfs send -t &amp;#039;1-d2524e736-d0-789c636064000310a500c4ec50360710e72765a526973030f0419460caa7a515a79680647679c0e4d990e4932a4b528b81b44640743536fd25f9e9a599290c0c193176fb8c54d81e3a20c97382e5f31273531918aa0af2f373f433f27353f52b4b339333328bf2f5cbf38bb21d8c0c0c2d740d0c758dcc196000003b291e6b&amp;#039; | zfs recv -s zpool/backup/alice&lt;/pre&gt;

&lt;p&gt;
２回目以降の zfs send にはトークンのみを渡して、ファイルシステム名は渡しません。
zfs recv の受け側は必要に応じて ssh や nc などを利用するとネットワーク経由でバックアップすることができます。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;send &amp;amp; recv \u306e\u30ec\u30b8\u30e5\u30fc\u30e0&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;send_recv_\u306e\u30ec\u30b8\u30e5\u30fc\u30e0&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;7847-9888&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;dedup_は安易に使わないこと&quot;&gt;dedup は安易に使わないこと&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
dedup はファイルの中の重複箇所を自動的に検出し、zfsのブロック単位でまとめてくれる便利な機能ですが、反面ハッシュ値の保持や比較に多くのリソースを使用します。
dedup では1つのハッシュを保持するのに320bytesを消費するため、例えば1ブロック128kbで2TBのデータを保持したとすると5GBのメモリを使用します。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;2,147,483,648 KB / 128 = 16,777,216 blocks
320 * 16,777,216 = 5,368,709,120 bytes = 5GB&lt;/pre&gt;

&lt;p&gt;
もちろん、この値はARCとは無関係です。
そして全ての書き込みでハッシュ値との比較処理が走ります。
資源面、性能面ともに多くのリソースを必要としますので、通常は使わないほうが良いです。
また、dedup を有効にした後に書き込まれたファイルは常に dedup 用のハッシュ値を保持するようになります。
dedupを無効にしてもその後に書かれたファイルに対してハッシュ値の比較が行われなくなるだけで既に書き込まれたファイルは dedup の対象となります。
完全に無効化するにはファイルを再度コピーする必要があります。
&lt;/p&gt;

&lt;p&gt;
もちろん、上記のリソースを確保した上で dedup を使用することには何の問題もありません。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;dedup \u306f\u5b89\u6613\u306b\u4f7f\u308f\u306a\u3044\u3053\u3068&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dedup_\u306f\u5b89\u6613\u306b\u4f7f\u308f\u306a\u3044\u3053\u3068&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;9889-11298&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;swap_ボリュームについて&quot;&gt;swap ボリュームについて&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
zfs ではプールからブロックデバイスを生成する機能があるため、これを swap として利用することができます。
しかし、swap はメモリが逼迫したときに使用されるものですので、そもそも大量にメモリを使う zfs で swap を賄うのは矛盾した状態を生み出します。
&lt;/p&gt;

&lt;p&gt;
例えば、zfs の ARC が増大しアプリケーションが使えるメモリが少なくなったために
swap を使用するような場合、swap に書き込みが行われることで更に ARC を使用しますます使えるメモリが減ることにつながります。
&lt;/p&gt;

&lt;p&gt;
swap を zfs 上に取るのは便利ではありますが、あまり得策とは言えません。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;swap \u30dc\u30ea\u30e5\u30fc\u30e0\u306b\u3064\u3044\u3066&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;swap_\u30dc\u30ea\u30e5\u30fc\u30e0\u306b\u3064\u3044\u3066&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;11299-12082&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;postgresql&quot;&gt;PostgreSQL&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;PostgreSQL&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;postgresql&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;12083-12104&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit15&quot; id=&quot;atime&quot;&gt;atime&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
atime は off にしましょう。理由は前述の通りです。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;atime&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;atime&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;12105-12188&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit16&quot; id=&quot;record_size&quot;&gt;record size&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
PostgreSQL のデータ領域に ZFS を使う場合、record size を 8k にしましょう。
デフォルトでは 128k です。
&lt;/p&gt;

&lt;p&gt;
例として zroot/postgres に対して record size を 8k にするには以下を実行します。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;zfs set recordsize=8k zroot/postgres&lt;/pre&gt;

&lt;p&gt;
ZFS は record size 毎にまとめてディスクアクセスを行います。
PostgreSQL は 8k 単位でディスクアクセスを行いますので、
PostgreSQL が 8k を書き込もうとしたときには ZFS は 128k サイズを読み込んだ上で
8k を変更し、それを 128k 単位で書き込もうとすることになり、効率が悪くなるのです。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;record size&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;record_size&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;12189-12881&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit17&quot; id=&quot;log_bias&quot;&gt;log bias&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
log bias を throughput にすると、ZFS は書き込みデータをログデバイスに書き込むことをやめます。PostgreSQL には WAL がありますので、ZFS がログを書き込む意味はないと言っても良いでしょう。
無駄な書き込みがなくなる分、性能向上が期待できます。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;zfs set logbias=throughput zroot/postgres&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;log bias&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;log_bias&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;12882-13290&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit18&quot; id=&quot;primary_cache&quot;&gt;primary cache&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
PostgreSQL はアプリケーション側で必要なデータをメモリ内にキャッシュしますので、
ZFS 側でデータをキャッシュする意味は少なくなります。
もし、ARC のサイズを小さくしたいならば、メタデータのみキャッシュするように変更することができます。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;zfs set primarycache=metadata zroot/postgres&lt;/pre&gt;

&lt;p&gt;
これにより性能向上が得られるかどうかはケースバイケースです。
PostgreSQL 側のバッファサイズなどと合わせて全体をチューニングした上で判断してください。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;primary cache&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;primary_cache&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;13291-13930&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit19&quot; id=&quot;compression&quot;&gt;compression&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
lz4 による圧縮は非常に高速に動作します。
圧縮率はそれほど良くはありませんが、半分程度に圧縮されれば、見た目のスループットは2倍に向上します。圧縮率が悪くても lz4 が高速に動作するためペナルティが少なく、設定するメリットは十分にあります。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;zfs set compression=lz4 zroot/postgres&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;compression&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;compression&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;13931-14355&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit20&quot; id=&quot;mysql_innodb&quot;&gt;MySQL (innodb)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;MySQL (innodb)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mysql_innodb&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;14356-14381&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit21&quot; id=&quot;atime1&quot;&gt;atime&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
atime は off にしましょう。理由は前述の通りです。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;atime&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;atime1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;14382-14465&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit22&quot; id=&quot;record_size1&quot;&gt;record size&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
データ用とログ用に2つのファイルシステムを用意します。
データ用には recordsize=16k を、ログ用はデフォルトの recordsize=128k を設定します。
&lt;/p&gt;
&lt;div class=&quot;table sectionedit23&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; 用途 &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; recordsize &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; データ用 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 16k &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ログ用 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 128k (default) &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;14677-14754&amp;quot;} --&gt;
&lt;p&gt;
innodb はデータの読み書きを一度に 16k ずつ行うため、それに合わせます。
ログ用は追記のためデフォルトのままでかまいません。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;record size&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;record_size1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;14466-14932&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit24&quot; id=&quot;log_bias1&quot;&gt;log bias&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
innodb でもログを先行書き込みしますので zfs でログを書き込む必要はないとも言って良いでしょう。
データ用のファイルシステムに対し logbias=throuput を設定し zfs のログの書き込みを OFF にします。
ログ用については失われると困るため、デフォルトのまま logbias=latency が良いでしょう。
&lt;/p&gt;
&lt;div class=&quot;table sectionedit25&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; 用途 &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; logbias &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; データ用 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; throuput &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ログ用 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; latency (default) &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;15339-15421&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;log bias&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;log_bias1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;14933-15422&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit26&quot; id=&quot;primary_cache1&quot;&gt;primary cache&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
MySQL もアプリケーション側で必要なデータをメモリ内にキャッシュします。
こちらを十分に効かせれば ZFS でキャッシュさせる必要性は低くなりますので、
primarycache=metadata を設定し、メタデータのキャッシュのみを行うようにします。
&lt;/p&gt;

&lt;p&gt;
データ用、ログ用、どちらにも言えます。
&lt;/p&gt;
&lt;div class=&quot;table sectionedit27&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; 用途 &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; primarycache &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; データ用 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; metadata &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ログ用 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; metadata &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;15824-15902&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;primary cache&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;primary_cache1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;15423-15903&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit28&quot; id=&quot;compression1&quot;&gt;compression&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
lz4 による圧縮は非常に高速に動作します。 圧縮率はそれほど良くはありませんが、半分程度に圧縮されれば、見た目のスループットは2倍に向上します。圧縮率が悪くても lz4 が高速に動作するためペナルティが少なく、設定するメリットは十分にあります。
&lt;/p&gt;

&lt;p&gt;
データ用、ログ用ともに compression=lz4 を設定しておくと良いでしょう。
&lt;/p&gt;
&lt;div class=&quot;table sectionedit29&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; 用途 &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; compression &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; データ用 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; lz4 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ログ用 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; lz4 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table4&amp;quot;,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;16371-16438&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;compression&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;compression1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;15904-16439&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit30&quot; id=&quot;skip_innodb_doublewrite&quot;&gt;skip_innodb_doublewrite&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
my.cnf に skip_innodb_doublewrite を設定し MySQL にデータを2回書く処理を止めさせます。
&lt;/p&gt;

&lt;p&gt;
これはもともと 16k のデータの内、半分の 8k だけはディスクに書かれたが残りの 8k は書かれていないようなタイミングで電源喪失などが発生した際にそれを検知するためのものです。
Copy On Write の ZFS ではどのようなタイミングでもこういう事にはならないため、単純に OFF にすることができます。
2回の書き込みが1回に減る分、性能向上が期待できます。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;skip_innodb_doublewrite&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;skip_innodb_doublewrite&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;16440-17064&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit31&quot; id=&quot;mysql_myisam&quot;&gt;MySQL (MyISAM)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;MySQL (MyISAM)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mysql_myisam&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:31,&amp;quot;range&amp;quot;:&amp;quot;17065-17090&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit32&quot; id=&quot;atime2&quot;&gt;atime&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
atime は off にしましょう。理由は前述の通りです。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;atime&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;atime2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:32,&amp;quot;range&amp;quot;:&amp;quot;17091-17174&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit33&quot; id=&quot;record_size2&quot;&gt;record size&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
MyISAM は一度に 8k ずつデータを読み書きしますので、recordsize=8k を指定します。
ログ用にディレクトリを分けることができませんので、データ用に合わせます。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;record size&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;record_size2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:33,&amp;quot;range&amp;quot;:&amp;quot;17175-17412&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit34&quot; id=&quot;primary_cache2&quot;&gt;primary cache&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
MyISAM でもアプリケーション側で必要なデータをメモリ内にキャッシュします。
primarycache=metadata で zfs の arc 使用量を制限し、アプリケーション側で使えるメモリを増やします。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;primary cache&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;primary_cache2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:34,&amp;quot;range&amp;quot;:&amp;quot;17413-17675&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit35&quot; id=&quot;log_bias2&quot;&gt;log bias&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
データとログが同じファイルシステムに置かれるため、安全のためデフォルトのまま logbias=latecy にするのが良いでしょう。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;log bias&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;log_bias2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:35,&amp;quot;range&amp;quot;:&amp;quot;17676-17861&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit36&quot; id=&quot;compression2&quot;&gt;compression&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
lz4 で得られるメリットは innodb と同じです。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;compression&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;compression2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:36,&amp;quot;range&amp;quot;:&amp;quot;17862-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;13.0-RELEASE より前は vfs.zfs.arc_max でした&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;!-- cachefile /home/www/freebsd.seirios.org/dokuwiki/data/cache/7/72471bbcdc94df4eca3331f02a17e03a.xhtml used --&gt;
</description>
            <author>yuichiro@undisclosed.example.com (yuichiro)</author>
            <pubDate>Tue, 13 Sep 2022 02:33:13 +0000</pubDate>
        </item>
    </channel>
</rss>
