FreeBSD下添加新硬盘

FreeBSD下添加新硬盘

第一种方法:使用 sysinstall

在使用 sysinstall 来设定新的硬盘之前,请先确定您是以 root 身份执行。接下来,您就可以依照下列步骤来新增硬盘:

进入 sysinstall

进入 sysinstall 的主选单后,首先请选择 [Configure],进入后,再选择 [Fdisk] 项目以进入 Fdisk 选单。第一次进入 Fdisk 时,sysinstall 会要求您选择所要设定的硬盘,请选择 ad1。

使用 Fdisk

相信您对于 Fdisk 的画面应该很熟悉,我们在安装 FreeBSD 时就使用过它。如果您要让 FreeBSD 使用整个硬盘,请按 [A],接下来请按 [W] 以将设定写入硬盘。在按了 [W] 后,会出现一个确认的窗口,选 [Yes] 即可。最后会出现要您选择所要使用的 Boot Manager,因为这一个硬盘不是要用来开机用的,所以我们选 [None]。写入后,请按 [Q] 离开 Fdisk 的画面,并回到 Configure 画面。接着请离开 sysinstall,再重新执行 sysinstall 以让 sysinstall 重新侦测硬盘设定。

使用 Disk Label Editor

重新执行 sysinstall 后,请选择 [Configure] -> [Label] 以进入 Disk Label Editor。Disk Label Editor 会帮我们在 Slice 下切割 Partition 并格式化硬盘。在 Disk Label Editor 中,我最多可以建八个分割区 (Partition),编号从 a 到 h。不过有的代号有特殊用途。例如,分割区 a 通常会保留给根目录使用,所以我们开机时所使用的分割区代号会是 a。而代号 b 表示是 swap partition,我们可以在多个硬盘中都有 swap partition。代号 c 是用来表示整个硬盘或是整个 Slice。所以最后 d-h 才是一般我们会使用到的分割区代号。

我们要让 FreeBSD 使用整个硬盘,所以必须将整个 Slice 切成一个 Partition。所以一进入 Disk Label Editor 后,请按 [C],在画面上会显示整个 Slice 的大小,直接按 Enter 即可建立一个分割区。接下来,我们必须选择所要挂入本分割区的目录,请选择 FS 后,再输入您所要挂入的目录,例如 /volume1。如果是在安装 FreeBSD 时,我们所设定的挂入点会被写到 /etc/fstab 中,开机后就会自动将磁盘挂入该目录。但是我们这里所指定的挂入点并不会被写入 /etc/fstab 中,最后我们还是必须再设定 /etc/fstab。

最后请按 [W]以进行分割及格式化。完成后,系统会将该才所建立的磁盘挂入您所指定的目录下。接着请离开 sysinstall 回到命令列。

设定 /etc/fstab

为了让系统在开机时可以自动将此分割区挂入,我们必须再设定 /etc/fstab。请在 /etc/fstab 中增加下列数据:

# Device Mountpoint FStype Options Dump Pass#
/dev/ad1s1d /volume1 ufs rw 2 2

第二种方法: 使用命令列

您不一定要使用 sysinstall 来分割及格式化硬盘,sysinstall 只是提供一个比较容易使用的界面,最后还是会呼叫命令列的指令以完成硬盘的设定。使用命令列的方式比较复杂,而且较容易出错,但却可以让您有更灵活的应用。看了如何从命令列新增一个硬盘可以让您对 sysinstall 所做的事更了解。

我们一样假设要新增的硬盘为 ad1,并且将整个硬盘切成一个扇区给 FreeBSD 使用。第一步要做的就是先使用 dd 这个指令来清除硬盘上旧的设定:

# dd if=/dev/zero of=/dev/ad1 bs=1k count=1

上述指令的意思是从 /dev/zero 这个装置读出数据写到 /dev/ad1 中,每次写入的 block size (bs) 为 1KB,做一次写入的动作即可 (count)。我们知道 FreeBSD 各动硬件装置当做档案来看待,/dev/zero 这个档案其实是一个虚拟的档案,我们从这个档案读出来的数据都是 0。上述指令的动作的目的就是要将硬盘 ad1 的开头 1024KB 清成 0,而硬盘开头的部份存放的就是一些分割区设定的数据 (Partition Table)。

接下来呢我们就必须使用 fdisk 这个指令来切割 slice 了:

# fdisk -BI ad1
******* Working on device /dev/ad1 *******
fdisk: invalid fdisk partition table found

上述 fdisk 指令表示我们要将 ad1 切割成一个 slice (参数 -I),并清除放开机信息的第 0 个 sector。您可以忽略「invalid fdisk partition table found」的警告,因为我们一开始并没有任何分割区。接下来我们就可以使用下列 bsdlabel 指令来建立预设的 partition label,再使用 bsdlabel 加参数 e 以修改建立的 lable:

# bsdlabel -B -w ad1s1 auto
# bsdlabel -e ad1s1

接着会使用您预设的文书编辑软件跳出一个窗口,请将 a: 改成 d: 后存档离开,因为我们新增加的分割区不是要给根目录使用,所以不用代号 a,而是使用第一个不具特别意义的代号 d。

# /dev/ad1s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
d: 78156146 16 unused 0 0
c: 78156162 0 unused 0 0 # "raw" part, don’t edit

将 a: 改成 d: 后,存档离开即可。接下来我们就可以格式化这一个分割区了。FreeBSD 中用来格式化 UFS 档案系统的指令为 newfs:

# newfs /dev/ad1s1d

以上即为新增一颗硬盘所要做的事。请注意,bsdlabel 这个指令是 FreeBSD 5.1 以后才有的,在 5.1 以前,请使用 disklabel。

接下来您就可以将新的硬盘挂入了,假设您要挂入的目录是 /volume1,则请使用下列指令:

# mkdir /volume1
# mount /dev/ad1s1d /volume1

最后,如果您希望一开机就将此分割区挂入,请修改 /etc/fstab,并加入此分割区的设定。

原文链接:http://juven.blog.51cto.com/749867/181724

FreeBSD系统完全备份

摘要:

FreeBSD操作系统是非常稳定的,但是这并不是说FreeBSD系统都不备份数据,系统备份是系统管理中一个重要的部分。

在学习使用FreeBSD的过程中经常需要对系统进行某些实验性的操作,这时就有可能把系统搞乱,

只要你是正常操作搞坏一个FreeBSD还是比较困难的,如果没有root权限的话,几乎就是不可能的,当然你可以把自己的home塞满,如果管理员没有使用quato技术的话,

但是想搞坏一个FreeBSD也是很容易的,比如说你在行使root权限时随便输入了一个错误的命令。

这个Wiki页面将会介绍一种FreeBSD系统的完全备份方法,主要基于FreeBSD Forum上killasmurf86一个关于Backup[URL:http://forums.freebsd.org/showthread.php?t=185]的帖子。

在FreeBSD的Handbook上专门内容讲系统备份,在网上也有很多关于FreeBSD系统的备份文章,这个wiki页面的主要目的在于给出一个详细的备份以及恢复系统的过程描述。

基本的游戏规则:

1.FreeBSD系统的备份不需要什么特殊的工具,你需要的工具在FreeBSD的基本系统里面就有;
2.FreeBSD系统的备份就是对系统文件的打包,然后放到一个安全的地方,本文中使用的打包工具是dump;
3.FreeBSD系统的恢复就是把你保存好的系统文件从安全的地方里面拿出来放到你的硬盘上去,本文中使用的恢复工具是restore;
4.Unix-like下面不使用ghost之类的备份工具。

需要使用的工具:

FreeBSD基本系统中有很多工具可以备份,比如说tar。

但是在这个Wiki页面中我们只使用:dump+restore+freebsd_livefs_cd。

其中freebsd_livefs_cd可以到任意的FreeBSD的ftp服务器去下载。

示例系统分区简介:

这个台式机只有1块硬盘,并且只有一个FreeBSD操作系统,其分区方案如下。

df -h
Filesystem      Size    Used   Avail Capacity  Mounted on
/dev/ad12s1a    496M     36M    420M     8%    /
devfs           1.0K    1.0K      0B   100%    /dev
/dev/ad12s1h    240G    1.5G    219G     1%    /home
/dev/ad12s1e    3.9G    166K    3.6G     0%    /tmp
/dev/ad12s1f     19G    3.1G     15G    17%    /usr
/dev/ad12s1g     19G    1.3G     17G     7%    /usr/local
/dev/ad12s1d    3.9G     55M    3.5G     2%    /var
procfs          4.0K    4.0K      0B   100%    /proc

cat /etc/fstab
# Device        Mountpoint    FStype    Options        Dump    Pass#
/dev/ad12s1b        none        swap    sw        0    0
/dev/ad12s1a        /        ufs    rw        1    1
/dev/ad12s1h        /home        ufs    rw        2    2
/dev/ad12s1e        /tmp        ufs    rw        2    2
/dev/ad12s1f        /usr        ufs    rw        2    2
/dev/ad12s1g        /usr/local        ufs    rw        2    2
/dev/ad12s1d        /var        ufs    rw        2    2
/dev/acd0        /cdrom        cd9660    ro,noauto    0    0
proc            /proc        procfs  rw        0    0

从这个分区来看,是一个320G的硬盘,上面只有一个FreeBSD操作系统,每个分区的大致用途如下,详情可以参考hier(7)。

/ 这个目录存放很多基本工具,包括内核,需要备份;

/dev 这是一个虚拟的文件系统,不需要备份;

/home 用户数据,需要备份;

/tmp 临时文件,不需要备份;

/usr 很多工具以及系统的源代码都放在这里面,需要备份;

/usr/local 所有安装的软件基本上都在这里,需要备份;

/var 系统的日志,ports系统的数据库,需要备份;

/proc 虚拟文件系统,不需要必要备份。

看来需要备份一下目录:

/

/home

/usr

/usr/local

/var

备份的方法:

以/分区为例,我通常直接备份到我的移动硬盘上面。

我的移动硬盘使用的是UFS文件系统,分了4个partition,一般情况下我会把移动硬盘关在在我的/mnt/fender_01目录下面,假设目前系统一切正常,我现在打算做一个备份,那么我就应该关在移动硬盘某个分区到/mnt/fender_01目录下,然后分别对所有需要备份的分区进行备份,这里只给出“/”分区备份的例子。

“/”分区对应我硬盘上面的/dev/ad12s1a,那么备份整个分区的命令如下:

dump -0Lauf /mnt/fender_01/dump/ad12sa1.dump /dev/ad12s1a

某些时候,起一个好的文件名很重要!

其中:

-0 备份所有的文件系统中的内容,也就是不使用增量备份;

-f 指定备份结果存放的文件名;

-a 告诉dump不考虑备份的介质的大小问题,早期备份使用磁带,dump会预先计算一下需要的空间,使用这个选项告诉dump忽略这个问题;

-u 告诉dump更新一下/etc/dumpdates,这个文件记录了你在系统上搜有的备份活动;

-L 备份已经挂载的文件系统时需要,这个选项会使用UFS2的snapshot功能来保证文件系统的一致性。

恢复系统的方法:

恢复“/”以外的文件系统:

如果你只想恢复/以外的文件系统,那么很容易,

我们以恢复/home文件系统为例,你只需要重启系统进入单用户模式,

挂载/tmp分区,应为restore需要使用/tmp分区,

挂载移动硬盘上保存我备份文件的分区到/mnt目录下面的某个,例如/mnt/01,

按照我上面命名的规则,备份生成的文件应该是保存在/mnt/01/dump/dev/ad12s1h.dump,

首先你需要格式化/dev/ad12s1h,命令如下:

newfs -U /dev/ad12s1h

-U选型来打开softupdate。

挂在这个分区到/mnt下面的某个目录,例如/mnt/02/

mount /dev/ad12s1h /mnt/02

现在来恢复文件系统:

cd /mnt/02

restore -rf /mnt/01/dump/ad12s1h.dump

恢复“/”:

按照上面的方法你可以恢复/以外的任意的分区,但是你不能恢复“/”,因为你如果使用newfs格式化了“/”你就没有办法使用“/”里面的restore了,

解决的办法就是使用freebsd_livefs_cd启动系统,然后选择fix,之后选择cd,之后的过程就和上面介绍的恢复其他分区是一样的了。

事实上,可以使用freebsd_livefs_cd来恢复任何分区,但是如果你没有下载并刻录这张光盘,那么你就只能在单用户模式下面恢复“/”以外的分区了。

需要注意的是,当你格式化“/”对应的硬盘分区时,可以使用下述两种方法:

newfs /dev/ad12s1a
newfs -U /dev/ad12s1a

区别在于后者将打开softupdate选项,详细情况参考newfs[URL:http://www.freebsd.org/cgi/man.cgi?query=newfs&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html]。

在FreeBSD系统的安装过程中“/”分区默认是不打开softupdate的,并且你也没有办法打开,因为sysinstall程序不允许你打开。

这是一个历史遗留问题,当时softupdate还不成熟,于是决定在“/”分区中禁止使用softupdate,现在softupdate已经成熟了,但是对这个问题却保留了下来。

在“/”分区使用softupdate不会造成什么问题,但是在系统安装的默认设置中是没有打开的,这一点需要注意。

可以使用如果想打开或者关闭softupdate这个选项,可以使用tunefs(8)[URL:http://www.freebsd.org/cgi/man.cgi?query=tunefs&sektion=8&apropos=0&manpath=FreeBSD+7.2-RELEASE]这个工具。

备份MBR:

上面只提到了备份文件系统,没有讲如何备份系统的MBR。

关于MBR是什么就不详细介绍了,有兴趣的可以参考Handbook上面有一章专门介绍FreeBSD系统的启动过程。

备份:

dd if=/dev/da0 of=/path/to/mbr.img bs=512 count=1

恢复:

dd if=/path/to/mbr.img of=/dev/da0 bs=512 count=1

参考:

dump(8)[URL:http://www.freebsd.org/cgi/man.cgi?query=dump&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html]

restore(8)[URL:http://www.freebsd.org/cgi/man.cgi?query=restore&sektion=8&apropos=0&manpath=FreeBSD+7.2-RELEASE]

tunefs(8)[URL:http://www.freebsd.org/cgi/man.cgi?query=tunefs&sektion=8&apropos=0&manpath=FreeBSD+7.2-RELEASE]

newfs[URL:http://www.freebsd.org/cgi/man.cgi?query=newfs&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html]

hier(7)[URL:http://www.freebsd.org/cgi/man.cgi?query=hier&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html]

注意:

系统的备份与恢复并不十分困难,但是如果你不慎输入某个错误的命令的话,有可能导致某些灾难性的后果。

重做系统需要的是时间,但是如果重要数据丢失了,那就不只是时间的问题了。

所以,在备份与恢复系统时,请尽量保证自己头脑清醒。

后记:

欢迎提出修改意见。

感谢killasmurf86[URL:http://forums.freebsd.org/member.php?u=977]。

原文链接:http://wiki.freebsdchina.org/doc/b/backup_with_dump_and_restore