This page was exported from phaq [ http://phaq.phunsites.net ] Export date:Fri Apr 26 13:41:38 2024 / +0000 GMT ___________________________________________________ Title: FreeBSD patch: enable fsck in mdmfs --------------------------------------------------- This patch is actually a follow-up development to my article on implementing filesystem allocation limits on FreeBSD jails. My previous article basically lined out how to place jails inside a vnode-backed memory device to enforce filesystem allocation limits. This became possible through a new flag introduced to mdmfs in FreeBSD-CURRENT which allowed to skip 'newfs' (which requires mdmfs actually to be called mount_md to work properly). This solution is quiet handy as it will automagically mount the container volumes as required. But since we do not live in a perfect world - and computers ain't perfect either - crashes do happen. File system corruption on volumes will prevent jails to startup as their (virtual) root device will fail to mount. This is where this patch comes in. It will enable mdmfs to optionally run an fsck on given volumes. To apply the patch, create a new temporary build directory first: #mkdir /root/mount_md #cd /root/mount_md Then get the original source code from CVS. Maybe it’s easiest to get this particular release through WebCSV at http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sbin/mdmfs/mdmfs.c?rev=1.27. Save this file to your previously created build directory. If you have wget at hands you can also download it directly. #wget -user-agent='Mozilla/5.0' 'http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sbin/mdmfs/mdmfs.c?rev=1.27' -output-document=/root/mount_md/mount_md.c Download and apply the patch: mount_md.c.diff #wget -user-agent='Mozilla/5.0' 'http://www.phunsites.net/wp/wp-content/uploads/2006/07/mount_md.c.diff.txt' -output-document=/root/mount_md/mount_md.c.diff #patch < /root/mount_md/mount_md.c.diff Compile the source: #gcc /root/mount_md/mount_md.c -o /root/mount_md/mount_md Then copy the file to some location you like, eg. /usr/sbin. #cp /root/mount_md/mount_md /usr/sbin/mount_md Make sure you call the file as given in the example. It won’t work otherwise. Special care must be taken that you DO NOT replace your existing mdmfs binary file by this new version. DO NOT overwrite it. Do not rename this patch to mdmfs. Use the names provided in this example instead. Setup Jail’s fstab Now check out your jail's fstab and look for this line: md /var/jails/192.168.0.1 md rw,-P,-F/mnt/r5_vol1/jails/192.168.0.1/rootfs.volume Change it as follows: md /var/jails/192.168.0.1 md rw,-P,-F/mnt/r5_vol1/jails/192.168.0.1/rootfs.volume,-Tufs or md /var/jails/192.168.0.1 md rw,-P,-F/mnt/r5_vol1/jails/192.168.0.1/rootfs.volume,-tufs The difference in the two lies in the '-T' or '-t' argument. Both enable fsck before mounting the volume, hence '-T' runs 'fsck -y' while '-t' does not. You need also to provide the filesystem type with either option for fsck to work properly. --------------------------------------------------- Images: --------------------------------------------------- --------------------------------------------------- Post date: 2006-07-26 07:01:42 Post date GMT: 2006-07-26 06:01:42 Post modified date: 2010-12-18 16:14:48 Post modified date GMT: 2010-12-18 15:14:48 ____________________________________________________________________________________________ Export of Post and Page as text file has been powered by [ Universal Post Manager ] plugin from www.gconverters.com