gjournal を新規に作る2008年01月25日 11時05分16秒

一パーティションを壊して、新規に gjournal を作る。このパーティションにあるデータは既に古いので、壊れても差し仕えない。むしろ、このデータは使いようが無い。どうせ、一つしかパーティションが無いので、データとジャーナルを同じパーティション上に置く。

まず、-j jsize で指定する大きさを調べる。


% vi /usr/src/sbin/geom/class/geom_jornal.c
                if (jsize == -1) {
                        /*
                         * No journal size specified. 1GB should be safe
                         * default.
                         */
                        jsize = 1073741824ULL;
                } else {
                        if (jsize < 104857600) {
                                gctl_error(req, "Journal too small.");
                                return;
                        }
                        if ((jsize % ssize) != 0) {
                                gctl_error(req, "Invalid journal size.");
                                return;
                        }
                }

初期値は 1GB で、キロバイト単位で指定するようだ。


# bsdlabel /dev/ad0s3
# /dev/ad0s3:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  1048576       16    4.2BSD     2048 16384     8
  b:  2097152  1048592    unused        0     0
  c: 20964825        0    unused        0     0         # "raw" part, don't edit
  d:  6291456  3145744    4.2BSD     2048 16384 28552
  e: 11527625  9437200    4.2BSD     2048 16384 28552

ad0s3e を使う。ここには古いシステムの /usr が入っている、6.1-RELEASE 時代のだ。7.0 系に既に移行をしているので、データを保存する理由はない。


# kldload geom_journal
# gjournal label /dev/ad0s3e
gjournal: File system exists on /dev/ad0s3e and this operation would destroy it.
Use -f if you really want to do it.

既にある UFS パーティションを認識して、警告を出してきた。消してもかまわないので、-f を与えて強制する。

# gjournal label -f /dev/ad0s3e
# newfs -J /dev/ad0s3e.journal 
/dev/ad0s3e.journal: 4604.7MB (9430472 sectors) block size 16384, fragment size 2048
        using 26 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.
super-block backups (for fsck -b #) at:
 160, 376512, 752864, 1129216, 1505568, 1881920, 2258272, 2634624, 3010976,
 3387328, 3763680, 4140032, 4516384, 4892736, 5269088, 5645440, 6021792,
 6398144, 6774496, 7150848, 7527200, 7903552, 8279904, 8656256, 9032608,
 9408960

.jornal が付いたデバイスができる。 newfs に -J を追加し、ジャーナルをとるように指定する。
  
# mount -oasync /dev/ad0s3e.journal /mnt/ufs
# mount 
...
/dev/ad0s3e.journal on /mnt/ufs (ufs, asynchronous, local, gjournal)

gjournal を使っていると、async でも安全らしい。

前回次回