我有一个运行在小型混合(Windows / FreeBSD)networking上的通用(邮件,网页,文件等)服务器。 我并不满意自己是如何摆放磁盘的,因为它已经过时了,无论如何我只是简单地重新安装整个机器,解决每一个小问题。
我一直在其他机器上使用gjournaling ,我很高兴。 我知道如何设置新分区以便它们包含日志和数据,并且我知道如何为新创build的分区上的现有分区创build日记。 在我开始使用机器之前,我还有一些关于gjournal的问题:
在FreeBSD安装过程中,如何创build包含日志和数据的分区,如果我必须为每个分区创build一个单独的日志分区,那么我将达到8个分区字母的限制。
我知道在日志时挂载文件系统asynchronous是安全的,但是在日志中挂载根文件系统是asynchronous还是不明智?
是否有可能一次logging整个切片? 这将节省大量增加我的根,/ var和其他几个小分区的大小的麻烦,以实际上有足够的空间存储日志数据。
经过一番混乱之后,我终于find了一种方法来完成我想要的东西,但是忘了在这里更新我的问题。 在未来(十月初),我正在更换整台机器,切换到ZFS。 同时,我会在这里发布我的解决scheme,以便其他人可以使用它。
解决的办法是让文件系统在FreeBSD中安装。 我无法从fixit磁盘加载gJournal内核模块,所以我安装了一个基本安装到USB记忆棒。 擦拭完整个磁盘之后,我将安装在USB磁盘上启动机器。
第一步是使用“ gjournal load ”加载gJournal内核模块,然后标记我要安装的磁盘( /dev/ad0 )“ gjournal label ad0 ”。 您现在应该在/dev看到/dev/ad0.journal条目。 下一步是使用bsdlabel将引导扇区写入该磁盘。 在我的amd64系统的情况下,这是“ bsdlabel -wBm amd64 ad0.journal ”,为您的系统的具体情况请参阅bsdlabel(8)手册页。 我开始用bsdlabel来编辑标签,就像你通常会改变磁盘的布局一样,但是使用/dev/ad0.journal你通常使用/dev/ad0 。 我最终在bsdlabel -e ad0.journal指定了以下布局:
# size offset fstype [fsize bsize bps/cpg] a: 256M 16 4.2BSD 2048 16384 b: 2G * swap c: * * unused d: 2G * 4.2BSD 2048 16384 e: 512M * 4.2BSD 2048 16384 f: 6G * 4.2BSD 2048 16384 g: * * 4.2BSD 2048 16384
当然你需要的具体尺寸会有所不同。 指定这些分区后, /dev/应该通过/dev/ad0.journalg条目显示各种/dev/ad0.journala 。 现在我们可以使用newfs(8)格式化新的文件系统newfs(8) 。 我在标签上使用了UFS2,所以我可以在/etc/fstab而不是磁盘设备中引用/dev/label/<label> 。 我运行的命令是newfs -O 2 -J -L rootfs /dev/ad0.journala -O 2使用UFS2, -J打开特定分区上的日志logging, -L rootfs将/dev/ad0.journala为/dev/label/rootfs 。 不要忘记,你可能想禁用例如/tmp分区上的日志logging,在这种情况下,不要传递这些分区的-J标志。 即使它们位于日志logging的磁盘上,GEOM也只会loggingUFS系统,这些系统表明正在写入的数据是否为元数据,哪些只发生在使用-J创build的文件系统上,或者您通过tunefs(8)手动打开日志functiontunefs(8) 。
现在棘手的部分已经结束,我们只需要将操作系统安装到我们刚刚创build的日志文件系统,我只是使用安装盘。 由于我们已经创build了我们的文件系统,因此不能使用CD安装程序。 相反,只需从USB安装光盘中安装光盘,然后将新创build的根文件系统挂载到某处(我将在此处使用/tmp/newinstall作为挂载点)。 然后将/tmp/newinstall创build的所有其他分区安装为/var , /usr以及任何其他分区。 接下来将环境variablesDESTDIR设置为这个新path( export DESTDIR=/tmp/newinstall )。
现在将目录更改为您安装安装CD的位置,在CD上您将find一个以您下载的FreeBSD版本命名的文件夹,在该文件夹内有几个文件夹,每个文件夹都包含一个install.sh文件,运行这些脚本必须将内核GENERIC指定为内核目录中安装脚本的参数)。
完成之后,不要忘记将/tmp/newinstall/boot/GENERIC复制到/tmp/newinstall/boot/kernel否则会发现系统找不到要引导的内核。 最后但并非最不重要的编辑/tmp/newinstall/boot/loader.conf并添加行geom_journal_load="YES"以在引导时加载gjournal支持,如果您使用gJournal支持编译自定义内核,则可以(也必须)删除此行包括(所需的选项是options UFS_GJOURNAL和options GEOM_JOURNAL )。
要做的最后一件事是创build一个/tmp/newinstall/etc/fstab文件,在启动的时候挂载所需的分区。 您可以指定/dev/ad0.journala设备或/dev/label/rootfs和您提供的其他标签。 有关文件的语法和选项的详细信息可以在fstab(5)的手册页中阅读。 请记住,使用日志function现在“安全”[1]来安装文件系统asynchronous。 另外请注意,虽然日志logging的设备不需要fsck您仍然应该填写fstab文件中的fsck列。 如果你不这样做,你的系统将不会启动。 系统会识别日志logging的磁盘,并在自动fsck检查中对其进行不同的处理,而不是对日志系统运行适当的检查。
[1] – 安全意味着您的文件系统在日志logging时不会被崩溃损坏。 在崩溃时没有写入磁盘的数据仍可能丢失,例如,如果它被操作系统或磁盘缓冲。 数据可以保留在这些缓冲区很长一段时间。
只是build议1 – 使用gpt表,它最多支持26个分区
对于3. – 你可以一次gjournal整盘(数据从这里)
PS。 无论如何,你应该从VirtualBox这样的虚拟机中尝试这一切。
PPS。 可能你应该试试ZFS?