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.
Gebruik devfs(8) om de apparaatnodes transparant voor de gebruiker toe te wijzen.
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:
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:
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):
mdconfig
#
dd if=/dev/zero of=nieuwbeeld
bs=1k count=5
k
5120+0 records in
5120+0 records out
#
mdconfig -a -t vnode -f nieuwbeeld
-u 0
#
bsdlabel -w md0
auto
#
newfs md0
a
/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/md0
a /mnt
#
df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0a 4710 4 4330 0% /mntIndien 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:
mdmfs
#
dd if=/dev/zero of=nieuwbeeld
bs=1k count=5
k
5120+0 records in
5120+0 records out
#
mdmfs -F nieuwbeeld
-s 5
m md0
/mnt
#
df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0 4718 4 4338 0% /mntAls 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).
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.
mdconfig
#
mdconfig -a -t swap -s 5
m -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% /mntmdmfs
#
mdmfs -s 5
m md2
/mnt
#
df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md2 4846 2 4458 0% /mntAls 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
.