Το προφίλ μας στο Google Plus
4

Time Capsule για το FreeBSD σας

Αυτό το post μπορείτε να το αγνοήσετε. Κατά πάσα πιθανότητα δεν σας ενδιαφέρει. Αφορά στο netatalk, που υλοποιεί το πρωτόκολλο AFP της Apple, καθώς και στο στήσιμο ενός FreeBSD-based Time Capsule, για υπολογιστές με OS X. Διαβάστε κάτι άλλο, λοιπόν. Εκτός δηλαδή κι αν σκοπεύετε να μπείτε σε μια ωραιότατη περιπέτεια, η οποία αν μη τι άλλο θ’ αλλάξει εντελώς το τοπικό σας δίκτυο και θα το κάνει πολύ πιο ενδιαφέρον.

Αφορμή για το παρόν άρθρο αποτέλεσε το 8ο επεισόδιο της 1ης σεζόν του deltaCast. Στο επεισόδιο δείχνουμε, μεταξύ άλλων, πώς ρυθμίζουμε κι ενεργοποιούμε τη λειτουργικότητα Time Capsule, σε έναν fileserver με FreeNAS. (Ένα KVM guest, πάνω από το Proxmox VE.)

Μιας και στο τοπικό δίκτυο της Parabing Creations λειτουργεί ήδη ένα FreeBSD box σε ρόλο fileserver, σκέφτηκα να το ρυθμίσω ώστε να παίζει κι ως Time Capsule για τους δύο Mac που έχουμε στην εταιρεία. Ο εν λόγω fileserver είναι ZFS-based. Η ιδέα του παντρέματος του εύχρηστου Time Machine από τη μία και της δύναμης του ZFS από την άλλη, για κάποιους από εμάς είναι δύσκολο να αγνοηθεί.

Για την επικοινωνία των OS X clients με το δελεαστικό αλλά μάλλον ακριβό Time Capsule που πουλά η Apple, γνωρίζω ότι χρησιμοποιείται το πρωτόκολλο AFP. Το συνειδητοποίησα για πρώτη φορά από σχόλιο φίλου, στο Facebook. Για το ίδιο το AFP όμως δεν ήξερα –και συνεχίζω να μην ξέρω– πολλά, παρά μόνο ότι υποστηρίζεται κι από το FreeBSD. Και πράγματι έτσι είναι, αφού αν μη τι άλλο υποστηρίζεται από το FreeNAS. Ξεκίνησα λοιπόν με μερικές αναζητήσεις στο Google. Πολύ γρήγορα βρήκα δυο-τρεις οδηγούς, οι οποίοι εξηγούν πώς να υλοποιήσεις ένα Time Capsule πάνω από μια υπάρχουσα εγκατάσταση του FreeBSD. Από τους οδηγούς αυτούς έμαθα ότι το port που υποστηρίζει το AFP, είναι το netatalk. Όλοι οι οδηγοί ήταν λεπτομερέστατοι, ωστόσο τα αποτελέσματα για την περίπτωσή μου δεν ήταν ικανοποιητικά: Για κάποιο λόγο, αμφότεροι οι OS X clients δεν μπορούσαν να δουν το Time Capsule του FreeBSD. Μετά από περαιτέρω ψάξιμο κατάλαβα ότι τα αρχεία ρυθμίσεων στα οποία αναφέρονται οι οδηγοί, ναι μεν ήταν μια χαρά για το χρόνο που γράφτηκαν τα άρθρα αλλά, κατά πώς φαίνεται, σήμερα έχουν αλλάξει κάπως τα πράγματα.

Μιας και δεν είχα ιδιαίτερη διάθεση ν’ αρχίσω τη μελέτη του AFP και του συντακτικού των εμπλεκόμενων αρχείων ρύθμισης, σκέφτηκα λίγο πονηρά: Για τις ανάγκες του deltaCast s01e08, έστησα επιτυχώς το Time Capsule στο FreeNAS. Άρα, αρκεί να πάρω από εκεί τα απαραίτητα αρχεία ρυθμίσεων και να τα μεταφέρω στο FreeBSD μου. Έτσι σκέφτηκα, έτσι κι έπραξα. Το εγχείρημα δούλεψε. Στο υπόλοιπο του άρθρου περιγράφεται η διαδικασία του όλου setup.

Για τις ανάγκες μας δουλέψαμε σε FreeBSD 9.1-RELEASE 64bit, ενώ οι δύο Mac έτρεχαν OS X 10.7.5, δηλαδή το Lion. Δεν είχαμε τη δυνατότητα να ελέγξουμε το setup *και* με το Mountain Lion, εικάζουμε όμως ότι δεν θα υπάρχει κάποιο θέμα. Αν κάνετε τις δικές σας δοκιμές με το OS X 10.8 (Mountain Lion) και διαπιστώσετε ότι κάτι δεν πάει καλά ή ότι χρειάζονται αλλαγές εδώ κι εκεί, παρακαλούμε, μη διστάσετε να μας ενημερώσετε σχετικά. Ή ακόμη και να μας την πείτε.

Εγκατάσταση και βασικές προετοιμασίες
Συνδεόμαστε στο FreeBSD μας (rambaldi) κι από τον λογαριασμό του root εγκαθιστούμε το netatalk. Εμείς χρησιμοποιούμε το παλιό, καλό ports system –δεν έχουμε ακόμα υποκύψει στο PkgNG— οπότε πληκτρολογούμε, διαδοχικά:

root@rambaldi:/root # portsnap fetch update
root@rambaldi:/root # cd /usr/ports/net/netatalk
root@rambaldi:/root # make install clean

Θα εμφανιστεί ένα παράθυρο για την παραμετροποίηση του netatalk. Σ’ αυτό, βεβαιωθείτε ότι είναι τσεκαρισμένο το ZEROCONF.

Κατά την εγκατάσταση του netatalk φροντίζουμε ώστε η επιλογή ZEROCONF να είναι ενεργοποιημένη!

Κατ’ αυτόν τον τρόπο, ο server με το Time Capsule θα εμφανίζεται αυτομάτως στον Finder και δεν θα χρειάζεται να τον προσαρτάτε χειροκίνητα. Μετά την εγκατάσταση του netatalk κι όλων των άλλων ports που χρειάζεται, στο αρχείο /etc/rc.conf προσθέτουμε τις ακόλουθες γραμμές:

dbus_enable="YES"
netatalk_enable="YES"
afpd_enable="YES"
cnid_metad_enable="YES"
avahi_daemon_enable="YES"

Δημιουργούμε στη συνέχεια έναν κατάλογο, ο οποίος θα αποτελεί τον χώρο αποθήκευσης του Time Capsule. Ο δικός μας fileserver χρησιμοποιεί το ZFS, επομένως φτιάξαμε ένα νέο dataset:

root@rambaldi:/root # zfs create -o compression=gzip -o quota=300G terra/timecapsule

Στο συγκεκριμένο παράδειγμα υλοποιούμε ένα dataset ονόματι timecapsule, πάνω από το υπάρχον storage pool ονόματι terra. Για το timecapsule ενεργοποιείται η αυτόματη συμπίεση κατά gzip, ενώ το άνω όριο μεγέθους τίθεται στα 300 gigabytes. Ας σημειώσουμε ότι το όριο μεγέθους, η συμπίεση, το είδος της και όσες άλλες ιδιότητες δίνουμε σε κάποιο dataset, αλλάζουν ανά πάσα στιγμή και μάλιστα πανεύκολα.

Για τη συνέχεια, μπορούμε να ακολουθήσουμε δύο διαφορετικές στρατηγικές αποθήκευσης.

  • Μεταφέρουμε την ιδιοκτησία του καταλόγου timecapsule σε έναν κανονικό χρήστη του FreeBSD *εκτός* από τον root. Χρησιμοποιούμε τον λογαριασμό ενός χρήστη που υπάρχει ήδη στο σύστημα ή εκείνον ενός καινούργιου χρήστη, που δημιουργούμε επί τούτου. Δεν φτιάχνουμε κάποιον υποκατάλογο, εντός του timecapsule. Τα Time Machine backups όλων των Mac θα πηγαίνουν απευθείας μέσα στο timecapsule και, σε κάθε περίπτωση, θα γίνεται (αυτόματα) login στο λογαριασμό χρήστη του FreeBSD, ο οποίος έχει την ιδιοκτησία του timecapsule.
  • Εντός του timecapsule φτιάχνουμε έναν κατάλογο για κάθε χρήστη του FreeBSD, στο λογαριασμό του οποίου θέλουμε να γίνεται (αυτόματα) login από τον αντίστοιχο χρήστη κάποιου Mac, ο οποίος επιχειρεί να πάρει ένα Time Machine backup. Φυσικά, καθένας από αυτούς τους υποκαταλόγους θα ανήκει στον αντίστοιχο χρήστη του FreeBSD.

Είναι προφανές ότι η δεύτερη στρατηγική είναι προτιμότερη όταν οι υπολογιστές Mac ανήκουν σε διαφορετικά φυσικά πρόσωπα. Στη δική μας περίπτωση, όμως, οι δύο Mac χρησιμοποιούνται αποκλειστικά από τον γράφοντα, επομένως ακολουθήσαμε την πρώτη στρατηγική. Δώσαμε λοιπόν την ιδιοκτησία του καταλόγου timecapsule στο χρήστη sub0, ο οποίος υπήρχε ήδη στο σύστημα:

root@rambaldi:/root # chown sub0:sub0 /terra/timecapsule

Φροντίσαμε βεβαίως και για τα κατάλληλα δικαιώματα:

root@rambaldi:/root # chmod 755 /terra/timecapsule

Αρχεία ρυθμίσεων
Πριν συνεχίσουμε, κατεβάστε ένα πακετάκι με τα αρχεία ρυθμίσεων που πήραμε από εκείνη την εγκατάσταση του FreeNAS.

root@rambaldi:/root # wget --no-check-certificate http://bit.ly/fbsdtcapsule --output-document conf.tar

Αποσυμπιέστε το κάπου βολικά και μεταβείτε στον κατάλογο που θα δημιουργηθεί:

root@rambaldi:/root # tar xvf conf.tar
root@rambaldi:/root # cd fbsd_timecapsule_conf

Τα αρχεία ρυθμίσεων που μας ενδιαφέρουν είναι πέντε στο πλήθος: τα AppleVolumes.system, AppleVolumes.default, afpd.conf, afpd.service και netatalk.conf. Υπάρχει και το αρχείο paths.txt, με τις θέσεις στις οποίες πρέπει να μεταφερθεί το καθένα από τα προαναφερθέντα. Δείτε κι εδώ τα περιεχόμενά του:

afpd.conf				--> /usr/local/etc
netatalk.conf			--> /usr/local/etc
AppleVolumes.default	--> /usr/local/etc
AppleVolumes.system		--> /usr/local/etc
afpd.service			--> /usr/local/etc/avahi/services

Πριν κάνουμε τις απαραίτητες μεταφορές, οφείλουμε να τροποποιήσουμε ελαφρώς τα afpd.conf και AppleVolumes.default.

Δείτε πρώτα το afpd.conf:

"HOSTNAME" -noddp -nosavepassword \
-defaultvol /usr/local/etc/AppleVolumes.default -systemvol /usr/local/etc/AppleVolumes.system \
-uservol -uampath /usr/local/libexec/netatalk-uams \
-noguest \
-uamlist uams_dhx2.so,uams_dhx.so

Στη θέση του HOSTNAME, βάλτε το hostname του FreeBSD σας. Εμείς, π.χ., βάλαμε το “Rambaldi”.

Δείτε τώρα και το AppleVolumes.default (είναι σε μία γραμμή):

"/path/to/timecapsule" "TYPE_A_NAME_HERE" options:usedots,upriv,tm dperm:0644 fperm:0755 ea:ad allow:OWNER rwlist:OWNER

Τα strings που πρέπει ν’ αλλάξετε είναι τα /path/to/timecapsule, TYPE_A_NAME_HERE και OWNER (σε δύο θέσεις). Εμείς, π.χ., κάναμε αυτές τις αντικαταστάσεις:

/path/to/timecapsule 	--> /terra/timecapsule
TYPE_A_NAME_HERE 		--> TimeCapsule
OWNER 					--> sub0

Μπορούμε τώρα να μεταφέρουμε, με το mv, τα αρχεία AppleVolumes.system, AppleVolumes.default, afpd.conf, afpd.service και netatalk.conf, στις θέσεις που αναγράφονται μέσα στο paths.txt.

Ενεργοποίηση κι έλεγχος
Το αρχείο /etc/rc.conf το έχουμε ήδη τροποποιήσει για το netatalk και τις συνοδευτικές, ας μας επιτραπεί ο χαρακτηρισμός, υπηρεσίες, επομένως μπορούμε να τις ξεκινήσουμε τώρα, χειροκίνητα, π.χ., με το εργαλείο service. Εναλλακτικά, μπορούμε να επανεκκινήσουμε το ίδιο το FreeBSD box. Ίσως ακούγεται κάπως παράξενα αυτό, αλλά αν δεν προσπαθείτε να σπάσετε κάποιο ρεκόρ uptime τότε δεν είναι καθόλου άσχημη ιδέα: Από τη στιγμή που έχουμε να κάνουμε με περισσότερες από μία νέες υπηρεσίες, φανταζόμαστε πως θα θέλετε να βεβαιωθείτε πως κάθε φορά που ανοίγει το μηχάνημα ενεργοποιούνται όλες τους επιτυχώς.

Μετά την ενεργοποίηση των υπηρεσιών πηγαίνουμε σ’ έναν Mac, ανοίγουμε το System Preferences και κάνουμε κλικ στο Time Machine. Φροντίζουμε ώστε η υπηρεσία να είναι ενεργοποιημένη (το ευμεγέθες slider στη θέση ON) και στα δεξιά κάνουμε ένα κλικ πάνω στο Select Disk. Από το παράθυρο που θα εμφανιστεί θα μπορούμε να επιλέξουμε το Time Capsule του FreeBSD μας.

Επιλογή συσκευής για τα Time Machine backups. Το εικονιζόμενο 'TimeCapsule' είναι ένα AFP volume που μοιράζεται από ένα FreeBSD box.

Την πρώτη φορά που το Time Machine θα επιχειρήσει σύνδεση στο απομακρυσμένο AFP volume, ζητείται το όνομα χρήστη και το password του αντίστοιχου λογαριασμού στο FreeBSD box. Για εμάς, π.χ., ο λογαριασμός αυτός είναι εκείνους του sub0. Μετά τη σύνδεση και με την προϋπόθεση ότι όλα έχουν γίνει σωστά, το Time Machine του Mac θα πραγματοποιήσει ένα πλήρες backup. Αυτό θα διαρκέσει αρκετή ώρα, ειδικά αν η σύνδεσή μας είναι ασύρματη. Από εκεί και μετά θα λαμβάνονται incremental backups, κατά τα χρονικά διαστήματα που αναφέρονται στο παράθυρο του Time Machine.

Την πρώτη φορά, το Time Machine παίρνει ένα πλήρες backup. Από εκεί και πέρα ασχολείται μόνο με incremental backups.

Επαναλάβετε τη διαδικασία σε κάθε Mac και χαρείτε το ολοκαίνουργιο, FreeBSD-based Time Capsule σας!

4 Responses to “Time Capsule για το FreeBSD σας”

  1. hack_a_day | 27/05/2013 at 22:32

    Να φανταστώ οτι τα screenshot είναι απο mac os x ;
    Γιατί εκεί παραπέμπουν.. :-)

  2. hack_a_day | 27/05/2013 at 22:34

    Και κάτι ακόμα…τι προτιμάτε;
    Μac os x ή free bsd ;

    • subZraw | 27/05/2013 at 22:47

      Το καθένα είναι άριστο για τις αποστολές που προορίζεται. Τα θαυμάζω και τα δύο!

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Αρχείο δημοσιεύσεων