[CentOS 8]ディスク、スワップの管理（メモ）

#はじめに
ディスクのパーティション作成から、ファイルシステム作成、マウント、スワップの設定のメモです。
CentOS 8ですが、RHEL 8でも同じだと思います。



#ブロックデバイスの確認

```
# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   12G  0 disk
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   11G  0 part
  ├─cl-root 253:0    0  9.8G  0 lvm  /
  └─cl-swap 253:1    0  1.2G  0 lvm  [SWAP]
sdb           8:16   0    1G  0 disk
sdc           8:32   0    1G  0 disk
sr0          11:0    1   57M  0 rom
```
3本のディスクと1つのCDROMがある。

##命名規則

|種類|ブロックデバイス
|:---|:---
|SATA/SAS|/dev/sda, /dev/sdb, ・・・
|virtio-blk準仮想化ストレージ|/dev/vda, /dev/vdb, ・・・
|NVMe|/dev/nvme0, /dev/nvme1, ・・・
|SDカード|/dev/mmcblk0, /dev/mmcblk1, ・・・

ただし、/dev/sd* 形式で表示されるvirtio-scsi 準仮想化ストレージもある。
今回はVirtualBoxの仮想環境だが、/dev/sd* 形式で表示されている。

#ディスクパーティションの管理
##ディスクパーティションの種類
以下二つのパーティションがある

* MBRパーティション
* GPTパーティション

||MBRパーティション|GPTパーティション
|:---|:---|:---
|最大パーティション数|4つの基本パーティション。拡張パーティションと論理パーティションを使用すると最大15個|128
|ディスクとパーティションの最大サイズ|2TiB|8ZiB


##パーティションの表示

```
# parted /dev/sda print
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sda: 12.9GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  1075MB  1074MB  primary  ext4              boot
 2    1075MB  12.9GB  11.8GB  primary                    lvm
```

##パーティションの作成
###MBRパーティション

対話モード

```
# parted /dev/sdb
GNU Parted 3.2
/dev/sdb を使用
GNU Parted へようこそ！ コマンド一覧を見るには 'help' と入力してください。
(parted) print
エラー: /dev/sdb: ディスクラベルが認識できません。
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sdb: 1074MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: unknown
ディスクフラグ:
(parted) mklabel
新しいディスクラベル? msdos
(parted) mkpart
パーティションの種類?  primary/プライマリ/extended/拡張? primary
ファイルシステムの種類?  [ext2]? xfs
開始? 2048s
終了? 100MB
(parted) q
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

```
以下のようにワンライナーでも作成可能。
`parted /dev/vdb mkpart primary xfs 2048s 1000MB`

mkpartを繰り返して以下を作成。mklabelはディスクに対する設定なので、一回だけ。

```
# parted /dev/sdb print
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sdb: 1074MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  99.6MB  98.6MB  primary
 2    101MB   200MB   99.6MB  primary
 3    201MB   300MB   98.6MB  primary
 4    401MB   500MB   99.6MB  primary
```

###GPTパーティション
対話モード

```
# parted /dev/sdc
GNU Parted 3.2
/dev/sdc を使用
GNU Parted へようこそ！ コマンド一覧を見るには 'help' と入力してください。
(parted) mklabel
新しいディスクラベル? gpt
(parted) mkpart
パーティションの名前?  []? par1
ファイルシステムの種類?  [ext2]? xfs
開始? 2048s
終了? 101MB
(parted) q
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

```
以下のようにワンライナーでも作成可能

`# parted /dev/vdb mkpart usersdata xfs 2048s 1000MB`

mkpartを繰り返して以下を作成。mklabelはディスクに対する設定なので、一回だけ。

```
# parted /dev/sdc print
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sdc: 1074MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了   サイズ  ファイルシステム  名前  フラグ
 1    1049kB  101MB  99.6MB                    par1
 2    102MB   201MB  99.6MB                    par2
 3    202MB   301MB  98.6MB                    par3
 4    302MB   401MB  98.6MB                    par4
 5    402MB   501MB  99.6MB                    par5
 6    502MB   601MB  98.6MB                    par6
 7    602MB   701MB  99.6MB                    par7
```

#ファイルシステムの作成
ファイルシステムの作成はMBRとGPTで同じ。

##MBRの場合
```
# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=6016 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=24064, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1368, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
```

##GPTの場合
```
# mkfs.xfs /dev/sdc1
meta-data=/dev/sdc1              isize=512    agcount=4, agsize=6080 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=24320, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1368, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
```

#マウント
##マウントポイントの作成

```
# mkdir /mbr01
# mkdir /gpt01
```

##マウント
```
# mount /dev/sdb1 /mbr01
# mount /dev/sdc1 /gpt01
# df -h
ファイルシス        サイズ  使用  残り 使用% マウント位置
devtmpfs              886M     0  886M    0% /dev
tmpfs                 914M     0  914M    0% /dev/shm
tmpfs                 914M  9.2M  905M    2% /run
tmpfs                 914M     0  914M    0% /sys/fs/cgroup
/dev/mapper/cl-root   9.8G  4.3G  5.5G   44% /
/dev/sda1             976M  272M  638M   30% /boot
tmpfs                 183M  1.2M  182M    1% /run/user/42
tmpfs                 183M  4.0K  183M    1% /run/user/1000
/dev/sdb1              89M  5.6M   84M    7% /mbr01
/dev/sdc1              90M  5.7M   85M    7% /gpt01
```

###永続的なマウント
mountコマンドだけだと、再起動するとアンマウントされるので、次回起動時も自動的にマウントする場合には、/etc/fstabに記載する。

####UUIDの確認

```
# lsblk --fs
NAME        FSTYPE      LABEL          UUID                                   MOUNTPOINT
sda
├─sda1      ext4                       0e024b7c-76a2-497c-af24-dc2af0867e32   /boot
└─sda2      LVM2_member                tI6zf8-R2ZG-kSdK-5GPV-331t-sLXC-qRsodW
  ├─cl-root xfs                        aacbd61a-5c7d-4d68-8b9e-a5f19ac9090f   /
  └─cl-swap swap                       dccee9bf-77bf-47c9-9145-66d1c66ccd21   [SWAP]
sdb
├─sdb1      xfs                        f9f613b8-6d8a-43e8-b1e4-479e750170d7   /mbr01
├─sdb2
├─sdb3
└─sdb4
sdc
├─sdc1      xfs                        a82e01a1-2c40-4268-8d48-b9cdec9f2fea   /gpt01
├─sdc2
├─sdc3
├─sdc4
├─sdc5
├─sdc6
└─sdc7
```

####/etc/fstabファイルへの追記

```sh:/etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Jul 10 03:02:18 2020
#
# 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.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=0e024b7c-76a2-497c-af24-dc2af0867e32 /boot                   ext4    defaults        1 2
/dev/mapper/cl-swap     swap                    swap    defaults        0 0
UUID=f9f613b8-6d8a-43e8-b1e4-479e750170d7	/mbr01	xfs	default	0	0 #追記
UUID=a82e01a1-2c40-4268-8d48-b9cdec9f2fea	/gpt01	xfs	default	0	0 #追記
```
追記内容は左のフィールドから以下の通り

1. 対象デバイス　UUIDもしくはデバイスファイル（/dev/sdb1など）
2. マウントポイント
3. ファイルシステムタイプ
4. デバイスに適用するオプション
5. dumpコマンドによってデバイスのバックアップに使用される
6. fsckの順序


ファイルへ追記後、`systemctl daemon-reload`を実行する。

#swapの管理
##swapデバイス、使用量の確認

```
# swapon --show
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition 1.2G   0B   -2
# free
              total        used        free      shared  buff/cache   available
Mem:        1870900      541568      812204       10744      517128     1164324
Swap:       1261564           0     1261564
```

##swapパーティションの作成
※未使用のパーティションは削除済み。

MBRの例。GPTも同じ。

```
# parted /dev/sdb
GNU Parted 3.2
/dev/sdb を使用
GNU Parted へようこそ！ コマンド一覧を見るには 'help' と入力してください。
(parted) mkpart
パーティションの種類?  primary/プライマリ/extended/拡張? primary
ファイルシステムの種類?  [ext2]? linux-swap
開始? 101MB
終了? 200MB
(parted) p
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sdb: 1074MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  99.6MB  98.6MB  primary  xfs
 2    101MB   200MB   99.6MB  primary  linux-swap(v1)    lba

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

```

```
# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   12G  0 disk
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   11G  0 part
  ├─cl-root 253:0    0  9.8G  0 lvm  /
  └─cl-swap 253:1    0  1.2G  0 lvm  [SWAP]
sdb           8:16   0    1G  0 disk
├─sdb1        8:17   0   94M  0 part /mbr01
└─sdb2        8:18   0   95M  0 part
sdc           8:32   0    1G  0 disk
├─sdc1        8:33   0   95M  0 part /gpt01
└─sdc2        8:34   0   95M  0 part
sr0          11:0    1   57M  0 rom
```
##swapデバイスのフォーマット

```
# mkswap /dev/sdb2
スワップ空間バージョン 1 を設定します。サイズ = 95 MiB (99610624 バイト)
ラベルはありません, UUID=71f27145-83df-4169-ad7b-612625a6b8e4
# mkswap /dev/sdc2
スワップ空間バージョン 1 を設定します。サイズ = 95 MiB (99610624 バイト)
ラベルはありません, UUID=1355c990-780d-43cc-8ffc-f9ef71026511
```
##swapの追加

```
# swapon /dev/sdb2
# swapon /dev/sdc2
# swapon --show
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition 1.2G   0B   -2
/dev/sdb2 partition  95M   0B   -3
/dev/sdc2 partition  95M   0B   -4
# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   12G  0 disk
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   11G  0 part
  ├─cl-root 253:0    0  9.8G  0 lvm  /
  └─cl-swap 253:1    0  1.2G  0 lvm  [SWAP]
sdb           8:16   0    1G  0 disk
├─sdb1        8:17   0   94M  0 part /mbr01
└─sdb2        8:18   0   95M  0 part [SWAP]
sdc           8:32   0    1G  0 disk
├─sdc1        8:33   0   95M  0 part /gpt01
└─sdc2        8:34   0   95M  0 part [SWAP]
sr0          11:0    1   57M  0 rom
```

###swapデバイスの永続化
同様に/etc/fstabに記載する。

```sh:/etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Jul 10 03:02:18 2020
#
# 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.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=0e024b7c-76a2-497c-af24-dc2af0867e32 /boot                   ext4    defaults        1 2
/dev/mapper/cl-swap     swap                    swap    defaults        0 0
UUID=f9f613b8-6d8a-43e8-b1e4-479e750170d7	/mbr01	xfs	default	0	0
UUID=a82e01a1-2c40-4268-8d48-b9cdec9f2fea	/gpt01	xfs	default	0	0
/dev/sdb2	swap	swap	defaults	0	0 #追記
/dev/sdc2	swap	swap	pri=5	0	0 #追記
```

ファイルへ追記後、`systemctl daemon-reload`を実行する。


###swapの優先度
使用するswapの優先度を設定するには、/etc/fstabファイルでpriオプションで指定する。
デフォルトの値は「-2」で数字が大きい順に使用する。