Linux

LinuxでLVMで複数のディスクを1つに束ねて管理

*記事内に商品プロモーションを含む場合があります

複数のディスク(HDD/SSD)をLVMを用いて1つに統合する方法を説明します。

Virtual Box上の Ubuntu22.04で実行確認しました。

ディスク周りの操作は、既存の設定を間違って変更したら起動できなくなる可能性があります。

Virtual BoxやHype-Vなど仮想環境で練習することをオススメします。

実行コマンド

以下を順番に実行していきます。

ディスクは3個追加し、3個を1つのLVMにまとめます。

デバイス名は、実行環境に合わせて読み替えてください。

fdisk -l と parted -l は、同じ役割です。
fdiskが 2TB以上に対応できていない場合があるので、両方で確認しています。

pvcreate /dev/sdb
pvcreate /dev/sdc
pvcreate /dev/sde

vgcreate ssdGroup1 /dev/sdb /dev/sdc /dev/sdd

lvcreate -l 100%FREE -n lv0 ssdGroup1

lvdisplay

mkfs -t xfs /dev/ssdGroup1/lv0

fdisk -l
parted -l

mkdir /data3
mount /dev/ssdGroup1/lv0 /data3

vi /etc/fstab

事前の確認作業

現在の状態を確認します。

10GBで動作しているUbuntuに、物理的にディスクを追加した直後の状態です。

パーティションの作成、フォーマット、マウントなどしていない状態。

パーティション構成を把握します。
tmpfs は一時ファイルを格納するための仕組みなので、特に気にしないでいいです。

$

$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                               98M  1.1M   97M   2% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  8.1G  4.0G  3.7G  53% /
tmpfs                              486M     0  486M   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          1.7G  125M  1.5G   8% /boot
tmpfs                               98M  4.0K   98M   1% /run/user/1000

parted -l で確認。

$
$ sudo parted -l
 
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 10.7GB  ★OS領域など
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
 
Number  Start   End     Size    File system  Name  Flags
1      1049kB  2097kB  1049kB                     bios_grub
2      2097kB  1881MB  1879MB  ext4
3      1881MB  10.7GB  8855MB
 
 
Error: /dev/sdb: unrecognised disk label ★未使用状態
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 10.7GB ★10GBを増設
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
 
Error: /dev/sdc: unrecognised disk label ★未使用状態
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 10.7GB ★10GBを増設
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
 
Error: /dev/sdd: unrecognised disk label ★未使用状態
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdd: 10.7GB ★10GBを増設
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
 
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 8854MB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:
 
Number  Start  End     Size    File system  Flags
1      0.00B  8854MB  8854MB  ext4
 

fdisk -l で確認。

$

$ sudo fdisk -l
 
Disk /dev/loop0: 61.89 MiB, 64901120 bytes, 126760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
 
 
Disk /dev/loop1: 44.68 MiB, 46845952 bytes, 91496 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
 
 
Disk /dev/loop2: 79.95 MiB, 83832832 bytes, 163736 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
 
 
Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 1F0359F9-D4B9-4F46-963A-9869627352DD
 
Device       Start      End  Sectors  Size Type
/dev/sda1     2048     4095     2048    1M BIOS boot
/dev/sda2     4096  3674111  3670016  1.8G Linux filesystem
/dev/sda3  3674112 20969471 17295360  8.2G Linux filesystem
 
 
Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
 
 
Disk /dev/sdc: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
 
 
Disk /dev/sdd: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
 
 
Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 8.25 GiB, 8854175744 bytes, 17293312 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
 
 

/dev/sdb: unrecognised disk label ★未使用状態

/dev/sdX <- これデバイス名が重要

ディスクのメーカーなどでデバイス名が変わることがありますが、基本的に 以下のように 末尾が、”a”,”b”,”c”,”d” とアルファベット順に割り当てられていきます。

/dev/sda => /dev/sdb => /dev/sdc => /dev/sdd …

LVMを作成

PV・VG・LVを作成します。

デバイスは、 /dev/sdb、/dev/sdc、/dev/sdd に割り当たっています。

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

#
$ sudo pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
 
$ sudo pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.
 
$ sudo pvcreate /dev/sdd
  Physical volume "/dev/sdd" successfully created.
 
$ sudo vgcreate ssdGroup1 /dev/sdb /dev/sdc /dev/sdd
  Volume group "ssdGroup1" successfully created
 
$ sudo lvcreate -l 100%FREE -n lv0 ssdGroup1
  Logical volume "lv0" created.

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

$
$ sudo vgcreate ssdGroup1 /dev/sdb /dev/sdc /dev/sdd
  Volume group "ssdGroup1" successfully created
 

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

$

$ sudo lvcreate -l 100%FREE -n lv0 ssdGroup1
  Logical volume "lv0" created.
 
$
$  sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/ssdGroup1/lv0 ★
  LV Name                lv0
  VG Name                ssdGroup1 ★
  LV UUID                PwpcuU-wauL-czTF-aaAo-17LF-boRl-diP73w
  LV Write Access        read/write
  LV Creation host, time ubuntu2004, 2022-10-03 07:47:20 +0000
  LV Status              available
  # open                 0
  LV Size                <29.99 GiB
  Current LE             7677
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
 
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                b4K9qQ-0rVm-6KM1-BuMu-DBgC-NRYR-lL3fS7
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2022-10-03 00:15:47 +0000
  LV Status              available
  # open                 1
  LV Size                <8.25 GiB
  Current LE             2111
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

 

フォーマット

xfsでフォーマットします。

$
$ sudo mkfs -t xfs /dev/ssdGroup1/lv0
meta-data=/dev/ssdGroup1/lv0     isize=512    agcount=4, agsize=1965312 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=7861248, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=3838, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

マウント

マウントポイントを作成し、mountコマンドでマウント。

$
$sudo mkdir   /data3

$sudo mount   /dev/ssdGroup1/lv0  /data3

OS起動時の自動マウント設定(fstab変更)

OS起動時の自動マウントの設定を行います。

mountコマンドでのマウントは、OS停止すると解除されます。

永続化するために、/etc/fstab に設定を追加します。

$
$ sudo vi  /etc/fstab
 
/dev/mapper/ssdGroup1-lv0 /data3  xfs defaults   0 0
 ↑★1行追加

あとがき

ディスクの管理方法もコマンドも少しずつ変わってきていますね。

LVMで作成した領域は、簡単に領域を拡張することができます。

昔は、ディスク容量の増強は大変な作業でした。
今ではLVMでディスクを管理できるので、作業が楽になりましたね。

Linux partedで2TB以上のディスクをLVMとして追加Linuxで2TB以上のディスクを使用する場合、fdiskでパーティション作成するとエラーになるのでpartedコマンドを使う必要があり...

Virual Boxでディスクを追加する方法は以下です。

VirtualBox ディスク追加方法
VirtualBoxで仮想マシンにハードディスクを追加する方法VirtualBox上の仮想マシンにハードディスクを追加する方法を紹介します。 VirtualBoxにディスクの追加手順 (...