shithub: wiki.9front.org

ref: 4f56c67fda52b2d61cd11cc93a3281217d224eaa
dir: /cwfs.md/

View raw version
cwfs(4) tips
============

No-dump configuration
---------------------

A cheap VPS or an SD card lack the storage capacity for running a usable
default `cwfs(4)` setup with a big WORM partition and daily dumps.
The go-to solution is the `hjfs(4)` file system, which doesn't
use a dedicated WORM partition and doesn't do daily dumps by default.
However, it has several performance problems and is not as well tested.

The `cwfs` file system can be configured in lots of ways beyond the
default cache-worm + other configuration supported by the 9front
installer.

The desired configuration we're going to cover is a single `main`
file server tree backed by a simple disk file system - the same type
used by the `other` tree in the default setup.

To do this we're going to partition the disk appropriately and override
the `mountcwfs` stage of the 9front installer with a replacement
[script](http://a-b.xyz/23/666a) that will configure `cwfs`
appropriately. The rest of the installation and most of the
subsequent system operation remain unaffected.

Start by booting from the installation media. Configure networking
with `ip/ipconfig(8)` and fetch the replacement `mountcwfs` script,
or put the script on a flash drive:

	webfs
	ramfs
	hget http://a-b.xyz/23/666a >/tmp/mountcwfs
	chmod +x /tmp/mountcwfs
	
Override the `mountcwfs` stage using `bind(1)`:

	bind /tmp/mountcwfs /bin/inst/mountcwfs

Run `inst/start` and complete the stages up to `preppart` as you would
normally.  At `preppart`, delete the default partitions and create one
named `fsmain` with a desired size:

	d other
	d fscache
	d fsworm
	a fsmain 123456 .+100%
	w
	q

Make sure to "ream" the new partition at the next step.

Complete the rest of the installation, reboot. That is all.

Adding A drive to the worm
--------------------------

On long living installations or ones that hold a lot of larger files
you may want to add a drive to WORM when it starts to fill up.

First, format the disk, if you are adding to a current install
you probably want one large `plan9` partition containing a single `fsworm`
partition:

	disk/mbr -m /386/mbr /dev/sdD0/data # If your using gpt I can't help you here
	disk/fdisk -a /dev/sdD0/data # disk/edisk for gpt
	# this will partition all unpartitioned space as a plan9 partition,
	# if it looks correct type w to save and then q to quit
	disk/prep -a fsworm /dev/sdD0/plan9
	# this will create an fsworm partition w and q if it looks correct

Now reboot the computer and at bootargs start cwfs with -c to enter
configuration console. At the console enter a new configuration which
includes the newly created `fsworm` partition.
Note that device names are likely to be different in your case.

	config: filsys main c(/dev/sdC0/fscache)((/dev/sdC0/fsworm)(/dev/sdD0/fsworm))
	config: filsys dump o
	config: end

After exiting the console the system should boot with the new partition
added to the WORM. Run:

	con -C /srv/cwfs.cmd
	statw

to confirm. `wsize * 16000` is the size of your WORM.

No refunds

CWFS with WORM on a separate drive
----------------------------------

### What you do is what you get

These instructions assume you want to set up CWFS on two drives - one
containing the cache filesystem, and the other containing the WORM.

This process has been tested on MBR installations, but should be
extrapolable to GPT as well with minor changes (see end note if using
GPT, please report the results).

### Initialize the disks

For this example `sd00` will be the cache drive, `sd01` will be the
WORM.

Assuming your drives are new, for a MBR partitioning scheme, you want
to first create a MBR partition table (skip in case of GPT):

	disk/mbr -a /386/mbr /dev/sd00/data 
	disk/mbr -a /386/mbr /dev/sd01/data

You need to add a `plan9` partition to both disks, otherwise the
installer will not see them (use `disk/edisk` in case of GPT):

	disk/fdisk -baw /dev/sd00/data disk/fdisk -baw /dev/sd01/data

Now it is time to subdivide the plan9 partitions on both disks.  We
will then subpartition the cache, and worm disks:

	disk/prep -bw -a^(9fat nvram other fscache) /dev/sd00/plan9
	disk/prep -bw -a fsworm /dev/sd01/plan9

### Finally

Start your installation as usual: select `cwfs64x` as your filesystem,
skip partdisk and prepdisk.  When going through the `mountfs` step,
make sure to point to the right partitions on each function.