11. ITメモ 2026-08-19 データベースサーバー構築メモ01 パーティション設定、ZFS導入、PostgreSQLインストールなど

IT TIPSを投稿します

執筆者:

カテゴリ:

,

株価データベースの専用PCを導入したので、その際のメモです。

Debianサーバーインストール時のパーティション設定

次のように領域を割り当てました。株価データベース用マシンなので、ポスグレ(PostgreSQL)領域を大きくしています。

マウントポイント割り当て容量役割・理由
/boot/efi512 MB 〜 1 GBUEFIブート用に必要な領域(FAT32形式)
/100 GBOS本体、/usraptで入るアプリ)、/etc など
/var/lib/postgresql残りPostgreSQLのデータベース本体・ログ用領域
/home100 GBユーザー(作業用アカウント)のホーム領域
swap16 GBメモリ退避領域(32GB RAM積載のため控えめでOK)
  • パーティショニング方法は、”手動”を選択します。”手動”でないと、マウントポイントのカスタマイズができません。

Windowsからの接続準備(SSH導入)

SSHのインストール

sudo apt update
sudo apt install openssh-server

IPアドレスの確認コマンド

ip a

ip addrip address の略です)

ZFSの適用

PostgreSQLのデータ領域(/var/lib/postgres)には、強固なファイルシステムであるZFSを使用しました。
そのZFSのインストールから、ファイルシステムマウントまでの手順を、以下に記します。

作業はすべて root 権限 で行います。sudo -isu - で root ユーザーに切替えて進めてください。

Step 1. 事前準備とアンマウント

現在 ext4 でマウントされている領域を一度アンマウントします。

# 1. PostgreSQLサービスが動いている場合は停止(新規インストールの場合は念のため)
systemctl stop postgresql 2>/dev/null || true

# 2. 現在のマウント状況と対象デバイスを確認
df -h /var/lib/postgresql

出力例として /dev/nvme0n1p5/dev/sda5 などのデバイス名が表示されます。このデバイス名をメモしておいてください(以降のコマンドでは /dev/sdXN と表記します)。

# 3. アンマウント実行
umount /var/lib/postgresql

Step 2. ZFS パッケージのインストール

DebianでZFS(OpenZFS)を使用するためのツール類をインストールします。

# 1. non-free リポジトリを有効化(Debian 12以降は non-free-firmware も含まれます)
apt update
apt install -y zfsutils-linux

※カーネルモジュールのビルドが自動的に行われます。完了まで数分かかる場合があります。

もし上のインストール手順実行時にZFSのモジュールがないと言われたら、次の手順を実行します。

  1. /etc/apt/sources.listに追加します。
deb http://ftp.jp.debian.org/debian/ trixie main contrib non-free non-free-firmware
deb-src http://ftp.jp.debian.org/debian/ trixie main contrib non-free non-free-firmware

deb http://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
deb-src http://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware

deb http://ftp.jp.debian.org/debian/ trixie-updates main contrib non-free non-free-firmware
deb-src http://ftp.jp.debian.org/debian/ trixie-updates main contrib non-free non-free-firmware
  1. パッケージ一覧の更新
sudo apt update

Step 3. ZFS プールとデータセットの作成

アンマウントしたパーティション全体をZFSプールとして初期化し、PostgreSQL専用のデータセットを作成します。

# 1. ZFSプールの作成(ZFSプール名: zpool-pg)
# ※ /dev/sdXN は Step 1 でメモしたパーティション(例: /dev/sda5 や /dev/nvme0n1p5)に置き換えてください
zpool create -f -o ashift=12 -O acltype=posixacl -O xattr=sa zpool-pg /dev/sdXN

# 2. PostgreSQL用データセットの作成とマウントポイントの設定
zfs create -o mountpoint=/var/lib/postgresql zpool-pg/postgres


Step 4. PostgreSQL向け ZFS パラメータの設定

PostgreSQLの性能と安全性(クラッシュ耐性)を最大化するために、ZFSの設定を変更します。

# 1. 透過圧縮の有効化(lz4は極めて高速でCPU負荷が低く、ディスク容量とI/Oを節約できます)
zfs set compression=lz4 zpool-pg/postgres

# 2. レコードサイズの最適化(PostgreSQLの標準ブロックサイズ 8KB に合わせます)
zfs set recordsize=8k zpool-pg/postgres

# 3. メタデータキャッシュ(atime)の無効化(無駄な書き込みI/Oを削減)
zfs set atime=off zpool-pg/postgres

# 4. 二重ライトアヘッドログ(WAL)の無駄を省く設定(必要に応じて)
# PostgreSQLの8KBブロックとZFSの書き換え整合性を保つため、logbiasをlatencyに設定
zfs set logbias=latency zpool-pg/postgres


Step 5. 所有権(パーミッション)の設定と旧設定の削除

ZFSの初期化直後は /var/lib/postgresql の所有権が root になっているため、PostgreSQLユーザーに権限を付与します。

PostgreSQLはまだインストールされていないので、postgresユーザーを作成します。

sudo adduser --system --group --home /var/lib/postgresql postgres

以下で、権限設定を行ないます。

# 1. postgres ユーザーが存在するか確認の上、所有権を変更
chown -R postgres:postgres /var/lib/postgresql
chmod 700 /var/lib/postgresql

# 2. /etc/fstab から古い ext4 のマウント設定を削除・無効化
# (ZFSはOS起動時に自動でマウントを管理するため、/etc/fstab の記述は不要になります)
nano /etc/fstab

/var/lib/postgresql が書かれている行の先頭に # を付けてコメントアウトするか、削除して保存してください。

postgreSQLの導入

これは簡単で、次のコマンドを実行して、postgreSQLをインストールします。

apt install postgresql

コメント

コメントを残す