mirror of
https://github.com/hanzoai/s3.git
synced 2026-11-02 10:33:22 +00:00
The binary is s3 and the product is Hanzo S3; the rest of the tree now says so too. - Environment: WEED_* and SEAWEEDFS_* are S3_*, no aliases. fla9's flag prefix is S3, matching viper's existing "s3" prefix, so the S3_S3_SSE_* names mini.go exports are the ones viper reads (WEED_S3_SSE_KEK was never seen once viper moved to "s3"). - Java and Hadoop: packages, fs.hanzofs.* keys and the hanzofs:// scheme under the hanzofs namespace the protos already declare; classes take a neutral Filer prefix and file names match them again (the earlier pass left Seas3*.java holding Seaweed* classes). Client, hdfs3, examples, s3copier, random_access and the Spark tests compile. - Helm chart: helpers are hanzo.*, values live under global.s3; the chart renders and lints, which it did not before. - Terraform: the s3.service.tftpl reference matches the file; 12/12 render tests pass. Config paths point at /etc/hanzo, which the binary reads. - loadtest.pb.go regenerated from loadtest.proto. - Upstream logo, sponsor images and unreferenced diagrams removed from note/. Kept: NOTICE attribution, LICENSE, the erasure-coding fixture s3/storage/erasure_coding/1.dat (test bytes), and unmaintained/ and third_party/ (vendored). No on-disk format, wire protocol or metadata key changed. Co-authored-by: Hanzo Dev <[email protected]>
74 lines
2.2 KiB
Plaintext
74 lines
2.2 KiB
Plaintext
#!/usr/bin/env bash
|
|
# Rendered by the Hanzo S3 Terraform core module. Formats (only if blank) and
|
|
# mounts each data disk, persisting by UUID to /etc/fstab. Safe to re-run.
|
|
set -euo pipefail
|
|
|
|
run_as_user="${run_as_user}"
|
|
|
|
# Base block device backing "/" so auto-discovery never touches the root disk.
|
|
root_src="$(findmnt -no SOURCE / 2>/dev/null || true)"
|
|
root_base="$(lsblk -no pkname "$root_src" 2>/dev/null || true)"
|
|
[ -n "$root_base" ] && root_base="/dev/$root_base"
|
|
|
|
is_mounted() { findmnt -rno TARGET "$1" >/dev/null 2>&1; }
|
|
|
|
# Pick the first unmounted, non-root whole disk (single-data-disk node).
|
|
discover_dev() {
|
|
local d base
|
|
for d in /dev/nvme*n1 /dev/xvd[b-z] /dev/sd[b-z] /dev/vd[b-z]; do
|
|
[ -b "$d" ] || continue
|
|
[ "$d" = "$root_src" ] && continue
|
|
[ "$d" = "$root_base" ] && continue
|
|
base="/dev/$(lsblk -no pkname "$d" 2>/dev/null || true)"
|
|
[ "$base" = "$root_base" ] && continue
|
|
is_mounted "$d" && continue
|
|
echo "$d"; return 0
|
|
done
|
|
return 1
|
|
}
|
|
|
|
# Wait up to ~120s for one of the explicit candidate devices to appear.
|
|
wait_dev() {
|
|
local i d
|
|
for i in $(seq 1 60); do
|
|
for d in "$@"; do [ -b "$d" ] && { echo "$d"; return 0; }; done
|
|
sleep 2
|
|
done
|
|
return 1
|
|
}
|
|
|
|
mount_one() {
|
|
local mountpoint="$1" fstype="$2"; shift 2
|
|
local dev=""
|
|
if [ "$#" -gt 0 ]; then
|
|
dev="$(wait_dev "$@" || true)"
|
|
fi
|
|
if [ -z "$dev" ]; then
|
|
dev="$(discover_dev || true)"
|
|
fi
|
|
if [ -z "$dev" ]; then
|
|
echo "mount-disks: no device found for $mountpoint" >&2
|
|
return 1
|
|
fi
|
|
if ! blkid "$dev" >/dev/null 2>&1; then
|
|
echo "mount-disks: formatting $dev as $fstype"
|
|
"mkfs.$fstype" -q "$dev"
|
|
fi
|
|
mkdir -p "$mountpoint"
|
|
local uuid; uuid="$(blkid -s UUID -o value "$dev")"
|
|
if [ -z "$uuid" ]; then
|
|
echo "mount-disks: failed to read a filesystem UUID for $dev" >&2
|
|
return 1
|
|
fi
|
|
if ! grep -q "$uuid" /etc/fstab; then
|
|
printf 'UUID=%s %s %s defaults,nofail 0 2\n' "$uuid" "$mountpoint" "$fstype" >> /etc/fstab
|
|
fi
|
|
is_mounted "$mountpoint" || mount "$mountpoint"
|
|
chown -R "$run_as_user:$run_as_user" "$mountpoint"
|
|
echo "mount-disks: $dev mounted at $mountpoint"
|
|
}
|
|
|
|
%{ for m in mounts ~}
|
|
mount_one "${m.mountpoint}" "${m.fstype}"${length(m.devices) > 0 ? " ${join(" ", m.devices)}" : ""}
|
|
%{ endfor ~}
|