QRadar iSCSI Multipath

# QRadar iSCSI Multipath
## 環境
QRadar 7.5 AIO
## 目的
QRadar SIEMのデータ保存領域（/store/backup)を外部ストレージに移行することにより、冗長性の担保および大容量スペースを確保することを目的とする

## QRadar のiSCSI関連ドキュメント
以下の２つのドキュメントのみ公開されており、iSCSIのマルチパスは存在せず
- [IBM QRadar 7.5 Offboard strorage guide ](https://www.ibm.com/docs/ja/SS42VS_7.5/pdf/b_offboard_storage.pdf)
- [iSCSI 外部ストレージ・デバイス](https://www.ibm.com/docs/ja/qsip/7.5?topic=storage-iscsi-external-device)

## 手順
### 1. /store/backupの変更
これからiscsiとする領域のディレクトリを名前を変えて退避
```
[root@QRadar ~]# mv /store/backup /store/local.backup
```
### 2. IQNの確認
ストレージ側にて接続許可対象とするIQNを確認する。以下はデフォルト値なので変更も可。
1994-05(yyyy-mm)の部分は実際に構築した年-月とすることが一般的
```
[root@QRadar ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:f99999999 
```

### 3. Discoveryコマンドにてmultipathターゲットを検索
以下の例は6つのターゲットがある状態。数はストレージベンダーにより可変
```
[root@QRadar ~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.1
192.168.1.1:3260,4099 iqn.yyyy-mm.com.[ストレージホスト名]
192.168.1.2:3260,4099 iqn.yyyy-mm.com.[ストレージホスト名]
192.168.1.3:3260,4099 iqn.yyyy-mm.com.[ストレージホスト名]
192.168.1.4:3260,4099 iqn.yyy-mm.com.[ストレージホスト名]
192.168.1.5:3260,4099 iqn.yyyy-mm.com.[ストレージホスト名]
192.168.1.6:3260,4099 iqn.yyy-mm.com.[ストレージホスト名]
```
### 4. multipathターゲットへのログイン
利用できるようにログインしておきます
```
[root@QRadar ~]# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.yyyy-mm.com.[ストレージホスト名], portal: 192.168.1.1,3260] (multiple)
Logging in to [iface: default, target: iqn.yyyy-mm.com.[ストレージホスト名], portal: 192.168.1.2,3260] (multiple)
Logging in to [iface: default, target: iqn.yyyy-mm.com.[ストレージホスト名], portal: 192.168.1.3,3260] (multiple)
Logging in to [iface: default, target: iqn.yyyy-mm.com.[ストレージホスト名], portal: 192.168.1.4,3260] (multiple)
Logging in to [iface: default, target: iqn.yyyy-mm.com.[ストレージホスト名], portal: 192.168.1.5,3260] (multiple)
Logging in to [iface: default, target: iqn.yyyy-mm.com.[ストレージホスト名], portal: 192.168.1.6,3260] (multiple)
Login to [iface: default, target: iqn.yyyy-mm.com.[ストレージホスト名], portal: 192.168.1.1,3260] successful.
Login to [iface: default, target: iqn.yyyy-mm.com.[ストレージホスト名], portal: 192.168.1.2,3260] successful.
Login to [iface: default, target: iqn.yyyy-mm.com.[ストレージホスト名], portal: 192.168.1.3,3260] successful.
Login to [iface: default, target: iqn.yyyy-mm.com.[ストレージホスト名], portal: 192.168.1.4,3260] successful.
Login to [iface: default, target: iqn.yyyy-mm.com.[ストレージホスト名], portal: 192.168.1.5,3260] successful.
Login to [iface: default, target: iqn.yyyy-mm.com.[ストレージホスト名], portal: 192.168.1.6,3260] successful.
```
### 5. multipathセッションの確認
multipathセッションの確認を行います
```
[root@svqr07 dev]# iscsiadm -m session
tcp: [1] 192.168.1.1:3260,4099 iqn.yyyy-mm.com.[ストレージホスト名] (non-flash)
tcp: [2] 192.168.1.2:3260,4099 iqn.yyyy-mm.com.[ストレージホスト名](non-flash)
tcp: [3] 192.168.1.3:3260,4099 iqn.yyyy-mm.com.[ストレージホスト名] (non-flash)
tcp: [4] 192.168.1.4:3260,4099 iqn.yyyy-mm.com.[ストレージホスト名] (non-flash)
tcp: [5] 192.168.1.5:3260,4099 iqn.yyyy-mm.com.[ストレージホスト名] (non-flash)
tcp: [6] 192.168.1.6:3260,4099 iqn.yyyy-mm.com.[ストレージホスト名] (non-flash)
```

### 6. multipath.confの生成
multipathのサービスを開始するためには、コンフィグが必要となります
```
[root@QRadar]# vi /etc/multipath.conf
```
以下を貼り付けます
```
defaults {
    user_friendly_names yes
    find_multipaths yes
}
blacklist {
}
```
### 7. multipathサービス自動起動有効化及び開始
サービスがLoaded,active(running)になっていることを確認します
```
[root@QRadar]# systemctl enable multipathd.service
[root@QRadar]# systemctl start  multipathd.service
[root@QRadar]# systemctl status  multipathd.service
● multipathd.service - Device-Mapper Multipath Device Controller
   Loaded: loaded (/usr/lib/systemd/system/multipathd.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2023-10-26 16:08:39 JST; 2s ago
  Process: 4135 ExecStart=/sbin/multipathd (code=exited, status=0/SUCCESS)
  Process: 4131 ExecStartPre=/sbin/multipath -A (code=exited, status=0/SUCCESS)
  Process: 4126 ExecStartPre=/sbin/modprobe dm-multipath (code=exited, status=0/SUCCESS)
 Main PID: 4137 (multipathd)
    Tasks: 7
   Memory: 2.7M
   CGroup: /system.slice/multipathd.service
           mq4137 /sbin/multipathd

Oct 26 16:08:39 QRadar.localhost.com systemd[1]: Starting Device-Mapper Multipath Device Controller...
Oct 26 16:08:39 QRadar.localhost.com systemd[1]: Started Device-Mapper Multipath Device Controller.
Oct 26 16:08:39 QRadar.localhost.com multipathd[4137]: mpatha: load table [0 3145728000 multipath 0 0 1 1 round-robin 0 6 1 8:16 50 8:32 50 8:48 50...8:96 50]
Oct 26 16:08:39 QRadar.localhost.com multipathd[4137]: mpatha: event checker started
Oct 26 16:08:39 QRadar.localhost.com multipathd[4137]: path checkers start up
Hint: Some lines were ellipsized, use -l to show in full.
```

### 8. 仮想デバイス名の確認
このコマンドでmultipathの仮想デバイスの名前（例：mpatha）を確認する
```
[root@QRadar]# multipath -ll
mpatha (36742b0f000000d37000000000003fc9d) dm-16 [ストレージベンダ],[ストレージ名]
size=1.5T features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=50 status=active
  |- 3:0:0:1 sdb 8:16 active ready running
  |- 4:0:0:1 sdc 8:32 active ready running
  |- 5:0:0:1 sdd 8:48 active ready running
  |- 6:0:0:1 sde 8:64 active ready running
  |- 7:0:0:1 sdf 8:80 active ready running
  `- 8:0:0:1 sdg 8:96 active ready running
  ```

### 9. パーティション作成
```
[root@QRadar]# parted  /dev/mapper/mpatha
GNU Parted 3.1
Using /dev/mapper/mpatha
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart primary 0% 100%
(parted) unit TB
(parted) print
Model: Linux device-mapper (multipath) (dm)
Disk /dev/mapper/mpatha: 1.61TB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
 1      0.00TB  1.61TB  1.61TB               primary

(parted) quit
Information: You may need to update /etc/fstab.

```

### 10. 新しいパーティションのデータでカーネル更新
``` 
partprobe /dev/<volume>
```
### 11. 生成されたパーティション名を確認
multipath対象ターゲットを見つける。TYPEがmpathに紐づくpart。以下の例では、mptha1
```
[root@QRadar]# lsblk -ip
NAME                                       MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
/dev/sda                                     8:0    0   1.2T  0 disk
|-/dev/sda1                                  8:1    0     1M  0 part
|-/dev/sda2                                  8:2    0     1G  0 part  /boot
|-/dev/sda3                                  8:3    0    32G  0 part  /recovery
|-/dev/sda4                                  8:4    0     1T  0 part
| |-/dev/mapper/storerhel-transient        253:8    0 211.2G  0 lvm   /transient
| `-/dev/mapper/storerhel-store            253:9    0 844.8G  0 lvm   /store
|-/dev/sda5                                  8:5    0    67G  0 part
| |-/dev/mapper/rootrhel-root              253:0    0  12.5G  0 lvm   /
| |-/dev/mapper/rootrhel-storetmp          253:1    0    15G  0 lvm   /storetmp
| |-/dev/mapper/rootrhel-tmp               253:2    0     3G  0 lvm   /tmp
| |-/dev/mapper/rootrhel-home              253:3    0     1G  0 lvm   /home
| |-/dev/mapper/rootrhel-opt               253:4    0  12.5G  0 lvm   /opt
| |-/dev/mapper/rootrhel-varlogaudit       253:5    0     3G  0 lvm   /var/log/a
| |-/dev/mapper/rootrhel-varlog            253:6    0    15G  0 lvm   /var/log
| `-/dev/mapper/rootrhel-var               253:7    0     5G  0 lvm   /var
`-/dev/sda6                                  8:6    0    24G  0 part  [SWAP]
/dev/sdb                                     8:16   0   1.5T  0 disk
`-/dev/mapper/mpatha                       253:16   0   1.5T  0 mpath
  `-/dev/mapper/mpatha1                    253:17   0   1.5T  0 part
/dev/sdc                                     8:32   0   1.5T  0 disk
`-/dev/mapper/mpatha                       253:16   0   1.5T  0 mpath
  `-/dev/mapper/mpatha1                    253:17   0   1.5T  0 part
/dev/sdd                                     8:48   0   1.5T  0 disk
`-/dev/mapper/mpatha                       253:16   0   1.5T  0 mpath
  `-/dev/mapper/mpatha1                    253:17   0   1.5T  0 part
/dev/sde                                     8:64   0   1.5T  0 disk
`-/dev/mapper/mpatha                       253:16   0   1.5T  0 mpath
  `-/dev/mapper/mpatha1                    253:17   0   1.5T  0 part
/dev/sdf                                     8:80   0   1.5T  0 disk
`-/dev/mapper/mpatha                       253:16   0   1.5T  0 mpath
  `-/dev/mapper/mpatha1                    253:17   0   1.5T  0 part
/dev/sdg                                     8:96   0   1.5T  0 disk
`-/dev/mapper/mpatha                       253:16   0   1.5T  0 mpath
  `-/dev/mapper/mpatha1                    253:17   0   1.5T  0 part
/dev/sr0                                    11:0    1  1024M  0 rom
/dev/loop0                                   7:0    0   100G  0 loop
`-/dev/mapper/docker-253:9-1075429704-pool 253:10   0   100G  0 dm
  |-/dev/mapper/docker-253:9-1075429704-2853e4e0745f773a5567596e3bc39ca2ebe53ec6
                                           253:11   0    10G  0 dm    /store/doc
  |-/dev/mapper/docker-253:9-1075429704-53580bf28b93ce7cdec25fb1acabcc7b579ac136
                                           253:12   0    10G  0 dm    /store/doc
  |-/dev/mapper/docker-253:9-1075429704-5a9abe7b2f145d4fd68bbeb04f9032454f5b06d1
                                           253:13   0    10G  0 dm    /store/doc
  |-/dev/mapper/docker-253:9-1075429704-55ce31fc58b66126f19ee4f495e885701484f3a7
                                           253:14   0    10G  0 dm    /store/doc
  `-/dev/mapper/docker-253:9-1075429704-87ab6245400e4c836740449865a1ac7b27a76f3b
                                           253:15   0    10G  0 dm    /store/doc
/dev/loop1                                   7:1    0     2G  0 loop
`-/dev/mapper/docker-253:9-1075429704-pool 253:10   0   100G  0 dm
  |-/dev/mapper/docker-253:9-1075429704-2853e4e0745f773a5567596e3bc39ca2ebe53ec6
                                           253:11   0    10G  0 dm    /store/doc
  |-/dev/mapper/docker-253:9-1075429704-53580bf28b93ce7cdec25fb1acabcc7b579ac136
                                           253:12   0    10G  0 dm    /store/doc
  |-/dev/mapper/docker-253:9-1075429704-5a9abe7b2f145d4fd68bbeb04f9032454f5b06d1
                                           253:13   0    10G  0 dm    /store/doc
  |-/dev/mapper/docker-253:9-1075429704-55ce31fc58b66126f19ee4f495e885701484f3a7
                                           253:14   0    10G  0 dm    /store/doc
  `-/dev/mapper/docker-253:9-1075429704-87ab6245400e4c836740449865a1ac7b27a76f3b
                                           253:15   0    10G  0 dm    /store/doc
```
### 12. パーティションをxfs形式でフォーマット
```
[root@QRadar]# mkfs.xfs -f /dev/mapper/mpatha1
meta-data=/dev/mapper/mpatha1    isize=512    agcount=32, agsize=12287984 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=393215488, imaxpct=5
         =                       sunit=16     swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=192000, version=2
         =                       sectsz=512   sunit=16 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
```
### 13. UUID確認
以下の例は、UUIDを9だけでマスキングしているため実際はランダムな値が入る
```
[root@QRadar]# blkid /dev/mapper/mpatha1
/dev/mapper/mpatha1: UUID="99999999-9999-9999-9999-999999999999" TYPE="xfs" PART
```
### 14. fstabの編集
以下の１行を追加してfstabを保存する
※noautoを消してはいけない。OSが起動してこなくなってしまう
```
[root@QRadar]# vi /etc/fstab
~
UUID=99999999-9999-9999-9999-999999999999 /store/backup xfs inode64,logbsize=256
k,noatime,noauto,nobarrier 0 0
~
```
### 15. iscsi用ディレクトリ再作成
mkdir /store/backup
### 16. iscsiサービス自動起動有効化
OS再起動したときに、multipathサービスの前に起動が必要なため

```
[root@QRadar]# systemctl enable iscsi
[root@QRadar]# systemctl enable iscsi-mount
```

## 確認したこと
- QRadar (RHEL)再起動してもiSCSIマウント外れず正常稼働する
- QRadarのバージョンを7.4.3から7.5へのバージョンアップしてiSCSIマウントが外れず正常稼働する
- QRadarに対してパッチを当ててもiSCSIマウントが外れず正常稼働する

sdxがどのような用途で利用されているかの確認
sda: failed to get udev uid: Invalid argument のようなメッセージ出力が確認された場合に、multipath.confでsda等を無効化する
```
[root@QRadar~]# lsblk -S
NAME HCTL       TYPE VENDOR   MODEL             REV TRAN
sda  0:0:0:0    disk VMware   Virtual disk     2.0
sdb  3:0:0:1    disk [ストレージホスト名]       0h   iscsi
sdc  4:0:0:1    disk [ストレージホスト名]        0h   iscsi
sdd  5:0:0:1    disk [ストレージホスト名]       0h   iscsi
sde  6:0:0:1    disk [ストレージホスト名]        0h   iscsi
sdf  7:0:0:1    disk [ストレージホスト名]　       0h   iscsi
sdg  8:0:0:1    disk [ストレージホスト名]        0h   iscsi
sr0  1:0:0:0    rom  NECVMWar VMware IDE CDR00 1.00 ata
```