Mdconfig
Aus UUGRN
mdconfig ist unter FreeBSD das Konfigurationstool zur Verwaltung von RAM-Disks und andere Memory-Disks.
Scripte
- /etc/rc.d/mdconfig: initialisiert RAM-Disks (type=malloc), RAM-Disks im swap (type=swap) und persistente RAM-Disks basierend auf einer Datei (type=vnode), wenn diese als Root-Filesystem angesprochen werden soll
- /etc/rc.d/mdconfig2: initialisiert type=vnode für Nicht-Root-Filesysteme
Anwendungsbeispiel
Bekanntermaßen besteht unter FreeBSD /usr/ports aus vielen tausend kleinen Dateien, die sich mit der Zeit über das ganze Filesystem verteilen. Sämtliche Operationen auf /usr/ports wie etwa "du -sh" oder Backup dauern unverhältnismäßig lange.
Aus diesem Grund soll /usr/ports ein eigenes Filesystem bekommen, welches den speziellen Anforderungen gut nachkommt. Eine eigene Partition ("Label") hierfür wäre overkill, es bietet sich ein Filesystem-Image an.
- Anlegen eines 699 MB großen Images (läßt sich auf CD brennen):
# dd if=/dev/zero of=/pfad/zu/ports.ufs2 bs=1m count=699
- Device (/dev/md0) erstellen
# mdconfig -a -t vnode -f /pfad/zu/ports.ufs2
- Formatieren von /dev/md0 mit vielen kleines inodes
# newfs -L ports -O 2 -U -i 1024 -m 20 -o time /dev/md0
- Vorübergehend mounten nach /mnt
# mount /dev/md0 /mnt
- per tar|tar oder rsync das vorhandene /usr/ports/ übertragen
# rsync -avH /usr/ports/ /mnt/
- oder
# (cd /usr/ports/ && tar cf - . ) | (cd /mnt/ && tar xvf - )
- /usr/ports löschen oder wegschieben und neuen leeren Mountpoint erstellen
# mv /usr/ports /usr/ports_ # mkdir /usr/ports
- automatisches Konfigurieren von /usr/ports/ über bootscripte einrichten
- /etc/rc.conf
mdconfig_md0="-t vnode -f /pfad/zu/ports.ufs2"
- /etc/fstab
/dev/md0 /usr/ports ufs rw 0 0
- Konfiguration testen:
# umount /mnt # mdconfig -d -u md0 # /etc/rc.d/mdconfig2 start Creating md0 device (vnode). Mounting /dev/md0.
- prüfen:
# df -hi /usr/ports Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/md0 664M 381M 150M 72% 115221 310825 27% /usr/ports