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 データベースの読み取りと書き込みの分離を実装する例

推薦する

VPS はオフライン ダウンロード サーバーを構築します (ネットワーク ディスクの時代以降)

モチベーション学習の必要性から、海外のサーバーメーカー(どこのメーカーかは言いません)のVPSサービ...

簡潔なReactコンポーネントを書くためのヒント

目次スプレッド演算子を使用してプロパティを渡すのは避けてください関数パラメータをオブジェクトにカプセ...

純粋な CSS3 マインドマップ スタイルの例

マインドマップ彼はおそらく次のように見えるでしょう: インターネット上の実装のほとんどは d3.js...

CentOS8でyumソースを変更した後にウェアハウスキャッシュの同期に失敗する問題の詳細な説明

問題の原因: 最初は CentOS 8 のデフォルトの yum ソースを正常に使用できますが、次のコ...

Linux での vi (vim) の新しい使い方のまとめ

私は数年間 vi エディタを使ってきましたが、実用的な用途で使ったことはありませんでした。今日 Py...

MySql5.x を MySql8.x にアップグレードする方法と手順

MySQL 5.x と MySQL 8.0.X のいくつかの違いapplication.proper...

Zookeeperスタンドアロン環境とクラスタ環境の構築

1. 単一マシン環境の構築# 1.1 ダウンロードZookeeper の対応するバージョンをダウンロ...

Vueはシンプルなマーキー効果を実装します

この記事では、Vueの具体的なコードを共有して、シンプルなマーキー効果を実現しています。具体的な内容...

Azure Container Registry を使用してイメージを保存する際の問題

Azure Container Registry は、Docker Registry 2.0 仕様に...

VirtualBox Centos7 の NAT+ホストオンリーネットワークの落とし穴のまとめ

目次1. 問題の背景2. 仮想マシン ネットワーク カードの接続方法は何ですか? 2.1 NAT 2...

Javascript における非同期待機の詳細な理解

この記事では、async/await がすべての JavaScript 開発者にとって非同期プログラ...

Docker で Redis クラスターを素早く構築する方法の例

Redis クラスターとはRedis クラスターは、R​​edis が提供する分散データベース ソリ...

HTML埋め込みタグの使用方法と属性の詳細な説明

1. 基本的な文法コードをコピーコードは次のとおりです。埋め込み src=url注: 埋め込みはさま...

コード分​​析を実現するためのFastDFSとNginxの統合

FastDFSとNginxの統合:トラッカーは、負荷分散と高可用性のために Nginx と組み合わせ...

Gearman + MySQL による永続化操作例

この記事では、gearman+mysql メソッドを使用して永続化操作を実装します。ご参考までに、詳...