Μεταφορά του /home σε άλλον δίσκο micro HowTo - συν ερωτήσεις

Ξεκίνησε από mandarinos, 01 Φεβ 2022, 09:32:39 ΠΜ

« προηγούμενο - επόμενο »

mandarinos

Καλημέρες!

Η δυνατότητα να ρίχνουν τη δουλειά τους στο τοπικό δίκτυο ltsp του σχολείου, και να την λαμβάνουν απ' οποιονδήποτε ΗΥ αίθουσας, ενθουσίασε τους/τις συναδέλφους. (Όταν περάσω και τους ΗΥ των αιθουσών ως τερματικά, δεν νομίζω να υπάρχει άλλο εγχώριο σχολείο με τέτοια χαϊλίκια!  :)  )

Ωστόσο, προέκυψε ένα άλλο θεματάκι: εκεί που νόμιζα ότι εντάξει, άντε νά 'χουν μερικές παρουσιάσεις, μία συνάδελφος μου ζήτησε την άδεια ν' ανεβάσει τα δικά της αρχεία στο user name της... τα οποία, όμως, ήταν 25 Gigabytes!!! (Είχα χώρο, της επέτρεψα.)
Δε λέω, όταν ένας/μία συνάδελφος κάνει καλή δουλειά σε τέτοια ποσότητα, είναι αξιέπαινο. Ωστόσο, αν βάλουμε κατά μέσο όρο 35 εκπαιδευτικούς ανά σχολείο Β'βάθμιας, επί 30 Gigabytes, μας βγάζει 1 TByte γεμάτο.

Άρα, πρέπει να βρεθεί χώρος.

Ως γνωστόν, στο Linux τα αρχεία των χρηστών γράφονται στο directory /home και ειδικώτερα στα subdirectories του κάθε χρήστη. Κι επειδή ήδη ήξερα πως είναι πράγματι δυνατόν να μεταφέρω το /home σε άλλον δίσκο, το έκανα - συγκεκριμένα, το μετέφερα στον συμβατικό hdd δίσκο του server, χωρητικότητας 2 TBytes.

Γιά όσους/ες συναδέλφους ενδιαφέρονται, αυτό γίνεται ακολουθώντας επακριβώς τις οδηγίες της εξής ιστοσελίδας:
https://www.howtogeek.com/442101/how-to-move-your-linux-home-directory-to-another-hard-drive/

Οι έμπειροι-ες μπορούμε να κόψουμε δρόμο, αναθέτοντας μερικές εργασίες (πχ φορμάρισμα, ονοματοδοσία "ετικέτας" δίσκου) στο Gparted (υπ' όψιν, δεν είναι εγκατεστημένο εξ αρχής, πρέπει να το εγκαταστήσουμε εμείς), ή/και χρησιμοποιώντας το γραφικό περιβάλλον του Linux μας. Το τελικό αποτέλεσμα όντως δουλεύει.

- - - - - - - - - - - - - - -

Παρένθεση 1η: πρέπει να διορθώσουμε το αρχείο fstab, ώστε ο server μας να βλέπει τον hdd, τον οποίο hdd κάνουμε mount στο /home. Ως εξής:

Η παλιά δήλωση του hdd (έγινε αυτόματα, κατά την εγκατάσταση) ήταν αυτή (εννοείται, χωρίς τη δίεση μπροστά) :
#/dev/disk/by-uuid/02b3184e-7a8e-4e28-83c1-34ab865f6e71 /mnt/02b3184e-7a8e-4e28-83c1-34ab865f6e71 auto nosuid,nodev,nofail,x-gvfs-show 0 0

Και η καινούργια:
LABEL=sabourodiskos     /home           ext4    defaults        0       2
(Την ετικέτα sabourodiskos την έδωσα με το Gparted.)

Παρένθεση 2η:
Η εφαρμογή Timeshift γιά τα backups (που υπάρχει σε αρκετές διανομές, τουλάχιστον τις Ubuntu based), ενώ αρχικά έβλεπε τον σαβουρόδισκο, τώρα δεν τον είδε· αλλά ρώτησε πού να γράψει το backup, και δουλεύει εξ ίσου καλά με τη νέα τοποθεσία που δήλωσα.

- - - - - - - - - - - - - - -

Ακολουθούν οι ερωτήσεις, ενδεχομένως και ToDo.

mandarinos

#1
Οι ερωτήσεις:

(1) Εκτός από αύξηση του διαθέσιμου χώρου γιά αρχεία χρηστών, στο τέλος της ιστοσελίδας, όπου σας παραπέμπω, μιλάει γιά δυνατότητα να κάνουμε νέα εγκατάσταση στον βασικό δίσκο, χωρίς να πειραχτούν τα αρχεία των χρηστών. Δεν έχω λόγο ν' αμφισβητήσω όσα λέει ένας πολύ έμπειρος Λινουξάς, όμως αυτό δεν μου φαίνεται τόσο σωστό.
Δηλαδή, στη νέα εγκατάσταση (κι αφού δηλώσουμε ότι το /home βρίσκεται στον βοηθητικό δίσκο), δεν πρέπει να έχουμε κάπου κρατημένο και το παλιό αρχείο με τα συνθηματικά, δηλ. το shadow; Δεν πρέπει επίσης να έχουμε κρατημένο το directory var/lib/AccountsService/users ; Δηλαδή, άμα έχουμε κρατήσει τον βοηθητικό δίσκο με τα περιεχόμενα του /home, αυτομάτως περνάνε οι χρήστες στη νέα εγκατάσταση (πχ θα τους δεί αυτομάτως η Διαχείριση ΣΕΠΕΗΥ) - και αυτομάτως δημιουργούνται τα βοηθητικά αρχεία / dirs (πλήν συνθηματικών) ; δεν νομίζω.
(Τα ίδια ερωτήματα ισχύουν και γιά απλή μεταφορά των χρηστών με τις δουλειές τους σε άλλον δίσκο / άλλον ΗΥ.)

(2) Τί γίνεται, σε περίπτωση που έχουμε δύο (ή περισσότερους) μικρότερους δίσκους γιά βοηθητικούς, αντί γιά έναν μεγάλο;
Παράδειγμα: δύο φίλοι μας αναβαθμίζουν τα φορητά τους με ssd δίσκους πχ 512 GBytes, και μας χαρίζουν 2 δισκάκια ssd των 128 GBytes. Γίνεται να ρίξω τους μισούς χρήστες στον ένα δίσκο, τους άλλους μισούς στον άλλον, και να τους δηλώσω και τους δύο mount στο /home;

Γίνεται να τους δηλώσω ως συστοιχία raid; (Αν και κάπου πήρε το μάτι μου -σε μήνυμα κατά την εγκατάσταση, νομίζω- ότι το ltsp δεν πάει με raid.)

(3) Αξίζει τον κόπο (έστω και γιά την εμπειρία) να δοκιμάσω να στήσω cloud με τους hdd's των τερματικών, μιά που το αυθεντικό Ubuntu υποστηρίζει clouding; (Εδώ: https://ubuntu.com/download/cloud ) Γίνεται απλά να πάρω το εργαλείο του cloud και να δοκιμάσω να το φορέσω στο Mint;

- - - - - - - - - - - -

Αυτά, κι ευχαριστώ!

Υγ 1: Τά 'χει ήδη δοκιμάσει κανείς συνάδελφος όλ' αυτά;
Υγ 2: Όπως καταλαβαίνετε, το ltsp το βλέπω όχι απλά ως εργαλείο να στήσουμε εργαστήριο Πληροφορικής σε αρχιτεκτονική server-clients, αλλά ως πλατφόρμα αυτοματισμού πολλών απαραιτήτων εργασιών γιά το σχολείο ή/και γιά εκπαιδευτικούς και μαθητές. Πιστεύω ότι η χρήση του απλά γιά μάθημα στα εργαστήρια το αδικεί. Οι δυνατότητές του είναι πολύ περισσότερες.

alkisg

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

https://ts.sch.gr/docs/linux/ltsp/users/#%CF%87%CF%81%CE%AE%CF%83%CE%B7-%CE%B1%CF%81%CF%87%CE%B5%CE%AF%CE%BF%CF%85-passwd

2) Ναι μπορεί να χρησιμοποιηθεί raid, lvm, zfs ή btrfs ώστε να ενωθούν δύο μικρότεροι δίσκοι σε ένα home χωρίς το ltsp να έχει το παραμικρό πρόβλημα.

3) Το cloud θέλει ετήσια πληρωμή οπότε προσωπικά δεν το χρησιμοποιώ.

mandarinos

Καλημέρες!

Ωραία, γιά τη μεταφορά χρηστών σε νέο δίσκο / ΗΥ / Linux version το κατάλαβα σωστά! Κρατάμε τα απαραίτητα αρχεία κάπου, και η Διαχείριση ΣΕΠΕΗΥ αναλαμβάνει τα υπόλοιπα.

- - - - - - -

Σήμερα έκανα γιά πρώτη φορά "εξαγωγή" image με το /home σε άλλον δίσκο, και η "παρενέργεια" ήταν ότι πλέον το:

Parallel mksquashfs: Using 2 processors
Creating 4.0 filesystem on /srv/ltsp/images/x86_64.img.tmp, block size 131072.

προφανώς συνυπολογίζει (εκτός από τον κύριο δίσκο) και το τί βρίσκεται στον δίσκο του /home. Ως αποτέλεσμα, ο χρόνος δημιουργίας πήγε από 22' σε 1 ώρα και 2'. (Πρόκειται γιά τον παλιό ΗΥ, που έχω ως server στο 2ο εργαστήριο. Κύριος δίσκος: 256 GBytes ssd, /home 80 GBytes hdd. Σύνολο: 1,282,636 blocks.)
Δεν πειράζει, όμως· δεν μπορούμε να τα έχουμε όλα!  :)

(Με την ευκαιρία: το block πόσα bytes είναι; )

alkisg

Το LTSP από προεπιλογής ΔΕΝ συμπεριλαμβάνει τους παρακάτω φακέλους:

Κώδικας: Bash
$ cat /usr/share/ltsp/server/image/image.excludes

# This file is part of LTSP, https://ltsp.org
# Copyright 2019 the LTSP team, see AUTHORS
# SPDX-License-Identifier: GPL-3.0-or-later
# To customize, see ADD_IMAGE_EXCLUDES and OMIT_IMAGE_EXCLUDES in ltsp.conf(5)
cdrom/*
dev/*
home/*                <=== Δηλαδή το /home δεν συμπεριλαμβάνεται
lost+found/*
media/*
mnt/*
opt/ltsp*
proc/*
root/*
run/*
srv/*
swapfile
sys/*
tmp/*
...


Η λίστα αυτή είναι προσαρμόσιμη από το ltsp.conf.

Αν εσύ βλέπεις ότι το image μεγάλωσε, δεν φταίει το /home αλλά κάποιος άλλος μη-στάνταρντ μεγάλος φάκελος που έφτιαξες, π.χ. /home2 ή /my-mounts. Θα πρέπει να χρησιμοποιήσεις την ADD_IMAGE_EXCLUDES για να αποφύγεις την συμπερίληψή του.

Τα blocks έχουν μεταβλητό μέγεθος, συχνά είναι 512 bytes αλλά στη συγκεκριμένη ενέργεια (δημοσίευση εικονικού δίσκου) χρησιμοποιείται το 131072 bytes που αναφέρει για την επίτευξη μεγαλύτερης συμπίεσης.

mandarinos

Σωστό το περί άλλου φακέλλου. Γιά την ακρίβεια, είχα πάρει ένα αντίγραφο του /home, να υπάρχει καλού-κακού, και ξέχασα να το σβήσω! (Εντολή: sudo cp -rp /home/* /home.orig )

alkisg

Με την παρακάτω εντολή γίνεται backup το οποίο δεν συμπεριλαμβάνεται στον εικονικό δίσκο:

sudo rsync -a /home /srv/home-backup

ddimakis

Καλημέρα,
προσπαθώ να κάνω μεταφορά χρηστών σε καινούργιο server. Προσπαθώ να μεταφέρω το /home σε έναν εξωτερικό δίσκο αλλά είτε με rsync -a είτε με cp -a όταν κάνω ls -al στον εξωτερικό σκληρό τα αρχεία έχουν τον admin για owner και group. Πρέπει να προσθέσω κάποια επιπλέον επιλογή;

markakis

#8
Εφόσον οι χρήστες είναι της μορφής a1-01, a1-02 κτλπ, και υπάρχουν στο σύστημα, πήγαινε μέσα στο φάκελο /home

cd /home

και δώσε την ακόλουθη εντολή για να αποκτήσει κάθε φάκελος χρήστη (και τα περιεχόμενά του) τον αντίστοιχο owner:

for user in *-*[0-9]; do sudo chown $user.$user -R $user; done

σημείωση: αν χρησιμοποιείς τον εξωτερικό δίσκο ως ενδιάμεσο για την μεταφορά από τον ένα δίσκο στον άλλο, δεν χρειάζεται να αλλάξεις τα δικαιώματα σε αυτόν αλλά μονάχα στον τελικό προορισμό. Και όπως έγραψα οι χρήστες να υπάρχουν στο σύστημα.

ddimakis

Καλημέρα,
επειδή έχω πολλά διαφορετικά τμήματα και ήθελα να αποφύγω αυτό το είδος της εντολής έψαχνα κάποιον πιο εύκολο τρόπο.
Τελικά τα κατάφερα με το tar που διατηρεί τα χαρακτηριστικά των φακέλων. Στον παλιό server έκανα:
tar -zcvpf /root/move/home.tar.gz /home

και στον καινούργιο:

tar -zxvf /path/to/location/home.tar.gz