partedコマンドによるディスクパーティション拡張(CentOS 7.6)

partedコマンドを利用してディスクパーティションを拡張します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/f8c1965f-fa24-1a3d-6f74-823b123542f7.png)


# 環境

```
# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) 
```

```
vmware ESXi イメージ プロファイル	
ESXi-8.0U1a-21813344-standard (VMware, Inc.)
```


# 流れ
事前確認
物理ディスク拡張
ディスクアンマウント
パーティション拡張
ディスクマウント
ファイルシステム拡張

# 0.事前確認
ディスク拡張前の事前確認を行います。
`lsblk -ia` 物理ディスク情報確認
`df -h` ファイルシステム情報確認
`parted -l` パーティション情報確認

```
# lsblk -ia
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   16G  0 disk 
|-sda1   8:1    0    1G  0 part /boot
`-sda2   8:2    0   15G  0 part /
sdb      8:16   0    5G  0 disk 
|-sdb1   8:17   0    2G  0 part [SWAP]
|-sdb2   8:18   0    1G  0 part /home
`-sdb3   8:19   0    2G  0 part /data
sr0     11:0    1 1024M  0 rom  
```

```
# df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
devtmpfs         909M     0  909M    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/sda2         15G  1.7G   14G   12% /
/dev/sdb2       1014M   33M  982M    4% /home
/dev/sdb3        2.0G   33M  2.0G    2% /data
/dev/sda1       1014M  137M  878M   14% /boot
tmpfs            184M     0  184M    0% /run/user/0
```

```
# parted -l
モデル: VMware Virtual disk (scsi)
ディスク /dev/sda: 17.2GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ: 

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  1075MB  1074MB  primary  xfs               boot
 2    1075MB  17.2GB  16.1GB  primary  xfs


モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 5369MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ: 

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  2150MB  2149MB  primary  linux-swap(v1)
 2    2150MB  3223MB  1074MB  primary  xfs
 3    3223MB  5369MB  2145MB  primary  xfs
```

当該領域にデータ保持確認用のファイル等も保存しておきます。

```
# ll /data
合計 0
drwxr-xr-x 2 root root 45 12月  7 21:16 test1
drwxr-xr-x 2 root root  6 12月  7 21:16 test2
drwxr-xr-x 2 root root  6 12月  7 21:16 test3

# ll -h /data/test1
合計 41M
-rw-r--r-- 1 root root 297 12月  7 21:16 file1
-rw-r--r-- 1 root root 38K 12月  7 21:16 file2
-rw-r--r-- 1 root root 41M 12月  7 21:16 file3
```


# 1.物理ディスク拡張
OSを停止し、物理ディスクの拡張を行います。
本環境ではvmware ESXiからディスク拡張を行います。

ディスク拡張前
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/2ac796c7-e28b-7574-39a3-22802cc2e1de.png)

<br>

ディスク拡張後
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/fab4d679-4dd0-ccf4-d4ff-3cf366560ff1.png)


:::note warn
vmware環境の場合、スナップショットを全て削除していない場合は以下のアラートが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/ff1dbb12-3b5e-e05b-f2c6-8c5435bfae4f.png)
:::

<br>

ディスク拡張後にOSを起動し、`lsblk`コマンドにて物理ディスク容量が増えていることを確認します。
本環境では`sdb`が`5G`から`10G`に拡張されました。

```
# lsblk -ia
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   16G  0 disk 
|-sda1   8:1    0    1G  0 part /boot
`-sda2   8:2    0   15G  0 part /
sdb      8:16   0   10G  0 disk 
|-sdb1   8:17   0    2G  0 part [SWAP]
|-sdb2   8:18   0    1G  0 part /home
`-sdb3   8:19   0    2G  0 part /data
sr0     11:0    1 1024M  0 rom  
```



# 2.ディスクアンマウント
拡張対象ディスクのアンマウントを行います。


```
# mount | grep /dev/sdb3
/dev/sdb3 on /data type xfs (rw,relatime,attr2,inode64,noquota)
```

```
# umount /dev/sdb3
```


```
# mount | grep /dev/sdb3
```



# 3.パーティション拡張
`parted`コマンドによるパーティション拡張を行います。

```
# parted /dev/sdb
GNU Parted 3.1
/dev/sdb を使用
GNU Parted へようこそ！ コマンド一覧を見るには 'help' と入力してください。
(parted) 
```

拡張対象パーティションの番号を確認します。

```
(parted) print
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 10.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ: 

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  2150MB  2149MB  primary  linux-swap(v1)
 2    2150MB  3223MB  1074MB  primary  xfs
 3    3223MB  5369MB  2145MB  primary  xfs
```

パーティションの拡張を行います。
`resizepart`コマンドにて、パーティション番号と拡張容量を指定します。`100%`で空き容量全体を割り当てます。

```
(parted) resizepart 3 100%
(parted)
```

:::note warn
ディスクのアンマウントを行っていない場合、以下にて処理が失敗します。
```
(parted) resizepart 3 100%
エラー: パーティション /dev/sdb3 は使用中です。Parted で操作する前に unmount してください。
```
:::



容量が拡張されたことを確認します。
終了が`5369MB`から`10.7GB`へ、サイズが`2145MB`から`7514MB`へ拡張されました。

```
(parted) print
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 10.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ: 

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  2150MB  2149MB  primary  linux-swap(v1)
 2    2150MB  3223MB  1074MB  primary  xfs
 3    3223MB  10.7GB  7514MB  primary  xfs
```

`quit`でGNU Partedを終了します。

```
(parted) quit
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
# 
```


# 4.ディスクマウント
自動マウントを利用してディスクを再マウントします。

```
# mount -a
```

```
# mount | grep /dev/sdb3
/dev/sdb3 on /data type xfs (rw,relatime,attr2,inode64,noquota)
```


# 5.ファイルシステム拡張
ディスクおよびパーティションに次いで、ファイルシステムも拡張します。

事前にファイルシステムサイズを確認します。
```
# df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
devtmpfs         909M     0  909M    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/sda2         15G  1.7G   14G   12% /
/dev/sdb2       1014M   33M  982M    4% /home
/dev/sda1       1014M  137M  878M   14% /boot
tmpfs            184M     0  184M    0% /run/user/0
/dev/sdb3        2.0G   33M  2.0G    2% /data
```


`xfs_growfs`コマンドを利用してファイルシステムを拡張します。
```
# xfs_growfs /dev/sdb3
meta-data=/dev/sdb3              isize=512    agcount=4, agsize=130944 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=523776, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 523776 to 1834496
```

:::note warn
ディスクのマウントを行っていない場合、以下にて処理が失敗します。
```
# xfs_growfs /dev/sdb3
xfs_growfs: /dev/sdb3 is not a mounted XFS filesystem
```
:::


`df`コマンドにてファイルシステム容量を確認します。
`2.0G`から`7.0G`に拡張されました。

```
# df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
devtmpfs         909M     0  909M    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/sda2         15G  1.7G   14G   12% /
/dev/sdb2       1014M   33M  982M    4% /home
/dev/sda1       1014M  137M  878M   14% /boot
tmpfs            184M     0  184M    0% /run/user/0
/dev/sdb3        7.0G   33M  7.0G    1% /data
```

拡張後にファイル等が残存していることも確認できました。

```
# ll /data
合計 0
drwxr-xr-x 2 root root 45 12月  7 21:16 test1
drwxr-xr-x 2 root root  6 12月  7 21:16 test2
drwxr-xr-x 2 root root  6 12月  7 21:16 test3

# ll -h /data/test1
合計 41M
-rw-r--r-- 1 root root 297 12月  7 21:16 file1
-rw-r--r-- 1 root root 38K 12月  7 21:16 file2
-rw-r--r-- 1 root root 41M 12月  7 21:16 file3
```

# 参考

https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/8/html/system_design_guide/proc_resizing-a-partition-with-parted_getting-started-with-partitions#proc_resizing-a-partition-with-parted_getting-started-with-partitions