ArchLinux インストール覚書より始めた自宅サーバ構築ですが、最低限の環境が整ってきました。ぼちぼち、やりたい1として挙げた超軽量仮想環境を試したい。ですがそのデータをどこに置くか、またスクリプトを作った場合の置き場所、といった話題が地味な問題として挙がってきました。
仕事なら何も考えてないディレクトリで上司の承認を取ってとっとと決めてしまう所ですが(ヒドイ話😭だけど仕事は time is money なのでこんなどうでもいい問題に割く時間などありません)今回はどこまでも趣味に走ると決めた個人サーバ環境です。どうでもいい事は前例を踏襲する方針に従って、ではこの問題に関する前例は?を調べてみました。
FHS (Filesystem Hierarchy Standard)
UNIX系OSの場合、ディレクトリ構造の標準が提唱されています。Filesystem Hierarchy Standard、通称 FHS と呼ばれるものです。Linuxについては Linux Standard Base 通称LSBという規格が検討されていて、その中でディレクトリ構造も議論されている模様…ですがこの辺を突っ込み始めると何だかごちゃごちゃしてるっぽいですな。深い所はスルーする方が幸せになれそうな気がします😅
というわけでFHS。LSBによる最新版はFHS - The Linux Foundationかな?バージョン3.0と書いてあります。LSBじゃないFHSはFilesystem Hierarchy Standardでバージョン2.3、これが3.0の直前のバージョンとなるようです。いずれも英語のサイトです。
日本語でも色々解説されていますが、私が探した中ではITmedia エンタープライズ 第14回 FHSによるディレクトリの規格化がお勧めです。何と言いますか、上っ面の抽象的な言葉のコピペではなくて、明確な判断基準を示してくれています。バージョン2.2なので少々古いですが、入門編としてはよろしいんじゃないでしょうか。
自作ツールの置き場所
上述のFHSに基づいて考えました。自作ツール mytool を置く場所を下記のように決めます。何となく、ものすごくLinuxっぽく、あるいはUNIXっぽくなったような気がします。なんかカッコいいぞ。
/ ルート
│
├─ etc
│ ├ opt
│ │ └ mytool ← mytoolの設定ファイルを置く
│ :
│
├─ opt
│ └ mytool ← mytool一式は、基本的にはここに集める
│ ├ bin
│ ├ doc
│ ├ lib
│ :
│
├─ usr
│ ├ local
│ │ ├ bin ← /opt/mytool/bin内容物へのシンボリックリンクを置く
│ : :
│
├ var
│ ├ opt
│ │ └ mytool ← mytool関連データ(動的に変化するもの)はここに置く
: :
ちなみに /usr/lobal/bin に実行ファイルのシンボリックリンクを置く理由は、デフォルトでPATHが通っているからです。これをやらないとPATHに /opt/mytool/bin を追加しなくちゃいけません。ログイン可能な全ユーザに設定しなきゃならないとなると、ちょっと躊躇しますよね… /usr/local/bin ならデフォルトでPATHが通ってて、しかもサーバ管理者に解放されている場所なので、都合が良いのです。
iSCSIストレージのサブボリューム構造
も一つ・ArchLinux インストール覚書で決めたiSCSIストレージのマウントポイントを、上記ディレクトリ構造を踏まえて変更します。具体的には次の2ヶ所とします。
- /opt/mytool
- /var/opt/mytool
実際にサブボリュームを作成してマウントするのはツールの名前 mytool が決まってからにします。今回は、適当に決めていた /iscsi をやめる所までの作業とします。
/etc/fstab から /iscsi の設定を削除
# mv /etc/fstab /etc/fstab.org
# cp /etc/fstab.org /etc/fstab
# vi /etc/fstab
# diff -U0 /etc/fstab.org /etc/fstab
--- /etc/fstab.org 2017-05-16 22:21:37.894240063 +0900
+++ /etc/fstab 2017-05-21 23:12:15.739160315 +0900
@@ -7 +6,0 @@
-UUID=〈省略〉 /iscsi btrfs _netdev,rw,relatime,space_cache,subvol=@ 0 0
# rm /etc/fstab.org
マウントポイント /iscsi を削除
# umount /iscsi
# rmdir /iscsi
iSCSIストレージのサブボリュームを削除
# mount /dev/sdc /mnt
# btrfs subvolume list /mnt
ID 257 gen 26 top level 5 path @
# ls /mnt
@
# btrfs subvolume delete /mnt/@
Delete subvolume (no-commit): '/mnt/@'
# umount /mnt
今回は以上です。