LVMを使って複数のディスクを1つに統合する

# 0. 概要
ここ最近、メディア機器の高機能化に伴い、画像や動画等容量の大きいものが増えてきている。
様々なHDDにデータを保存していると、どのHDDにどのデータがあるのか見つけにくくなってしまう問題がある。
そこで複数のHDDを束ねて、1つの大容量HDDとして、取り扱いたいと考える。
今回は、複数のHDDをLVMを用いて束ねる方法を説明する。

# 1. 前提条件
- HDDは全てで5台

- 各HDDは8TB

- 2つのグループに容量を統合する
 

# 2. ディスクの統合

## 2.1. ディスクの確認

まず以下からディスク情報を調査して、統合するディスクの名前を確認する。

```bash
$ sudo fdisk -l

# ------------------------------------------------------------------ #
Disk /dev/sdf: 7.3 TiB, 8001563222016 bytes, 15628053168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/sdg: 7.3 TiB, 8001563222016 bytes, 15628053168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/sdh: 7.3 TiB, 8001563222016 bytes, 15628053168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/sdd: 7.3 TiB, 8001563222016 bytes, 15628053168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/sde: 7.3 TiB, 8001563222016 bytes, 15628053168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
# ------------------------------------------------------------------ #
```

他のHDDと間違えていないか、製造番号の確認もしておく。

```bash
$ sudo smartctl -a /dev/sde | grep Model

# ------------------------------------------------------------------ #
Device Model:     ST8000VN004-2M2101
# ------------------------------------------------------------------ #
```

マウントされていないかも確認しておく。

``` bash
$ df -h
```

もし、マウントされていたら以下で解除

``` bash
$ umount <YOUR MOUNT POINT>
```

## 2.2. ディスクの初期化

ディスク5台を初期化

``` bash
$ sudo pvcreate /dev/sdd
  WARNING: ext4 signature detected on /dev/sdd at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/sdd.
  Physical volume "/dev/sdd" successfully created.
```

同様に`sde, sdf, sdg, sdh`も行う。


## 2.3. ディスクの統合(グループ化)
次に初期化したディスクを統合していく。
今回は`sdd, sde, sdf, sdg, sdh`の`8TBディスク5枚`を
`3枚で1つ`と`2枚で1つ`、すなわち`24TB`と`16TB`の論理ドライブに
統合して構築する。


まず`24TB`の方から統合。

``` bash
$ sudo vgcreate exthd1Group /dev/sdd /dev/sde /dev/sdf

# ------------------------------------------------------------------ #
Volume group "exthd1Group" successfully created
# ------------------------------------------------------------------ #
```

同様に、`16TB`の方も行う。

``` bash
$ sudo vgcreate exthd2Group /dev/sdg /dev/sdh
```

## 2.4. ディスクの統合(ボリュームの作成)

次に、ロジカルボリュームを作成する。
上記で作成したHDDグループの`exthd1Group`を指定して、ロジカルボリュームを作成する。

```bash
$ sudo lvcreate -l 100%FREE -n lv0 exthd1Group

# ------------------------------------------------------------------ #
  Logical volume "lv0" created.
# ------------------------------------------------------------------ #
```

同様に、`exthd2Group`についても行う。

```bash
$ sudo lvcreate -l 100%FREE -n lv0 exthd2Group
```

なお、全ての容量を使い切らないのであれば、`-l 100%FREE`を`-L 8T`等にすればよい。
`lv0`はロジカルボリュームの名前を指している。

## 2.5. ディスクの統合(ボリューム確認)

作成したボリュームを確認する。

``` bash
$ sudo lvdisplay
# ------------------------------------------------------------------ #
  --- Logical volume ---
  LV Path                /dev/exthd2Group/lv0
  LV Name                lv0
  VG Name                exthd2Group
  LV UUID                
  LV Write Access        read/write
  LV Creation host, time N/A, 2020-02-10 14:09:41 +9999
  LV Status              available
  # open                 0
  LV Size                14.55 TiB
  Current LE             3815442
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:3

  --- Logical volume ---
  LV Path                /dev/exthd1Group/lv0
  LV Name                lv0
  VG Name                exthd1Group
  LV UUID                
  LV Write Access        read/write
  LV Creation host, time N/A, 2020-02-10 14:09:35 +9999
  LV Status              available
  # open                 0
  LV Size                21.83 TiB
  Current LE             5723163
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2
# ------------------------------------------------------------------ #

```

後はフォーマットして使うだけである。

## 2.6. ディスクの統合(ボリュームの初期化)

各HDDグループのボリュームに対して、`ext4`でフォーマットする。まず`exthd1Group`のボリュームに対して。

``` bash
$ sudo mkfs -t ext4 /dev/exthd1Group/lv0
```

同様に、`exthd2Group`のボリュームに対して。

``` bash
$ sudo mkfs -t ext4 /dev/exthd2Group/lv0
```

## 2.7. ディスクの統合(マウント)
まずは作成し初期化したボリュームを確認する。

```
$ sudo fdisk -l

# ------------------------------------------------------------------ #
Disk /dev/mapper/exthd1Group-lv0: 21.9 TiB, 24004685463552 bytes, 46884151296 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/mapper/exthd2Group-lv0: 14.6 TiB, 16003123642368 bytes, 31256100864 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
# ------------------------------------------------------------------ #
```

しっかり出来ている。では、これらをマウントする。

``` bash
$ sudo mount   /dev/exthd1Group/lv0 ./hdd1
$ sudo mount   /dev/exthd2Group/lv0 ./hdd2
```

もし、起動時に自動マウントさせるなら各統合HDDグループのボリュームの`UUID`を確認して`fstab`に記述する。
まず、`UUID`の確認。

``` bash
$ sudo blkid /dev/exthd1Group/lv0

# ------------------------------------------------------------------ #
/dev/exthd1Group/lv0: UUID="7ii63fbf-deed-4ff1-b4af-8156f" TYPE="ext4"
# ------------------------------------------------------------------ #
```

同様に`exthd2Group`も確認。

``` bash
$ sudo blkid /dev/exthd2Group/lv0

# ------------------------------------------------------------------ #
/dev/exthd2Group/lv0: UUID="8ii63fbf-deed-4ff1-b4af-8156f" TYPE="ext4"
# ------------------------------------------------------------------ #
```

最後に`fstab`に記述する。

``` bash
$ sudo vim /etc/fstab

# ------------------------------------------------------------------ #
追記
UUID=7ii63fbf-deed-4ff1-b4af-8156f     /hdd1    ext4   defaults        0 3
UUID=8ii63fbf-deed-4ff1-b4af-8156f     /hdd2    ext4   defaults        0 3
# ------------------------------------------------------------------ #
```

# 99. グループ及びPVを削除する
`pvcreate`を行う際に既にLVMを使った痕跡がある場合は、

```bash
$ sudo pvdisplay
```

で既存のディスクを確認して、PV及びそのPVがどのグループに属しているかを見る。
もしUnkownになっている場合、グループを作った後に物理デバイスが抜かれた可能性が高い。

一貫性を持たせるために以下を実行してUnkownを削除する。

```bash
$ sudo vgreduce --removemissing <YOUR_GROUP>
```

次にグループを削除。

```bash
$ sudo vgremove <YOUR_GROUP>
```

PVを削除。

```bash
$ sudo pvremove <YOUR_PV>
```