1. Is It What You Ordered?
lscpu | grep -E 'Model name|^CPU\(s\)|Thread|Socket' free -h lsblk -o NAME,SIZE,TYPE,MODEL,MOUNTPOINTS sudo dmidecode -t memory | grep -E '^\s+(Size|Speed|Type):' | sort | uniq -c
Check the CPU model and thread count, total memory, and the number and size of drives against your order.
2. Read the Drives' Health
sudo apt install -y smartmontools nvme-cli sudo smartctl -H -A /dev/sda # each SATA/SAS drive sudo nvme smart-log /dev/nvme0 # each NVMe drive
For hard drives and SATA SSDs, Reallocated_Sector_Ct, Current_Pending_Sector and Offline_Uncorrectable should be zero. For NVMe, critical_warning and media_errors should be zero. Note Power_On_Hours and percentage_used as a baseline to compare with later.
3. Check the RAID
For Linux software RAID (mdadm):
cat /proc/mdstat sudo mdadm --detail /dev/md0
Every array should show all members up — [UU] for a two-drive mirror — and state clean or active. A new array may still be resyncing; that is normal, and it is best to let it finish before heavy testing. On ZFS the equivalent is zpool status, which should say ONLINE with no errors.
4. Burn In the CPU and Memory
sudo apt install -y stress-ng lm-sensors stress-ng --cpu 0 --vm 1 --vm-bytes 75% --timeout 30m --metrics-brief # in a second session, watch temperatures watch -n 5 sensors
Thirty minutes with every core busy and most of the memory in use should finish without errors, crashes or temperatures climbing without limit. Then look for anything the kernel noticed:
sudo journalctl -k -p warning --since "1 hour ago" sudo apt install -y rasdaemon && sudo ras-mc-ctl --summary # memory (ECC) errors
5. Measure the Disks and Network
A one-minute random-read test gives a baseline to compare with if things feel slow later:
sudo apt install -y fio
sudo fio --name=randread --filename=/root/fio.test --size=4G --rw=randread --bs=4k \
--iodepth=32 --ioengine=libaio --direct=1 --runtime=60 --time_based --group_reporting
sudo rm /root/fio.testFor the network, iperf3 between this server and another machine you control gives a cleaner number than a speed-test website.
6. Get Told When a Drive Starts Failing
smartd watches every drive and mdadm watches the arrays; both send email when something changes. Both send through the mail command, so install a mail relay and that command first (for example sudo apt install msmtp-mta bsd-mailx, with msmtp pointed at your mail provider), then:
# /etc/smartd.conf — replace the DEVICESCAN line with: DEVICESCAN -a -o on -S on -s (S/../.././02|L/../../6/03) -m [email protected] # /etc/mdadm/mdadm.conf — change the existing MAILADDR line to: MAILADDR [email protected] sudo systemctl restart smartmontools sudo systemctl restart mdmonitor # it only reads MAILADDR when it starts sudo mdadm --monitor --scan --test --oneshot # sends a test message
The smartd line runs a short self-test every night at 02:00 and a long one on Saturdays at 03:00.
Then: Secure It and Back It Up
Work through the hardening checklist — it applies to dedicated servers just as much — and set up off-site backups before real data arrives; the Borg guide takes about ten minutes.