Linux基礎編として、仮想マシンでディスクを追加した後に、OS上で認識させるまでの方法を手順としてまとめておきます。
私自身、何度かこのような作業をしていますが、一向に覚えられないのでアウトプットします。
概要
手順の前に、LVMを用いたディスクの概要を説明します。
論理ボリュームマネージャ(ろんりボリュームマネージャ、logical volume manager、LVM)は、「物理ボリューム」を提供するハードディスクなどのストレージメディア・デバイス(補助記憶装置)に、直接ファイルシステムをマップするのではなく、粗粒度(典型的には、メビバイト単位程度)のブロックにより一旦「論理ボリューム」と呼ばれる仮想化されたボリュームに束ねて利用するためのシステムである。
フリー百科事典『ウィキペディア(Wikipedia)』 https://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86%E3%83%9C%E3%83%AA%E3%83%A5%E3%83%BC%E3%83%A0%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3
物理ディスクをそのままOSから使うのではなく、論理的に管理することで、便利に扱いましょうということです。
上の例では、4つの物理デバイス(HDDやSSDなど)に対して、1つのVG(物理ボリューム)にまとめて、そこからLV(論理ボリューム)を切り出している例です。400GBのボリュームから50GBと300GB切り出しています。もちろんすべて使い切ることもできます。
また、新たにデバイスが追加された場合、既存のボリュームグループに追加することも可能です。
このような便利なボリューム管理システムがLVMです。このようにレイヤーを分けてストレージを管理する方法は、オンプレミスなどで使われているストレージ装置も同じような仕組みだったりします。
手順
ディスクを追加し、再起動を行うとブロックデバイスとして認識します。再起動後に以下のコマンドを入力。
lsblk -S
[root@localhost ~]# lsblk -S NAME HCTL TYPE VENDOR MODEL REV TRAN sda 0:0:0:0 disk VMware, VMware Virtual S 1.0 spi sdb 0:0:1:0 disk VMware, VMware Virtual S 1.0 spi sr0 2:0:0:0 rom NECVMWar VMware IDE CDR10 1.00 ata
次にデバイス情報を確認します
fdisk -l /dev/sdb
[root@localhost ~]# fdisk -l /dev/sdb Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
fdiskコマンドで パーティションを作成します。 今回は107.4GBの全容量を1つのパーティション sdb1 として設定します。
[root@localhost ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x0a662cfe. コマンド (m でヘルプ): p Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk label type: dos ディスク識別子: 0x0a662cfe デバイス ブート 始点 終点 ブロック Id システム コマンド (m でヘルプ): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p パーティション番号 (1-4, default 1): 1 最初 sector (2048-209715199, 初期値 2048): 初期値 2048 を使います Last sector, +sectors or +size{K,M,G} (2048-209715199, 初期値 209715199): 初期値 209715199 を使います Partition 1 of type Linux and of size 100 GiB is set コマンド (m でヘルプ): t Selected partition 1 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM' コマンド (m でヘルプ): p Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk label type: dos ディスク識別子: 0x0a662cfe デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 2048 209715199 104856576 8e Linux LVM コマンド (m でヘルプ): w パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 ディスクを同期しています。
作成したパーティションをLVMのPVに設定します。
[root@localhost ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. [root@localhost ~]# pvdisplay /dev/sdb1 "/dev/sdb1" is a new physical volume of "<100.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size <100.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 1Gh6Uv-wAQf-DhhU-UfDR-7GVx-TlMR-s2fas6
次にPVをそのままVGとして構成します。名前はVolGroup01とします。
[root@localhost ~]# vgcreate VolGroup01 /dev/sdb1 Volume group "VolGroup01" successfully created [root@localhost ~]# vgdisplay VolGroup01 --- Volume group --- VG Name VolGroup01 System ID Format lvm2 Metadata Areas 1 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 1 Act PV 1 VG Size <100.00 GiB PE Size 4.00 MiB Total PE 25599 Alloc PE / Size 0 / 0 Free PE / Size 25599 / <100.00 GiB VG UUID yXccXY-JhGP-M3Rx-OjmC-8xIv-mWyA-s32trI
次にVG(ボリュームグループ)からLV(論理ボリューム)を切り出します。vgdisplayでの結果からTotal PE が 25599となっているので、すべて単一の論理ボリュームとして切り出します。
[root@localhost ~]# lvcreate -l 25599 -n LogVol00 VolGroup01 Logical volume "LogVol00" created. [root@localhost ~]# vgdisplay -v VolGroup01 --- Volume group --- VG Name VolGroup01 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size <100.00 GiB PE Size 4.00 MiB Total PE 25599 Alloc PE / Size 25599 / <100.00 GiB Free PE / Size 0 / 0 VG UUID yXccXY-JhGP-M3Rx-OjmC-8xIv-mWyA-s32trI --- Logical volume --- LV Path /dev/VolGroup01/LogVol00 LV Name LogVol00 VG Name VolGroup01 LV UUID GukTOB-bfwR-lsnT-a6LU-l1Mh-lxQA-h1h0WS LV Write Access read/write LV Creation host, time localhost.localdomain, 2020-01-05 22:57:10 +0900 LV Status available # open 0 LV Size <100.00 GiB Current LE 25599 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:3 --- Physical volumes --- PV Name /dev/sdb1 PV UUID 1Gh6Uv-wAQf-DhhU-UfDR-7GVx-TlMR-s2fas6 PV Status allocatable Total PE / Free PE 25599 / 0
出来上がった論理ボリュームにファイルシステムのフォーマットをかけます。CentOS7の標準xfsを使用します。
[root@localhost ~]# mkfs.xfs /dev/VolGroup01/LogVol00 meta-data=/dev/VolGroup01/LogVol00 isize=512 agcount=4, agsize=6553344 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=26213376, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=12799, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
出来た論理ボリュームをマウントします。マウントポイントを作成しマウントしています。
[root@localhost /]# mount /dev/VolGroup01/LogVol00 /data
うまくマウントできたら、fstabに記載しておきます。以下の一番下の行が今回追加したマウント設定です。
[root@localhost /]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Dec 31 03:35:43 2019 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/centos-root / xfs defaults 0 0 UUID=e3c5b9e6-b955-45ed-86be-688909fd5bef /boot xfs defaults 0 0 /dev/mapper/centos-var /var xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 /dev/mapper/VolGroup01-LogVol00 /data xfs defaults 0 0
再起動したあとも正しくマウントされていることを確認します。
まとめ
今回はLVMを用いたLinuxにおけるディスク管理方法を紹介しました。
基礎的な内容となりますので頭に入れておきますおきましょう。
コメント