75 lines
2.2 KiB
Bash
75 lines
2.2 KiB
Bash
pkg_install lsof
|
|
|
|
# /mnt/spare: a 1 GiB logical volume.
|
|
d0=$(disk_add 0 1100M)
|
|
pvcreate -q "$d0" >/dev/null
|
|
vgcreate -q labvg "$d0" >/dev/null
|
|
lvcreate -q -y -L 1G -n spare labvg >/dev/null
|
|
mkfs.ext4 -q /dev/labvg/spare
|
|
# /mnt/small: few inodes.
|
|
d1=$(disk_add 1 64M)
|
|
mkfs.ext4 -q -N 2048 "$d1"
|
|
mkdir -p /mnt/spare /mnt/small
|
|
sed -i '/# le-lab 4-5$/d' /etc/fstab
|
|
echo "/dev/labvg/spare /mnt/spare ext4 defaults,nofail 0 2 # le-lab 4-5" >>/etc/fstab
|
|
echo "UUID=$(blkid -s UUID -o value "$d1") /mnt/small ext4 defaults,nofail 0 2 # le-lab 4-5" >>/etc/fstab
|
|
systemctl daemon-reload
|
|
mount /mnt/spare
|
|
mount /mnt/small
|
|
|
|
# Task 1: a few large files.
|
|
mkdir -p /mnt/spare/backups /mnt/spare/media /mnt/spare/home/alice /mnt/spare/logs
|
|
fallocate -l 140M /mnt/spare/backups/db-2026-10-01.tar
|
|
fallocate -l 140M /mnt/spare/backups/db-2026-10-15.tar
|
|
fallocate -l 200M /mnt/spare/media/install.iso
|
|
fallocate -l 60M /mnt/spare/home/alice/photos.tar
|
|
echo "remember the milk" >/mnt/spare/home/alice/notes.txt
|
|
|
|
# Task 2: a program holding a deleted 250 MiB log.
|
|
cat >/usr/local/bin/applog <<'X'
|
|
#!/bin/bash
|
|
# Appends to its log forever.
|
|
exec 3>>/mnt/spare/logs/app.log
|
|
while :; do
|
|
echo "$(date +%T) working" >&3
|
|
sleep 30
|
|
done
|
|
X
|
|
chmod 755 /usr/local/bin/applog
|
|
cat >/etc/systemd/system/applog.service <<'X'
|
|
[Unit]
|
|
Description=Lab application that writes a log
|
|
RequiresMountsFor=/mnt/spare
|
|
|
|
[Service]
|
|
ExecStart=/usr/local/bin/applog
|
|
X
|
|
fallocate -l 250M /mnt/spare/logs/app.log
|
|
systemctl daemon-reload
|
|
systemctl start applog.service
|
|
sleep 1
|
|
rm -f /mnt/spare/logs/app.log
|
|
|
|
# Task 3: a journal past 200 MB.
|
|
if [ ! -d /var/log/journal ]; then
|
|
mkdir -p /var/log/journal
|
|
systemd-tmpfiles --create --prefix /var/log/journal
|
|
journalctl --flush
|
|
state_set made-journal 1
|
|
fi
|
|
head -c 260M /dev/urandom | base64 -w 45000 | systemd-cat -t lab-filler
|
|
sleep 2
|
|
|
|
# Task 4: a few files to start with.
|
|
mkdir -p /mnt/small/docs /mnt/small/conf
|
|
for i in 1 2 3 4 5; do echo "doc $i" >/mnt/small/docs/doc$i.txt; done
|
|
for i in 1 2 3; do echo "setting$i=on" >/mnt/small/conf/app$i.conf; done
|
|
|
|
# Task 5: logs to rotate.
|
|
rm -f /etc/logrotate.d/myapp
|
|
mkdir -p /var/log/myapp
|
|
chmod 755 /var/log/myapp
|
|
for f in app worker; do
|
|
for i in 1 2 3; do echo "$(date +%F) $f: line $i"; done >/var/log/myapp/$f.log
|
|
done
|