Κατά τη διάρκεια της αρχικοποίησης, στην εκκίνηση του συστήματος,
ο πυρήνας του FreeBSD θα δημιουργήσει τα απαραίτητα αρχεία για κάθε
συσκευή που ανιχνεύει. Αυτή η μέθοδος ανίχνευσης συσκευών, μπορεί να
δημιουργήσει προβλήματα. Για παράδειγμα, τι θα γίνει αν προσθέσουμε ένα
νέο δίσκο USB; Είναι αρκετά πιθανό μια συσκευή
μνήμης flash να πάρει το όνομα da0
και η
αρχική da0
να μετακινηθεί στο
da1
. Αυτό θα προκαλέσει προβλήματα στην
προσάρτηση των συστημάτων αρχείων, αν υπάρχουν οι αντίστοιχες
καταχωρίσεις τους στο /etc/fstab
, και μπορεί ακόμα
και να παρεμποδίσει την κανονική εκκίνηση του συστήματος.
Μια λύση είναι να ρυθμίσετε τις συσκευές SCSI με
τέτοιο τρόπο, ώστε η αρίθμηση τους να είναι συνεχόμενη. Έτσι, κάθε
φορά που προσθέτετε μια νέα συσκευή στον ελεγκτή SCSI
θα είστε σίγουρος ότι θα λάβει αριθμό που δεν έχει χρησιμοποιηθεί.
Αλλά τι γίνεται με τις συσκευές USB που μπορεί να
αντικαταστήσουν τον κύριο SCSI δίσκο; Αυτό μπορεί
πράγματι να συμβεί, καθώς οι συσκευές USB
ανιχνεύονται κατά βάση πριν από τον ελεγκτή SCSI.
Μια λύση είναι να βάζετε τις συσκευές αυτές μόνο μετά την εκκίνηση
του συστήματος. Μια άλλη μέθοδος είναι να χρησιμοποιείτε μόνο μια
συσκευή τύπου ATA και να μην καταχωρείτε ποτέ τους
δίσκους SCSI στο /etc/fstab
.
Υπάρχει ωστόσο καλύτερη λύση. Χρησιμοποιώντας το βοηθητικό
πρόγραμμα glabel
, ένας διαχειριστής ή χρήστης, μπορεί
να αποδώσει ετικέτες στις συσκευές δίσκων και να τις χρησιμοποιήσει στο
/etc/fstab
, αντί για τα συμβατικά ονόματα
συσκευών. Επειδή η glabel
αποθηκεύει την ετικέτα
στον τελευταίο τομέα του κάθε παροχέα (συσκευής δίσκου), η ετικέτα
διατηρείται και μετά από την επανεκκίνηση του συστήματος.
Χρησιμοποιώντας αυτή την ετικέτα ως όνομα συσκευής, θα μπορείτε να
προσαρτήσετε πάντα το σύστημα αρχείων, άσχετα με το πραγματικό όνομα
συσκευής που έχει αποδοθεί στο δίσκο.
Δεν χρειάζεται φυσικά να τονίσουμε ότι αυτή η ετικέτα θα πρέπει
να είναι μόνιμη. Το βοηθητικό πρόγραμμα glabel
μπορεί να δημιουργήσει τόσο μόνιμες όσο και προσωρινές ετικέτες.
Μόνο οι μόνιμες ετικέτες διατηρούνται ανέπαφες μετά από μια
επανεκκίνηση. Δείτε τη σελίδα manual της glabel(8) για
περισσότερες πληροφορίες σχετικά με τα είδη των ετικετών.
Υπάρχουν δύο τύποι ετικετών, η γενική ετικέτα και η ετικέτα
συστήματος αρχείων. Οι ετικέτες μπορεί να είναι προσωρινές ή μόνιμες.
Οι μόνιμες ετικέτες μπορούν να δημιουργηθούν με τις εντολές
tunefs(8) ή newfs(8). Στην περίπτωση αυτή, θα δημιουργηθούν
σε ένα υποκατάλογο του /dev
.
Για παράδειγμα, οι ετικέτες συσκευών με σύστημα αρχείων
UFS2, θα δημιουργηθούν στον κατάλογο /dev/ufs
. Μόνιμες ετικέτες μπορούν
επίσης να δημιουργηθούν με χρήση της εντολής
glabel label
. Οι ετικέτες αυτές δεν εξαρτώνται από
το σύστημα αρχείων, και δημιουργούνται στον κατάλογο
/dev/label
.
Οι ετικέτες προσωρινού τύπου, χάνονται σε κάθε επανεκκίνηση του
συστήματος. Οι ετικέτες αυτές δημιουργούνται στον κατάλογο
/dev/label
και είναι τέλειες
για πειραματισμούς. Μπορείτε να δημιουργήσετε προσωρινές ετικέτες
με την εντολή glabel create
. Για περισσότερες
πληροφορίες, διαβάστε τη σελίδα manual της glabel(8).
Για να δημιουργήσετε μια μόνιμη ετικέτα για ένα σύστημα αρχείων UFS2, χωρίς να καταστρέψετε τα δεδομένα που περιέχει, χρησιμοποιήστε την ακόλουθη εντολή:
#
tunefs -L home
/dev/da3
Αν το σύστημα αρχείων είναι γεμάτο, η παραπάνω εντολή μπορεί να προκαλέσει καταστροφή δεδομένων. Ωστόσο, αν το σύστημα αρχείων είναι γεμάτο, στόχος σας θα πρέπει να είναι να διαγράψετε τα αρχεία που δεν χρησιμοποιούνται, και όχι να προσθέτετε ετικέτες.
Θα πρέπει τώρα να υπάρχει μια ετικέτα στον κατάλογο
/dev/ufs
η οποία μπορεί να
προστεθεί στο /etc/fstab
:
Το σύστημα αρχείων δεν πρέπει να είναι προσαρτημένο καθώς
εκτελείτε την εντολή tunefs
.
Μπορείτε τώρα να προσαρτήσετε το σύστημα αρχείων με το συνήθη τρόπο:
#
mount /home
Από εδώ και πέρα, και όσο το άρθρωμα
geom_label.ko
φορτώνεται στον πυρήνα μέσω του
/boot/loader.conf
ή εφόσον έχετε βάλει την
επιλογή GEOM_LABEL
στον πυρήνα σας, ακόμα και αν
το όνομα της συσκευής αλλάξει, δεν θα έχει καμιά δυσμενή επίδραση
στο σύστημα σας.
Μπορείτε επίσης να δημιουργήσετε συστήματα αρχείων με
προεπιλεγμένη ετικέτα, χρησιμοποιώντας την επιλογή
-L
στην εντολή newfs
. Δείτε την
σελίδα manual του newfs(8) για περισσότερες πληροφορίες.
Μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή για να καταστρέψετε μια ετικέτα:
#
glabel destroy home
Το επόμενο παράδειγμα δείχνει πως μπορούν να δοθούν ετικέτες στις κατατμήσεις του δίσκου εκκίνησης.
Δημιουργώντας μόνιμες ετικέτες στις κατατμήσεις του δίσκου
εκκίνησης, το σύστημα σας θα συνεχίσει να εκκινεί κανονικά ακόμα
και αν μεταφέρετε το δίσκο σε άλλο ελεγκτή ή ακόμα και σε
διαφορετικό σύστημα. Στο παράδειγμα μας, θεωρούμε ότι
χρησιμοποιείται ένας δίσκος ATA, ο οποίος
αναγνωρίζεται από το σύστημα ως ad0
.
Θεωρούμε επίσης ότι χρησιμοποιείται η συνηθισμένη διάταξη
κατατμήσεων του FreeBSD, που περιλαμβάνει τις κατατμήσεις
/
,
/var
,
/usr
και
/tmp
όπως επίσης και μια
κατάτμηση swap.
Επανεκκινήστε το σύστημα, και όταν εμφανιστεί η προτροπή του loader(8), πιέστε το 4 για να πραγματοποιηθεί εκκίνηση σε κατάσταση ενός χρήστη. Έπειτα, δώστε τις ακόλουθες εντολές:
#
glabel label rootfs /dev/ad0s1a
GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs
#
glabel label var /dev/ad0s1d
GEOM_LABEL: Label for provider /dev/ad0s1d is label/var
#
glabel label usr /dev/ad0s1f
GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr
#
glabel label tmp /dev/ad0s1e
GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp
#
glabel label swap /dev/ad0s1b
GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap
#
exit
Η εκκίνηση θα συνεχιστεί κανονικά και το σύστημα θα έλθει σε
κατάσταση πολλαπλών χρηστών (multi-user).
Μετά το τέλος της εκκίνησης, επεξεργαστείτε το αρχείο
/etc/fstab
και αλλάξτε τα συμβατικά ονόματα
συσκευών με τις αντίστοιχες ετικέτες. Το τελικό αρχείο
/etc/fstab
θα μοιάζει με το παρακάτω:
Μπορείτε τώρα να επανεκκινήσετε το σύστημα. Αν όλα πήγαν καλά,
η εκκίνηση θα είναι κανονική, και η εντολή mount
θα δείξει:
#
mount
/dev/label/rootfs on / (ufs, local)
devfs on /dev (devfs, local)
/dev/label/tmp on /tmp (ufs, local, soft-updates)
/dev/label/usr on /usr (ufs, local, soft-updates)
/dev/label/var on /var (ufs, local, soft-updates)Ξεκινώντας από το FreeBSD 7.2, το glabel(8) υποστηρίζει
ένα νέο είδος ετικέτας για συστήματα αρχείων UFS,
που βασίζεται σε ένα μοναδιαίο αναγνωριστικό τους,
το ufsid
. Οι ετικέτες αυτές βρίσκονται στον
κατάλογο /dev/ufsid
,
δημιουργούνται αυτόματα κατά την εκκίνηση του συστήματος και είναι
δυνατόν να χρησιμοποιηθούν για την προσάρτηση κατατμήσεων μέσω του
/etc/fstab
. Μπορείτε να χρησιμοποιήσετε την
εντολή glabel status
για να λάβετε μια λίστα
των συστημάτων αρχείων με τις αντίστοιχες ufsid
ετικέτες τους:
%
glabel status
Name Status Components
ufsid/486b6fc38d330916 N/A ad4s1d
ufsid/486b6fc16926168e N/A ad4s1fΣτο παραπάνω παράδειγμα, το ad4s1d
αντιπροσωπεύει το σύστημα αρχείων /var
, ενώ το
ad4s1f
αντιπροσωπεύει το σύστημα αρχείων
/usr
. Χρησιμοποιώντας τις
τιμές ufsid
που φαίνονται, η προσάρτηση αυτών
των κατατμήσεων μπορεί να γίνει με τις παρακάτω καταχωρίσεις στο
/etc/fstab
:
Οποιαδήποτε κατάτμηση διαθέτει αναγνωριστικό
ufsid
μπορεί να προσαρτηθεί με τον ίδιο τρόπο,
χωρίς να υπάρχει πλέον ανάγκη να δημιουργηθεί μόνιμη ετικέτα
χειροκίνητα. Η προσάρτηση μέσω ετικέτας ufsid
,
παρέχει το πλεονέκτημα της ανεξαρτησίας από το όνομα συσκευής, το
οποίο παρέχουν και οι μόνιμες ετικέτες.
Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την
τεκμηρίωση πριν να επικοινωνήσετε με την
<questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην
<doc@FreeBSD.org>.