Ansibleは、自動化、構成、およびインフラストラクチャ管理ツールです。以前の記事では、Ansibleを紹介し、システムの役割について説明しています。この記事では、Ansibleを使用してLogical Volume Manager(LVM)を構成する方法を説明します。 Ansibleを使用してLVMを構成すると、システム管理者はタスクをより効率的に実行し、手動での作業に費やす時間を短縮できます。パーティションを作成してLVMを初期化するAnsibleプレイブックを作成できます。
[次のこともお楽しみいただけます:LogicalVolumeManagerの概要]
LVMの概要
ご存知のように、プライマリパーティションを拡張および縮小することはできません。このようなシナリオでは、ディスクに余分なスペースが必要な場合に問題が発生する可能性があります。 LVMを使用すると、論理ボリュームに新しいディスクを追加および削除できるため、この問題を克服できます。 LVMは、RHEL7以降のRedHat Enterprise Linux(RHEL)のデフォルトインストールの一部です。
LVMを使用する前に理解しておく必要のある重要な項目は次のとおりです。
- PV -ディスク、パーティション、またはループバックファイルで初期化された物理ボリューム。 PVを初期化すると、デバイスの先頭にラベルが作成されます。
- VG -ボリュームグループは、論理ボリューム(LV)のコレクションです。 PV内にVGを作成します。
- LV -論理ボリュームは、ディスク上の標準パーティションと同じです。 1つのVG内に複数のLVを作成できます。必要なスペースに応じてLVのサイズを変更できます。
パーティションの作成
RHEL 8では、 Partedを使用してパーティションを作成します 効用。 別れ MS-DOSまたはGUIDパーティションテーブル(GPT)パーティションを使用してパーティションを作成する柔軟性を提供します。 Ansibleでは、 Partedを使用できます パーティショニング用のモジュール。
この例では、/dev/vdb
について考えてみます。 ディスク名として。 2つの1GBパーティションを作成します。 Partedモジュールを使用するだけで、任意のサイズのパーティションを作成できます。
例:
---
- name: playbook for simple 1 GB partition
hosts: vm1.example.com
become: true
tasks:
- name: create partition
parted:
device: /dev/vdb
number: 1
flags: [ lvm ]
state: present
part_end: 2GB
次を使用してこのプレイブックを実行します:
$ ansible-playbook partition.yml
lsblk
を使用できます パーティションが現在存在することを確認するコマンド。
LVMの初期化とLVの作成
パーティションを作成したら、LVを初期化します。初期化するには、最初にPVとVGの両方を作成する必要があります。 Ansible lvgを使用する 物理エクステント(PE)サイズのPVとVGを作成するモジュール。 PEは、VGを固定サイズに分割します。デフォルトでは、PEのサイズは4MBです。 VGの作成中にデフォルトサイズを変更できます。一般に、PEサイズが大きいほど、パフォーマンスが向上します。
例:
- name: task for creating volume group
lvg:
vg: sample-vg
pvs: /dev/vdb1
pesize: 16
- name: Install lvm2 dependency
package:
name: lvm2
state: present
次のタスクはLVを作成します。 lvol モジュールはLVを作成します。 LVを作成するときは、VG名、サイズ、LV名などのオプションを指定します。
この例では、2GBのVGが1GBのサイズの最初のLVを作成します。
例:
- name: task for creating logical volume
lvol:
vg: sample-vg
lv: sample-lv
size: 1g
force: yes
この作成されたLVを使用するには、ファイルシステム内にそのパーティションをマウントする必要があります。データを保存するためにこのLVにアクセスできるのはあなただけです。 Ansibleでは、ファイルシステムを使用します filesystem
を使用してブロックデバイスをフォーマットするためのモジュール 。フォーマット後、任意のディレクトリにパーティションをマウントします。 マウントを使用できます Ansibleのモジュール。ディレクトリ(/data1
この例では)は、プレイブックを実行する前に存在します。
例:
- name: Create directory data1 if does not exist
file:
path: /data1
state: directory
mode: '0755'
- name: format the xfs filesystem
filesystem:
fstype: xfs
dev: /dev/sample-vg/sample-lv
- name: mount the lv on /data1
mount:
path: /data1
src: /dev/sample-vg/sample-lv
fstype: xfs
state: mounted
例: プレイブック全体:
---
- name: playbook for simple 1 GB partition
hosts: localhost
become: true
tasks:
- name: create partition
parted:
device: /dev/nvme1n1
number: 1
flags: [ lvm ]
state: present
part_end: 2GB
- name: Install lvm2 dependency
package:
name: lvm2
state: present
- name: task for creating volume group
lvg:
vg: sample-vg
pvs: /dev/nvme1n1p1
pesize: 16
- name: task for creating logical volume
lvol:
vg: sample-vg
lv: sample-lv
size: 1g
force: yes
- name: Create directory data1 if does not exist
file:
path: /data1
state: directory
mode: '0755'
- name: format the xfs filesystem
filesystem:
fstype: xfs
dev: /dev/sample-vg/sample-lv
- name: mount the lv on /data1
mount:
path: /data1
src: /dev/sample-vg/sample-lv
fstype: xfs
state: mounted
このハンドブックを実行して、LVが作成されているかどうかを確認するか、lvs
を使用してください コマンド。
LVMの機能の1つは、LVのサイズを拡張できることです。手動で、lvextend
を使用できます 指図。 Ansibleでは、 lvolを使用できます sample-lvのサイズを拡張するモジュール 。
例:
- name: Extend the logical volume to take all remaining space of the PVs and resize the underlying filesystem
lvol:
vg: sample-vg
lv: sample-lv
size: 2g
resizefs: true
force: yes
lvextend
の使用 コマンドまたはlvol モジュールは、LVを拡張するのに役立ちます。このlvol ボリュームの場合は、resizefs
を使用します デバイスにあるマウントされていないファイルシステムを拡大するパラメータ。
LVのサイズを縮小するための構文は、次のとおりです。
- name: Extend the logical volume to take all remaining space of the PVs and resize the underlying filesystem
lvol:
vg: sample-vg
lv: sample-lv
size: 700m
shrink: yes
force: yes
[Ansibleについてもっと知りたいですか? RedHatから無料の技術概要コースを受講してください。 Ansible Essentials:自動化の技術概要のシンプルさ。 ]
まとめ
この記事では、簡単なAnsibleプレイブックを使用してLVMを構成する方法を説明しました。単純なプレイブックを使用する代わりに、ロールを作成できます。 、上記と同じプロセスとモジュールを使用します。 Ansibleは、手動タスクを減らし、LVM構成の効率を高めるのに役立ちます。この記事で説明する方法を使用すると、複数の管理対象ノードでの操作が簡素化されます。