CentOS ディスク追加~LVM方式~

Linux

インフラエンジニアのしずくです<(_ _)>

CentOS ディスクの追加~共通~の続きの一つLVMの設定方法について今回はご紹介します!

【LVM方式・ディスク設定】

パーティション作成

下記のコマンドでパーティションの作成を行います。(ここでは2つのパーティションに分割しています)

parted 【「parted -l」で確認したデバイス名】
print
mklabel gpt
mkpart
【「parted -l」で確認したデバイス名】1
xfs
0%
50%
print
mkpart
【「parted -l」で確認したデバイス名】2
xfs
50%
100%
print
quit

実際の実行例を見たほうがわかりやすいので、見てみましょう!

[root@localhost ~]# parted /dev/sdb
GNU Parted 3.2
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。

#「print」コマンドで作業前の状態を確認します。
(parted) print
エラー: /dev/sdb: ディスクラベルが認識できません。
モデル: VMware, VMware Virtual S (scsi)
ディスク /dev/sdb: 10.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: unknown
ディスクフラグ:

#GPT方式のパーティションラベルを設定します。
(parted) mklabel gpt

#1つ目のパーティションを作成します。
(parted) mkpart
パーティションの名前?  []? /dev/sdb1
ファイルシステムの種類?  [ext2]? xfs
開始? 0%
終了? 50%

#2つ目のパーティションを作成します。
(parted) mkpart
パーティションの名前?  []? /dev/sdb2
ファイルシステムの種類?  [ext2]? xfs
開始? 50%
終了? 100%

#「print」コマンドで作業後の状態を確認します。
(parted) print
モデル: VMware, VMware Virtual S (scsi)
ディスク /dev/sdb: 10.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前       フラグ
 1    1049kB  5369MB  5368MB  xfs               /dev/sdb1
 2    5369MB  10.7GB  5368MB  xfs               /dev/sdb2

(parted) quit
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

「mkpart」で指定する「パーティションの名前? []?」は任意でパーティションに割り当てる名称を決めますが、基本的にはデバイス名の後ろに連番を割り当てることが多いです。「ファイルシステムの種類? [ext2]?」は設定するファイルシステムを指定します。(今回はxfsを指定しています)「開始?」、「終了?」についてはパーティションの容量を決定します。(5GBで指定するといったことはできません、開始・終了を指定するしかないです。)

物理ボリューム(PV)作成

ここからはLVMの設定になります。物理ボリューム(PV)→ボリュームグループ(VG)→論理ボリューム(LV)の順で作成していきます。また、今回はそれぞれのパーティションを一つの論理ボリュームで管理するような形式にさせていただきます。

PV確認コマンド

pvdisplay

こちら実行例です。

[root@localhost ~]# pvdisplay
  "/dev/sdb1" is a new physical volume of "<5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name
  PV Size               <5.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               3lpfA8-uwCW-QPm0-ozGH-EvqQ-8DGn-rnye7z

PV作成コマンド

pvcreate 【パーティション名】

こちら実行例です。

[root@localhost ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.

PV削除コマンド

pvremove

こちら実行例です。

[root@localhost ~]# pvremove /dev/sdb2
  Labels on physical volume "/dev/sdb2" successfully wiped.

ボリュームグループ(VG)作成

VG確認コマンド

vgdisplay

こちら実行例です。

[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               vg01
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               9.99 GiB
  PE Size               4.00 MiB
  Total PE              2558
  Alloc PE / Size       0 / 0
  Free  PE / Size       2558 / 9.99 GiB
  VG UUID               3SUGZM-G6ut-GQlc-9hMr-dxi4-yjh2-vHtDw3

VG作成コマンド

vgcreate 【VG名】 【PV名(複数でも一つでも可能)】

こちら実行例です。

[root@localhost ~]# vgcreate vg01 /dev/sdb1 /dev/sdb2
  Volume group "vg01" successfully created

VG削除コマンド

vgremove 【VG名】

こちら実行例です。

[root@localhost ~]# vgremove vg01
  Volume group "vg01" successfully removed

論理ボリューム(LV)作成

LV確認コマンド

lvdisplay

こちら実行例です。

[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg01/lv01
  LV Name                lv01
  VG Name                vg01
  LV UUID                hS3rvD-TAN6-u5M9-ac1j-3HFs-26mQ-0a7Nd2
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2021-10-01 04:10:10 -0400
  LV Status              available
  # open                 0
  LV Size                9.99 GiB
  Current LE             2558
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

LV作成コマンド

lvcreate -n 【LV名】 -l 100%FREE 【VG名】

こちら実行例です。 「-n」でLVの名称を指定、「-l」でextents サイズ(作成する論理ボリュームのサイズ)を指定します。

[root@localhost ~]# lvcreate -n lv01 -l 100%FREE vg01
  Logical volume "lv01" created.

LV削除コマンド

lvremove /dev/【VG名】/【LV名】

こちら実行例です。

[root@localhost ~]# lvremove /dev/vg01/lv01
★こちらで削除の確認をされていますので、「y」で削除しましょう。
Do you really want to remove active logical volume vg01/lv01? [y/n]: y 
  Logical volume "lv01" successfully removed

領域フォーマット

今回はxfsというファイルシステムへフォーマットしてOSが該当のLVMを使用できるようにします。
※ほかのファイルシステムへフォーマットしても問題ありません。

blkid

こちら、実行例になります。TYPEがファイルシステムの形式、UUIDはファイルシステムを識別するためのUUID、PARTUUIDはパーティションを識別するためのUUIDです。
※UUIDとは全世界で重複することがないようにされている一意のIDです。

[root@localhost ~]# blkid
/dev/sda1: UUID="4289adec-b890-424f-aa6e-1fcd5b6e65eb" TYPE="ext4" PARTUUID="f5591a1e-01"
/dev/sda2: UUID="bEKvBR-hojT-563r-Kc16-AnIQ-TUbh-fBHDPw" TYPE="LVM2_member" PARTUUID="f5591a1e-02"

下記2つのコマンドが実際にxfsというファイルシステムでフォーマットをかけるコマンドになります。

mkfs.xfs 【作成したLVM(/dev/【VG名】/【LV名】)】

もしくは

mkfs -t xfs 【作成したLVM(/dev/【VG名】/【LV名】)】

こちら、実行例になります。上記どちらのコマンドを実行しても同様の結果が得られます。

[root@localhost ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01         isize=512    agcount=4, agsize=654848 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2619392, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

もし下記のような結果が返ってきた場合、ディスクが空でない場合などに出力されます。その場合は「-f」オプションを付与して上記コマンドを実行してください。

mkfs.xfs: /dev/sdb appears to contain a partition table (gpt).
mkfs.xfs: Use the -f option to force overwrite.

LVで作成した領域のマウント

下記のコマンドでデバイスをマウントしましょう!
こちらで注意していただきたいのは、マウントポイントは先に作成しておく必要があります。こちらの作成は「mkdir」コマンドなどを使用してディレクトリを作成すればOKです!

マウント状態を出力するコマンドです。
※作業の前後で実行してください。

df -h

こちら実行結果です。「ファイルシス(テム)」はデバイス名、「サイズ」は総容量、「使用」は使用領域サイズ、「残り」は空き容量、「使用%」は使用率、「マウント位置」はマウント先を示しています。
※こちらのサイズなどはあくまでOSが認識している領域のみなります。

ファイルシス        サイズ  使用  残り 使用% マウント位置
devtmpfs              382M     0  382M    0% /dev
tmpfs                 399M     0  399M    0% /dev/shm
tmpfs                 399M  5.7M  393M    2% /run
tmpfs                 399M     0  399M    0% /sys/fs/cgroup
/dev/mapper/cl-root    37G  1.6G   36G    5% /
/dev/sda1             976M  136M  774M   15% /boot
tmpfs                  80M     0   80M    0% /run/user/0
/dev/sdb               10G  104M  9.9G    2% /data

こちらのコマンドで実際にマウントしましょう。 こちらは実行結果は基本的に帰ってきません!

mount 【作成したLVM(/dev/【VG名】/【LV名】)】 【マウント先のディレクトリ(マウントポイント)】

ここまで実施しただけでは、OS再起動する度にマウントしなければいけません。そのため、fstabというファイルにOS再起動を行っても、自動でマウントさせる設定を記載します。

上記の上記の中で確認した「blkid」コマンドの結果のUUIDを控えて、下記のコマンドで、fstabファイルのバックアップと編集を行います。

cp -p /etc/fstab /etc/fstab_org
vi /ets/fstab

「cp -p」コマンドはパーミッションや所有権などを保持したままファイルをコピーします。また「vi」コマンドはファイルを編集するためのコマンドで、入力モードになるためにはいろいろな方法があるのですが今回はひとまず、「i」を押下して、下記の内容に合わせて記載してください。また、「vi」編集を終了させるには「Esc」キーで編集モード(インサートモード)から抜けて、保存して完了させる場合は「:wq」、保存せず終了する場合は「:q!」を入力します。

#このような形で記載されています。
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=4289adec-b890-424f-aa6e-1fcd5b6e65eb /boot                   ext4    defaults        1 2
/dev/mapper/cl-swap     swap                    swap    defaults        0 0
#今回の記載は下記のようにしましょう。(xfsのファイルシステムでフォーマットした場合のみです。)
#また、それぞれ半角スペースで区切っていますので、区切り忘れがないか確認してください!
UUID=【控えたUUID】 【マウントポイント】 xfs defaults 0 0

「df -h」で作業前後を確認しながら、下記のコマンドでfstabに記載された内容通りにマウントされるかを確認します。こちらは実行結果は基本的に帰ってきません!

mount -a

おわりに

こちらで、取り付けたディスクをLVMにてOS上のデバイスとして利用させる方法は終わりです!お疲れ様でした(❁´ω`❁) 

Posted by shizuku-LH