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

Storage Box για τον cloud server κι όχι μόνο

Είμαστε βέβαιοι ότι το VPS σας διαθέτει τα χαρακτηριστικά που απαιτούνται για τις δικτυακές σας εφαρμογές, υποψιαζόμαστε όμως ότι ίσως υστερεί σε αποθηκευτικό χώρο. Ευτυχώς αρκετοί providers έχουν αρχίσει να προσφέρουν τη δυνατότητα για αγορά έξτρα χώρου, σε ξεχωριστά δικτυακά volumes.

Ένα τέτοιο volume το προσαρτάτε στον server σας, άσχετα αν αυτός είναι τοπικός ή βρίσκεται κάπου στο cloud. Αν κάποια στιγμή θελήσετε περισσότερο χώρο, εύκολα μπορείτε και να μεγαλώσετε το volume χωρίς απώλεια δεδομένων. Είναι ακόμη δυνατό να μικρύνετε το volume, αρκεί βέβαια τα αποθηκευμένα δεδομένα να “χωρούν” στο νέο μέγεθος.

Προσφάτως αγοράσαμε ένα storage volume χωρητικότητας 500GB, το οποίο και προσαρτήσαμε σε ένα VPS με openSUSE Leap 42.2. Ο provider τόσο του VPS όσο και του volume ήταν η Hetzner. Η εταιρεία ονομάζει τα volumes που προσφέρει ως Storage Boxes, με το μικρότερο να ξεκινά από τα 100GB (Storage Box BX10, στα 3,45 ευρώ/μήνα) και το μεγαλύτερο να φτάνει στα 10TB (Storage Box BX60, στα 47,48 ευρώ/μήνα). Όπως ήδη αναφέραμε, εμείς αγοράσαμε ένα Storage Box BX20, στα 5,83 ευρώ/μήνα, αφού ο συνολικός όγκος των δεδομένων που επιθυμούμε να έχουμε εκεί είναι κοντά στα 300GB.

Θα ξεκινούσαμε με ένα Storage Box BX10, όμως ήδη έχουμε γύρω στα 300GB που θέλουμε να μεταφέρουμε στο cloud. Πήραμε λοιπόν ένα Storage Box BX20 γνωρίζοντας ότι α) μετά τη μεταφορά θα μας περισσέψει αρκετός αποθηκευτικός χώρος, β) αν κάποια στιγμή στο μέλλον χρειαστούμε περισσότερο χώρο, τότε πολύ εύκολα θα επεκτείνουμε το Storage Box χωρίς να χάσουμε δεδομένα.

Θα ξεκινούσαμε με ένα Storage Box BX10, όμως ήδη έχουμε γύρω στα 300GB που θέλουμε να μεταφέρουμε στο cloud. Πήραμε λοιπόν ένα Storage Box BX20 γνωρίζοντας ότι α) μετά τη μεταφορά θα μας περισσέψει αρκετός αποθηκευτικός χώρος, β) αν κάποια στιγμή στο μέλλον χρειαστούμε περισσότερο χώρο, τότε πολύ εύκολα θα επεκτείνουμε το Storage Box χωρίς να χάσουμε δεδομένα.

Σημειώστε ότι ένα storage volume μπορείτε να το εκμεταλλευτείτε ακόμη κι αν δεν έχετε μηχάνημα (εικονικό ή φυσικό) με Linux. Στη συνέχεια του παρόντος, ωστόσο, δείχνουμε πώς προσαρτούμε ένα Storage Box σε έναν server με openSUSE Leap 42.2. Ανάλογα θα εργαστείτε αν αντί για openSUSE χρησιμοποιείτε άλλη διανομή του Linux.

Προετοιμασία
Μετά την επιλογή και αγορά Storage Box από τη Hetzner, το βρίσκουμε από το μενού αριστερά επιλέγοντας Main functions / Storage boxes. Κάνουμε ένα κλικ πάνω στη γραμμή του –η ονομασία της γραμμής στην περίπτωση μας ήταν BX20 #135020– κι αμέσως αποκτάμε πρόσβαση σε όλες τις λεπτομέρειες που το αφορούν. Δείτε τα δύο screenshots που ακολουθούν, διαβάστε βεβαίως και τις αντίστοιχες περιγραφές.

Είναι σημαντικό να σημειώσουμε κάπου το πλήρες όνομα (fully qualified domain name, FQDN) του server στον οποίο φιλοξενείται και διατίθεται το volume μας. Στο παράδειγμα, το εν λόγω πλήρες όνομα είναι το u146187.your-storage.box (1). Το δε hostname του server, δηλαδή αυτό το u146187, είναι και το username του λογαριασμού μας εκεί (2). Παρατηρήστε ότι το volume είναι διαθέσιμο μέσω του πρωτοκόλλου CIFS (Samba support, 3). Το συγκεκριμένο πρωτόκολλο βολεύει ιδιαίτερα ειδικά αν σκοπεύουμε να προσαρτήσουμε το volume από μηχάνημα με Windows. Εμείς δεν πρόκειται να κάνουμε κάτι τέτοιο, αφού μας ενδιαφέρει η προσάρτηση μόνο από εκείνο το VPS με το openSUSE. Γι' αυτό --αλλά και για λόγους ασφαλείας-- με δύο μόλις κλικ απενεργοποιούμε το Samba support κι ενεργοποιούμε το WebDAV support. Αναφέραμε εξάλλου ότι στον u146187.your-storage.box υπάρχει ένας λογαριασμός μας, με username το u146187. Ποιο όμως είναι το αντίστοιχο password; Για να το μάθουμε, αρκεί ένα κλικ στο κουμπί Reset password (4). Εμφανίζεται τότε ένα pop-up και καλούμαστε να επιβεβαιώσουμε τη δημιουργία νέου password. Απαντάμε καταφατικά, με κλικ στο OK.

Είναι σημαντικό να σημειώσουμε κάπου το πλήρες όνομα (fully qualified domain name, FQDN) του server στον οποίο φιλοξενείται και διατίθεται το volume μας. Στο παράδειγμα, το εν λόγω πλήρες όνομα είναι το u146187.your-storage.box (1). Το δε hostname του server, δηλαδή αυτό το u146187, είναι και το username του λογαριασμού μας εκεί (2). Παρατηρήστε ότι το volume είναι διαθέσιμο μέσω του πρωτοκόλλου CIFS (Samba support, 3). Το συγκεκριμένο πρωτόκολλο βολεύει ιδιαίτερα ειδικά αν σκοπεύουμε να προσαρτήσουμε το volume από μηχάνημα με Windows. Εμείς δεν πρόκειται να κάνουμε κάτι τέτοιο, αφού μας ενδιαφέρει η προσάρτηση μόνο από εκείνο το VPS με το openSUSE. Γι’ αυτό –αλλά και για λόγους ασφαλείας– με δύο μόλις κλικ απενεργοποιούμε το Samba support κι ενεργοποιούμε το WebDAV support. Αναφέραμε εξάλλου ότι στον u146187.your-storage.box υπάρχει ένας λογαριασμός μας, με username το u146187. Ποιο όμως είναι το αντίστοιχο password; Για να το μάθουμε, αρκεί ένα κλικ στο κουμπί Reset password (4). Εμφανίζεται τότε ένα pop-up και καλούμαστε να επιβεβαιώσουμε τη δημιουργία νέου password. Απαντάμε καταφατικά, με κλικ στο OK.

Μετά το Reset password to νέο συνθηματικό του χρήστη u146187 εμφανίζεται προσωρινά, στο πράσινο πλαίσιο πάνω πάνω. Πρέπει να το σημειώσουμε κάπου, αφού με το που θα φύγουμε από τη σελίδα το password δεν θα εμφανίζεται κάπου αλλού.

Μετά το Reset password to νέο συνθηματικό του χρήστη u146187 εμφανίζεται προσωρινά, στο πράσινο πλαίσιο πάνω πάνω. Πρέπει να το σημειώσουμε κάπου, αφού με το που θα φύγουμε από τη σελίδα το password δεν θα εμφανίζεται κάπου αλλού.

Στο σημείο αυτό έχουμε ό,τι χρειαζόμαστε προκειμένου να προσαρτήσουμε το volume στο VPS μας, κατά το πρωτόκολλο WebDAV. Το θέμα είναι ότι το openSUSE δεν το γνωρίζει, οπότε κάτι πρέπει να κάνουμε και γι’ αυτό.

Το WebDAV για το οpenSUSE
Πολύ γρήγορα διαπιστώσαμε ότι το λειτουργικό του VPS μας δεν υποστήριζε το πρωτόκολλο WebDAV. Αρχικά, ψάχνοντας στα repositories (αποθετήρια) της διανομής δεν βρήκαμε κάποιο σχετικό πακέτο. Κοιτάζοντας μετά και στο web, με χαρά διαπιστώσαμε ότι αρκεί να προσθέσουμε στο σύστημα ένα νέο repository, το οποίο μάλιστα υποστηρίζεται επίσημα από το project του οpenSUSE. Ευχάριστη η εξέλιξη, διότι διαφορετικά πρέπει να μπλέξουμε με μεταγλωττίσεις από το source. Χάρη σ’ αυτό το repository, όμως, μπορούμε πολύ εύκολα να επαυξάνουμε τις ικανότητές της διανομής όσον αφορά στα filesystems. Η προσθήκη του εν λόγω αποθετηρίου γίνεται πληκτρολογώντας κάτι σαν αυτό:

sub0@vatnajokull:~> sudo zypper ar http://download.opensuse.org/repositories/filesystems/openSUSE_Leap_42.2 'Leap422 Filesystems'

Αμέσως μετά ακολουθεί το φρεσκάρισμα των πληροφοριών για τα περιεχόμενα των αποθετηρίων:

cvar@vatnajokull:~> sudo zypper ref

Επειδή μόλις προσθέσαμε το νέο αποθετήριο για την υποστήριξη πρόσθετων filesystems, το zypper σταματά και μας ρωτά αν εμπιστευόμαστε το δημόσιο κλειδί του repository:

New repository or package signing key received:

  Repository:       Leap422 Filesystems
  Key Name:         filesystems OBS Project <filesystems@build.opensuse.org>
  Key Fingerprint:  B1FB5374 87204722 05FA6019 98C97FE7 324E6311
  Key Created:      þri 19.júl 2016, 16:36:42 CEST
  Key Expires:      fim 27.sep 2018, 16:36:42 CEST
  Rpm Name:         gpg-pubkey-324e6311-578e3afa

Do you want to reject the key, trust temporarily, or trust always? [r/t/a/? shows all options] (r):

Μπορούμε να εμπιστευτούμε το κλειδί για την παρούσα λειτουργία της ανανέωσης, καθώς και για όλες όσες ακολουθήσουν: απλά πατάμε το πλήκτρο [A] (από το “Always”) και δίνουμε ένα [Εnter].

Μετά το φρεσκάρισμα, σειρά έχει η εγκατάσταση του πακέτου για την υποστήριξη του WebDAV:

sub0@vatnajokull:~> sudo zypper -n in davfs2

Τέλεια όλα.

Προσάρτηση του Storage Box
Πριν τη σύνδεση του volume στο τοπικό filesystem, φτιάχνουμε έναν βολικό κατάλογο κάτω από τον οποίο θα γίνει η προσάρτηση. Παράδειγμα:

sub0@vatnajokull:~> sudo mkdir /mnt/sbox

Είμαστε έτοιμοι για την προσάρτηση:

sub0@vatnajokull:~> sudo mount -t davfs https://u146187.your-storagebox.de /mnt/sbox

Θα ερωτηθούμε για username και password. Το username είναι το hostname του μηχανήματος όπου βρίσκεται το volume (στο παράδειγμά μας u146187), ενώ το password είναι αυτό που εμφανίστηκε στο web panel της Hetzner και βεβαίως σημειώσαμε προσεκτικά. Αν όλα έχουν πάει καλά, στην έξοδο του εργαλείου df θα δούμε και μια γραμμή που αντιστοιχεί στο απομακρυσμένο volume:

sub0@vatnajokull:~> df -hT
Filesystem                         Type      Size  Used Avail Use% Mounted on
devtmpfs                           devtmpfs  979M     0  979M   0% /dev
tmpfs                              tmpfs    1000M     0 1000M   0% /dev/shm
tmpfs                              tmpfs    1000M  1.7M  999M   1% /run
tmpfs                              tmpfs    1000M     0 1000M   0% /sys/fs/cgroup
/dev/sda1                          ext4       47G  3.1G   42G   7% /
tmpfs                              tmpfs     200M     0  200M   0% /run/user/0
https://u146187.your-storagebox.de fuse      1.3T  763G  509G  61% /mnt/sbox
tmpfs                              tmpfs     200M     0  200M   0% /run/user/1000

Τα νούμετα που παρατίθενται στις στήλες Size και Used δεν έχουν σημασία, υπό την έννοια ότι δεν αντικατοπτρίζουν με ακρίβεια ούτε το το μέγεθος του volume μας, επομένως ούτε και τον όγκο των δεδομένων που έχουμε αποθηκεύσει εκεί. Σημασία έχει μόνο το νούμερο στη στήλη Avail, το οποίο είναι ακριβές κι ανά πάσα στιγμή εκφράζει τον αποθηκευτικό χώρο που διαθέτουμε. Ας ρίξουμε και μια ματιά εντός του καταλόγου /mnt/sbox:

sub0@vatnajokull:~> ls -lh /mnt/sbox
total 0
drwx------ 2 root root 0 Feb 25 18:06 lost+found

Όπως βλέπετε, στο Storage Box προς το παρόν υπάρχει μόνον ο κατάλογος lost_found. Αυτός δημιουργήθηκε αυτόματα κατά τη διαμόρφωση του απομακρυσμένου filesystem. Θα προσέξατε ότι ανήκει στον χρήστη root, ενώ και η ομάδα του είναι εκείνη του root. Εμάς πάντως μας βολεύει περισσότερο όταν η προσάρτηση γίνεται από τον απλό χρήστη που έχουμε στο VPS μας. Για τη συγκεκριμένη διευθέτηση, αρχικά αποπροσαρτήσαμε το volume…

sub0@vatnajokull:~> sudo umount /mnt/sbox

…βρήκαμε το id του χρήστη μας και της ομάδας του…

sub0@vatnajokull:~> id sub0
uid=1000(sub0) gid=100(users) groups=100(users)

…και μετά προσαρτήσαμε ξανά ως εξής:

sub0@vatnajokull:~> sudo mount -t davfs -o uid=1000,gid=100 https://u146187.your-storagebox.de /mnt/sbox

Η έξοδος του df απέδειξε ότι μετά την προσάρτηση την πλήρη δικαιοδοσία επί του volume την είχε ο χρήστης μας, όπως ακριβώς το θέλαμε:

sub0@vatnajokull:~> ls -lh /mnt/sbox
total 0
drwx------ 2 sub0 users 0 Feb 25 18:09 lost+found

Αυτοματισμός
Κάθε φορά που το VPS ενεργοποιείται ή επανεκκινεί, θέλουμε το Storage Box να προσαρτάται αυτόματα. Προς τούτο, με δικαιώματα διαχειριστή συστήματος αρκεί να προσθέσουμε στο αρχείο /etc/fstab μία γραμμή σαν την ακόλουθη:

https://u146187.your-storagebox.de /mnt/sbox davfs noauto,rw,uid=1000,gid=100,file_mode=0660,dir_mode=0770 0 0

Με τη σημασία των παραμέτρων που έχουμε παραθέσει μετά το “davfs” δεν θα ασχοληθούμε τώρα, μπορείτε όμως να μάθετε περισσότερα πληκτρολογώντας

sub0@vatnajokull:~> man mount.davfs

(από το man βγαίνουμε πατώντας, απλά, το πλήκτρο [Q]). Θα πούμε μόνο για την επιλογή “noauto”, η οποία εξαιρεί το filesystem από την εντολή mount -a που εκτελείται κατά την εκκίνηση του λειτουργικού και συνεπώς δεν προσαρτάται αυτόματα. Είναι βεβαίως λίγο αντιφατικό όλο αυτό, αφού θέλουμε να προσαρτάται αυτόματα. Το πρόβλημα είναι ότι η προσάρτηση επιχειρείται πριν ακόμα αρχικοποιηθεί το υποσύστημα δικτύωσης, επομένως αποτυγχάνει. Το μυστικό εδώ είναι ότι πρέπει να καθυστερήσουμε την προσάρτηση του απομακρυσμένου volume — ει δυνατόν να την αφήσουμε για το τέλος, όπου όλες οι υπηρεσίες του openSUSE θα έχουν ενεργοποιηθεί και ρυθμιστεί. Θα δούμε σε πολύ λίγο πώς ακριβώς πετυχαίνουμε αυτή την καθυστερημένη προσάρτηση. Προς το παρόν, να σημειώσουμε ότι στο τέλος του αρχείου /etc/davfs2/secrets πρέπει να βάλουμε μια γραμμή που θα μοιάζει με την ακόλουθη:

https://u146187.your-storagebox.de u146187 super_secret_password

Στο αρχείο /etc/davfs2/secrets έχει πρόσβαση ο χρήστης root και κανείς άλλος. Τα περιεχόμενά του διαβάζονται κάθε φορά που επιχειρείται προσάρτηση ενός WebDAV volume. Έτσι για τις προσαρτήσεις όπου απαιτούνται username και password τα αντίστοιχα στοιχεία βρίσκονται εντός του καλά προστατευμένου secrets κι όχι μέσα στο fstab, το οποίο μπορούν να διαβάζουν ακόμη και οι απλοί χρήστες του συστήματος. Ας δούμε τώρα πώς μετά το τέλος της εκκίνησης του λειτουργικού θα προσαρτάται αυτόματα το Storage Box μας. Yπάρχουν βεβαίως περισσότεροι του ενός τρόποι για να συμβαίνει αυτό, ο ευκολότερος όμως ίσως είναι με ένα νέο cronjob. Αναλυτικότερα, πληκτρολογούμε

sub0@vatnajokull:~> sudo crontab -e

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

@reboot /usr/bin/mount /mnt/sbox

Αποθηκεύουμε την αλλαγή και για δοκιμή επανεκκινούμε το VPS μας. Αν όλα έχουν πάει καλά –που δεν βλέπουμε το λόγο για να μην έχουν πάει, δηλαδή– τότε το Storage Volume θα είναι προσαρτημένο και πλήρως προσβάσιμο από τον χρήστη μας.

Από τις πολλές εφαρμογές που βρίσκει το Storage Box, μία που μπορούμε να σκεφτούμε είναι ν’ αποτελέσει το χώρο αποθήκευσης για ένα Nextcloud instance στο cloud. Όπως και να το κάνουμε, το data directory του Nextcloud δεν είναι απαραίτητο να κατοικεί στην ίδια κατάτμηση που κατοικεί κι ο web server.

Στις επιλογές που υπάρχουν στη γραμμή του fstab για την προσάρτηση του απομακρυσμένου Storage Box μέσω WebDAV (1), υπάρχει και η noauto: επειδή η προσάρτηση θα επιχειρηθεί πριν ακόμα αρχικοποιηθεί το υποσύστημα δικτύωσης, η διαδικασία θα αποτύχει. Καθυστερούμε, λοιπόν, την προσάρτηση και την πραγματοποιούμε μέσω κατάλληλου cronjob (βλ. '@reboot') αμέσως μετά την ολοκλήρωση του boot. Παρεμπιπτόντως, στο αρχείο /etc/davfs2/secrets πρέπει να υπάρχει μια γραμμή με το URL του server που φιλοξενεί το Storage Volume, το username μας εκεί καθώς και το αντίστοιχο password (2). Σημειώστε ότι πρόσβαση στο secrets έχει μόνον ο χρήστης root, ενώ στο fstab έχουν δικαιώματα ανάγνωσης ακόμα και οι απλοί χρήστες.

Στις επιλογές που υπάρχουν στη γραμμή του fstab για την προσάρτηση του απομακρυσμένου Storage Box μέσω WebDAV (1), υπάρχει και η noauto: επειδή η προσάρτηση θα επιχειρηθεί πριν ακόμα αρχικοποιηθεί το υποσύστημα δικτύωσης, η διαδικασία θα αποτύχει. Καθυστερούμε, λοιπόν, την προσάρτηση και την πραγματοποιούμε μέσω κατάλληλου cronjob (βλ. “@reboot”) αμέσως μετά την ολοκλήρωση του boot. Παρεμπιπτόντως, στο αρχείο /etc/davfs2/secrets πρέπει να υπάρχει μια γραμμή με το URL του server που φιλοξενεί το Storage Volume, το username μας εκεί καθώς και το αντίστοιχο password (2). Σημειώστε ότι πρόσβαση στο secrets έχει μόνον ο χρήστης root, ενώ στο fstab έχουν δικαιώματα ανάγνωσης ακόμα και οι απλοί χρήστες.

4 Responses to “Storage Box για τον cloud server κι όχι μόνο”

  1. dimitri0us | 01/03/2017 at 23:32

    Ωραία σαν ιδέα!

    Τα storage box ομως τι ασφαλεια δεδομένων έχουν? Κάνουν backup? πόσα? κάθε πότε?

    • subZraw | 02/03/2017 at 07:48

      Υπάρχει μέριμνα για την προστασία των δεδομένων, ωστόσο όπως σωστά αναφέρουν στη Hetzner ο χρήστης έχει την τελική ευθύνη: https://wiki.hetzner.de/index.php/Storage_Boxes/en#Reliability Μην ξεχνάς άλλωστε ότι ένα *αληθινό* backup σημαίνει τουλάχιστον δύο αντίγραφα (π.χ., ένα τοπικό κι ένα απομακρυσμένο).

  2. dimitri0us | 02/03/2017 at 19:35

    Αν μιλάμε για Next Cloud με φώτο και αρχεία δηλαδή 500gb πρέπει να τα κατεβάσω local αυτό εννοείς ? Δεν υπάρχει σαν υπηρεσία extra backup ?

    • subZraw | 03/03/2017 at 12:49

      Απλά αυτό που λέω είναι ότι “backup” εξ ορισμού σημαίνει ότι τα δεδομένα *δεν* βρίσκονται σε ένα μέσο/μέρος μόνο :)

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

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