Phileserve - home NAS με USB δίσκους χρησιμοποιώντας το Raspberry Pi

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Έχοντας μετακομίσει σε νέο χώρο το σύστημά μου αλλά και το PC το οποίο σέρβιρε τα αρχεία μου δικτυακά, αντιμετώπισα το πρόβλημα του θορύβου. Τo desktop pc μου ακούγεται πολύ με αποτέλεσμα να με ενοχλεί κατά την ακρόαση. Έτσι το επόμενο βήμα ήταν η αγορά ενός εξωτερικού USB δίσκου. Δεν ήθελα όμως να καρφώσω το δίσκο πάνω στο Raspberry Pi το οποίο αποτελεί το transport μου, καθώς προσθέτω μουσική συνεχώς και δε μου αρέσει το βάλε-βγάλε.

Έτσι αρχικά κάρφωσα το δίσκο πάνω στο router μου το οποίο έχει δυνατότητα να μοιράζει δικτυακά μέσω samba. Οι μέρες πέρασαν και τα χέρια μου με έτρωγαν. Έχω πολλά δυνατά boards που κάθονται και έτσι αποφάσισα να φτιάξω τη δικιά μου λύση: Ένα diy home nas με usb δίσκους.

Στον τίτλο του νήματος αναφέρομαι στο Raspberry Pi, παρότι η συσκευή που χρησιμοποίησα εγώ είναι το cubox. Ο λόγος είναι ότι αυτή τη στιγμή δεν μου περισσεύει κάποιο Pi2, οπότε βολεύομαι με το cubox. Όλα όσα θα αναφέρω όμως γίνονται κανονικότατα στο πάμφτηνο και δημοφιλές rpi.

Ζητούμενα:

- Να καρφώνονται usb δίσκοι πάνω στο board, να γίνονται mount αυτόματα και να είναι έτοιμοι για μοίρασμα
- να υπάρχουν δύο επιλογές σερβιρίσματος: samba και nfs
- η λύση να είναι όσο το δυνατόν πιο minimal γίνεται. Ούτε web interface, ούτε τίποτα. Σκέτη κονσόλα και ελάχιστα δυνατά resources


Υλοποίηση:

- λειτουργικό σύστημα ArchlinuxARM
- για αυτόματη αναγνώριση και προσάρτηση δίσκων είχα έτοιμη τη λύση από το Archphile και έτσι χρησιμοποίησα και πάλι το udevil
- εγκατάσταση samba και nfs
- ελάχιστο configuration

Σε μερικά λεπτά το DIY ΝΑS ήταν έτοιμο. Αυτή τη στιγμή ακούω μουσική από αυτό, έχοντας επιλέξει samba για σερβίρισμα και όλα είναι περίφημα.

Η χρήση πόρων όταν τραβάω από αυτό μουσική είναι ελάχιστη όπως είναι και η συμπεριφορά του. Oχι κολλήματα, stops κλπ. Δεν έχω κάνει μετρήσεις ακόμα και δεν ξέρω πως θα συμπεριφερθέι σε γενική χρήση.


Μειονεκτήματα:

- Σίγουρα θα είναι αργό σε σχέση με ένα αληθινό NAS
- Δεν έχουμε τη δυνατότητα για RAID που προσφέρει έξτρα ασφάλεια. Δεν έχουμε όμως και λεφτά, οπότε καθόμαστε στ' αυγά μας :D

Το τελευταίο θα το λύσω μερικώς άμεσα, φτιάχνοντας ένα script με rsync. Θα καρφώνω δεύτερο δίσκο, θα παίρνω backup τον πρώτο, θα ξεκαρφώνω και πάλι στο πατάρι.


O λόγος που έδωσα όνομα (Phileserve) είναι γιατί αν δω ότι συμπεριφέρεται καλά, ενδεχομένως να φτιάξω ένα image για το Raspberry Pi 2 και να το μοιραστώ μαζί σας. Δε θα είναι "επίσημο" όπως το Archphile, αλλά μια λύση για να βολευτούμε μεταξύ μας.

Αυτά προς το παρόν!
 

Kostas_Y

AVClub Fanatic
24 December 2009
13,466
North by Northeast
Μόλις χθες αναρωτιόμουν αν γίνεται κάτι τέτοιο. Εμένα βέβαια με ενδιαφέρει το βιντεο και όχι η μουσική οπότε αυξάνεται και το μέγεθος των δίσκων που πρέπει να διαχειριστεί, και το φορτίο του.
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Έχω ένα Pi στο σαλόνι με Openelec. Θα του βάλω μια απαιτητική ταινία και θα δω πως θα συμπεριφερθεί. Γενικά θα το μετρήσω και θα σας δώσω feedback. Πάντως αυτό που θες υποτίθεται ότι το κάνουν ήδη επιτυχώς ακόμα και με το παλιό Pi. Bέβαια ρόλο θα παίξει και η ποιότητα του δίσκου.

Nα σημειωθεί ότι ό,τι γράψω τις πρώτες μέρες θα αναφέρεται στο cubox-i. Παρόλα αυτά εκτιμώ ότι η συμπεριφορά του Pi 2 θα είναι πανομοιότυπη.
 

Dr Pan K

Supreme Member
18 December 2010
9,067
want!

809149_1280511361453.85res_300_300.jpg
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Μην ξεχνάμε ότι σε Rpi/Rpi2 παίζει και το openmediavault:

http://www.openmediavault.org/

Δε θα μπω όμως καν στον κόπο να το δοκιμάσω γιατί θα είναι overkill κατ' εμέ.

Το αναφέρω γιατί είναι και αξιόπιστη λύση και με web interface.
 

Kostas_Y

AVClub Fanatic
24 December 2009
13,466
North by Northeast
To Π2 δεν έχει πρόβλημα αναπαραγωγής των αρχείων που με ενδιαφέρουν. Μήπως όμως το miniNAS "σκοντάφτει" στον κοινό ελεγκτή USB\Ethernet; Απο τη μία πρέπει να διαβάζει τα βιντεο απο τον USB δίσκο και ταυτόχρονα να τα στέλνει στο Π2 που θα παίζει το αρχείο.
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Όταν είπα για το pi με το Openelec, εννοούσα ότι θα μετρήσω και θα αξιολογήσω πως δουλεύει το NAS με αυτό. To NAS είναι το επίκεντρο του ελέγχου.

Με την πρώτη ευκαιρία θα κάνω ένα ίδιο στήσιμο (όμοιο με του cubox) και στο Rpi2 για να διαπιστώσουμε άμεσα με τι έχουμε να κάνουμε.

--- Αυτόματη συγχώνευση μηνύματος ---

Έκανα μια πολύ γρήγορη δοκιμή στο cubox με ένα αρχείο 360mb

- Το έγραψα στο NAS με 4.2mb/sec
- Το έγραψα από το NAS στο desktop με 9.4mb/sec
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Κάνω μια έρευνα για το ιδανικό filesystem σε μια τέτοια υλοποίηση. Όλα συκγλίνουν στο ext4.

Για μένα αυτό είναι εύκολο καθώς το desktop μου είναι linux οπότε αν καρφώσω έναν εξωτερικό σε ext4 θα τον δει αμέσως. Για χρήστες windows είναι κάπως πιο δύσκολα τα πράγματα.

Το κέρδος από την αλλαγή θα είναι λιγότερη χρήση cpu και λιγότερο overhead στο δίκτυο που οφείλεται υποτίθεται στη χρήση NTFS.

Είδωμεν.
 

Σταύρος Κ.

Established Member
19 June 2006
215
Μιχάλη καλημέρα,
Μια αντίστοιχη λύση – αν θυμάσαι – έχω εφαρμόσει και εγώ με ένα PogoPlug το οποίο έχει χειρότερα specs από το Pi2 (ARMv5te -Marvell Kirkwood 1.2GHz).
Και αυτή η λύση χρησιμοποιεί ArchLinux και απ’ ότι βλέπω προσφέρονταν και για ARMv6l.
Μου σερβίρει από πολλαπλούς δίσκους (7 usb δίσκοι των 2Τ έκαστος σε ntfs format ώστε να τους βλέπω και από το pc), χωρίς ιδιαίτερο πρόβλημα ακόμα και όταν πρόκειται για video mkv των 30+ GB !
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Σταύρο,

ίδια ακριβώς λογική με το δικό σου θα έχει, απλά λόγω hardware μπορούμε να το εκμεταλλευτούμε περισσότερο. Παράλληλα μπορούμε να κοτσάρουμε minidlna, transmission torrent client, owncloud κλπ και να μη μασάει τίποτα!

Πίσω στο θέμα των ταχυτήτων. Όπως σας είπα, φόρμαρα το δίσκο σε ext4. Ορίστε οι μετρήσεις μου με χρήση samba:

Code:
dd if=/dev/zero of=/mnt/music/testfile bs=1M count=1024 oflag=direct
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 120.007 s, 8.9 MB/s

dd if=/mnt/music/testfile of=/dev/null bs=1M count=1024 iflag=direct
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 93.5873 s, 11.5 MB/s


Δυστυχώς ξέχασα να τις τρέξω πριν φορμάρω για να δούμε και το NTFS. Με το τελευταίο υπάρχει ένα θέμα (όχι πρόβλημα) όμως. Ενώ με το ext4 ο δίσκος είναι σαν να μην υπάρχει, με το NTFS υπάρχει μια σχετική κατανάλωση cpu απο το ntfs-3g.
Oπότε αν τώρα αγοράσετε δίσκο και είναι άδειος, ένα φορμάρισμα σε ext4 θα είναι πιο φιλικό στο linux.
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Μέχρι τώρα έχω ξεχάσει να σας αναφέρω τα δύο σημαντικότερα που επηρρεάζουν την εικόνα των read/writes αυτή τη στιγμή:
- Το router είναι 1000ρι
- Τo cubox υποστηρίζει 300Mbps
- Το desktop pc από το οποίο κάνω τις δοκιμές υποστηρίζει 100mbps δίκτυο.

Eκτιμώ ότι το πρώτο link των 300Μbps θα επιταχύνει τη διαδικασία, παρότι το ταβάνι είναι τα 100mbps του dekstop.

Από τη στιγμή που στη θέση του cubox-i θα μπει το Rpi2 όλα τα link θα είναι max 100mbps.

Ελπίζω να προλάβω σήμερα να κάνω ένα installation σε Rpi2 να δούμε τις διαφορές στην πράξη.
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Έτοιμο και το minidlna (upnp/dlna server):

Εδώ βλέπετε το BubbleUPNP σε android. Βλέπει κανονικά τον dlna server (Phileserve) και στέλνει μουσική στο Archphile από αυτόν:



--- Αυτόματη συγχώνευση μηνύματος ---

Έτοιμος και ο transmission torrent client. Εδώ βλέπουμε την πρόσβαση που έχουμε στο τοπικό μας δίκτυο μέσω του web interface του:

 
Last edited:

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Μια μικρή ανακεφαλαίωση. Μέχρι στιγμής έχω υλοποιήσει:

- samba sharing (με username και password)
- NFS sharing
- minidlna (dlna/upnp) server
- transmission torrent client (web inteface)


Όλα αυτά δεν τρέχουν εξ' όρισμού. Θα πρέπει ο χρήστης να κονφιγκουράρει στις ανάγκες του κάθε ένα ή όλα από τα παραπάνω και να τα ενεργοποιήσει.

Επίσης, αν καταφέρω να το χτίσω για arm, θα βάλω ένα μικρό εργαλείο (sacd-extract - command line) για τους μουσικόφιλους, όπου θα μπορούν να βάζουν SACD ISO σε όποιο folder επιθυμούν και να το κάνουν convert σε dsd αρχεία.

Μου ξεφεύγει κάτι; Υπάρχει κάτι χρήσιμο που θα μπορούσε να μπει σε αυτή τη διανομούλα και το ξεχνάω;


Y.γ.1. Δεν έχω ασχοληθεί ακόμη με το sleeping των δίσκων. Θεωρώ ότι γίνεται αυτόματα, αλλά μένει να τσεκαριστεί.
Υ.γ.2. Αν όλα πάνε καλά, το επόμενο ΣΚ θα ανεβάσω image για Rpi2.
Υ.γ.3. O βασιλιάς των torrent clients σε linux είναι ο rtorrent με rutorrent web interface. Παρόλα αυτά θέλει αρκετούς πόρους συστήματος και γι' αυτό μιας και η διανομή δεν είναι πρωτευόντος seedbox, επέλεξα κάτι πολύ πιο ελαφρύ το οποίο παράλληλα δουλεύει καλά.
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Δοκιμή ματρόσκας:

cubox-i4 pro (300Mbps NIC)+ Phileserve με samba --> TP Link Archer D5 Gigabit router --> Devolo Powerline (350 περίπου Mbps link) --> Rpi2/Openelec 5.06


Αρχείο mkv:




Δεν το είδα όλο (θα το δω το βράδυ) αλλά όσο έκανα τη δοκιμή η αναπαραγωγή ήταν άψογη.
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Ήρθε και η ώρα του spinnind down των δίσκων για να αυξήσουμε τη διάρκεια ζωής τους.

Όταν έχουμε να κανουμε με εξωτερικό usb δίσκο, πολλές φορές η διαδικασία αυτή ελέγχεται από τον controller που έχει ενσωματομένο η υλοποίηση που αγοράσαμε.

Στην περίπτωσή μου, ο My Book 2T είχε αυτόματο spin down και μάλιστα οι τιμές του άλλαζαν από windows εργαλείο.

Μετά το φορμάρισμα που του έκανα σε ext4 όλα αυτά τα κόλπα σταμάτησαν και έπρεπε να το κάνω the hard way. Ο τρόπος είναι πολύ απλός.


- Ο πρώτος δίσκος που καρφώνεται με usb είναι ο /dev/sda1

- τσεκάρουμε το στάτους του δίσκου με το hdparm:

Code:
hdparm -C /dev/sda

Εφόσον δεν έχει αυτόματο μηχανισμό και δε σβήνει ποτέ, ή αν δεν έχει ενεργοποιηθεί ακόμη η λειτουργία θα δούμε:

Code:
/dev/sda:
drive state is:  active/idle

- Θέλουμε να ορίσουμε να κλείνει ο δίσκος σε 15 λεπτά μη χρήσης. Δοκιμάζουμε αν δουλεύει η εντολή:

Code:
hdparm -S 180 /dev/sda

Εφόσον δεν πάρουμε error στην εντολή αυτή, θα πρέπει να περιμένουμε 15 λεπτά και μετά να τσεκάρουμε με την πρώτη εντολή:

Code:
hdparm -C /dev/sda

/dev/sda:
drive state is:  standby

Όπως βλέπετε όλα πήγαν καλά. Πλέον μετά από 15 λεπτά μη χρησιμοποίησης του δίσκου, θα μπαίνει σε stand by mode.

Το μόνο που μένει είναι αυτό να γίνεται σε κάθε boot το οποίο το πετυχαίνουμε φτιάχνοντας έναν udev rule:

Code:
nano /etc/udev/rules.d/50-hdparm.rules


Code:
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sda", RUN+="/usr/bin/hdparm -S 180 /dev/sda"


Όταν ανέβει το image θα τα γράψω ακόμα πιο αναλυτικά.
 
Last edited:

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Tο έχω τσεκάρει εξ αρχής το hd-idle, απλά προτίμησα την κλασική μέθοδο του hdparm.

Εσένα δηλαδή το hdparm -S xxx /dev/sdx δε σου δούλευε;

Edit: το δοκιμάζω τώρα και θα επιστρέψω. Έχει και systemd service, οπότε είναι πιο απλό. Ευχαριστώ Σταύρο!

--- Αυτόματη συγχώνευση μηνύματος ---

Λοιπόν,

μετά και την υλοποίηση του spinning down, νομίζω ότι είμαστε έτοιμοι.

Σκέφτομαι να βάλω και μια λύση για FTP (vsftpd), αλλά δεν είμαι σίγουρος κατά πόσο χρειάζεται.

Το πλάνο έχει ως εξής:

Μέσα στο Σ/Κ που έρχεται, θα φτιάξω το image για Rpi2, θα το τεστάρω, θα ανεβάσω ένα image στο archphile.org και δεν πρόκειται να το ανακοινώσω, παρά μόνο στο avclub. Θα υπάρχει υπέρ αναλυτικό readme.txt και θα λύσουμε και ότι προβλήματα υπάρχουν σε αυτό το νήμα.


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

https://github.com/archphile/phileserve (το script δημιουργίας δεν είναι έτομο ακόμα)


Δεν πρόκειται να κάνω άλλο ένα επίσημο project, με νέα images κλπ κλπ. Aπλώς θα μοιραστώ τη δική μου λύση για όποιον ενδιαφέρεται.
 

tmjuju

Administration Team
Staff member
21 January 2007
21,651
Tο έχω τσεκάρει εξ αρχής το hd-idle, απλά προτίμησα την κλασική μέθοδο του hdparm.

Εσένα δηλαδή το hdparm -S xxx /dev/sdx δε σου δούλευε;

Edit: το δοκιμάζω τώρα και θα επιστρέψω. Έχει και systemd service, οπότε είναι πιο απλό. Ευχαριστώ Σταύρο!

--- Αυτόματη συγχώνευση μηνύματος ---

Λοιπόν,

μετά και την υλοποίηση του spinning down, νομίζω ότι είμαστε έτοιμοι.

Σκέφτομαι να βάλω και μια λύση για FTP (vsftpd), αλλά δεν είμαι σίγουρος κατά πόσο χρειάζεται.

Το πλάνο έχει ως εξής:

Μέσα στο Σ/Κ που έρχεται, θα φτιάξω το image για Rpi2, θα το τεστάρω, θα ανεβάσω ένα image στο archphile.org και δεν πρόκειται να το ανακοινώσω, παρά μόνο στο avclub. Θα υπάρχει υπέρ αναλυτικό readme.txt και θα λύσουμε και ότι προβλήματα υπάρχουν σε αυτό το νήμα.


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

https://github.com/archphile/phileserve (το script δημιουργίας δεν είναι έτομο ακόμα)


Δεν πρόκειται να κάνω άλλο ένα επίσημο project, με νέα images κλπ κλπ. Aπλώς θα μοιραστώ τη δική μου λύση για όποιον ενδιαφέρεται.

ΙΜΗΟ το ssh αρκεί, δίνει και sftp, δόνιμασέ το. σκέτο Ftp δε νομίζω να ενδιαφέρει.
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Δίκιο έχεις Τάσο. Το αφήνω εκτός το ftp.


Έχω αρχίσει να γράφω το manual. Παρότι είναι ελλειπές, θα πάρετε μια ιδέα για το τι περίπου θα χρειάζεται να κάνει ο χρήστης:

https://raw.githubusercontent.com/archphile/phileserve/master/configuration.txt


Δυστυχώς υπάρχουν άπειρα configurations και το μόνο πράγμα που θα παίζει out of the box είναι το μοίρασμα όσων δίσκων καρφώσετε με samba. Για τα υπόλοιπα χρειάζεται χέριασμα και copy paste των εντολών που περιγράφω στον οδηγό.Το πιο μανουριάρικο είναι το NFS, αλλά νομίζω ότι ελάχιστοι εδώ μέσα θα το χρειαστούν.
 

Dr Pan K

Supreme Member
18 December 2010
9,067
Μιχαλη, δωσε μου την γνωμη σου. Δεδομένου οτι δεν εχω δευτερο Rpi2 για να το χρησιμοποιήσω σαν "NAS" να προτιμήσω την αγορα ενος έτοιμου εμπορικού μοντέλου καλύτερα? Τι προσφέρει σε σχεση με ενα εμπορικο ο Phileserve?