Image disk space reduction (#10172)
# Why I did it Reduce the disk space taken up during bootup and runtime. # How I did it 1. Remove python package cache from the base image and from the containers. 2. During bootup, if logs are to be stored in memory, then don't create the `var-log.ext4` file just to delete it later during bootup. 3. For the partition containing `/host`, don't reserve any blocks for just the root user. This just makes sure all disk space is available for all users, if needed during upgrades (for example). * Remove pip2 and pip3 caches from some containers Only containers which appeared to have a significant pip cache size are included here. Signed-off-by: Saikrishna Arcot <sarcot@microsoft.com> * Don't create var-log.ext4 if we're storing logs in memory Signed-off-by: Saikrishna Arcot <sarcot@microsoft.com> * Run tune2fs on the device containing /host to not reserve any blocks for just the root user Signed-off-by: Saikrishna Arcot <sarcot@microsoft.com>
This commit is contained in:
parent
98cfec2982
commit
5617b1ae3e
@ -102,7 +102,7 @@ RUN apt-get -y purge \
|
|||||||
RUN apt-get clean -y && \
|
RUN apt-get clean -y && \
|
||||||
apt-get autoclean -y && \
|
apt-get autoclean -y && \
|
||||||
apt-get autoremove -y && \
|
apt-get autoremove -y && \
|
||||||
rm -rf /var/lib/apt/lists/* /tmp/*
|
rm -rf /var/lib/apt/lists/* /tmp/* ~/.cache
|
||||||
|
|
||||||
COPY ["etc/rsyslog.conf", "/etc/rsyslog.conf"]
|
COPY ["etc/rsyslog.conf", "/etc/rsyslog.conf"]
|
||||||
COPY ["etc/rsyslog.d/*", "/etc/rsyslog.d/"]
|
COPY ["etc/rsyslog.d/*", "/etc/rsyslog.d/"]
|
||||||
|
@ -121,7 +121,7 @@ RUN apt-get -y purge \
|
|||||||
RUN apt-get clean -y && \
|
RUN apt-get clean -y && \
|
||||||
apt-get autoclean -y && \
|
apt-get autoclean -y && \
|
||||||
apt-get autoremove -y && \
|
apt-get autoremove -y && \
|
||||||
rm -rf /var/lib/apt/lists/* /tmp/*
|
rm -rf /var/lib/apt/lists/* /tmp/* ~/.cache/
|
||||||
|
|
||||||
COPY ["etc/rsyslog.conf", "/etc/rsyslog.conf"]
|
COPY ["etc/rsyslog.conf", "/etc/rsyslog.conf"]
|
||||||
COPY ["etc/rsyslog.d/*", "/etc/rsyslog.d/"]
|
COPY ["etc/rsyslog.d/*", "/etc/rsyslog.d/"]
|
||||||
|
@ -49,4 +49,4 @@ RUN apt-get purge -y \
|
|||||||
apt-get clean -y && \
|
apt-get clean -y && \
|
||||||
apt-get autoclean -y && \
|
apt-get autoclean -y && \
|
||||||
apt-get autoremove -y && \
|
apt-get autoremove -y && \
|
||||||
rm -rf /debs /python-wheels
|
rm -rf /debs /python-wheels ~/.cache
|
||||||
|
@ -49,4 +49,4 @@ RUN apt-get purge -y \
|
|||||||
apt-get clean -y && \
|
apt-get clean -y && \
|
||||||
apt-get autoclean -y && \
|
apt-get autoclean -y && \
|
||||||
apt-get autoremove -y && \
|
apt-get autoremove -y && \
|
||||||
rm -rf /debs /python-wheels
|
rm -rf /debs /python-wheels ~/.cache
|
||||||
|
@ -64,7 +64,7 @@ RUN apt-get purge -y \
|
|||||||
apt-get clean -y && \
|
apt-get clean -y && \
|
||||||
apt-get autoclean -y && \
|
apt-get autoclean -y && \
|
||||||
apt-get autoremove -y && \
|
apt-get autoremove -y && \
|
||||||
rm -rf /debs
|
rm -rf /debs ~/.cache
|
||||||
|
|
||||||
COPY ["files/arp_update", "/usr/bin"]
|
COPY ["files/arp_update", "/usr/bin"]
|
||||||
COPY ["arp_update.conf", "files/arp_update_vars.j2", "/usr/share/sonic/templates/"]
|
COPY ["arp_update.conf", "files/arp_update_vars.j2", "/usr/share/sonic/templates/"]
|
||||||
|
@ -34,6 +34,6 @@ COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
|
|||||||
|
|
||||||
RUN apt-get remove -y g++ python3-dev
|
RUN apt-get remove -y g++ python3-dev
|
||||||
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||||
RUN rm -rf /debs
|
RUN rm -rf /debs ~/.cache
|
||||||
|
|
||||||
ENTRYPOINT ["/usr/local/bin/supervisord"]
|
ENTRYPOINT ["/usr/local/bin/supervisord"]
|
||||||
|
@ -351,7 +351,12 @@ extract_image() {
|
|||||||
unzip -oq "$swipath" -x boot0 "$dockerfs" -d "$image_path"
|
unzip -oq "$swipath" -x boot0 "$dockerfs" -d "$image_path"
|
||||||
|
|
||||||
## detect rootfs type
|
## detect rootfs type
|
||||||
rootfs_type=`grep " $target_path " /proc/mounts | cut -d' ' -f3`
|
local mountstr="$(grep " $target_path " /proc/mounts)"
|
||||||
|
local rootdev="$(echo $mountstr | cut -f1 -d' ')"
|
||||||
|
rootfs_type="$(echo $mountstr | cut -d' ' -f3)"
|
||||||
|
|
||||||
|
## Don't reserve any blocks just for root
|
||||||
|
tune2fs -m 0 -r 0 $rootdev
|
||||||
|
|
||||||
info "Extracting $dockerfs from swi"
|
info "Extracting $dockerfs from swi"
|
||||||
## Unpacking dockerfs delayed
|
## Unpacking dockerfs delayed
|
||||||
|
@ -11,17 +11,27 @@ case $1 in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
logs_inram=false
|
||||||
|
|
||||||
# Extract kernel parameters
|
# Extract kernel parameters
|
||||||
set -- $(cat /proc/cmdline)
|
set -- $(cat /proc/cmdline)
|
||||||
for x in "$@"; do
|
for x in "$@"; do
|
||||||
case "$x" in
|
case "$x" in
|
||||||
varlog_size=*)
|
varlog_size=*)
|
||||||
varlog_size="${x#varlog_size=}"
|
varlog_size="${x#varlog_size=}"
|
||||||
|
;;
|
||||||
|
logs_inram=on)
|
||||||
|
logs_inram=true
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
[ -z "$varlog_size" ] && exit 0
|
[ -z "$varlog_size" ] && exit 0
|
||||||
|
|
||||||
|
# If logs are being stored in memory, then don't bother
|
||||||
|
# creating the log file just to have it deleted afterwards.
|
||||||
|
$logs_inram && exit 0
|
||||||
|
|
||||||
# exit when the var_log.ext4 exists and the size matches
|
# exit when the var_log.ext4 exists and the size matches
|
||||||
if [ -e "${rootmnt}/host/disk-img/var-log.ext4" ]; then
|
if [ -e "${rootmnt}/host/disk-img/var-log.ext4" ]; then
|
||||||
cur_varlog_size=$(ls -l ${rootmnt}/host/disk-img/var-log.ext4 | awk '{print $5}')
|
cur_varlog_size=$(ls -l ${rootmnt}/host/disk-img/var-log.ext4 | awk '{print $5}')
|
||||||
|
@ -139,6 +139,11 @@ elif [ "$install_env" = "sonic" ]; then
|
|||||||
rm -rf $f
|
rm -rf $f
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
demo_dev=$(findmnt -n -o SOURCE --target /host)
|
||||||
|
|
||||||
|
# Don't reserve any blocks just for root
|
||||||
|
tune2fs -m 0 -r 0 $demo_dev
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create target directory or clean it up if exists
|
# Create target directory or clean it up if exists
|
||||||
|
@ -139,6 +139,11 @@ elif [ "$install_env" = "sonic" ]; then
|
|||||||
rm -rf $f
|
rm -rf $f
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
demo_dev=$(findmnt -n -o SOURCE --target /host)
|
||||||
|
|
||||||
|
# Don't reserve any blocks just for root
|
||||||
|
tune2fs -m 0 -r 0 $demo_dev
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create target directory or clean it up if exists
|
# Create target directory or clean it up if exists
|
||||||
|
@ -477,6 +477,9 @@ if [ "$install_env" = "onie" ]; then
|
|||||||
# Make filesystem
|
# Make filesystem
|
||||||
mkfs.ext4 -L $demo_volume_label $demo_dev
|
mkfs.ext4 -L $demo_volume_label $demo_dev
|
||||||
|
|
||||||
|
# Don't reserve any blocks just for root
|
||||||
|
tune2fs -m 0 -r 0 $demo_dev
|
||||||
|
|
||||||
# Mount demo filesystem
|
# Mount demo filesystem
|
||||||
demo_mnt=$(${onie_bin} mktemp -d) || {
|
demo_mnt=$(${onie_bin} mktemp -d) || {
|
||||||
echo "Error: Unable to create file system mount point"
|
echo "Error: Unable to create file system mount point"
|
||||||
@ -509,12 +512,20 @@ elif [ "$install_env" = "sonic" ]; then
|
|||||||
rm -rf $f
|
rm -rf $f
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
demo_dev=$(findmnt -n -o SOURCE --target /host)
|
||||||
|
|
||||||
|
# Don't reserve any blocks just for root
|
||||||
|
tune2fs -m 0 -r 0 $demo_dev
|
||||||
else
|
else
|
||||||
demo_mnt="build_raw_image_mnt"
|
demo_mnt="build_raw_image_mnt"
|
||||||
demo_dev=$cur_wd/"%%OUTPUT_RAW_IMAGE%%"
|
demo_dev=$cur_wd/"%%OUTPUT_RAW_IMAGE%%"
|
||||||
|
|
||||||
mkfs.ext4 -L $demo_volume_label $demo_dev
|
mkfs.ext4 -L $demo_volume_label $demo_dev
|
||||||
|
|
||||||
|
# Don't reserve any blocks just for root
|
||||||
|
tune2fs -m 0 -r 0 $demo_dev
|
||||||
|
|
||||||
echo "Mounting $demo_dev on $demo_mnt..."
|
echo "Mounting $demo_dev on $demo_mnt..."
|
||||||
mkdir $demo_mnt
|
mkdir $demo_mnt
|
||||||
mount -t auto -o loop $demo_dev $demo_mnt
|
mount -t auto -o loop $demo_dev $demo_mnt
|
||||||
|
Loading…
Reference in New Issue
Block a user