1+
12#! /usr/bin/env bash
23# shellcheck disable=SC2086,SC2174
34set -o errexit -o nounset -o pipefail -x
@@ -6,7 +7,8 @@ shopt -s nullglob
67level=" ${1:- 0} "
78pattern=" ${2:-/ dev/ nvme* n1} "
89mount_primary=" ${3:-/ mnt/ nvme} "
9- mount_extra=(/var/lib/{containers,kubelet,openebs})
10+ mount_extra=(/var/lib/{containers,kubelet,logs/pods})
11+ md_device=" /dev/md/0"
1012
1113# Enumerate NVMe devices, exit if absent
1214devices=($pattern )
@@ -27,34 +29,57 @@ stripe=$((eff_count*stride)) # number of data disks * stride
2729echo -e " Creating RAID${level} filesystem mounted under ${mount_primary} with $count devices:\n ${devices[*]} " >&2
2830echo -e " Filesystem options:\n eff_count=$eff_count ; chunk=${chunk} K; bs=${bs} K; stride=$stride ; stripe-width=${stripe} " >&2
2931shopt -u nullglob; seen_arrays=(/dev/md/* ); device=${seen_arrays[0]}
30- if [ ! -e " $device " ]; then
31- device=" /dev/md/0"
32- echo " y" | mdadm --create " $device " --level=" $level " --chunk=$chunk --force --raid-devices=" $count " " ${devices[@]} "
33- dd if=/dev/zero of=" $device " bs=${bs} K count=128
32+ if [ ! -e " $md_device " ]; then
33+ echo " y" | mdadm --create " $md_device " --level=" $level " --chunk=$chunk --force --raid-devices=" $count " " ${devices[@]} "
34+ dd if=/dev/zero of=" $md_device " bs=${bs} K count=128
3435else
35- echo " $device already initialized" >&2
36+ echo " $md_device already initialized" >&2
3637fi
3738
38- if ! tune2fs -l " $device " & > /dev/null; then
39- echo " Formatting '$device '" >&2
40- mkfs.ext4 -I 512 -b $(( bs* 1024 )) -E stride=${stride} ,stripe-width=${stripe} -O dir_index -m 1 -F " $device "
39+ if ! tune2fs -l " $md_device " & > /dev/null; then
40+ echo " Formatting '$md_device '" >&2
41+ mkfs.ext4 -I 512 -b $(( bs* 1024 )) -E stride=${stride} ,stripe-width=${stripe} -O dir_index -m 1 -F " $md_device "
4142else
42- echo " $device already formatted" >&2
43+ echo " $md_device already formatted" >&2
4344fi
4445
4546mkdir -m 0755 -p " $mount_primary " " ${mount_extra[@]} "
46- mountpoint -q " $mount_primary " || mount -v -o rw,noatime,nofail " $device " " $mount_primary " || :
47- grep -v " $mount_primary " /etc/fstab > /etc/fstab.new
48- echo " $device $mount_primary ext4 rw,noatime,nofail 0 2" | tee -a /etc/fstab.new
47+ dev_uuid=$( blkid -s UUID -o value " ${md_device} " )
48+ mount_unit_name=" $( systemd-escape --path --suffix=mount " ${mount_primary} " ) "
49+ cat > " /etc/systemd/system/${mount_unit_name} " << EOF
50+ [Unit]
51+ Description=Mount local NVMe RAID for OKE
52+ [Mount]
53+ What=UUID=${dev_uuid}
54+ Where=${mount_primary}
55+ Type=ext4
56+ Options=defaults,noatime
57+ [Install]
58+ WantedBy=multi-user.target
59+ EOF
60+ systemd-analyze verify " ${mount_unit_name} "
61+ systemctl enable " ${mount_unit_name} " --now
4962
5063for mount in " ${mount_extra[@]} " ; do
5164 name=$( basename " $mount " )
65+ array_mount_point_name=" $mount_primary /$name "
5266 mkdir -m 0755 -p " $mount_primary /$name "
53- mountpoint -q " $mount " || mount -vB " $mount_primary /$name " " $mount " || :
54- echo " $mount_primary $mount none defaults,bind 0 2" | tee -a /etc/fstab.new
67+ mount_unit_name=" $( systemd-escape --path --suffix=mount " ${mount} " ) "
68+ cat > " /etc/systemd/system/${mount_unit_name} " << EOF
69+ [Unit]
70+ Description=Mount ${name} on OKE NVMe RAID
71+ [Mount]
72+ What=${array_mount_point_name}
73+ Where=${mount}
74+ Type=none
75+ Options=bind
76+ [Install]
77+ WantedBy=multi-user.target
78+ EOF
79+ systemd-analyze verify " ${mount_unit_name} "
80+ systemctl enable " ${mount_unit_name} " --now
5581done
5682
57- mv -v /etc/fstab.new /etc/fstab # update persisted filesystem mounts
5883mdadm --detail --scan --verbose >> /etc/mdadm/mdadm.conf
5984
60- update-initramfs -u
85+ update-initramfs -u
0 commit comments