19.13. Netwerk-, geheugen-, en bestandsgebaseerde bestandssystemen

Geherstructureerd en verbeterd door Marc Fonvieille.

Naast de schijven die fysiek in de computer zitten, diskettes, CD's, harde schijven, enzovoort, worden er ook andere vormen van schijven door FreeBSD begrepen: de virtuele schijven.

Dit omvat netwerkbestandssystemen zoals het Network File System en Coda, geheugengebaseerde bestandssystemen en bestandsgebaseerde bestandssystemen.

Nagelang de gebruikte versie van FreeBSD, zijn er andere gereedschappen voor het aanmaken en gebruiken van bestandsgebaseerde en geheugengebaseerde bestandssystemen.

Opmerking: Gebruik devfs(8) om de apparaatnodes transparant voor de gebruiker toe te wijzen.

19.13.1. Bestandsgebaseerd bestandssysteem

Met mdconfig(8) kunnen geheugenschijven, md(4), ingesteld worden en aangezet worden. Om mdconfig(8) te gebruiken, moet de module md(4) geladen worden of ondersteuning aan het kernelinstellingenbestand toegevoegd worden:

device md

Het commando mdconfig(8) ondersteunt drie types geheugen-gebaseerde virtuele schijven: geheugenschijven die met malloc(9) toegewezen zijn, geheugenschijven die een bestand als basis gebruiken en geheugenschijven die swapruimte als basis gebruiken. Een mogelijk gebruik is het aankoppelen van een beeld van een diskette of CD dat in een bestand bewaard wordt.

Om een bestaand beeld van een bestandssysteem aan te koppelen:

Voorbeeld 19-3. mdconfig gebruiken om een bestaand beeld van een bestandssysteem aan te koppelen

# mdconfig -a -t vnode -f schijfbeeld -u 0
# mount /dev/md0 /mnt

Om een nieuw beeld van een bestandssysteem aan te maken met mdconfig(8):

Voorbeeld 19-4. Nieuwe bestandsgebaseerde schijf aanmaken met mdconfig

# dd if=/dev/zero of=nieuwbeeld bs=1k count=5k
5120+0 records in
5120+0 records out
# mdconfig -a -t vnode -f nieuwbeeld -u 0
# bsdlabel -w md0 auto
# newfs md0a
/dev/md0a: 5.0MB (10240 sectors) block size 16384, fragment size 2048
	using 4 cylinder groups of 1.25MB, 80 blks, 192 inodes.
super-block backups (for fsck -b #) at:
 160, 2720, 5280, 7840
# mount /dev/md0a /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md0a       4710    4  4330     0%    /mnt

Indien het eenheidsnummer niet met de optie -u gespecificeerd wordt, gebruikt mdconfig(8) de automatische toewijzing van md(4) om een ongebruikt apparaat te selecteren. De naam van het toegewezen apparaat wordt op stdout weergegeven als md4. Meer details staan in de hulppagina van mdconfig(8).

Het commando mdconfig(8) is erg nuttig, hoewel het veel opdrachten vergt om een bestandsgebaseerd bestandssysteem aan te maken. FreeBSD wordt met mdmfs(8) geleverd. Dit programma stelt een md(4)-schijf in door gebruik te maken van mdconfig(8), zet er een bestandssysteem op door gebruik te maken van newfs(8) en koppel het aan door gebruik te maken van mount(8). Om hetzelfde bestandssysteembeeld als hierboven aan te maken en aan te koppelen:

Voorbeeld 19-5. Instellen en aankoppelen van een bestandsgebaseerde schijf met mdmfs

# dd if=/dev/zero of=nieuwbeeld bs=1k count=5k
5120+0 records in
5120+0 records out
# mdmfs -F nieuwbeeld -s 5m md0 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md0        4718    4  4338     0%    /mnt

Als de optie md zonder eenheidsnummer gebruikt wordt, gebruikt mdmfs(8) de automatische toewijzing van md(4) om automatisch een ongebruikt apparaat te selecteren. Meer details staan in de hulppagina van mdmfs(8).

19.13.2. Geheugengebaseerd bestandssysteem

Voor een geheugen gebaseerd bestands systeem moet normaal gesproken “wisselbestand geheugen” gebruikt worden. Gebruik maken van wisselbestand geheugen wil niet perse zeggen dat de geheugen schijf direct in het wisselbestand gezet wordt, maar dat het bestand naar het wisselbestand geschreven kan worden indien nodig. Het is ook mogelijk om malloc(9) gebaseerde geheugen schijven te maken, maar door hiervan gebruik te maken kan het gebeuren dat het systeem crashed als de kernel uit het geheugen loopt.

Voorbeeld 19-6. Nieuwe geheugengebaseerde schijf aanmaken met mdconfig

# mdconfig -a -t swap -s 5m -u 1
# newfs -U md1
/dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
	using 4 cylinder groups of 1.27MB, 81 blks, 192 inodes.
	with soft updates
super-block backups (for fsck -b #) at:
 160, 2752, 5344, 7936
# mount /dev/md1 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md1        4718    4  4338     0%    /mnt

Voorbeeld 19-7. Nieuwe geheugengebaseerde schijf aanmaken met mdmfs

# mdmfs -s 5m md2 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md2        4846    2  4458     0%    /mnt

19.13.3. Geheugenschijf van het systeem afkoppelen

Als een geheugen- of bestandsgebaseerd bestandssysteem niet gebruikt wordt, dienen alle bronnen aan het systeem vrijgegeven te worden. Koppel als eerste het bestandssysteem af, gebruikt daarna mdconfig(8) om de schijf van een systeem los te koppelen en de bronnen vrij te geven.

Om bijvoorbeeld alle bronnen die door /dev/md4 gebruikt worden los te koppelen en vrij te geven:

# mdconfig -d -u 4
	

Het is mogelijk om de informatie over ingestelde md(4) apparaten weer te geven door gebruik te maken van mdconfig -l.