Skip to content
Snippets Groups Projects
Commit 29c3988b authored by Jakub Jirutka's avatar Jakub Jirutka :flag_ua:
Browse files

community/garage: add script for migration to lmdb and recommend it

parent a0c50802
No related branches found
No related tags found
1 merge request!46907community/garage: upgrade to 0.8.2
Pipeline #163594 canceled
......@@ -19,7 +19,7 @@ makedepends="
checkdepends="openssl-dev"
pkgusers="garage"
pkggroups="garage"
install="$pkgname.pre-install"
install="$pkgname.pre-install $pkgname.post-upgrade"
subpackages="
$pkgname-convert-db:_convertdb
$pkgname-openrc
......@@ -28,6 +28,7 @@ source="https://github.com/deuxfleurs-org/garage/archive/v$pkgver/garage-$pkgver
fix-website-test-k2v.patch
syslog-support.patch
garage.toml
garage-migrate-to-lmdb
$pkgname.initd
$pkgname.confd
"
......@@ -67,6 +68,8 @@ package() {
install -D -m644 "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
install -D -m640 -o garage -g garage "$srcdir"/garage.toml -t "$pkgdir"/etc/
install -D -m755 "$srcdir"/garage-migrate-to-lmdb -t "$pkgdir"/usr/sbin/
install -d -m700 -o garage -g garage "$pkgdir"/var/lib/$pkgname
}
......@@ -80,7 +83,8 @@ sha512sums="
b2279fb55d4c694d4dff155c123c3c3e7fda8d04676a10ef9b572b199c873bdb79397fb686c3236f90be92f2bc1aef36f845ec40b38def9593f86d0fac687c21 garage-0.8.2.tar.gz
d5ab54a95e1376988e72dc7c9c2565a381de5ae771de72e8f60e3b331f8e8ab951a2778199215b55b90f93e00634addbf19c843882def51b0a0e07ac5d7e6779 fix-website-test-k2v.patch
e59399ab8a16b591498be0d6510054adf14ff5c4ec15ddfdf69b046119fa036c8abef10173aa29f832ff64d1b0c46b51d17051a450d85b61bd99eb91b8c64ed5 syslog-support.patch
e67907619bd29397cd20520dd165ffafd56656adb48d123221aae78fd5eae6c273bd0fcfede873f888e2e342a2beb22b59bf0a087ce880df714e9b85eb3109db garage.toml
21892e8b574d36d62f7e720b4cb2a2013765e60e392a40c4d52ebf04541c77fde6d70dce2d5f2014fb1487a64813b9409d9553262f897fbdb602ca05e196d21d garage.toml
86676ad0c1059b3e431261542ea3ed56f12b7957e082685b0dbd80cbc3cc6bbf810c540fe4726b3809010f41c0976b65434fb5990c26f092feb900e86aec251c garage-migrate-to-lmdb
a2130fa81ed2c8af266ed1e86d0c72e3aae6995599347e4488c6cd4cc83217fbb65ea9121415985f8cdcd15aaee9b28886b1ccf24755571b3ddf2fc5d8dd5b3a garage.initd
f31bb5bde3ff41dc5fa6832c8ff24e1f1027b34513ab5e5c008df13495b53a569d3cb5adefed93cf780f5e488ff760603097785d85e1a884538e802e415205bd garage.confd
"
#!/bin/sh
set -eu
: ${GARAGE_CONFIG_FILE:="/etc/garage.toml"}
case "${1-}" in -h | --help)
cat <<-EOF
Usage: $0
Migrate Garage metadata database from Sled to LMDB.
EOF
esac
if [ "$(id -u)" -ne 0 ]; then
echo 'ERROR: Must be run as root!' >&2
exit 1
fi
if pgrep /usr/bin/garage >/dev/null; then
echo 'ERROR: Garage is running; you must stop it before running this command!' >&2
exit 1
fi
metadata_dir=$(sed -En 's/^metadata_dir\s*=\s*"([^"]+)".*/\1/p' "$GARAGE_CONFIG_FILE")
: ${metadata_dir:-"/var/lib/garage/meta"}
if ! [ -d "$metadata_dir" ]; then
echo "ERROR: metadata_dir '$metadata_dir' does not exist!" >&2
exit 1
fi
uninstall=false
if ! command -v garage-convert-db >/dev/null; then
apk add cmd:garage-convert-db
uninstall=true
fi
if command -v rc-service >/dev/null; then
echo 'Stopping garage...'
rc-service garage --ifstarted stop
fi
echo "Converting metadata database in $metadata_dir to LMDB" >&2
su garage -s /bin/sh -c "garage-convert-db -a sled -i '$metadata_dir/db' -b lmdb -o '$metadata_dir/db.lmdb'"
if $uninstall; then
apk del cmd:garage-convert-db
fi
echo "Changing db_engine to 'lmdb' in $GARAGE_CONFIG_FILE" >&2
if grep -q '^[# ]*db_engine\s*=' "$GARAGE_CONFIG_FILE"; then
sed -Ei 's/^[# ]*(db_engine\s*=\s*).*/\1"lmdb"/' "$GARAGE_CONFIG_FILE"
else
printf '\n\n%s\n' 'db_engine = "lmdb"' >> "$GARAGE_CONFIG_FILE"
fi
sed -i "/^# NOTE: Run 'garage-migrate-to-lmdb' to migrate from sled to lmdb./d" "$GARAGE_CONFIG_FILE"
echo 'Finished, now you can start Garage.' >&2
#!/bin/sh
_64bit() {
case "$(uname -m)" in
armhf | armv7 | x86) return 1;;
*) return 0;;
esac
}
if [ "$(apk version -t "$2" '0.8.2-r0')" = '<' ] && _64bit; then
cat >&2 <<-EOF
*
* It's recommended to migrate Garage metadata directory from Sled to LMDB
* by running 'garage-migrate-to-lmdb' command. Sled may be removed from 64-bit
* packages in the future.
*
EOF
fi
exit 0
......@@ -14,8 +14,9 @@ metadata_dir = "/var/lib/garage/meta"
# The directory in which Garage will store the data blocks of objects.
data_dir = "/var/lib/garage/data"
# The database engine to store metadata on-disk.
# Options: "sled" (default), "lmdb" (recommended)
# The database engine to store metadata on-disk: "sled" (default)
# or "lmdb" (recommended).
# NOTE: Run 'garage-migrate-to-lmdb' to migrate from sled to lmdb.
#db_engine = "sled"
# The block size for stored objects.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment