Útmutató az "unstable" btrfs teszteléséhez

Címkék

(E szösszenet megírásának apropója, hogy Chris Mason ma jelezte, hogy új btrfs lemezformátum került kiadásra, illetve hogy a héten még több ilyen változás várható annak érdekében, hogy a fejlesztők előállhassanak a végleges formátummal.)

Ahogy közeledik a btrfs fejlesztése az 1.0-s állapothoz, úgy kap egyre nagyobb hangsúlyt a tesztelés fontossága. A tesztelés fontos a bugok megtalálása szempontjából. Minél többen teszteljük és jelentjük be a bugokat, annál nagyobb az esélye annak, hogy kevesebb hibával kerül majdan kiadásra az anyag a szélesebb publikum számára.
Mivel a végleges lemezformátum még nem készült el, a tesztelés csak az aktuális fejlesztői állapotot tudja vizsgálni. Azonban remélhetőleg hamarosan bejelentik a fejlesztők a végleges formátumot, így nem árt tudni, hogy hogyan lehet nekifogni a tesztelésnek.

A btrfs teszteléséhez szükség van a kernel modul és a "progs" segédprogramok forrására. A btrfs fejlesztői az aktuális kódot git tárolókban tárolják. A git tárolókhoz a git telepítésével lehet hozzáférni.

A git telepítése:

# apt-get install git git-core

A forráskódok beszerzése:

Készítsünk egy munkakönyvtárat.

# mkdir devel
# mkdir devel/btrfs
# cd devel/btrfs

A kernel modul és a "progs" forráskódokat két külön tárolóból tudjuk kinyerni.

A kernel modul forrásához az alábbi módon juthatunk:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable-standalone.git

A "progs" forrásához pedig így:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs-unstable.git

A megfelelő parancsok kiadása után a devel/btrfs könyvtárunkban két könyvtárat találunk:

# ls -la
drwxr-xr-x 3 trey trey 3536 2008-12-02 18:07 btrfs-progs-unstable
drwxr-xr-x 4 trey trey 4128 2008-12-02 18:08 btrfs-unstable-standalone

A források frissítéséhez legközelebb már nem kell letölteni az teljes forrásfákat, hanem a megfelelő könyvtárba lépve egy "git pull" paranccsal naprakészre hozható az adott forrásfa.

Példa:


# cd devel/btrfs/btrfs-unstable-standalone/
# git pull
remote: Counting objects: 85, done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 65 (delta 50), reused 44 (delta 29)
Unpacking objects: 100% (65/65), done.
From git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable-standalone
   9648265..6351dc2  master     -> origin/master
Updating 9648265..6351dc2
Fast forward
 ctree.c            |    2 +-
 ctree.h            |   49 +++++++++++++++++++++++++++++++-------
 disk-io.c          |   67 +++++++++++++++++++++++++++++++++++++++------------
 extent-tree.c      |   12 ++++----
 extent_io.c        |   37 +++++++++++++---------------
 file-item.c        |   56 ++++++++++++++++++++++++------------------
 file.c             |    8 +++---
 free-space-cache.c |    6 +++-
 inode-item.c       |    2 +-
 inode.c            |   51 ++++++++++-----------------------------
 ioctl.c            |   39 +++++++++++++++--------------
 root-tree.c        |    2 +
 struct-funcs.c     |   17 +++++++++----
 super.c            |   16 +++++++----
 transaction.c      |    4 ---
 tree-log.c         |   15 +++++++----
 volumes.c          |   30 +++++++++++-----------
 volumes.h          |    4 +-
 zlib.c             |    1 +
 19 files changed, 240 insertions(+), 178 deletions(-)

A kernelmodul fordítása:

A kernel modul fordításához szükség van a futó kernel header filejaira. Amennyiben nincsenek telepítve, telepítsük fel a megfelelő csomagot.

# apt-get install linux-headers-`uname -r`

Ha telepítve van a rendszerünkre, akkor nekiállhatunk a fordításnak:

# cd devel/btrfs/btrfs-unstable-standalone
# make
CC [M] /home/trey/devel/btrfs/btrfs-unstable-standalone/super.o
CC [M] /home/trey/devel/btrfs/btrfs-unstable-standalone/ctree.o
[...]
CC [M] /home/trey/devel/btrfs/btrfs-unstable-standalone/compression.o
LD [M] /home/trey/devel/btrfs/btrfs-unstable-standalone/btrfs.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/trey/devel/btrfs/btrfs-unstable-standalone/btrfs.mod.o
LD [M] /home/trey/devel/btrfs/btrfs-unstable-standalone/btrfs.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.27-9-generic'

A fordítás eredménye egy "btrfs.ko" kernelmodul. A kernelmodult másoljuk a megfelelő helyre pl. /lib/modules/`uname -r`/kernel/fs/btrfs/btrfs.ko, majd adjuk ki a "depmod -a" parancsot. Ezután a kernelmodul betölthető:

# modprobe btrfs

Ellenőrzés:

root@alderaan:/home/trey/devel/btrfs/btrfs-unstable-standalone# lsmod | grep btrfs
btrfs 407604 0
zlib_deflate 28312 1 btrfs
libcrc32c 10752 1 btrfs

A "progs" segédprogramok lefordítása:

A fordítás előfeltétele, hogy telepítve legyen rendszerünkön az "uuid-dev" csomag.

# apt-get install uuid-dev

Ezután:

# cd devel/btrfs/btrfs-progs-unstable/
# make
# make install
install -m755 -d /usr/local/bin
install btrfsctl btrfsck mkfs.btrfs debug-tree btrfs-show btrfs-vol btrfstune btrfs-image /usr/local/bin
if [ -e btrfs-convert ]; then install btrfs-convert /usr/local/bin; fi

A btrfs alapvető használata semmiben sem különbözik a többi filerendszerétől:

Készítünk egy filerendszert:

# mkfs.btrfs /dev/sdb1
# fs created label (null) on /dev/sdb1
nodesize 4096 leafsize 4096 sectorsize 4096 size 74.56GB
Btrfs v0.16-25-gd45ee76

Mount-oljuk:

# mount /dev/sdb1 /media/coolermaster/

Ellenőrizzük le:

# mount
[...]
/dev/sdb1 on /media/coolermaster type btrfs (rw)
[...]

Amíg a lemezformátum nem nyeri el a végleges formáját, addig minden egyes formátumváltásnál le kell menteni a filerendszert (ha van rajta adat), majd újra létre kell hozni az új kernel modul / "progs" segédprogram páros "alatt". Ezután vissza lehet állítani az adatokat (ha voltak), illetve lehet használni a filerendszert.

Kezdődhet a tesztelés! A hibákat érdemes a btrfs levezelési listára beküldeni.

Hozzászólások

Nagyobb a médiavisszhangja ennek a btrfsnek, mint a zfs-nek, lassan az öreganyám is ezzel fog bétateszterkedni.
Ebből is látszik, hogy a Sun nem ért a marketinghez! :)

Van erről a Chrisről fénykép? Bekeretezném.

Ah YESS!
A kedvenc évszakom!

Az csak nem egy Chris Mason marionett a jobb kezében? Jujj de izgi, fsckzhatunk és izgulhatunk az adatainkért a fa alatt, miközben karácsonyi dalokat énekelgetve próbálunk keresni valamit az interneten a google://btrfs recovery segítségével!

(tudom, tudom, karácsonyra nem is a mikulás hozza a btrfs-t, hanem a lájnuszka!)

Help nekem!
Ha még nincs végleges lemezformátum, akkor miért kell kiadni tesztelésre? Most még túl sok minden változhat, nem?

Ez egy "unstable" git repo. A benne levő kódot ebben az állapotában még senki sem adta ki tesztelésre. Ez a cikk azoknak szól, akik a fejlesztés folyamán segíteni kívánnak a tesztelőknek az alapvető hibák kiszűrésében. Például különböző disztribúciókon, kernel verziókon lefordítják, teszteket végeznek, benchmarkolnak és ezek eredményét visszaküldik a listára. Aki fejlesztett már valamit is életében, az tudja, hogy a tesztelés - a hardverek széles skáláján - milyen fontos dolog.

A btrfs v0.15 környékén például amikor a filerendszer benchmarkokat csináltam, belefutottam egy bugba. Szóltam Chris-nek, aki nem tudta reprodukálni a hibát a tesztgépein. Erre adtam neki egy account-ot arra a HP szerverre, amin a teszteket végeztem. Kb. 10 perc alatt kijavította a hibát. Erről szól ez.

--
trey @ gépház

Desktop felhasználás mellett hoz majd ez a filerendszer valami előnyt, vagy plusz szolgáltatást?

Nagy Péter

nitpicking, de 'git pull' es nem 'git-pull', 1.6.0 ota az utobbi nem is mukodik alapbol. bovebben itt.

hmm nem is olyan rossz :) A Jaunty Alpha2-höz fordítva már szépen megy (Interpiddel nem) :)

Tetszik! :D