コンテンツにスキップ

FreeBSD/zpool

出典: フリー教科書『ウィキブックス(Wikibooks)』

zpoolコマンドは、FreeBSDでZFSストレージプールを構成および管理するための主要なツールです。このコマンドを使用して、ストレージプールの作成、構成変更、モニタリング、トラブルシューティングを行うことができます。

以下は、zpoolコマンドの主要な用途とサブコマンドの概要です。

zpool コマンドの基本的な使い方

[編集]
  • コマンドシンタックス:
    zpool subcommand [arguments]
    
  • ヘルプ表示:
    zpool -\?
    
  • バージョン確認:
    zpool version
    

主なサブコマンドとその用途

[編集]

プールの作成と破棄

[編集]
  • プール作成 (zpool-create)
    新しいZFSストレージプールを作成します。
    zpool create pool_name [vdevs...]
    
    例:
    RAID-Zプールの作成
    zpool create tank raidz disk1 disk2 disk3
    
  • プールの破棄 (zpool-destroy)
    ストレージプールを破棄し、デバイスを再利用可能にします。
    zpool destroy pool_name
    

仮想デバイス (vdev) の管理

[編集]
  • デバイスの追加・削除 (zpool-add / zpool-remove)
    プールにデバイスを追加したり、削除したりします。
    zpool add pool_name vdev
    zpool remove pool_name vdev
    
  • ミラー構成への変更 (zpool-attach / zpool-detach)
    単一デバイスをミラーに変換したり、ミラーを分離したりします。
    zpool attach pool_name device new_device
    zpool detach pool_name device
    

プールのモニタリングとプロパティ

[編集]
  • プール一覧 (zpool-list)
    プールのステータスや容量情報を一覧表示します。
    zpool list
    
  • プールの詳細状態 (zpool-status)
    プールの詳細な状態を表示します。エラーの確認や修復時に使用します。
    zpool status
    
  • I/O統計情報の表示 (zpool-iostat)
    プールやデバイスのI/O統計情報を表示します。
    zpool iostat
    
  • イベント履歴の表示 (zpool-events)
    最近のZFSイベントを一覧表示します。
    zpool events
    

メンテナンス操作

[編集]
  • スクラブ (zpool-scrub)
    プール全体のデータ整合性をチェックし、エラーを修正します。
    zpool scrub pool_name
    
  • トリム操作 (zpool-trim)
    未使用領域を解放するためにトリム操作を実行します。
    zpool trim pool_name
    
  • 同期 (zpool-sync)
    メモリ上のデータをディスクに同期します。
    zpool sync pool_name
    

プールのインポートとエクスポート

[編集]
  • エクスポート (zpool-export)
    プールをシステムから切り離します。
    zpool export pool_name
    
  • インポート (zpool-import)
    他のシステムやデバイスからプールをインポートします。
    zpool import pool_name
    

その他の操作

[編集]
  • プロパティの取得と設定 (zpool-get / zpool-set)
    プールのプロパティを取得または設定します。
    zpool get property pool_name
    zpool set property=value pool_name
    
  • バージョンアップ (zpool-upgrade)
    プールのディスクフォーマットバージョンを管理します。
    zpool upgrade pool_name
    

zpool upgrade を実行してZFSプールのバージョンを更新した場合、ブートコード (bootcode) を更新しないと、次回の再起動時にシステムがブートできなくなる可能性があります。これは、ZFSプールの新しいバージョンが古いブートローダーでは対応していない機能を使用する可能性があるためです。

特にFreeBSDの場合、ZFSブート環境を使用している場合は、gpart を使用して正しいブートコードをインストールする必要があります。以下に手順を示します。

ブートコードを更新する手順
  1. 現在のシステム状態の確認
    ZFSプールを確認して、zpool upgrade が成功していることを確認します。
    zpool status
    zpool upgrade
    
  2. パーティション構成の確認
    ブートコードを更新すべきパーティションを確認します。通常、boot パーティションは gpart show で確認できます。
    gpart show
    
  3. 適切なブートコードのインストール
    システムのパーティションに応じて、以下のコマンドを実行します。たとえば、ada0 がターゲットディスクの場合:
    • GPT形式の場合
    gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
    
    • /boot/pmbr: プロテクティブMBR (GPT用)
    • /boot/gptzfsboot: GPT用のZFSブートローダー
    • -i 1: ZFSブート用のパーティション番号 (通常は1)
    • MBR形式の場合
    gpart bootcode -b /boot/boot ada0
    
  4. ブートコードの確認
    ブートローダーが正しくインストールされたかを確認します。
    gpart show ada0
    
  5. 再起動
    システムを再起動して、正常にブートすることを確認します。
    reboot
    
注意点
  • gpart を使用する際は、ターゲットディスクを間違えないように十分注意してください。
  • ブートコードを更新する操作にはroot権限が必要です。
  • bootcode のインストール前に、現在の環境をバックアップすることを推奨します。
  • もし再起動に失敗した場合にそなえ、USBメモリなどにブート可能な最新のFreeBSDを用意することを推奨します。

これらを行うことで、zpool upgrade 後も問題なくシステムをブートできるようになります。

使用例

[編集]
  1. プールの作成
    zpool create tank mirror disk1 disk2
    
  2. プールの破棄
    zpool destroy tank
    
  3. プールのステータス確認
    zpool status
    
  4. スクラブの開始
    zpool scrub tank
    

zpoolコマンドはZFSプール管理の中心的な役割を担っており、ストレージの信頼性とパフォーマンスの向上に寄与します。