SystemD-Swap: Για όσους δεν θέλουν SWAP partition

«Ποιος χρειάζεται Swap στην εποχή μας» θα έλεγε κάποιος. Δυστυχώς είμαστε μακρυά ακόμα από την μη χρήση του Swap. Παρόλα αυτά για αυτούς που δεν φτιάχνουν Swap Partition αλλά θέλουν την «ασφάλεια» του αλλά και να συνδυάσουν τα εκπληκτικά Zswap και ZRam υπάρχει το SystemD-Swap

Εισαγωγή

Το Swap Partition είναι ένας χώρος του δίσκου σας, το οποίο είναι αφιερωμένο στο χειρισμό των συνθηκών στις οποίες θα πρέπει τμήματα της μνήμης RAM να «αδειάσει» χώρο οπότε και χρησιμοποιεί αυτόν τον χώρο για την αποθήκευσή αυτών των τμημάτων.

Οι σημερινοί υπολογιστές, είναι εξοπλισμένοι πλέον με μπόλικη RAM η οποία ξεκινάει από 4GB και άνω. Παρόλα αυτά, τα λειτουργικά συστήματα για διάφορους λόγους (πιθανότητα «υπερχείλισης μνήμης»,  χρήση αδρανοποίησης υπολογιστή κλπ) δημιουργούν, ακόμα και υπό συνθήκες μπόλικης μνήμης, ξεχωριστά διαμερίσματα  για να έχουν διαθέσιμη μνήμη σε περίπτωση που χρειαστεί να ελευθερώσουν χώρο από την RAM.

Διαφορετικές υλοποιήσεις του Swap

Οι περισσότεροι έμπειροι χρήστες Linux, δεν δημιουργούν διαμέρισμα swap κατά την εγκατάσταση του λειτουργικού συστήματος, αλλά δημιουργούν ένα SwapFile (όπως και οι εκδόσεις Ubuntu 19.10 και έπειτα) το οποίο ουσιαστικά είναι ένα αρχείο που εργάζεται ως Swap χώρος. Κάνει ακριβώς την ίδια δουλειά και έχει το πλεονέκτημα, επειδή δεν δεσμεύει κάποιο διαμέρισμα στον δίσκο, να μπορεί ο χρήστης να αυξομειώνει το μέγεθός του κατά το δοκούν.

Εναλλακτικά υπάρχουν και οι λύσεις του Zswap και Zram τα οποία είδαμε στο άρθρο «Μνήμη RAM: Βελτίωση διαχείρισης με zram – zswap – zcache» το οποίο αν δεν το έχετε διαβάσει, σας το συστήνω ανεπιφύλακτα ιδιαίτερα δε τις απορίες στα σχόλια.

Advertisements

SystemD-Swap

Όλα τα παραπάνω μπορούν να συνδυαστούν ανάλογα και με τις ανάγκες του καθενός με το systemd-swap.  Η μόνη προϋπόθεση φυσικά είναι η διανομή σας να χρησιμοποιεί System για τις υπηρεσίες του. Οι περισσότερες, αν όχι όλες οι διανομές (πλην κάποιων εξαιρέσεων) βασίζονται στο SystemD οπότε αν δεν είστε σίγουροι, ρωτήστε κάτω στα σχόλια.

Μερικά σημαντικά πλεονέκτημα του systemd-swap είναι:

  • Εύκολη εγκατάσταση και ρύθμιση
  • Δεν χρειάζεται να έχετε Swap Partition
  • Υποστηρίζει όλα τα συστήματα αρχείων (αν ρυθμιστεί ως Swap File Universal) και ιδιαίτερα το Btrfs που δεν υποστηρίζει ακόμα Swap Files
  • Μεγαλώνει ανάλογα με τις ανάγκες (αν ρυθμιστεί ως Swap File Chunked)
  • Συνδυάζει το Zram ή Zswap

Εγκατάσταση του SystemD-Swap

Επίσημα το SystemD-swap διαθέτει «έτοιμες λύσεις εγκατάστασης για Arch Linux και Debian διανομές. Οι υπόλοιποι απλά χρησιμοποιούν την χειροκίνητη εγκατάσταση

Για να το εγκαταστήσετε σε Arch απλά τρέχετε:

sudo pacman -S systemd-swap

Σε Debian χρησιμοποιείτε το script του που παράγει Deb πακέτο:

cd /tmp
git clone https://github.com/Nefelim4ag/systemd-swap.git
cd systemd-swap
./package.sh debian

sudo apt install ./systemd-swap-*any.deb

Για τις υπόλοιπες διανομές μπορείτε να κάνετε χειροκίνητη εγκατάστασή του:

git clone https://github.com/Nefelim4ag/systemd-swap.git

Ρύθμιση του SystemD-Swap

Η ρύθμιση του SystemD-Swap γίνεται απλά ανοίγοντας ως διαχειριστές το παρακάτω αρχείο για επεξεργασία:

/etc/systemd/swap.conf

Αφού το ανοίξετε, μπορεί σε πρώτη ματιά να «χαθείτε»…. δώστε λίγο χρόνο να το δείτε από την αρχή μέχρι το τέλος.  Θα δείτε ότι είναι χωρισμένο σε 4 τμήματα:

  1. Zswap
  2. ZRam
  3. Swap File Universal (swapfu)
  4. Swap File Chunked (swapfc)

Εδώ λοιπόν χρειάζεται να ενεργοποιήσουμε είτε Zswap είτε ZRam και ένα απο τα Swap File (Universal ή Chuncked)

Σε γενικές γραμμές διαλέξετε κάποιο από τα παρακάτω:

  • Αν διαθέτετε Laptop, Desktop προτείνεται ο συνδυασμός zswap + swapfc
  • Σε περίπτωση που ο δίσκος είναι SSD τότε προτείνεται ο συνδυασμός με ZRam
  • Σε κάθε περίπτωση συνδυασμού αν θέλετε αυτόματη αυξομείωση τότε χρησιμοποιείτε swapfc
  • Αν είστε σε σύστημα αρχείων Btrfs τότε να χρησιμοποιείτε συνδυασμό με swapfu

Αφού αποφασίσετε ποιον συνδυασμό ακολουθείτε, απλά βάζετε 0 για να απενεργοποιήσετε ή 1 για να ενεργοποιήσετε κάποια ιδιότητα. Παράδειγμα, βρείτε τις γραμμές στις οποίες αναφέρονται τα παρακάτω:

zswap_enabled=0
zram_enabled=1
swapfu_enabled=0
swapfc_enabled=1

όπου ο παραπάνω συνδυασμός ενεργοποιεί το zram και swapfc.

Μένει μόνο να ρυθμίσουμε το σύστημα να εκκινεί την υπηρεσία αυτόματα :

sudo systemctl enable systemd-swap

sudo systemctl start systemd-swap

Επίλογος

Για όσους ΔΕΝ έχουν Swap Partition ή και Swap File, είδαμε οτι με το SystemD-Swap μπορούν όχι μόνο να διαχειριστούν  το ζήτημα αυτό αλλά και να το συνδυάσουν με τις δυνατότητες του Zswap και Zram με ένα εργαλείο.

Το επίσημο αποθετήριο του SystemD-Swap είναι:

Εσείς ποιον συνδυασμό χρησιμοποιείτε ;

Γράψτε στα σχόλια τον συνδυασμό που επιλέξατε η τυχών τις απορίες σας.

Advertisement

27 σκέψεις σχετικά με το “SystemD-Swap: Για όσους δεν θέλουν SWAP partition

Add yours

  1. Πολύ ωραίο το systemd-swap! Όταν έστηνα το σύστημά μου (Arch) , ψηνόμουν να το δοκιμάσω, αλλά επικράτησε τότε το swap partition. Με το που διάβασα το άρθρο σου, ήταν αρκετό!
    Διέγραψα το swap partition μου, έδωσα το χώρο στο /home, έσβησα την καταχώρηση από το fstab, εγκατέστησα το systemd-swap, και είμαι μια χαρά!
    .. Και να σκεφτείς, κάποιοι, ακόμη αντιπαθούν το systemd…!
    Anyway…
    Ευχαριστούμε, για ένα ακόμα χρήσιμο άρθρο! :)

    1. Και πολύ καλά έκανες :) Με τόσα διαθέσιμα εργαλεία ακόμα και το systemd-swap να μην χρησιμοποιείς αλλά να έχεις swap file είναι πλέον πιο «μοντέρνο» από το να έχεις αποκλειστικά ένα διαμέρισμα για αυτό

  2. Χαίρετε! Να ρωτήσω: εγκατέστησα το systemd-swap με zswap & swapfc enabled σε ένα παλιό σύστημα (Celeron 420, αλλά με 5Gb ram) στο οποίο υπάρχει και swap partition 6Gb. Του έβαλα να παίζει ταυτόχρονα δυο ταινίες, ένα βίντεο στο youtube και να υπάρχουν κι άλλες φορτωμένες ανοιχτές σελίδες. Το CPU usage έφθανε στο 100% αλλά έπαιζει κυρίως στο ~80. Πως μπορώ να δω αν όντως αυτό το systemd-swap δουλεύει. Στο htop που ταυτόχρονα παρατηρούσα στο swap έδειχνε 0K (χαζή ερώτηση: εδώ δείχνει την χρήση το swap partition??)

    Σας ευχαριστώ

    1. Ξέχασα να αναφέρω ότι στο μηχάνημα τρέχω Lubuntu 17…

    2. Καθόλου χαζή ερώτηση!
      Το swap που βλέπεις θα είναι το σύνολο του Swap Partition με το swapfc. Επειδή όμως έχεις ήδη 6GB αν καταλάβα καλά σε μόνιμο Swap partition δεν θα δεις να μεγαλώνει το 6GB ποτέ. Αυτό γιατί όπως αναφέρω και στο άρθρο το swapfc μεγαλώνει αυτόματα μονο όταν υπάρχει ανάγκη.

      για να δεις λεπτομέρειες για το αν δουλεύει και τι γίνεται τρέχεις:

      systemctl status systemd-swap

    3. Σε ευχαριστώ!

      Θα κάνω δοκιμές και θα σας πω αν δω κάτι περίεργο (μπορεί να σβήσω και το swap partition όπως έκανε ο Δημητρης777).

      καλημέρα!

  3. Σε laptop HP Pavilion dv6000 με antergos + xfce4, έκανα:
    1. Διαγραφή το swap partition
    2. Αφαίρεση από το /etc/fstab
    3. Εγκατάσταση του SystemD-Swap με ενεργοποίηση του συνδυασμού zswap + swapfc
    Έκανα επανεκκίνηση όλα καλά, απλά βγάζει το μήνυμα:
    ERROR: resume: hibernation device ‘UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx’ not found
    Έδωσα στο terminal:
    grub-mkconfig -o /boot/grub/grub.cfg
    κάνει το ίδιο;
    καμιά ιδέα;

    1. Για την ιστορία το hibernation device ‘UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx’ που δεν βρίσκει, ήταν το UUID του swap partition μέσα στο fstab.

    2. Λογικό. Δεν είναι όμως τίποτα σοβαρό. Απλά επειδή διέγραψες το Swap και ο Grub θυμάται οτι όταν είχες κάνει εγκατάσταση το λειτουργικό είχες και Swap τώρα παραπονιέται οτι δεν υπάρχει το Swap οπότε δεν θα μπορεί να κάνει Αδρανοποίηση αν το ζητήσεις.
      Οπότε εάν όντως δεν χρησιμοποιείς αδρανοποίηση (πολύ πιθανόν όχι) αυτό που κάνεις είναι να δεις αν στο αρχείο /etc/default/grub αν υπάρχει ακόμα η γραμμή:

      GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx crashkernel=384M-2G:64M,2G-:128M"

      και το αλλάζεις σε:

      GRUB_CMDLINE_LINUX_DEFAULT="quiet"

      και μετά τρέχεις :

      grub-mkconfig -o /boot/grub/grub.cfg

      Λογικά τώρα στην επανεκκίνηση δεν θα σου βγάζει προειδοποίηση

    3. Το έκανα και πλέον το μήνυμα που έβγαλε ήταν:
      «ERROR: resume: hibernation device not found»
      δηλαδή δεν έχει το ‘UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx’
      Πλέον έκανα ξανά εγκατάσταση μια και έχω διαφορετικά partitions για /, /home
      Ευχαριστώ πολύ για την βοήθεια!

    4. Το έκανα και πλέον το μήνυμα που έβγαλε ήταν:
      «ERROR: resume: hibernation device not found»

      Για την ιστορία, χρειάζεται να αφαιρεθεί το «resume» από το kernel.
      Για Archlinux(+) :
      Στο αρχείο /etc/mkinitcpio.conf στη γραμμή HOOKS=

  4. Ομολογουμένως, μου αρέσει η παραμετροποίηση του systemd.
    To optimized του systemd swap είναι «τρελή μοντερνιά», με την πρώτη βιαστική ματιά βλέπω swapfc_chunk_size=512M… και λέω «από μέσα μου», εε με 8giga ram μην θέλεις παραπάνω και αμέσως με τη δεύτερη ματιά…Max 8*512M, swapfc_max_count=8
    χαχαχαχαχα
    salih το άρθρο σου είναι ακριβώς όπως το systemd swap. «Φέρνει κάτι απ τα παλιά για να το τελειώσει στο μέλλον». Good!

  5. Είμαι νέος στο linux και τα άρθρα σας με βοηθάνε πολύ.
    Εγκατέστησα το mx linux χωρίς swap partition και προσπαθώ να φτιάξω ένα swap file όπως το περιγράφετε.
    Αλλά όταν γράφω sudo dpkg -i ././systemd-swap/systemd-swap-*any.deb
    μου απαντάει dpkg: error: cannot access archive ‘././systemd-swap/systemd-swap-*any.deb’: No such file or directory
    Έχω mx linux κάποια βοήθεια;
    Κάνω κάτι στραβά;
    Παρακαλώ βοηθείστε με.

    1. Καλησπέρα φίλε μου ! Ευχαριστώ για το σχόλιό σου, διότι εντόπισα που ήταν το πρόβλημα και ίσως να μην έγινε κατανοητό. Γιαυτό το ενημέρωσα το άρθρο.

      Στην περίπτωση σου αφού έκανες το πρώτο τμήμα με το git clone. Μένει να μπεις στον φάκελο που κατέβηκε και να κάνες εγκατάσταση το eb αρχείο. π.χ.

      cd systemd-swap
      ./package.sh debian

      sudo apt install ./systemd-swap-*any.deb

  6. Μάλλον κάτι έχει πάει πολύ στραβά.
    Όταν γράφω ./package.sh debian
    Μου λέει make: Nothing to be done for ‘install’.
    dpkg-deb: building package ‘systemd-swap’ in ‘systemd-swap_4.0.1_all.deb’.

    Ευχαριστώ πολύ για τη βοήθεια.

    1. Άνοιξε τον φάκελο και δες αν υπάρχει το systems-swap.deb αρχείο

  7. Μέσα στο φάκελο systemd-swap υπάρχει το systemd-swap_4.0.1_all.deb. Επίσης υπάρχει κι ένας φάκελος systemd-swap_4.0.1_all και κάποια άλλα αρχεία.

    1. Ωραία ! Πρέπει λοιπόν είτε να κανείς διπλό κλικ στο systemd-swap_4.0.1_all.deb για να ξεκινήσει η εγκατάσταση είτε το κανεις από το τερματικό

  8. Οκ εγκατέστησε το deb, διόρθωσα και το etc/systemd/swap.conf αρχείο, αλλά στο τέλος όταν γράφω sudo systemctl start systemd-swap
    μου λέει System has not been booted with systemd as init system (PID 1). Can’t operate.
    Failed to connect to bus: Host is down

    1. Ώπα κάτσε, MX Linux έχεις είπες ; Αν θυμάμαι σωστά η διανομή αυτή δεν χρησιμοποιεί Systemd που είναι το νέο σύστημα διαχείρησης υπηρεσιών συστήματος αλλά sysvinit. Όποτε ατύχησες ! Αν θες να δουλέψεις με systemd google’άρε «Mx linux systemd» για να δεις πως το ενεργοποιεις.

      Δυστηχως δεν μπορώ να σε βοηθήσω περισσότερο σχετικά με την διανομή αυτή.

  9. Έχεις δίκιο μόλις βρήκα το https://mxlinux.org/wiki/system/systemd/ που εξηγεί αυτό ακριβώς που λες. Αν και είναι του 2017 φαντάζομαι ότι ισχύει ακόμα.
    Συνεπώς θα πρέπει να φτιάξω ένα swap διαμέρισμα.
    Σε ευχαριστώ πολύ για τη βοήθεια να είσαι καλά.

    1. Τίποτα και συγνώμη για την φασαρία. Δεν πρόσεξα ποια διανομή έχεις στην αρχή !
      Τέλος καλό όλα καλά, οποίος έχει MX αν διαβάσει τα σχόλια θα δει τι να αποφύγει :)

    2. Μπορείς να τρέχεις MX ΜΕ systemd. Στον grub επέλεξε advanced options και θα δεις την αντίστοιχη επιλογή.

  10. Προσπαθούσα να το «στήσω» σε νέα εγκατάσταση ubuntu 20.04 και έτρωγα πόρτα μέχρι που συνειδητοποίησα πως απ την καθαρή εγκατάσταση λείπει το make και άλλα καλούδια.
    Συμπέρασμα: Ο 2ος καφές είναι κάτι παραπάνω από απαραίτητος

  11. οι σημειώσεις μου έχουν κατακλειστεί από διαρκείς αναφορές στο cerebrux.. άλλο ένα πολύ χρήσιμο άρθρο!! ty ;)

    1. :) Νασε καλά ! Χαίρομαι που πιάνουν τόπο τα άρθρα μας !

Σου άρεσε το άρθρο; Πες την άποψή σου... έστω και Ανώνυμα:

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση /  Αλλαγή )

Σύνδεση με %s

Ο ιστότοπος χρησιμοποιεί το Akismet για την εξάλειψη των ανεπιθύμητων σχολίων. Μάθετε πως επεξεργάζονται τα δεδομένα των σχολίων σας.

Create a website or blog at WordPress.com

ΠΑΝΩ ↑

Αρέσει σε %d bloggers: