LinuxベースのLVMシームレスディスク水平拡張の詳細な説明

LinuxベースのLVMシームレスディスク水平拡張の詳細な説明

この時点で、サーバーにはすでに次のものがあると想定します。

  • Parted がインストールされています (yum install parted)
  • パーティション容量に達したため、会社では容量を増やすためにサーバーに 4T ハードドライブを追加しました。
  • /boot パーティションを除き、残りは LVM モードの拡張論理パーティションです。

ソフトウェアのインストールと情報の表示

まず、ソフトウェアがインストールされているかどうかを確認します。

[root@Candy ~]# rpm -qa | grep lvm
lvm2-libs-2.02.118-2.el6.x86_64
lvm2-2.02.118-2.el6.x86_64
[root@キャンディ ~]# lv
lvchange lvextend lvmdiskscan lvmsar lvresize
lvconvert lvm lvmdump lvreduce lvs
lvcreate lvmchange lvmetad lvremove lvscan
lvdisplay lvmconf lvmsadc lvrename
[root@Candy ~]# rpm -qa | grep parted
パートド-2.1-29.el6.x86_64

ソフトウェアの準備ができたら、VM ハードウェアを確認します。

[ルート@キャンディ ~]# df -h
ファイルシステムサイズ 使用済み 使用可能使用率 マウント先
/dev/mapper/vg_candy-ルート
           7.3G 231M 6.7G 4% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 477M 30M 422M 7% /ブート
/dev/mapper/vg_candy-ホーム
           3.9G 8.0M 3.7G 1% /家庭
/dev/mapper/vg_candy-usr
           3.9G 382M 3.3G 11% /usr
/dev/mapper/vg_candy-var
           3.9G 63M 3.6G 2% /可変
[root@Candy ~]# fdisk -l
ディスク /dev/sda: 21.5 GB、21474836480 バイト
255 ヘッド、63 セクター/トラック、2610 シリンダー
単位 = 16065 シリンダー * 512 = 8225280 バイト
セクターサイズ(論理/物理):512バイト/512バイト
I/O サイズ (最小/最適): 512 バイト / 512 バイト
ディスク識別子: 0x0006e71c
  デバイス ブート 開始 終了 ブロック ID システム
/dev/sda1 * 1 64 512000 83 Linux
パーティション 1 はシリンダ境界で終了しません。
/dev/sda2 64 2611 20458496 8e Linux LVM
ディスク /dev/sdb: 4398.0 GB、4398046511104 バイト
255 ヘッド、63 セクター/トラック、534698 シリンダー
単位 = 16065 シリンダー * 512 = 8225280 バイト
セクターサイズ(論理/物理):512バイト/512バイト
I/O サイズ (最小/最適): 512 バイト / 512 バイト
ディスク識別子: 0x00000000
ディスク /dev/mapper/vg_candy-root: 8061 MB、8061452288 バイト
255 ヘッド、63 セクター/トラック、980 シリンダー
単位 = 16065 シリンダー * 512 = 8225280 バイト
セクターサイズ(論理/物理):512バイト/512バイト
I/O サイズ (最小/最適): 512 バイト / 512 バイト
ディスク識別子: 0x00000000
ディスク /dev/mapper/vg_candy-usr: 4294 MB、4294967296 バイト
255 ヘッド、63 セクター/トラック、522 シリンダー
単位 = 16065 シリンダー * 512 = 8225280 バイト
セクターサイズ(論理/物理):512バイト/512バイト
I/O サイズ (最小/最適): 512 バイト / 512 バイト
ディスク識別子: 0x00000000
ディスク /dev/mapper/vg_candy-var: 4294 MB、4294967296 バイト
255 ヘッド、63 セクター/トラック、522 シリンダー
単位 = 16065 シリンダー * 512 = 8225280 バイト
セクターサイズ(論理/物理):512バイト/512バイト
I/O サイズ (最小/最適): 512 バイト / 512 バイト
ディスク識別子: 0x00000000
ディスク /dev/mapper/vg_candy-home: 4294 MB、4294967296 バイト
255 ヘッド、63 セクター/トラック、522 シリンダー
単位 = 16065 シリンダー * 512 = 8225280 バイト
セクターサイズ(論理/物理):512バイト/512バイト
I/O サイズ (最小/最適): 512 バイト / 512 バイト
ディスク識別子: 0x00000000
[root@Candy ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb

この時点で、CentOS は sdb というディスクが存在することをすでに認識していますが、マウントもパーティション分割もされていないことがわかります。

拡張前にPartedを使用してパーティション分割する

ここで、/boot 以外のすべてのパーティションがいっぱいであると仮定します。まずパーティションを作成して、4TB のハードディスク (/dev/sdb) を使用する必要があります。

[root@Candy ~]# parted /dev/sdb
GNU パート 2.1
/dev/sdbの使用
GNU Parted へようこそ! コマンドの一覧を表示するには、「help」と入力してください。
(別れた) mklabel
新しいディスクラベルタイプですか?グプト
(別れた) mkpart
パーティション名? []?
ファイル システムの種類? [ext2]? ext4
出発点? 0T
終点? 4T
(別れた)p
モデル: VMware、VMware Virtual S (scsi)
ディスク /dev/sdb: 4398GB
セクターサイズ(論理/物理):512B/512B
パーティションテーブル: gpt
番号 開始 終了 サイズ ファイルシステム 名称 マーク 1 1049kB 4398GB 4398GB
(parted) 1 lvm をオンに設定
(別れた)p
モデル: VMware、VMware Virtual S (scsi)
ディスク /dev/sdb: 4398GB
セクターサイズ(論理/物理):512B/512B
パーティションテーブル: gpt
番号 開始 終了 サイズ ファイルシステム 名前 フラグ 1 1049kB 4398GB 4398GB lvm
(別れた)q
[root@Candy ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1

それでは操作について説明しましょう。

  1. mklabel はディスクを gpt パーティションに変換します。MBR パーティションは TB レベルのハードディスクをサポートできないためです (詳細についてはご自身でご確認ください。parted は当然 TB レベル以下の操作もサポートしています)。
  2. mkpart は変換された gpt ディスクをパーティション分割し、ファイル システムの種類、開始点、終了点を必要とします。
  3. 作成したパーティションを印刷するには、「p」と入力します。
  4. set 1 lvm on は、番号1とタグ付きのパーティションをLVMに設定し、vmボリュームグループに追加できるようにします。

次に、LVM グループの名前を確認します。

[root@キャンディ ~]# vgs
 VG #PV #LV #SN 属性 Vサイズ Vフリー
 vg_candy 1 4 0 wz--n- 19.51g 0
 
[root@Candy ~]# vgdisplay
 --- ボリュームグループ ---
 VG名 vg_candy
 システムID
 lvm2をフォーマットする
 メタデータ領域 1
 メタデータシーケンス番号 5
 VGアクセス読み取り/書き込み
 VGステータスサイズ変更可能
 最大レベル0
 カー LV 4
 オープンLV4
 最大PV 0
 現在のPV 1
 第1幕
 VG サイズ 19.51 GiB
 PE サイズ 4.00 MiB
 総PE 4994
 割り当て PE / サイズ 4994 / 19.51 GiB
 フリーPE / サイズ 0 / 0
 VG UUID Gcm5Ml-fc88-Xk5q-xuPC-Kj7Y-alfK-i770Gc
[root@Candy ~]# lvscan
 アクティブ '/dev/vg_candy/usr' [4.00 GiB] 継承
 アクティブ '/dev/vg_candy/var' [4.00 GiB] 継承
 アクティブ '/dev/vg_candy/home' [4.00 GiB] 継承
 アクティブ '/dev/vg_candy/root' [7.51 GiB] 継承
[root@キャンディ ~]#

lvm ボリューム グループが「vg_candy」と呼ばれていることがわかっているので、vgextend を使用して lvm「vg_candy」ボリューム グループにメンバーを追加します。

[root@Candy ~]# vgextend vag_candy /dev/sdb1
物理ボリューム「/dev/sdb1」が正常に作成されました
ボリューム グループ「vg_candy」が正常に拡張されました

次に、vgs コマンドを使用して pvs の数を確認します。

[root@キャンディ ~]# vgs
VG #PV #LV #SN 属性 Vサイズ Vフリー
vg_candy 2 4 0 wz--n- 4.02t 4.00t

追加前の vgs を比較すると、PV 数が 1 から 2 に変わったことがわかりますか?

ここで、vgdisplay を使用して現在のパーティション容量を確認してみましょう。

[root@Candy ~]# vgdisplay
 --- ボリュームグループ ---
 VG名 vg_candy
 システムID
 lvm2をフォーマットする
 メタデータ領域 2
 メタデータシーケンス番号 6
 VGアクセス読み取り/書き込み
 VGステータスサイズ変更可能
 最大レベル0
 カー LV 4
 オープンLV4
 最大PV 0
 カー PV 2
 第2幕
 VG サイズ 4.02 TiB
 PE サイズ 4.00 MiB
 合計PE 1053569
 割り当て PE / サイズ 4994 / 19.51 GiB
 フリー PE / サイズ 1048575 / 4.00 TiB
 VG UUID Gcm5Ml-fc88-Xk5q-xuPC-Kj7Y-alfK-i770Gc

追加されていない vgdiplay コマンドを再度比較すると、FreePE の値が 0 / 0 から 1048575 / 4.00 TiB に変化していることがわかります。これは、Candy が 4TB lvm パーティションを vg_candy 論理ボリューム グループに正常に追加したことを意味します。

すべての論理パーティションを拡張する前に、df -h を使用して、存在するパーティションを確認できます。

[ルート@キャンディ ~]# df -h
ファイルシステムサイズ 使用済み 使用可能使用率 マウント先
/dev/mapper/vg_candy-root 7.3G 231M 6.7G 4% /
 tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 477M 30M 422M 7% /ブート
/dev/mapper/vg_candy-home 3.9G 8.0M 3.7G 1% /ホーム         
/dev/mapper/vg_candy-usr 3.9G 382M 3.3G 11% /usr
/dev/mapper/vg_candy-var 3.9G 63M 3.6G 2% /var

面倒な作業は終わりましたので、あとはパーティションの容量を拡張するだけです。

ディスク容量を拡張する

仮定: これらのパーティションに 500G の容量を追加する必要があります: //home/usr/var

[root@Candy ~]# lvextend -L +500G /dev/mapper/vg_candy-root
 論理ボリューム vg_candy/root のサイズが 7.51 GiB (1922 エクステント) から 507.51 GiB (129922 エクステント) に変更されました。
 論理ボリューム ルートのサイズが正常に変更されました
 
[root@Candy ~]# lvextend -L +500G /dev/mapper/vg_candy-home
 論理ボリューム vg_candy/home のサイズが 4.00 GiB (1024 エクステント) から 504.00 GiB (129024 エクステント) に変更されました。
 論理ボリュームホームのサイズが正常に変更されました
 
[root@Candy ~]# lvextend -L +500G /dev/mapper/vg_candy-usr
 論理ボリューム vg_candy/usr のサイズが 4.00 GiB (1024 エクステント) から 504.00 GiB (129024 エクステント) に変更されました。
 論理ボリュームusrのサイズが正常に変更されました
 
[root@Candy ~]# lvextend -L +500G /dev/mapper/vg_candy-var
 論理ボリューム vg_candy/var のサイズが 4.00 GiB (1024 エクステント) から 504.00 GiB (129024 エクステント) に変更されました。
 論理ボリューム var のサイズが正常に変更されました

この手順は元に戻せないので注意してください。 パーティション名を間違えても大丈夫です! 他のパーティションに追加する場合は、容量を縮小するためにプロセスを N 回繰り返す必要があり、非常に面倒です。 上記の FileSystem を注意深く確認することをお勧めします。覚えておいてください...

拡張は成功しました! 上記のコマンドをもう一度使用して、LVM 情報を表示してみましょう。

[root@キャンディ ~]# vgs
 VG #PV #LV #SN 属性 Vサイズ Vフリー
 vg_candy 2 4 0 wz--n- 4.02t 2.05t 
 
[root@Candy ~]# lvscan
 アクティブ '/dev/vg_candy/usr' [504.00 GiB] 継承
 アクティブ '/dev/vg_candy/var' [504.00 GiB] 継承
 アクティブ '/dev/vg_candy/home' [504.00 GiB] 継承
 アクティブ '/dev/vg_candy/root' [507.51 GiB] 継承
 
[root@Candy ~]# vgdisplay
 --- ボリュームグループ ---
 VG名 vg_candy
 システムID
 lvm2をフォーマットする
 メタデータ領域 2
 メタデータシーケンス番号 10
 VGアクセス読み取り/書き込み
 VGステータスサイズ変更可能
 最大レベル0
 カー LV 4
 オープンLV4
 最大PV 0
 カー PV 2
 第2幕
 VG サイズ 4.02 TiB
 PE サイズ 4.00 MiB
 合計PE 1053569
 割り当て PE / サイズ 516994 / 1.97 TiB
 フリー PE / サイズ 536575 / 2.05 TiB
 VG UUID Gcm5Ml-fc88-Xk5q-xuPC-Kj7Y-alfK-i770Gc
 
[ルート@キャンディ ~]# df -h
ファイルシステムサイズ 使用済み 使用可能使用率 マウント先
/dev/mapper/vg_candy-root 7.3G 231M 6.7G 4% /
 tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 477M 30M 422M 7% /ブート
/dev/mapper/vg_candy-home 3.9G 8.0M 3.7G 1% /ホーム         
/dev/mapper/vg_candy-usr 3.9G 382M 3.3G 11% /usr
/dev/mapper/vg_candy-var 3.9G 63M 3.6G 2% /var

これを見ると驚かれるかもしれません! df -h はなぜ変更されないのですか?

ディスク情報を更新して書き込み

df -h も有効になるように、resize2fs を使用してパーティションのサイズを変更する必要があります。

resize2fs に必要な時間は、提供する容量に比例します。つまり、提供する容量が大きければ大きいほど、resize2fs にかかる時間も長くなります。

[root@Candy ~]# resize2fs /dev//mapper/vg_candy-root
resize2fs 1.41.12 (2010 年 5 月 17 日)
/dev//mapper/vg_candy-root のファイルシステムは / にマウントされています。オンラインでのサイズ変更が必要です。古い desc_blocks = 1、新しい desc_blocks = 32
/dev//mapper/vg_candy-root を 133040128 (4k) ブロックにオンラインでサイズ変更します。
/dev//mapper/vg_candy-root 上のファイルシステムの長さは現在 133040128 ブロックです。

[root@Candy ~]# resize2fs /dev//mapper/vg_candy-usr
resize2fs 1.41.12 (2010 年 5 月 17 日)
/dev//mapper/vg_candy-usr のファイルシステムは /usr にマウントされています。オンラインでのサイズ変更が必要です。古い desc_blocks = 1、新しい desc_blocks = 32
/dev//mapper/vg_candy-usr を 132120576 (4k) ブロックにオンラインでサイズ変更します。
/dev//mapper/vg_candy-usr 上のファイルシステムの長さは現在 132120576 ブロックです。

[root@Candy ~]# resize2fs /dev//mapper/vg_candy-var
resize2fs 1.41.12 (2010 年 5 月 17 日)
/dev//mapper/vg_candy-var のファイルシステムは /var にマウントされています。オンラインでのサイズ変更が必要です。古い desc_blocks = 1、新しい desc_blocks = 32
/dev//mapper/vg_candy-var を 132120576 (4k) ブロックにオンラインでサイズ変更します。
/dev//mapper/vg_candy-var 上のファイルシステムの長さは現在 132120576 ブロックです。

[root@Candy ~]# resize2fs /dev//mapper/vg_candy-home
resize2fs 1.41.12 (2010 年 5 月 17 日)
/dev//mapper/vg_candy-home のファイルシステムは /home にマウントされています。オンラインでのサイズ変更が必要です。古い desc_blocks = 1、新しい desc_blocks = 32
/dev//mapper/vg_candy-home を 132120576 (4k) ブロックにオンラインでサイズ変更します。
/dev//mapper/vg_candy-home 上のファイルシステムの長さは現在 132120576 ブロックです。

[ルート@キャンディ ~]# df -h
ファイルシステムサイズ 使用済み 使用可能使用率 マウント先
/dev/mapper/vg_candy-root 500G 245M 474G 1% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 477M 30M 422M 7% /ブート
/dev/mapper/vg_candy-home 496G 16M 471G 1% /ホーム
/dev/mapper/vg_candy-usr 496G 390M 471G 1% /usr
/dev/mapper/vg_candy-var 496G 71M 471G 1% /var

結論

ちなみに、再起動後にシステムが自動的にマウントされる写真を紹介します!

Linux システムは非常にスマートです。実際、再起動してもしなくても使用できます。ここでは、再起動後の効果をお見せしたいと思います。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux の Centos7 における LVM ディスク拡張の問題
  • Linux ディスク管理 LVM の使用
  • Linux ディスクデバイスと LVM 管理コマンドの詳細な例
  • LinuxでLVMディスクを拡張する詳細な手順

環境

名前財産
CPU 5650 円
メモリ4G
ディスク20G+4TB

<<:  Vue Router の 10 の高度なヒントのまとめ

>>:  mycat を使用して MySQL データベースの読み取りと書き込みの分離を実装する例

推薦する

Linux CentOS 6.5 ifconfig が IP を照会できない問題の解決方法

最近、何人かの友人から、仮想マシンに CentOS をインストールした後、ifconfig コマンド...

Vuexの補助関数の使い方

目次マップ状態マップゲッターマップミューテーションマップアクション複数のモジュールマップ状態 ...

WeChatアプレットがログインインターフェースを実装

WeChatアプレットのログインインターフェースは参考までに実装されています。具体的な内容は次のとお...

MySQL の null 制約のケースの説明

目次テーブルを作成するときにNOT NULL制約を設定するテーブルを変更するときに非NULL制約を追...

Dockerサーバーのストレージリソースプール不足問題の解決

目次1. 問題の説明2. 問題分析3. 問題解決1. Dockerのディスク使用量を確認する2. 再...

Nginxホットデプロイメントの実装

目次セマフォNginx ホットデプロイメント上記のブログ投稿に従ってください。ファイアウォールをオフ...

Ubuntu20.04 VNCのインストールと設定の実装

VNC はリモート デスクトップ プロトコルです。 VNC を使用して Ubuntu 20.04 を...

Linux で SSH 経由でリモート ファイルシステムをマウントする方法の詳細な説明

SSHFS の機能: FUSE(Linux向けの最高のユーザー空間ファイルシステムフレームワーク)を...

Nginx プロキシ転送構成を通じてクロスドメイン API プロキシ転送を実装する方法

序文WEB 開発では、クロスドメイン リクエストが頻繁に発生します。クロスドメインの問題を解決する方...

Dockerイメージを完全にアンインストールする手順

1. docker ps -a 実行中のイメージプロセスを表示する [root@mylinux~]#...

Mysql | ワイルドカード(%、_ など)を使用したファジークエリの詳細な説明

ワイルドカードのカテゴリ: %パーセント ワイルドカード: 任意の文字が任意の回数出現できることを示...

Vue の better-scroll コンポーネントを使用して水平スクロール機能を実現する

について最近、Vue を学習する過程で、基本的な知識の練習と強化を目的として、Qunar.com の...

ドメイン名、ポート、異なるIPに基づくnginx仮想ホスト設定の実装

1. nginx仮想ホストの設定仮想ホストを使用すると、実行する Web サイトごとに個別の Ngi...

Linux trコマンドの使い方

01. コマンドの概要tr コマンドは、標準入力からの文字を置換、圧縮、削除できます。ある文字セット...

Windows 10 の Docker で countly-server を展開して実行するプロセス

私は最近countlyに触れて、慣れてきました。私は、必要に応じてcountlyのクラッシュプラグイ...