Linux

Linux File Server

09/11/2010 12:52 μμ | kkalop από kkalop


1. Εισαγωγή

 

Όλα τα παρακάτω αποτελούν απλές συνταγές για το στήσιμο και την αντιμετώπιση διάφορων προβλημάτων ενός φτηνού Linux File Server (LFS). Σε καμία περίπτωση δεν αποτελούν πανάκεια. Η γνώση και η εμπειρία κάποιου που ασχολείται με το Linux, servers και software raid είναι απαραίτητη. Όπως είχε πει κάποτε ένας γιατρός «Μπορώ να σου δείξω σε μια ώρα πως να κάνεις μια εγχείρηση σκωληκοειδίτιδας, αλλά θα μου πάρει 7 χρόνια να σου πω τι θα κάνεις σε περίπτωση που κάτι πάει στραβά».

 

2. Επιλογή υλικού (Hardware)

 

Η σωστή επιλογή και αγορά του υλικού ενός server είναι ίσως το πιο σημαντικό κομμάτι της διαδικασίας καθώς διάφορες ασυμβατότητες υλικού και οδηγών μπορεί να κάνουν το στήσιμο του server αδύνατο.

 

1.Επεξεργαστής

Ο επεξεργαστή δεν μας απασχολεί ιδιαίτερα καθώς οι επεξεργαστικές ανάγκες ενός file server είναι πολύ περιορισμένες. Γενικά είναι καλύτερα να πάμε σε όσο το δυνατό περισσότερους πυρήνες και χαμηλή συχνότητα.

 

2.Μνήμη

Γενικά ένας LFS δεν χρειάζεται περισσότερο από 512ΜΒ RAM για να λειτουργήσει. Παρόλα αυτά λόγω της χαμηλής τιμής της μνήμης σήμερα καλό είναι να έχει αρκετή μνήμη (2GB). Το Linux χρησιμοποιεί την επιπλέον μνήμη σαν File System Cache, δηλαδή σαν προσωρινή μνήμη αποθήκευσης έτσι αν 2 άτομα τραβάνε το ίδιο αρχείο από το server ο δεύτερος θα το πάρει από τη μνήμη και όχι από το δίσκο. Αυτό βοηθάει και στην ταχύτητα αλλά και στη μακροζωία του δίσκου.

 

3.Μητρική

Η Μητρική είναι το σημαντικότερο κομμάτι του υλικού γιατί πάνω βρίσκονται τα περισσότερα υποσυστήματα του server (SATA controller, NIC, GPU). Το πρώτο πράγμα που κοιτάμε είναι να έχει συμβατότητα με το Linux. Πρέπει να έχει αρκετά SATA για τον File Server που χρειαζόμαστε on board κάρτα δικτύου και γραφικών.

 

4.Τροφοδοτικό

Η ανάγκες ενός LFS σε ενέργεια δεν είναι μεγάλες, ένα 420W τροφοδοτικό για ένα server με 7 σκληρούς, core duo στα 2500GHz, 2GB RAM είναι αρκετό. Σημασία πρέπει να δώσουμε στην ποιότητα του τροφοδοτικού μας. Χονδρικά τα κριτήρια για το πόσο καλό είναι ένα τροφοδοτικό με σειρά σημαντικότητας είναι:

a. Η τιμή του (να είναι τουλάχιστον 40€)

b. Τα χρόνια εγγύησης που δίνει ό κατασκευαστής

c. Η μάρκα του.

d. Το βάρος του. (Όσο πιο βαρύ τόσο πιο καλό.)

Επιπλέον για server κάλο είναι να έχει δύο ανεμιστήρες για αξιοπιστία. Τα τροφοδοτικά με ένα 12άρη ανεμιστήρα είναι επίσης αξιόπιστα. Τα τροφοδοτικά με έναν 8άρη απαγορεύονται δια ροπάλου!

 

5.Κουτί

Το κουτί του Server δεν χρειάζεται να είναι ακριβό. Το μόνο που πρέπει να μεριμνήσουμε είναι να έχει αρκετές θέσης σκληρών δίσκων, 12άρια ανεμιστήρα μπροστά πίσω και αρκετό χώρο.

 

6.Κάρτα Δικτύου

Η κάρτα Δικτύου ΠΡΕΠΕΙ να είναι on board GBit. Οι PCI GBit κάρτες μπορούν να δώσουν μέχρι 700 MBit/s λόγω του περιορισμού του PCI BUS. Γενικά λόγω αξιοπιστίας και συμβατότητας προτιμούμε

a. Intel

b. Marvel

c. Realtec

 

7.Κάρτα Γραφικών

Ο Server δεν έχει ανάγκη από καλή κάρτα γραφικών. Προτιμούμε πάντα τις on board κάρτες γραφικών και σε περίπτωση επιλογής μητρικής που δεν έχει επιλέγουμε την πιο μικρή και οπωσδήποτε παθητική (χωρίς ανεμιστήρα) κάρτα.

 

8.SATA Controller

Γενικά προτιμούμε τους onboard controller της μητρικής, σημαντικό είναι να είναι ενιαίος ο controller δηλαδή πολλές μητρικές έχουν 8 SATA τα οποία είναι 2 controllers 6 + 2. Δεν μπερδεύουμε τους Controllers χρησιμοποιούμε δηλαδή τα 6 για μία συστοιχία RAID και τα άλλα για άλλη.

Προτεινόμενοι Controllers – Chipset είναι τα ICH9R και ICH10R της INTEL (Chipset P35,Q35,Q45,P43,P45,G45)

PCI SATA Controllers πρέπει να αποφεύγονται καθώς το PCI BUS είναι περιοριστικός παράγοντας (bottleneck). Συγκριτικά 4 δίσκοι σε συστοιχία σε on board ICH9R controller έχουν Throughput 200 Mbytes/s ενώ σε PCI controller έχουν 80.

 

9.Σκληροί Δίσκοι

Η επιλογή των δίσκων γίνεται με βάση της ανάγκες μας. Γενικά για ένα φθηνό LFS όπου κυρίως μας ενδιαφέρει ο συνολικός χώρος πρώτος γνώμονας είναι η τιμή προς απόδοση, δηλαδή η τιμή προς Gigabyte. Καλό είναι να επιλέγουμε μεγάλης χωρητικότητας δίσκους έστω και αν είναι λιγότερο αποδοτικοί ως προς την τιμή λόγω του περιορισμένου αριθμού των θέσεων SATA. Δίσκοι server (raid edition) με 5 χρόνια εγγύηση είναι γενικά μια καλή επιλογή αλλά είναι πολύ ακριβότεροι και δεν προτείνονται για φτηνή λύση.

 

3. Στήσιμο Server

 

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

Προτεινόμενη Τοπολογία

o Ένας σχετικά μικρός (320 GB) δίσκος ATA ή SATA για λειτουργικό

o Έξι μεγάλοι (π.χ. 1TB) δίσκοι για τη RAID Συστοιχία

 

Λειτουργικό Σύστημα

Για λειτουργικό σύστημα του LFS έχουμε επιλέξει το Ubuntu Server για τους παρακάτω λόγους

• Ευχρηστία

 

>apt-get install «τα πάντα»

 

• Hardware Compatibility

Λόγω του συχνού κύκλου εκδόσεων του Ubuntu (ανά 6 μήνες) παρέχεται υποστήριξη για τα περισσότερα καινούργια Hardware.

 

• Κοινότητα

Λόγω της ευρείας χρήσης του Ubuntu είναι πιο εύκολη η αντιμετώπιση προβλημάτων

Κατά την εγκατάσταση του Ubuntu πέρα απ’ τα βασικά επιλέγουμε ανάλογα με τις ανάγκες μας και την εγκατάσταση (για Ubuntu 8.04 και νεότερο)

 

• LAMP Webserver (Apache) Database (Mysql)

 

• Samba Υπηρεσία Κοινοχρήστων Δικτύου

 

• Open SSH για την απομακρυσμένη διαχείριση μέσω κονσόλας.

Μετά την εγκατάσταση

 

>apt-get install mdadm htop iftop mc lftp vsftpd

 

Mdadm : Το πρόγραμμα για την διαχείριση του Software Raid

Htop: Πρόγραμμα για να βλέπεις τις διεργασίες του server (task manager)

Iftop: Για να βλέπουμε την κίνηση του δικτύου

Mc: File Manager σαν τον παλιό Norton Commander

Lftp: Πολύ καλός FTP Client

Vsftpd: Ο πιο εύχρηστος FTP Server

 

4. Software RAID

 

Για να μπορούμε να χειριστούμε σωστά το software RAID θα πρέπει αρχικά να έχουμε βασικές γνώσεις για το τι είναι RAID :

http://en.wikipedia.org/wiki/RAID

http://www.acnc.com/04_01_05.html

και τι είναι το software raid του Linux

http://tldp.org/HOWTO/Software-RAID-HOWTO.html

http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch26_:_Linux_Software_RAID

http://linux.yyz.us/why-software-raid.html

http://linux-raid.osdl.org/index.php/Main_Page

 

Δημιουργία συστοιχίας

 

5. Από τη θεωρία στην πράξη

 

A. Επιλέξαμε με βάση τις τωρινές τιμές του υλικού καθώς και τις αντίστοιχες ανάγκες-απαιτήσεις μας και καταλήξαμε στο εξής υλικό :

- Τροφοδοτικό : Heroichi 550Watt

- Μητρική : ASUS P5Q-EM DO

- Επεξεργαστής : Intel Pentium® Dual-Core CPU E5200 @ 2.50GHz

- Μνήμη : 2*2 GB @ 800ΜHz

- Κάρτα γραφικών : Onboard Intel 4 Series Chipset Integrated Graphics Controller

- Κάρτα δικτύου : Onboard Intel 82567LM-3 Gigabit Network Ethernet interface

- Sata Controller : Intel ICH10 Family

- Δίσκος λειτουργικού : Western Digital WDC WD5000AAKB @ 500GB

- Δίσκοι συστοιχίας : Seagate ST31500341AS @ 1.5TB

 

Συνολικό Κόστος : 1200€

 

B. Στήσαμε το υλικό σε ένα κουτάκι Thermaltake Soprano το οποίο φάνηκε τελικά αρκετά ευρύχωρο για το μέγεθός του.

 

C. Κατεβάσαμε όπως αναφέρεται πιο πάνω το τελευταίο stable ubuntu server http://www.ubuntu.com/getubuntu/download-server και το εγκαταστήσαμε χωρίς ιδιαίτερα προβλήματα.(Aκολουθούν screenshots)

 

D. Μετά το πρώτο reboot λοιπόν είμαστε έτοιμοι να διαχειριστούμε το νέο μας server, να φτιάξουμε τη συστοιχία με τους δίσκους και να παραμετροποιήσουμε το σύστημα στα μέτρα μας.

 

Ubuntu%2064-bit%20Server-2009-06-01-11-24-47.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-25-12.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-25-33.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-26-26.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-26-30.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-26-38.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-27-36.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-27-58.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-29-19.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-34-11.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-34-19.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-34-30.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-34-41.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-34-47.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-35-37.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-36-10.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-40-52.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-41-24.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-41-31.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-41-48.png

 

Ubuntu%2064-bit%20Server-2009-06-01-11-42-38.png

 

 

6. Αναλυτικές οδηγίες και έλεγχοι συστήματος

 

1.Ελέγχουμε γενικά το σύστημά μας στην εκκίνησή του καθώς και τις υπηρεσίες που ξεκινάνε.

 

>cat /var/log/messages | more
dmesg

 

2.Ξεκινάμε με το απαραίτητο update του sources.list και την εγκατάσταση μερικών βασικών προγραμμάτων :

 

>vi /etc/apt/sources.list
apt-get install vim htop iftop mdadm mc lftp vsftpd figlet hdparm hddtemp lm-sensors
htop
vi /etc/vim/vimrc

 

και βγάζουμε τα σχόλια στα σημεία που λέει για :

 

“syntax on”

“set ignorecase”

“set smartcase”

 

>sensors-detect

(για να βρει θερμοκρασίες πυρήνα – δίσκων κλπ)

 

3.Ρυθμίζουμε το locales για ελληνικά

 

>/usr/share/locales/install-language-pack el_GR
dpkg-reconfigure locales
export LC_CTYPE="el_GR"
vi /etc/profile

και προσθέτουμε την από πάνω γραμμή για να ξεκινά κάθε φορά στην κονσόλα

 

Επίσης προσθέτουμε τις εξής γραμμές στο /etc/profile

 

echo

figlet ONOMA_SERVER

echo

/my_scripts/katastasi (κάποιο πιθανό scriptaki που μας λέει διάφορα πράγματα για το σύστημα κάθε φορά που κάνουμε login,όπως π.χ. θερμοκρασίες δίσκων, κατάσταση συστοιχίας κλπ)

alias 'll'='ls -lah'

alias 'df'='df -h'

alias 'tailms'='tail -f /var/log/messages'

 

4.Ελέγχουμε αν το σύστημα είδε όλους τους σκληρούς

 

>cat /proc/partitions

 

5.Δημιουργούμε τη συστοιχία

 

>mdadm --create /dev/md0 --level=5 --chunk=256 --raid-devices=6 /dev/sd[a-f]

 

6.Ελέγχουμε τη συστοιχία

 

>mdadm -D /dev/md0
cat /proc/mdstat

 

7.Βάζουμε τη συστοιχία (το UUID της) στο mdadm.conf ώστε να τη βλέπει το σύστημα μετά από reboot μέσω του προγράμματος mdadm

 

>mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm/mdadm.conf

 

8.Benchmark για τη συστοιχία και ενδεικτική σύγκριση με έναν από τους δίσκους της (1.5TB Seagate)

 

>hdparm -Tt /dev/md0

 

/dev/md0:

Timing cached reads: 2722 MB in 2.00 seconds = 1360.85 MB/sec

Timing buffered disk reads: 1126 MB in 3.01 seconds = 374.50 MB/sec

 

>hdparm -Tt /dev/sda

 

/dev/sda:

Timing cached reads: 2698 MB in 2.00 seconds = 1349.30 MB/sec

Timing buffered disk reads: 366 MB in 3.01 seconds = 121.77 MB/sec

 

9.Κάνουμε format τη συστοιχία σε xfs filesystem

 

>apt-get install xfsprogs
mkfs.xfs /dev/md0

 

10.Τέλος χρειάζεται να κάνουμε και mount το /dev/md0 ώστε να είμαστε έτοιμοι να εκμεταλλευτούμε το χώρο

 

>mount /dev/md0 /disks
vi /etc/fstab

 

Προσθήκη της γραμμής αυτής για να αυτόματο mount :

 

>/dev/md0        /disks/         xfs     defaults        0       0

 

11.Φυσικά δεν ξεχνάμε να ρυθμίσουμε τα network interfaces καθώς και το smb.conf του samba έτσι ώστε να έχουμε κοινόχρηστη πρόσβαση από υπολογιστές με windows

 

>vi /etc/samba/smb.conf

 

>workgroup = MY_SERVERS
netbios name = MY_SERVER
server string = New File Server
security = share
unix charset = iso8859-7   (για ελληνικά)
unix password sync = yes   (για συγχρονισμό  unix - samba password)

#####  Παράδειγμα Κοινόχρηστων  #####
[disks]
       path = /disks/
       browsable = no
       read only = no

[Kati]
       comment = Ena tyxaio koinoxristo
       path = /disks/kati
       read only = yes
       guest ok = yes

 

7. Τελευταίες χρήσιμες παρατηρήσεις

 

1. Χρήσιμο θα είναι να ελέγξουμε τα δικαιώματα που έχουν οι χρήστες μας στο «μεγάλο» φάκελο /disks

 

2. Χρήσιμα επίσης , όταν μιλάμε για fileserver, είναι scriptakia για αυτοματοποιημένες δουλειές όπως μπορεί να είναι μια συγκεκριμένη μετονομασία, ο υπολογισμός του χώρου που καταλαμβάνουν τα δεδομένα μας, η καθημερινή αλλαγή και εφαρμογή των επιθυμητών permissions

 

>vi /etc/crontab

 

>Π.χ. 00 7 * * *      root    /my_scripts/ola