Skip to content

Commit d0725fe

Browse files
Merge pull request #46 from oracle-quickstart/nvme-mount-fix
Fix the Nvme RAID mount issue that causes nodes to be in NotReady status when rebooted
2 parents 4abe3df + 3d7c105 commit d0725fe

File tree

1 file changed

+42
-17
lines changed

1 file changed

+42
-17
lines changed

files/oke-nvme-raid.sh

Lines changed: 42 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
#!/usr/bin/env bash
23
# shellcheck disable=SC2086,SC2174
34
set -o errexit -o nounset -o pipefail -x
@@ -6,7 +7,8 @@ shopt -s nullglob
67
level="${1:-0}"
78
pattern="${2:-/dev/nvme*n1}"
89
mount_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
1214
devices=($pattern)
@@ -27,34 +29,57 @@ stripe=$((eff_count*stride)) # number of data disks * stride
2729
echo -e "Creating RAID${level} filesystem mounted under ${mount_primary} with $count devices:\n ${devices[*]}" >&2
2830
echo -e "Filesystem options:\n eff_count=$eff_count; chunk=${chunk}K; bs=${bs}K; stride=$stride; stripe-width=${stripe}" >&2
2931
shopt -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
3435
else
35-
echo "$device already initialized" >&2
36+
echo "$md_device already initialized" >&2
3637
fi
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"
4142
else
42-
echo "$device already formatted" >&2
43+
echo "$md_device already formatted" >&2
4344
fi
4445

4546
mkdir -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

5063
for 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
5581
done
5682

57-
mv -v /etc/fstab.new /etc/fstab # update persisted filesystem mounts
5883
mdadm --detail --scan --verbose >> /etc/mdadm/mdadm.conf
5984

60-
update-initramfs -u
85+
update-initramfs -u

0 commit comments

Comments
 (0)