Mdconfig: Unterschied zwischen den Versionen
Rabe (Diskussion | Beiträge) (mdconfig und Anwendungsbeispiel: /usr/ports als seperates Filesystem) |
SHL (Diskussion | Beiträge) K (Kategorie eingebaut) |
||
(11 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
== Scripte == | == Scripte == | ||
− | + | ;/etc/rc.d/mdconfig: | |
− | + | :* initialisiert RAM-Disks (type=malloc) | |
+ | :* Memory Disks im swap (type=swap) | ||
+ | :* persistente Memory Disks basierend auf einer Datei (type=vnode), wenn diese als Root-Filesystem ("/") angesprochen werden soll | ||
+ | |||
+ | ;/etc/rc.d/mdconfig2: | ||
+ | :* initialisiert Memory Disks mit type=vnode für Nicht-Root-Filesysteme (z.B. "/usr/ports") | ||
+ | |||
Zeile 12: | Zeile 18: | ||
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 | ||
# mdconfig -a -t vnode -f /pfad/zu/ports.ufs2 | # mdconfig -a -t vnode -f /pfad/zu/ports.ufs2 | ||
− | * Formatieren von /dev/md0 mit vielen | + | * Formatieren von /dev/md0 mit vielen 1kB kleinen inodes |
# newfs -L ports -O 2 -U -i 1024 -m 20 -o time /dev/md0 | # newfs -L ports -O 2 -U -i 1024 -m 20 -o time /dev/md0 | ||
* Vorübergehend mounten nach /mnt | * Vorübergehend mounten nach /mnt | ||
Zeile 31: | Zeile 39: | ||
mdconfig_md0="-t vnode -f /pfad/zu/ports.ufs2" | mdconfig_md0="-t vnode -f /pfad/zu/ports.ufs2" | ||
;/etc/fstab: | ;/etc/fstab: | ||
− | /dev/md0 /usr/ports ufs rw 0 0 | + | /dev/md0 /usr/ports ufs rw,noauto 0 0 |
+ | ;Wichtig: Das 6. Feld der /etc/{{man|freebsd|5|fstab}} wird beim Booten von {{man|freebsd|8|fsck}} ausgewertet. Steht hier etwas anderes als 0, dann unterbricht der Bootvorgang (single user mode), weil /dev/md0 zu diesem Zeitpunkt noch nicht verfügbar ist und daher nicht geprüft werden kann. Das gilt (für Post 7.0-RELEASE) auch für den Fall, wenn als Mountoption '''noauto''' verwendet wird, das hier jedoch unbedingt erforderlich ist. | ||
+ | {{FIXME|Prüfen, ob die Mountoption ''noauto'' in Verbindung mit einem fsck-Wert >0 dazu führt, dass ein fsck von mdconfig2 ausgeführt wird}} | ||
+ | |||
* Konfiguration testen: | * Konfiguration testen: | ||
# umount /mnt | # umount /mnt | ||
Zeile 42: | Zeile 53: | ||
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 erstellte File zu klein geraten sein, läßt sich dieses nachträglich vergrößern. | ||
+ | |||
+ | * Device anhalten/detachen | ||
+ | # /etc/rc.d/mdconfig2 stop | ||
+ | Umounting /dev/md0. | ||
+ | Destroying md0. | ||
+ | * Vergrößern um 200MB | ||
+ | # dd if=/dev/zero bs=1m count=200 >> /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. | ||
+ | |||
+ | === Anmerkung zum Beispiel === | ||
+ | Standardmäßig werden die Distfiles und Packages ebenfalls unter /usr/ports abgelegt. | ||
+ | Dies ist nur begrenzt sinnvoll in diesem Beispiel. Es gibt Möglichkeiten, diese Standardpfade zu ändern (DISTDIR, PACKAGES). | ||
+ | |||
+ | == siehe auch == | ||
+ | * [[FreeBSD]] | ||
+ | * [[FreeBSD Ports]] | ||
+ | ;Manpages: | ||
+ | :*{{man|freebsd|8|mdconfig}} | ||
+ | :*{{man|freebsd|4|md}} | ||
+ | :*{{man|freebsd|5|rc.conf}} | ||
[[Kategorie:FreeBSD]] | [[Kategorie:FreeBSD]] | ||
[[Kategorie:Anwendungsbeispiel]] | [[Kategorie:Anwendungsbeispiel]] | ||
+ | [[Kategorie:Dateisystem]] |
Aktuelle Version vom 28. April 2009, 08:47 Uhr
mdconfig ist unter FreeBSD das Konfigurationstool zur Verwaltung von RAM-Disks und andere Memory-Disks.
Scripte[Bearbeiten]
- /etc/rc.d/mdconfig
-
- initialisiert RAM-Disks (type=malloc)
- Memory Disks im swap (type=swap)
- persistente Memory Disks basierend auf einer Datei (type=vnode), wenn diese als Root-Filesystem ("/") angesprochen werden soll
- /etc/rc.d/mdconfig2
-
- initialisiert Memory Disks mit type=vnode für Nicht-Root-Filesysteme (z.B. "/usr/ports")
Anwendungsbeispiel[Bearbeiten]
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[Bearbeiten]
- Anlegen eines 699 MB großen Images (läßt sich auf CD brennen) (kann nachträglich vergrößert werden)
# 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 1kB kleinen 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,noauto 0 0
- Wichtig
- Das 6. Feld der /etc/fstab(5) wird beim Booten von fsck(8) ausgewertet. Steht hier etwas anderes als 0, dann unterbricht der Bootvorgang (single user mode), weil /dev/md0 zu diesem Zeitpunkt noch nicht verfügbar ist und daher nicht geprüft werden kann. Das gilt (für Post 7.0-RELEASE) auch für den Fall, wenn als Mountoption noauto verwendet wird, das hier jedoch unbedingt erforderlich ist.
FIXME: Prüfen, ob die Mountoption noauto in Verbindung mit einem fsck-Wert >0 dazu führt, dass ein fsck von mdconfig2 ausgeführt wird (siehe Diskussionsseite)
- 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[Bearbeiten]
Sollte das erstellte File zu klein geraten sein, läßt sich dieses nachträglich vergrößern.
- Device anhalten/detachen
# /etc/rc.d/mdconfig2 stop Umounting /dev/md0. Destroying md0.
- Vergrößern um 200MB
# dd if=/dev/zero bs=1m count=200 >> /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.
Anmerkung zum Beispiel[Bearbeiten]
Standardmäßig werden die Distfiles und Packages ebenfalls unter /usr/ports abgelegt. Dies ist nur begrenzt sinnvoll in diesem Beispiel. Es gibt Möglichkeiten, diese Standardpfade zu ändern (DISTDIR, PACKAGES).
siehe auch[Bearbeiten]
- Manpages