

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
はじめに
このページでは、クラウドやアプリを動かすときに重要な「 persistentvolume 」について、初心者にも分かるように噛み砕いて解説します。 Kubernetes を使う時、データをどう保存しておくかはとても大切なポイント。ここでは、persistentvolume がどんなものか、どう使うのか、実務での流れを見ていきます。
persistentvolumeとは何か
簡単に言えば、PersistentVolume(PV) は「クラスタ内のストレージ領域」のことです。サーバーのディスクやネットワークストレージ、クラウドのブロックストアなど、色々な場所にある保存場所を指します。Kubernetes は、Pod が必要とするデータをこの PV という箱に保存できるように管理します。
PVとPVCの関係
データを使うときには、ただ箱を用意するだけでは足りません。Kubernetes では「箱を借りたい人」と「箱を貸す人」をつなぐ仕組みがあります。これが PersistentVolumeClaim(PVC) です。PVC は「このくらいの容量が欲しい」「この種類のストレージがいい」といった要望を表します。Kubernetes は、要望に合う PV を探して割り当てます。これにより、開発者はどの箱がどのサーバーにあるかを気にせず、データを保存できるようになります。
動的プロビジョニングとストレージクラス
実は、PV を事前に作っておく必要がある場合と、動的に作ってくれる場合の二通りがあります。StorageClass という仕組みを使うと、PVC が生まれたときに自動で PV を作ってくれる「動的プロビジョニング」が可能です。これにより、開発者は「この容量が欲しい」「この性能が欲しい」という要望を PVC に書くだけで済み、運用側はストレージの管理を統合して楽になります。
ストレージの種類と注意点
PV は「どの場所に保存するか」という観点でいろいろな種類があります。ローカルディスク、ネットワークストレージ、クラウドのブロックストアなどです。運用上の注意としては、PV のライフサイクルと PVC のライフサイクルが必ずしも同じではないこと、Pod が削除されてもデータはそのまま残る可能性があること、長期的なバックアップが必要なケースには別の対策を検討する必要があることなどです。
使い方の流れ
実際の運用では、以下のような流れでストレージを使います。まず、開発者は PVC を作成して、欲しい容量・ストレージの特性を宣言します。次に、Kubernetes が StorageClass を見て、動的プロビジョニングで適切な PersistentVolume を用意します。最後に、Pod が PVC をマウントして、アプリケーションがデータを保存・読み出しできるようになります。ここで重要なのは、アプリケーションが「データをどこに置くか」を意識せずに済むことです。実務ではこの自動化が大きな負担軽減につながります。
表で見る比較:PVとPVCの違い
| 項目 | PV | PVC |
|---|---|---|
| 役割 | ストレージの実体を表す箱 | ストレージの要望を表す申請 |
| 管理者の視点 | 実際の容量・属性を設定・管理 | ユーザーの要件を定義・要求 |
| 結びつき | 複数の PVC が同じ PV を使える場合は競合回避が必要 | 特定の PV に割り当てられる |
| 動的作成 | StorageClass により自動作成可能 | PVC 側の要件に合わせて対応 |
用語のまとめ
最後に
初心者のうちは「PersistentVolume」や「StorageClass」という言葉が難しく感じるかもしれません。しかし、日常のファイル保存のイメージを使えば理解は進みます。デプロイ先のクラスタを実際に動かしてみて、PVC を作成してみると、PV がどのように割り当てられ、どのようにデータが保存されるかが見えてきます。学習を続けるうちに、ストレージの仕組みが自然と身についていくでしょう。
persistentvolumeの同意語
- 永続ボリューム
- Kubernetesにおける長期的にデータを保存できるストレージリソースの正式な日本語表現。PVと同義で、PVCと結合してアプリのデータをクラスタ内で保持します。
- PV
- PersistentVolumeの略称。Kubernetesのストレージリソースの短縮形で、永続ボリュームを指します。
- PersistentVolume
- 英語の正式名称。Kubernetesのストレージリソースの一つで、PVCと連携して永続的なデータを扱う抽象リソースです。
- 永続ストレージボリューム
- 日常的な言い換えとして使われることがある表現。意味は“永続的なストレージボリューム”で、PVと同義です。ただし公式文書では『永続ボリューム』が主に用いられます。
- PVリソース
- PV(PersistentVolume)を指す別表現。クラスタ内の永続ストレージリソースを意味します。
persistentvolumeの対義語・反対語
- 一時的ストレージ
- データが短時間しか保持されず、再起動や削除時に消える性質のストレージ。Kubernetes では pod の寿命やセッション期間に依存するボリュームのことを指すことが多いです。
- 揮発性ストレージ
- 電源を落とすとデータが失われる性質のストレージ。長期保存には向かず、短期的な作業用データに適しています。
- 非永続的ストレージ
- データを長期的に保存する目的には適さないストレージ。再起動や削除でデータが消える前提の性質を指します。
- エフェメラルボリューム
- Ephemeral volume の直訳的表現。短命で、Pod のライフサイクルに強く依存し、Pod が削除されるとデータも消えるボリュームのことを指します。
- Podのライフサイクル依存ストレージ
- ボリュームのライフサイクルが Pod の寿命と直結しており、Pod が削除されるとデータが失われるタイプのストレージ。代表例として空のディレクトリ系ボリュームなどが挙げられます。
persistentvolumeの共起語
- PersistentVolume
- Kubernetesクラスタ内の実際のストレージリソース。容量・アクセスモード・ストレージクラスなどの属性を持ち、PersistentVolumeClaim(PVC)と結びつくことでPodにマウントされます。
- PersistentVolumeClaim
- Podが必要とするストレージを要求するリソース。PVCがPVとバインドされると、対応するPVがPodにマウントされて利用されます。
- StorageClass
- 動的プロビジョニングの設定を定義するリソース。どのストレージバックエンドを使うか、どのプロビジョナーを用いるかを決定します。
- DynamicProvisioning
- PVC作成時にKubernetesが自動でPVを作成・割り当てる仕組み。StorageClassに紐づくプロビジョナーを使用します。
- StaticProvisioning
- 事前にPVを作成しておき、PVCへ手動で紐づけて使用する従来の方法です。
- CSI
- Container Storage Interfaceの略。ストレージドライバーとKubernetesを標準的に接続する仕組み。
- CSIDriver
- CSI規格に準拠したストレージドライバーの実装。複数のバックエンドをKubernetesと統合します。
- InTreeVolumePlugin
- Kubernetesに内蔵されている従来型のプラグイン。将来的にはCSIへ移行が進んでいます。
- Provisioner
- StorageClassが利用するバックエンドの実装。例としてkubernetes.io/aws-ebsなどが挙げられます。
- ReclaimPolicy
- PVCから解放されたPVの処理方針。Delete(ストレージを削除)、Retain(保持)、かつ旧来のRecycleは廃止されています。
- AccessMode
- PVへアクセスする権限のモード。代表的なものはReadWriteOnce(RWO)、ReadOnlyMany(ROX)、ReadWriteMany(RWX)です。
- ReadWriteOnce
- 1つのノードからのみ読み書き可能。
- ReadOnlyMany
- 複数ノードから読み取りのみ可能。
- ReadWriteMany
- 複数ノードから読み書き可能。
- VolumeMode
- PVのモード。Filesystemはファイルシステムとしてマウント、Blockはブロックデバイスとして扱います。
- Filesystem
- ファイルシステムとしてマウントされる場合のモード。
- Block
- ブロックデバイスとして扱われる場合のモード。
- Capacity
- PVの容量指定。例: 10Gi。PVCの要求サイズとマッチします。
- MountOptions
- Podへマウントする際に指定する追加オプション。例: hard, timeoなど。
- ClaimRef
- PVがどのPVCに紐づいているかを示す参照情報(PVCへの紐付けを指します)。
- VolumeBindingMode
- StorageClassがPVをバインドするタイミングの設定。WaitForFirstConsumerやImmediateがあります。
- WaitForFirstConsumer
- 最初のPodがスケジュールされるまでPVのバインドを待つ設定。
- Immediate
- PVC作成と同時にPVを即時バインドする設定。
- Topology
- トポロジー情報。ノードの場所やストレージの近接性を表し、適切なノードでPVを使用させるための制約に用います。
- TopologySelector
- PVの利用可否を制約する条件を定義する設定項目。
- NFS
- NFS(Network File System)をバックエンドとして使用する場合の代表的なPV。
- ISCSI
- iSCSIプロトコルをバックエンドとして使用する場合のPV。
- CephFS
- Cephのファイルシステムをバックエンドとして使用する場合のPV。
- CephRBD
- CephのRBD(ブロックデバイス)をバックエンドとして使用する場合のPV。
- GlusterFS
- GlusterFSをバックエンドとして使用する場合のPV。
- AWSEBS
- AWSのElastic Block Storeをバックエンドとして使用する場合のPV。
- GCEPersistentDisk
- Google Cloud PlatformのPersistent Diskをバックエンドとして使用する場合のPV。
- AzureDisk
- Azureのブロックストレージ(ディスク)をバックエンドとして使用する場合のPV。
- AzureFile
- Azureのファイル共有をバックエンドとして使用する場合のPV。
- OpenStackCinder
- OpenStackのCinderブロックストレージをバックエンドとして使用する場合のPV。
- LocalPV
- ノードのローカルディスクを直接PVとして提供する場合の設定。ノード故障時の耐障害性に注意。
- Longhorn
- LonghornはKubernetes向けの分散ストレージソリューション。CSI経由でPVを提供します。
- OpenEBS
- OpenEBSはKubernetes上のブロックストレージソリューション。PVC経由で利用します。
persistentvolumeの関連用語
- PersistentVolume (PV)
- Kubernetes クラスター内で事前に用意された永続ストレージのリソース。ボリュームの実体は StorageBackend にあり、PVC によって利用が開始される。
- PersistentVolumeClaim (PVC)
- Pod が必要とするストレージ量を宣言するオブジェクト。容量やアクセスモード、StorageClass などを指定して PV を要求する。
- StorageClass
- 動的プロビジョニングの設定を定義するリソース。どのストレージバックエンドを使うか、パラメータを指定する。
- CSI (Container Storage Interface)
- 外部ストレージドライバーの統一インタフェース。Kubernetes で標準的にストレージを取り扱う仕組み。
- Dynamic Provisioning
- PVC 作成時に自動で PV を作成する機能。StorageClass に基づく自動プロビジョニングを指す。
- Static Provisioning
- 管理者が先に PV を作成しておき、PVC がそれにバインドされる方式。
- Reclaim Policy
- PV が PVC から解放されたときの処理方針。Delete でストレージを削除、Retain で残しておく。
- Access Modes
- PV へのアクセスの仕方を表す属性。ReadWriteOnce RWO, ReadOnlyMany ROX, ReadWriteMany RWX の3つ。
- VolumeMode
- PV のマウントモード。File はファイルシステムとしてマウント、Block はブロックデバイスとしてマウント。
- Capacity
- PV が提供する総容量。PVC は要求容量を指定してマッチングされる。
- Binding
- PVC と PV を結び付けるプロセス。適切な PV が見つかると自動的にバインドされることが多い。
- PV Phase
- PV の現在の状態。Available, Bound, Released などがある。
- Local PersistentVolume
- ノード上のローカルディスクを PV として提供するタイプ。データローカリティを活かす設計。
- NFS
- ネットワークファイルシステムをバックエンドとするストレージ。複数ノードから同時アクセスが可能。
- iSCSI
- SCSI over IP を使うブロックストレージ。ネットワーク経由でブロックデバイスを提供。
- CephFS
- Ceph の分散ファイルシステムをマウントして使うストレージバックエンド。
- Ceph RBD
- Ceph のブロックデバイスをバックエンドとして提供。RBD プロビジョナーと連携することが多い。
- GlusterFS
- 分散ファイルシステムのバックエンド。複数ノードでストレージを共有する場合に使用。
- AWS EBS CSI
- Amazon(関連記事:アマゾンの激安セール情報まとめ) Web Services の EBS ボリュームを Kubernetes で利用する CSI ドライバー。
- GCE PD CSI
- Google Cloud の Persistent Disk を Kubernetes で使う CSI ドライバー。
- Azure Disk CSI
- Azure のディスクを Kubernetes で利用する CSI ドライバー。
- Provisioner
- StorageClass で指定する、動的プロビジョニングを実装するドライバーの総称。
- VolumeExpansion
- PVC の容量を後から拡張する機能。適切なストレージバックエンドがサポートしている必要がある。
- VolumeSnapshot
- PV の時点の状態を写真(関連記事:写真ACを三ヵ月やったリアルな感想【写真を投稿するだけで簡単副収入】)のように保存するスナップショット。データのバックアップ・リストアに利用。
- VolumeSnapshotClass
- VolumeSnapshot のデフォルトの挙動やプロビジョニングを定義する設定。
- VolumeSnapshotContent
- VolumeSnapshot の実体データを表すリソース。スナップショットの保存先情報を保持。
- Kubelet
- ノード上で Pod の管理とマウント、ボリュームの準備を担当するエージェント。
- StorageBackend
- 実際のストレージを提供する物理的または仮想的なバックエンド。
- Namespace
- Kubernetes の論理的な区分。PVC は通常 Namespace ごとに分離される。
- Cluster-scoped PV vs Namespace-scoped PVC
- PV はクラスター全体のリソースとして扱われるのに対し、PVC は名前空間に紐づくリソースである点が特徴。
- ReadWriteOnce (RWO)
- 1つのノードから読み書き可能なアクセスモード。
- ReadOnlyMany (ROX)
- 複数ノードから読み取り専用でアクセス可能なモード。
- ReadWriteMany (RWX)
- 複数ノードから読み書き可能なモード。
persistentvolumeのおすすめ参考サイト
- Kubernetes 永続ボリュームとは? |ピュア・ストレージ
- 永続化されたストレージ (Persistent Storage)とは - InfiniCloud株式会社
- Kubernetes 永続ボリュームとは? |ピュア・ストレージ



















