# systemd-swap **Repository Path**: lidanger/systemd-swap ## Basic Information - **Project Name**: systemd-swap - **Description**: 从 github 镜像 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: https://github.com/Nefelim4ag/systemd-swap.git - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-26 - **Last Updated**: 2022-01-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # systemd-swap [![Code Style: Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) ## ⚠️ Current code quality and commit frequency is low ⚠️ ### Users should migrate to [systemd/zram-generator](https://github.com/systemd/zram-generator) since zram should be enough in most systems Script to manage swap on: - [zswap](https://www.kernel.org/doc/Documentation/vm/zswap.txt) - Enable/Configure - [zram](https://www.kernel.org/doc/Documentation/blockdev/zram.txt) - Autoconfigurating for swap - files - (sparse files for saving space, supports btrfs) - block devices - auto find and do swapon :information_source: It is configurable in `/etc/systemd/swap.conf`. Additional terms: - **SwapFC** (File Chunked) - provides a dynamic swap file allocation/deallocation ## File location ```text /etc/systemd/swap.conf /usr/lib/systemd/system/systemd-swap.service /usr/bin/systemd-swap ``` ## Please don't forget to enable and start with ```shell sudo systemctl enable --now systemd-swap ``` ## Install - **Arch Linux**: in the [community](https://www.archlinux.org/packages/community/any/systemd-swap/) repo. - **Debian based distros** ```shell git clone https://github.com/Nefelim4ag/systemd-swap.git cd systemd-swap make deb sudo apt install ./systemd-swap_*_all.deb ``` - **Fedora based distros** ```shell sudo dnf copr enable zeno/systemd-swap sudo dnf install systemd-swap ``` or ```shell git clone https://github.com/Nefelim4ag/systemd-swap.git cd systemd-swap make rpm sudo dnf install ./systemd-swap-*noarch.rpm - **Manual** Install dependencies: - `python3` >= 3.7 - `python3` packages: `systemd-python` and `sysv_ipc` ```shell git clone https://github.com/Nefelim4ag/systemd-swap.git cd systemd-swap sudo make install # or into /usr/local: sudo make prefix=/usr/local install ``` ## About configuration **Q**: Do we need to activate both zram and zswap?\ **A**: Nope, it's useless, as zram is a compressed RAM DISK, but zswap is a compressed _"writeback"_ CACHE on swap file/disk. Also having both activated can lead to inverse LRU as noted [here](https://askubuntu.com/questions/471912/zram-vs-zswap-vs-zcache-ultimate-guide-when-to-use-which-one/472227#472227) **Q**: Do I need to use `swapfc_force_use_loop` on swapFC?\ **A**: Nope, as you wish really, native swapfile should work faster and it's safer in OOM condition in comparison to loop backed scenario. **Q**: When would we want a certain configuration?\ **A**: In most cases zram is enough since it on average compresses 2-3x and is much faster than disk based swap. **Q**: How many zram devices should one use? **A**: If you are not using an ancient kernel (pre 4.7) there's no benefit from using multiple zram devices. **Q**: Can we use this to enable hibernation?\ **A**: Nope as hibernation wants a persistent fs blocks and wants access to swap data directly from disk, this will not work on: _swapfc_ (without some magic of course, see [#85](https://github.com/Nefelim4ag/systemd-swap/issues/85)). ## Switch on systemd-swap:s automatic swap management - Enable swapfc if wanted (note, you should **never** use zram and zswap at the same time) ```shell vim /etc/systemd/swap.conf.d/overrides.conf ``` ```ini swapfc_enabled=1 ``` - Stop any external swap: ```shell sudo swapoff -a ``` - Remove swap entry from fstab: ```shell vim /etc/fstab ``` - Remove your swap ```shell # For Ubuntu sudo rm -f /swapfile # For Centos 7 (if using a swap partition and lvm) lvremove -Ay /dev/centos/swap lvextend -l +100%FREE centos/root ``` - Remove swap from Grub: ```shell # For Ubuntu remove resume* in grub vim /etc/default/grub # For Centos 7 remove rd.lvm.lv=centos/swap* vim /etc/default/grub # For Manjaro remove resume* in grub & mkinitcpio vim /etc/default/grub vim /etc/mkinitcpio.conf ``` ```shell # For Ubuntu update-grub # For Centos 7 grub2-mkconfig -o /boot/grub2/grub.cfg # For Manjaro update-grub mkinitcpio -P ```