Update fstrim.sh
This commit is contained in:
parent
453ac9f24e
commit
ace869dc6f
@ -7,7 +7,8 @@ function header_info() {
|
|||||||
cat <<"EOF"
|
cat <<"EOF"
|
||||||
_______ __ __ ______ _
|
_______ __ __ ______ _
|
||||||
/ ____(_) /__ _______ _______/ /____ ____ ___ /_ __/____(_)___ ___
|
/ ____(_) /__ _______ _______/ /____ ____ ___ /_ __/____(_)___ ___
|
||||||
/ /_ / / / _ \/ ___/ / / / ___/ __/ _ \/ __ `__ \ / / / ___/ / / / / / /
|
/ /_ / / / _ \/ ___/ / / / ___/ __/ _ \/ __ `__ \ / / / ___/ / __ `__ \
|
||||||
|
/ __/ / / / __(__ ) /_/ (__ ) /_/ __/ / / / / / / / / / / / / / / / /
|
||||||
/_/ /_/_/\___/____/\__, /____/\__/\___/_/ /_/ /_/ /_/ /_/ /_/_/ /_/ /_/
|
/_/ /_/_/\___/____/\__, /____/\__/\___/_/ /_/ /_/ /_/ /_/ /_/_/ /_/ /_/
|
||||||
/____/
|
/____/
|
||||||
EOF
|
EOF
|
||||||
@ -49,13 +50,13 @@ for LINE in "${CTLINES[@]}"; do
|
|||||||
((${#STATUS} > MAX_STAT_LEN)) && MAX_STAT_LEN=${#STATUS}
|
((${#STATUS} > MAX_STAT_LEN)) && MAX_STAT_LEN=${#STATUS}
|
||||||
done
|
done
|
||||||
|
|
||||||
FMT="%-5s | %-${MAX_NAME_LEN}s | %-${MAX_STAT_LEN}s"
|
FMT="%-${MAX_NAME_LEN}s | %-${MAX_STAT_LEN}s"
|
||||||
|
|
||||||
for LINE in "${CTLINES[@]}"; do
|
for LINE in "${CTLINES[@]}"; do
|
||||||
CTID=$(awk '{print $1}' <<<"$LINE")
|
CTID=$(awk '{print $1}' <<<"$LINE")
|
||||||
STATUS=$(awk '{print $2}' <<<"$LINE")
|
STATUS=$(awk '{print $2}' <<<"$LINE")
|
||||||
NAME=$(awk '{print $3}' <<<"$LINE")
|
NAME=$(awk '{print $3}' <<<"$LINE")
|
||||||
DESC=$(printf "$FMT" "$CTID" "$NAME" "$STATUS")
|
DESC=$(printf "$FMT" "$NAME" "$STATUS")
|
||||||
EXCLUDE_MENU+=("$CTID" "$DESC" "OFF")
|
EXCLUDE_MENU+=("$CTID" "$DESC" "OFF")
|
||||||
if [[ "$STATUS" == "stopped" ]]; then
|
if [[ "$STATUS" == "stopped" ]]; then
|
||||||
STOPPED_MENU+=("$CTID" "$DESC" "OFF")
|
STOPPED_MENU+=("$CTID" "$DESC" "OFF")
|
||||||
@ -71,12 +72,14 @@ read -ra EXCLUDED <<<$(echo "$excluded_containers_raw" | tr -d '"')
|
|||||||
|
|
||||||
TO_START=()
|
TO_START=()
|
||||||
if [ ${#STOPPED_MENU[@]} -gt 0 ]; then
|
if [ ${#STOPPED_MENU[@]} -gt 0 ]; then
|
||||||
echo ""
|
|
||||||
echo "Some containers are currently stopped."
|
echo -e "${BL}[Info]${GN}Some containers are currently stopped.${CL}"
|
||||||
for ((i = 0; i < ${#STOPPED_MENU[@]}; i += 3)); do
|
for ((i = 0; i < ${#STOPPED_MENU[@]}; i += 3)); do
|
||||||
CTID="${STOPPED_MENU[i]}"
|
CTID="${STOPPED_MENU[i]}"
|
||||||
DESC="${STOPPED_MENU[i + 1]}"
|
DESC="${STOPPED_MENU[i + 1]}"
|
||||||
read -rp "Temporarily start CT $DESC for fstrim? [y/N]: " answer
|
header_info
|
||||||
|
echo -e "${BL}[Info]${GN} Container $CTID ($DESC) is currently stopped.${CL}"
|
||||||
|
read -rp "Temporarily start for fstrim? [y/N]: " answer
|
||||||
if [[ "$answer" =~ ^[Yy]$ ]]; then
|
if [[ "$answer" =~ ^[Yy]$ ]]; then
|
||||||
TO_START+=("$CTID")
|
TO_START+=("$CTID")
|
||||||
fi
|
fi
|
||||||
@ -90,14 +93,19 @@ done
|
|||||||
|
|
||||||
function trim_container() {
|
function trim_container() {
|
||||||
local container="$1"
|
local container="$1"
|
||||||
|
local name="$2"
|
||||||
header_info
|
header_info
|
||||||
echo -e "${BL}[Info]${GN} Trimming ${BL}$container${CL} \n"
|
echo -e "${BL}[Info]${GN} Trimming ${BL}$container${CL} \n"
|
||||||
local before_trim after_trim
|
local before_trim after_trim
|
||||||
before_trim=$(lvs --noheadings -o lv_name,data_percent | awk -v ctid="vm-${container}-disk-0" '$1 == ctid {gsub(/%/, "", $2); print $2}')
|
before_trim=$(lvs --noheadings -o lv_name,data_percent | awk -v ctid="vm-${container}-disk-0" '$1 == ctid {gsub(/%/, "", $2); print $2}')
|
||||||
echo -e "${RD}Data before trim $before_trim%${CL}"
|
echo -e "${RD}Data before trim $before_trim%${CL}"
|
||||||
pct fstrim "$container"
|
local fstrim_output
|
||||||
|
fstrim_output=$(pct fstrim "$container" 2>&1)
|
||||||
after_trim=$(lvs --noheadings -o lv_name,data_percent | awk -v ctid="vm-${container}-disk-0" '$1 == ctid {gsub(/%/, "", $2); print $2}')
|
after_trim=$(lvs --noheadings -o lv_name,data_percent | awk -v ctid="vm-${container}-disk-0" '$1 == ctid {gsub(/%/, "", $2); print $2}')
|
||||||
echo -e "${GN}Data after trim $after_trim%${CL}"
|
echo -e "${GN}Data after trim $after_trim%${CL}"
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
echo "$(date '+%Y-%m-%d %H:%M:%S') | CTID=$container | Name=$name | Before=$before_trim% | After=$after_trim% | fstrim: $fstrim_output" >>"$LOGFILE"
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,10 +139,10 @@ for LINE in "${CTLINES[@]}"; do
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
trim_container "$CTID"
|
trim_container "$CTID" "$NAME"
|
||||||
|
|
||||||
if [[ -n "${WAS_STOPPED[$CTID]:-}" ]]; then
|
if [[ -n "${WAS_STOPPED[$CTID]:-}" ]]; then
|
||||||
read -rp "Stop CT $CTID ($NAME) again after trim? [Y/n]: " answer
|
read -rp "Stop LXC $CTID ($NAME) again after trim? [Y/n]: " answer
|
||||||
if [[ ! "$answer" =~ ^[Nn]$ ]]; then
|
if [[ ! "$answer" =~ ^[Nn]$ ]]; then
|
||||||
header_info
|
header_info
|
||||||
echo -e "${BL}[Info]${GN} Stopping $CTID ($NAME) again...${CL}"
|
echo -e "${BL}[Info]${GN} Stopping $CTID ($NAME) again...${CL}"
|
||||||
@ -150,4 +158,5 @@ done
|
|||||||
|
|
||||||
header_info
|
header_info
|
||||||
echo -e "${GN}Finished, LXC Containers Trimmed.${CL} \n"
|
echo -e "${GN}Finished, LXC Containers Trimmed.${CL} \n"
|
||||||
|
echo -e "${BL}If you want to see the complete log: cat $LOGFILE${CL}"
|
||||||
exit 0
|
exit 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user