Mdconfig: Unterschied zwischen den Versionen

Aus UUGRN
(mdconfig und Anwendungsbeispiel: /usr/ports als seperates Filesystem)
 
(→‎Anwendungsbeispiel: nachträglich vergrößern)
Zeile 12: Zeile 12:
 
Eine eigene Partition ("Label") hierfür wäre overkill, es bietet sich ein Filesystem-Image an.
 
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):
+
=== /usr/ports als eigenes Filesystem erzeugen ===
 +
 
 +
* Anlegen eines 699 MB großen Images (läßt sich auf CD brennen) ([[#nachtr.C3.A4glich_vergr.C3.B6.C3.9Fern|kann nachträglich vergrößert werden]])
 
  # dd if=/dev/zero of=/pfad/zu/ports.ufs2 bs=1m count=699
 
  # dd if=/dev/zero of=/pfad/zu/ports.ufs2 bs=1m count=699
 
* Device (/dev/md0) erstellen
 
* Device (/dev/md0) erstellen
Zeile 42: Zeile 44:
 
  Filesystem    Size    Used  Avail Capacity iused  ifree %iused  Mounted on
 
  Filesystem    Size    Used  Avail Capacity iused  ifree %iused  Mounted on
 
  /dev/md0      664M    381M    150M    72%  115221 310825  27%  /usr/ports
 
  /dev/md0      664M    381M    150M    72%  115221 310825  27%  /usr/ports
 +
 +
=== nachträglich vergrößern ===
 +
Sollte das erstelle File zu klein geraten sein, läßt sich dieses nachträglich aufbohren.
 +
 +
* Device anhalten/detachen
 +
# /etc/rc.d/mdconfig2 stop
 +
Umounting /dev/md0.
 +
Destroying md0.
 +
* Vergrößern um 200MB
 +
# dd if=/dev/zero bs=1m count=200m >> /pfad/zu/ports.ufs2
 +
* Device /dev/md0 von Hand attachen
 +
# mdconfig -a -t vnode /pfad/zu/ports.ufs2
 +
* Filesystem vergrößeren
 +
# growfs /dev/md0
 +
# mdconfig -d -u md0
 +
* Device neu starten
 +
# /etc/rc.d/mdconfig2 start
 +
Creating md0 device (vnode).
 +
Mounting /dev/md0.
  
  
 
[[Kategorie:FreeBSD]]
 
[[Kategorie:FreeBSD]]
 
[[Kategorie:Anwendungsbeispiel]]
 
[[Kategorie:Anwendungsbeispiel]]

Version vom 1. Juli 2007, 18:28 Uhr

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.

/usr/ports als eigenes Filesystem erzeugen

# 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

nachträglich vergrößern

Sollte das erstelle File zu klein geraten sein, läßt sich dieses nachträglich aufbohren.

  • Device anhalten/detachen
# /etc/rc.d/mdconfig2 stop 
Umounting /dev/md0.
Destroying md0.
  • Vergrößern um 200MB
# dd if=/dev/zero bs=1m count=200m >> /pfad/zu/ports.ufs2
  • Device /dev/md0 von Hand attachen
# mdconfig -a -t vnode /pfad/zu/ports.ufs2
  • Filesystem vergrößeren
# growfs /dev/md0
# mdconfig -d -u md0
  • Device neu starten
# /etc/rc.d/mdconfig2 start
Creating md0 device (vnode).
Mounting /dev/md0.