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.
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).
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
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.