CentOS7に2TB超えのHDDを増設・交換するTips

#はじめに
HDDが壊れたため、HDDを交換。
物理的なHDD交換からバックアップからのリストアまで解説します。

```Bash:壊れる前のHDD構造
# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0 111.8G  0 disk
├─sda1            8:1    0     1G  0 part /boot
└─sda2            8:2    0 110.8G  0 part
  ├─centos-root 253:0    0    50G  0 lvm  /
  ├─centos-swap 253:1    0   7.6G  0 lvm  [SWAP]
  └─centos-home 253:2    0  53.2G  0 lvm  /home
sdb               8:16   0   2.7T  0 disk
└─sdb1            8:17   0   2.7T  0 part /mnt/bkp_primary
sdc               8:32   0   2.7T  0 disk
└─sdc1            8:33   0   2.7T  0 part /mnt/bkp_secondly
sdd               8:48   0   2.7T  0 disk
└─sdd1            8:49   0   2.7T  0 part /mnt/primary
sde               8:64   0   2.7T  0 disk #←今回壊れたHDD
└─sde1            8:65   0   2.7T  0 part /mnt/secondly 
```

##環境
```
# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
```
作業はすべてroot権限で行ってください。

#準備
HDDをアマゾンで買いましょう。6TBで1.2万円ほどでした。TB単価がどんどん安くなってますね。
壊れているHDDを特定し、交換しましょう。
なお、lsblkコマンド結果を控えておくと、交換後のデバイス名(/dev/sdeとか）の特定が簡単になります。

# ディスク番号の確認
lsblkコマンドで交換前後で比較しましょう。

```Bash:交換後のHDD構造
# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0 111.8G  0 disk
├─sda1            8:1    0     1G  0 part /boot
└─sda2            8:2    0 110.8G  0 part
  ├─centos-root 253:0    0    50G  0 lvm  /
  ├─centos-swap 253:1    0   7.6G  0 lvm  [SWAP]
  └─centos-home 253:2    0  53.2G  0 lvm  /home
sdb               8:16   0   2.7T  0 disk
└─sdb1            8:17   0   2.7T  0 part /mnt/bkp_primary
sdc               8:32   0   2.7T  0 disk
└─sdc1            8:33   0   2.7T  0 part /mnt/bkp_secondly
sdd               8:48   0   2.7T  0 disk
└─sdd1            8:49   0   2.7T  0 part /mnt/primary
sde               8:64   0   5.5T  0 disk
```

交換前と比較すると、sdeが違うことがわかります。よって、sdeが今回交換したHDDです。
今回は6TBが1つだけなので、特定が簡単ですが、すでにマウント済みのHDDと同容量の場合でも、交換前と比較することで、比較的簡単に交換後のデバイス名を特定することができます。


#パーティションの作成
##パーティションテーブルの作成
2TB以上のHDDに対してfdiskコマンドが使えないので、partedコマンドを使っていきます。
2TB以上の場合のパーティションテーブルはGPTです。

```
# parted /dev/sde
(parted) mklabel gpt
警告: いま存在している /dev/sde のディスクラベルは破壊され、このディスクの全データが失われます。続行しますか？
はい(Y)/Yes/いいえ(N)/No? Y
```

## パーティションの作成
HDDすべての領域を使い、ext4でパーティションを作成します。

```
(parted) mkpart
パーティションの名前?  []? secondly
ファイルシステムの種類?  [ext2]? ext4
開始? 0%
終了? 100%

(parted) print
モデル: ATA ST6000DM003-2CY1 (scsi)
ディスク /dev/sde: 6001GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt
ディスクフラグ:
番号  開始    終了    サイズ  ファイルシステム  名前       フラグ
 1    1049kB  6001GB  6001GB                    secondly
```
以上のようになっていればokです。

##フォーマット

```
# mkfs.ext4 /dev/sde1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
・・・略・・・
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
```
このあと、再起動してください。

```Bash:再起動
# reboot
```

#マウント
```Bash:ファイルシステムの確認
# mount -t ext4 /dev/sde1 /mnt/secondly
[root@localhost shotaro]# df -H
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root    54G  3.0G   51G    6% /
devtmpfs                  4.0G     0  4.0G    0% /dev
tmpfs                     4.0G     0  4.0G    0% /dev/shm
tmpfs                     4.0G  9.5M  4.0G    1% /run
tmpfs                     4.0G     0  4.0G    0% /sys/fs/cgroup
/dev/sda1                 1.1G  150M  914M   15% /boot
/dev/sdb1                 3.0T  2.1T  794G   72% /mnt/bkp_primary
/dev/sdc1                 3.0T  2.4T  420G   86% /mnt/bkp_secondly
/dev/sdd1                 3.0T  2.1T  799G   72% /mnt/primary
/dev/sde1                 6.0T  194G  5.5T    4% /mnt/secondly
/dev/mapper/centos-home    58G   34M   58G    1% /home
```
/dev/sde1が/mnt/secondlyにマウントされていることがわかります。
しかし、これでは再起動した場合に自動でマウントされないので、自動マウントの設定をする必要があります。

#自動マウント設定
## UUIDの確認

```Bash:UUIDの確認
# blkid /dev/sde1
/dev/sde1: UUID="3168bbd1-03e8-40f8-94c3-4b4014bfbd31" TYPE="ext4" PARTLABEL="secondly" PARTUUID="a09d8463-02dc-4ecf-8f4a-117e855e9d8b"
```

## /etc/fstabの編集
以下を/etc/fstabの末尾に追記

```Bash:自動マウント設定
UUID="3168bbd1-03e8-40f8-94c3-4b4014bfbd31" /mnt/secondly   	ext4     nofail          0 0
```

#バックアップからの復元
/mnt/bkp_secondlyから/mnt/secondlyへリストアします。
これで進捗を確認しつつ、/mnt/bkp_secondly/と同様のものが出来上がります。

```Bash:リストア
# rsync -a --delete -P /mnt/bkp_secondly/ /mnt/secondly/
```

#まとめ
バックアップ大事。