FreeBSD ερωτήσεις

Giorgos Keramidas keramida at ceid.upatras.gr
Wed Nov 17 13:09:29 EET 2004


On 2004-11-17 12:23, Dimitris <lenis at inp.demokritos.gr> wrote:
>
> Ε τοτε, στο καπακι, παρε μια Cross-Ερωτηση bsd-linux:
> Τελικα υπαρχει τροπος να δω τα reiserfs partitions μου απο bsd?

Όχι.  Ο Hans Reiser δε δέχεται με κανένα τρόπο να αλλάξει η άδεια του
ReiserFS.  Η άδεια αυτή είναι εντελώς ασύμβατη σε κάποια πράγματα με
το BSD license όμως, οπότε δε γίνεται να ενσωματωθεί υποστήριξη για
ReiserFS στο επίσημο BSD source tree.

Έτσι, ο μόνος σίγουρος τρόπος να δεις ReiserFS partitions από BSD
είναι μέσω NFS mount :-P

> Τροπος να δω τα bsd partitions μου απο λινουξ ?

Ναι, ως ένα σημείο.  Το Linux έχει υποστήριξη για UFS, αλλά δεν είμαι
σίγουρος αν είναι ολοκληρωμένη η υποστήριξη που έχει ή ούτε καν αν
υπάρχει κάποιου είδους υποστήριξη για το UFS2.

Μπορείς να βάλεις στον πυρήνα σου υποστήριξη για UFS partitions (είναι
η επιλογή CONFIG_UFS_FS και οι σχετικές με αυτή).

Υπάρχει ένα μικρό πρόβλημα στην υποστήριξη του Linux για UFS
partitions.  Δεν τα πάει και πολύ καλά με τα blocks & fragments
που χρησιμοποιεί το UFS.  Για παράδειγμα, σε διάφορα σημεία του ufs.c
έχει ελέγχους όπως:

        if (uspi->s_fsize < 512) {
                printk(KERN_ERR "ufs_read_super: fragment size %u is too small\n",
                        uspi->s_fsize);
                goto failed;
        }
        if (uspi->s_fsize > 4096) {
                printk(KERN_ERR "ufs_read_super: fragment size %u is too large\n",
                        uspi->s_fsize);
                goto failed;
        }

Ο πρώτος από αυτούς έχει νόημα.  Τα fragments πρέπει να είναι
τουλάχιστον 512 bytes, αφού δεν νοείται fragment ενός αρχείου που να
καταλαμβάνει λιγότερο από 1 disk sector.  Βέβαια δεν είναι κι ότι
καλύτερο να υπάρχει εκεί πέρα το "μαγικό" νούμερο 512, αφού σε κάποια
μελλοντική αρχιτεκτονική δίσκων μπορεί το ελάχιστο sector size να είναι
100 bytes ή ακόμα και 1024 bytes.  Εγώ θα το έγραφα κάπως σαν:

	if (uspi->s_fsize < DBLKMIN)

ή ακόμα καλύτερα θα διάβαζα το ελάχιστο block size από το 'device' στο
οποίο φτιάχνεται το συγκεκριμένο filesystem.  Μπορεί να είναι
διαφορετικό το ελάχιστο disk block size από συσκευή σε συσκευή.  Τέλος
πάντων... ξεφεύγω λίγο :-)

Το πιο σημαντικό είναι πως το δεύτερο if block από τα παραπάνω είναι
βλακεία.  Δεν υπάρχει κανένας λόγος να περιορίσει κανείς το fragment
size σε λιγότερο από 4096 bytes.  Κάποτε, ίσως αυτό να ήταν περιορισμός
τον οποίο επέβαλλε το filesystem design του FreeBSD.  Σήμερα πλέον, τα
μοντέρνα BSD συστήματα δε βάζουν περιορισμό στο fragment size.

Π.χ. στο FreeBSD 6.0-CURRENT, έφτιαξα για πλάκα ένα virtual filesystem
με μέγεθος 32 Mbyte, block:fragment ratio 8 και fragment size 8192 bytes.

: orion:/tmp# dd if=/dev/zero of=image.bin bs=1024 count=32768
: 32768+0 records in
: 32768+0 records out
:
: orion:/tmp# fdisk -I -B -b /boot/boot0 /dev/md10
: ******* Working on device /dev/md10 *******
: fdisk: invalid fdisk partition table found
:
: orion:/tmp# fdisk -I -B -b /boot/boot0 /dev/md10
: ******* Working on device /dev/md10 *******
:
: orion:/tmp# bsdlabel -w /dev/md10s1
:
: orion:/tmp# bsdlabel  /dev/md10s1
: # /dev/md10s1:
: 8 partitions:
: #        size   offset    fstype   [fsize bsize bps/cpg]
:   a:    64181       16    unused        0     0
:   c:    64197        0    unused        0     0         # "raw" part, don't edit
:
: orion:/tmp# newfs -b 65536 -f 8192 /dev/md10s1a
: /dev/md10s1a: 31.3MB (64176 sectors) block size 65536, fragment size 8192
:         using 4 cylinder groups of 8.00MB, 128 blks, 256 inodes.
: super-block backups (for fsck -b #) at:
:  256, 16640, 33024, 49408
:
: orion:/tmp# mount /dev/md10s1a /mnt
:
: orion:/tmp# df /mnt
: Filesystem   1K-blocks Used Avail Capacity  Mounted on
: /dev/md10s1a     31184   16 28680     0%    /mnt

Υπάρχουν κι άλλα σημεία στα οποία το UFS του Linux έχει λίγο bug.
Αν αντιμετωπίσεις πρόβλημα με κάποιο UFS partition που προσπαθείς να
το προσπελάσεις από Linux, δοκίμασε ένα από τα εξής:

1. Να το προσπελάσεις μέσω δικτύου, χρησιμοποιώντας NFS.

2. Να μεταφέρεις τα δεδομένα μέσω ενός "προσωρινού" VFAT partition --
το οποίο υποστηρίζουν όλοι, σχετικά καλά.

3. Να μου πεις τι έχεις δοκιμάσει, ποια έκδοση του Linux kernel έχεις
και τι *ΑΚΡΙΒΩΣ* σου λέει το αποτυχημένο mount.




More information about the Linux-greek-users mailing list