まず、-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 でも安全らしい。
セコメントをする