2020年3月12日木曜日

【LVM入門】LinuxのLVM領域を最短で作成する

以前以下記事で、partedコマンドを使ったLVM領域を作成する方法を記載した。

RHEL 7でpartedコマンドを使って、2TB以上のディスクをLVMとして使えるようにする

上記と流れは同一となるが、可能な限り効率化して短い手順でLVM領域を作成する方法を検討したので、以下に記載する。

その他、LVMを使った各種作業手順を確認してみたので、数回に分けて記載していくことにする。

手順 記事
LVM領域作成 【LVM入門】LinuxのLVM領域を最短で作成する←★本記事
LVM領域削除 【LVM入門】LinuxのLVMで作成したディスクを削除する
LVM領域拡張 【LVM入門】LinuxのLVMでディスク容量を拡張する
LVM領域縮小 【LVM入門】LinuxのLVMでディスク容量を縮小する
VG・LV名前変更 【LVM入門】LinuxのLVMで作成済みのVGやLVの名前を変更する

partedコマンドを使って1行でパーティションを作成

今回の肝は、partedコマンドを使って1行でLVMのパーティションを作成することだ。以下のように-sオプションを付与して、設定に必要なコマンドを羅列する。
[root@localhost ~]# parted -s /dev/sdb "mklabel gpt mkpart ' ' 0% 100% set 1 lvm on print"
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 2147MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    1049kB  2146MB  2145MB                          lvm

LVMとファイルシステムの設定

上記partedコマンドを考慮しつつ、最短でLVMとファイルシステムの設定を行い、マウントまで行うことを目標とする。

結果、以下7行のコマンドとなった。devは変数とし、設定したいディスクデバイスを指定する。
dev="/dev/sdb"
parted -s ${dev} "mklabel gpt mkpart ' ' 0% 100% set 1 lvm on print"
pvcreate "${dev}1"
vgcreate "vg_${dev##*/}1" "${dev}1"
lvcreate -n "lv_${dev##*/}1" -l 100%FREE "vg_${dev##*/}1"
mkfs.xfs /dev/"vg_${dev##*/}1"/"lv_${dev##*/}1"
mount /dev/mapper/"vg_${dev##*/}1"-"lv_${dev##*/}1" /mnt/
実際の実行結果は以下となる。
[root@localhost ~]# dev="/dev/sdb"

[root@localhost ~]# parted -s ${dev} "mklabel gpt mkpart ' ' 0% 100% set 1 lvm on print"
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 2147MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    1049kB  2146MB  2145MB                          lvm

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

[root@localhost ~]# vgcreate "vg_${dev##*/}1" "${dev}1"
  Volume group "vg_sdb1" successfully created

[root@localhost ~]# lvcreate -n "lv_${dev##*/}1" -l 100%FREE "vg_${dev##*/}1"
  Logical volume "lv_sdb1" created.

[root@localhost ~]# mkfs.xfs /dev/"vg_${dev##*/}1"/"lv_${dev##*/}1"
meta-data=/dev/vg_sdb1/lv_sdb1   isize=512    agcount=4, agsize=130816 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=523264, 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

[root@localhost ~]# mount /dev/mapper/"vg_${dev##*/}1"-"lv_${dev##*/}1" /mnt/
一通り確認コマンドを打っておく。
[root@localhost ~]# pvs
  PV         VG      Fmt  Attr PSize   PFree
  /dev/sda2  rhel    lvm2 a--  <15.00g    0
  /dev/sdb1  vg_sdb1 lvm2 a--   <2.00g    0

[root@localhost ~]# vgs
  VG      #PV #LV #SN Attr   VSize   VFree
  rhel      1   2   0 wz--n- <15.00g    0
  vg_sdb1   1   1   0 wz--n-  <2.00g    0

[root@localhost ~]# lvs
  LV      VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root    rhel    -wi-ao---- 13.39g                                             
  swap    rhel    -wi-ao----  1.60g                                             
  lv_sdb1 vg_sdb1 -wi-ao---- <2.00g                                             

[root@localhost ~]# df -h
ファイルシス                サイズ  使用  残り 使用% マウント位置
/dev/mapper/rhel-root          14G  1.2G   13G    9% /
devtmpfs                      908M     0  908M    0% /dev
tmpfs                         920M     0  920M    0% /dev/shm
tmpfs                         920M  8.9M  911M    1% /run
tmpfs                         920M     0  920M    0% /sys/fs/cgroup
/dev/sda1                    1014M  146M  869M   15% /boot
tmpfs                         184M     0  184M    0% /run/user/0
/dev/mapper/vg_sdb1-lv_sdb1   2.0G   33M  2.0G    2% /mnt
以上となる。

0 件のコメント:

コメントを投稿

人気の投稿