从网上摘录的部分FreeBSD硬盘分区和数据迁移相关资料:
HOWTO: Move FreeBSD to a new hard disk
FreeBSD 数据迁移方法
FreeBSD的硬盘分区策略
(转)如何复制Freebsd到另外一块硬盘
FreeBSD分区知识学习及实验备忘录
FreeBSD硬盘分区和数据迁移相关资料
[精华] [外文转载] HOWTO: Move FreeBSD to a new hard disk
[精华] [外文转载] HOWTO: Move FreeBSD to a new hard disk
http://www.chinaunix.net 作者:HonestQiao 发表于:2006-08-13 10:03:19
http://www.chinaunix.net/jh/5/639125.html
[外文转载] HOWTO: Move FreeBSD to a new hard disk
Posted by Jason on Sunday November 04, @09:13AM
from the old-da
This article will explain how you can move your FreeBSD installation from on
Let's assume that our FreeBSD installation is on a 4 gigabyte drive (ide master ad0) and we would like to move it to a new 20 gig drive.
What you need to do is remove the old hard disk, install the new [20G] drive as an ide master and perform a minimal clean install of FreeBSD, setting up the partitions exactly how you want them. Be se sure to set the drive as bootable and boot from it on
Next, put your old [4G] drive back in the system as an ide master and the new [20G] drive in as an ide slave. Boot the system on your old installation in single user mode.
To boot in single user mode:
Press the[color=#3333FF] [spacebar] [/color]at the 10 second countdown.
type:
[color=#3333FF]boot -s[/color]
Press [color=#3333FF][enter][/color] for the default shell.
At the (#) prompt type:
[color=#3333FF]fsck -p
mount -u /
mount -a
swapon -a
adjkerntz -i[/color]
Next, make sure you have the device files made so you can mount the partitions on the slave drive.
Type:
[color=#3333FF]cd /dev
./MAKEDEV ad1s1a
./MAKEDEV ad1s1e
./MAKEDEV ad1s1f
[/color]
Now make mount points for the new drive's partitions:
Type:
[color=#3333FF]mkdir /backup
mkdir /backup/root
mkdir /backup/usr
mkdir /backup/var[/color]
Lastly, I use a shell script to do the following:
[color=#009900]1 - create new filesystems (newfs the drive)
2 - mount the partitions
3 - dump the da
4 - unmount the new drives partitions
5 - enable softupdates on the new drive (optional)
[/color]
Here is the script I use:
[color=#3333FF]#!/bin/sh
newfs /dev/ad1s1a
newfs /dev/ad1s1e
newfs /dev/ad1s1f
mount /dev/ad1s1a /backup/root
mount /dev/ad1s1e /backup/var
mount /dev/ad1s1f /backup/usr
( dump -0f - / ) | ( cd /backup/root ; restore -rf - )
( dump -0f - /var ) | ( cd /backup/var ; restore -rf - )
( dump -0f - /usr ) | ( cd /backup/usr ; restore -rf - )
umount /backup/root
umount /backup/var
umount /backup/usr
tunefs -n enable /dev/ad1s1a
tunefs -n enable /dev/ad1s1e
tunefs -n enable /dev/ad1s1f
#end[/color]
It will probably take several hours to perform the dump/restore, so be patient. On
Note: You can download the drivecopy shell script by clicking on the drivecopy.tar filename located on the right sidebar of this page. Issue the command [color=#3333FF]tar xvf drivecopy.tar[/color] to untar the drivecopy.sh file.
You may need to modify the drivecopy shell script if you are using custom partitions. If you had selected the standard FreeBSD partitions at install, this file will work without modification.
To learn more about dump, restore and other unix commands, please read the man pages:
man dump
man restore
man tar
man mount
man adjkerntz
剑心通明 回复于:2005-11-02 10:08:48
看来大家都用dump /restore,有机会也试试
HonestQiao 回复于:2005-11-02 10:14:24
嗯,一般都是采用这个方式。
suek 回复于:2005-11-02 10:43:10
不错,不过现在服务器一般都有RAID,
最好有简单的通过网络硬盘复制的方案
FinalBSD 回复于:2005-11-02 11:11:28
偶03年翻译的!:lol::lol::lol:
[Howto]将FreeBSD移到一个新的硬盘
翻译者:Freebird
原文:[url=http://lantech.geekvenue.net/chucktips/jason/chuck/1004897633/index_html]这里
发表时间:2003年10月19日
[color=red]因本人水平有限,如有错误,请批评指正。谢谢![/color]
本文主要说明怎样把你已安装的FreeBSD从一个硬盘移到另一个。我用dump/restore成功试验了多次,在开始前,请阅读本文。
我们假设你的FreeBS已装在一个4G的硬盘上(IDE Master ad0),并且我们想把它移到一个新的20G的硬盘上, 你所要做的仅仅是去掉老的硬盘,装上20G的新硬盘(作为IDE Master)并且进行FreeBSD的最小化安装(minimal clean install),准确设置好你的分区。请确定你已设置了硬盘为可启动,并且启动一次做为测试!
接下来,重新装上原硬盘(4G)(作为IDE Master),和新硬盘(20G)(作为IDE Slave)。启动原来安装的FreeBSD到单用户模式下(single user mode):
进入单用户模式:
1.在10秒倒计时的时候按下空格(space)键,输入boot -s
然后在#后输入
fsck -p
mount -u /
mount -a
swapon -a
adjkerntz -i
2.确定你已经有了所需的设备文件,这样你就可以mount分区到从盘上。
cd /dev
./MAKEDEV ad1s1a
./MAKEDEV ad1s1e
./MAKEDEV ad1s1f
[color=red]FreeBSD 5.x版本采用devfs,可以自动检测硬件,因此不用[/color]
3.建立新硬盘分区的挂载点(mount point)
mkdir /backup
mkdir /backup/root
mkdir /backup/usr
mkdir /backup/var
4.我用一段shell脚本来做以下几步操作:
[color=blue]
1 - create new filesystems (newfs the drive)
2 - mount the partitions
3 - dump the da
4 - unmount the new drives partitions
5 - enable softupdates on the new drive (optional)[/color]
下面是我用的Shell脚本
www# vi b.sh
#!/bin/sh
# newfs /dev/ad1s1a
# newfs /dev/ad1s1e
# newfs /dev/ad1s1f
# newfs /dev/ad1s1g
# mount /dev/ad1s1a /backup/root
# mount /dev/ad1s1e /backup/var
# mount /dev/ad1s1f /backup/usr
# mount /dev/ad1s1f /backup/usr
( dump -0f - / ) | ( cd /backup/root ; restore -rf - )
( dump -0f - /var ) | ( cd /backup/var ; restore -rf - )
( dump -0f - /usr ) | ( cd /backup/usr ; restore -rf - )
( dump -0f - /tmp ) | ( cd /backup/tmp ; restore -rf - )
umount /backup/root
umount /backup/var
umount /backup/usr
umount /backup/tmp
tunefs -n enable /dev/ad2s1a ###在分区上面启用SOFTUPDATES
tunefs -n enable /dev/ad2s1e
tunefs -n enable /dev/ad2s1f
tunefs -n enable /dev/ad2s1g
#end
进行dump/restore的操作可能会花几个小时的时间,请耐心等待。当硬盘当数据dumped and restored到新硬盘后,你要做的仅仅是卸除老硬盘(4G),把新硬盘设置为主盘(IDE Master)并且重启(Reboot).现在你就可以从新硬盘(20G)启动原来已安装的FreeBSD了!
你可以下载diskcopyshell 脚本,用tar xvf drivecopy.tar解压得到drivecopy.sh文件。如果你自定义了分区(custom partitions),你需要修改drivecopy.sh文件。加入你在安装的时候选择了标准FreeBSD 分区(standard FreeBSD partitions),就把需要修改此文件。
你可以通过
man dump
man restore
man tar
man mount
man adjkerntz来得到这些命令的更多信息!
HonestQiao 回复于:2005-11-02 11:13:25
不错,还可以的。
关键地方把关就成
剑心通明 回复于:2005-11-02 11:43:08
看着比中文舒服多了:)
seven007 回复于:2006-08-10 16:43:42
不错
wincat 回复于:2006-08-12 17:24:46
有机会得去试试
大大狗 回复于:2006-08-13 10:03:19
嗯,有机会,用一次.
原文链接:http://bbs.chinaunix.net/viewthread.php?tid=639125
FreeBSD 数据迁移方法
http://www.cnfug.org/journal/systems/2004/000058.html
葱头(Deland Wu) <delandwu@163.com>
相信一些朋友也曾经想过如何快捷安全迁移数据,迁移数据可能有多种原因,一种是想增加一块硬盘,把原来一些空间不够的分区迁移过来;另一种是硬盘复制,旧的硬盘容量可能太小了,又或者已经出现了问题,想用新的硬盘代替。葱头就分别举例说明怎样迁移数据,具体方法可能和你的硬盘的实际情况有所不同,这里只是作一个指引。
无论是那种方法,都必须先将新硬盘装上并让系统正确识别。为了不用设硬盘跳线(硬盘缺省为Master),这里举例安装一个新的IDE硬盘到IDE1接口,即与旧硬盘使用不同的数据线,系统识别为ad2;如果你想和旧硬盘接在同一数据线线上,即IDE0接口,则必须将跳线设为client,系统识别为ad1。
1、关机,将新硬盘装上,重新开机。
2、开机后查看是否系统是否已经识别到新硬盘了:
hpserver# dmesg | grep ad2
成功的话会显示
ad2: 9765MB <Maxtor 91024U4> [19841/16/63] at ata1-master UDMA33
等信息,否则你要检查是否接错线,或者硬件兼容问题。
新硬盘已经安装成功,下面举例说一下两种数据迁移的方法。
一、增加一个硬盘,将原来硬盘/var数据转移到新硬盘
在系统已经建立之后,FreeBSD不能像PQMagic那样自由调整分区空间而不破坏分区数据,所以,如果/var空间已经不够,需要增加一块硬盘增加空间,原来的数据也必须迁移过来。
2、对新硬盘进行分区
可以使用sysinstall或者命令行方式分区。虽然fdisk有更多灵活性,但我建议还是采用sysinstall较好。分区完之后再用sysinstall里面的Label建立文件系统相关文件系统。
3、将文件系统挂载到/mnt
hpserver# mount /dev/ad1s1e /mnt
4、将数据迁移,这里也有两种方法,一种是使用tar,另一种是使用dump,我分别介绍,大家可以根据需要而选择备份方式。
(1) 使用tar备份并还原数据。
hpserver# cd /var
hpserver# tar cf - * | (cd /mnt; tar xf -)
(2) 使用dump备份并用restore还原数据。就我个人而言,我推荐使用这种方法,因为我曾经试过用tar备份var目录的时候,出现了错误并自动停止,我分析了一下原因,一些正在使用的文件或者临时文件可能不能备份,但dump不是以文件为单位,而是而block为单位的,应该不存在这样的情况,所以这是我推荐使用dump和restore的原因。
hpserver# cd /mnt
hpserver# dump -f- /var | restore -f- -r
在过程中和结束会出现类似以下信息:
DUMP: Date of this level 0 dump: Wed Jan 14 23:44:35 2004
DUMP: Date of last level 0 dump: the epoch
DUMP: Dumping /dev/ad0s1e (/var) to standard output
DUMP: mapping (Pass I) [regular files]
DUMP: mapping (Pass II) [directories]
DUMP: estimated 305 tape blocks.
DUMP: dumping (Pass III) [directories]
DUMP: dumping (Pass IV) [regular files]
DUMP: DUMP: 361 tape blocks
DUMP: finished in less than a second
DUMP: DUMP IS DONE
5、有一点提醒的是,你要确保备份后没有数据写入原来的/var,否则,这些数据没有备份到新分区中。结束后别忘了检查一下结果,并卸载/mnt。
hpserver# ls /mnt
hpserver# umount /mnt
6、编辑/etc/fstab文件,将原来指向/var的文件系统改为/dev/ad1s1e,重新启动就可生效。
二、硬盘复制
如果旧的系统盘出现了一些毛病,或者容量不够,你想更换一个新硬盘,那可以把旧硬盘数据复制到新硬盘,然后把旧硬盘摘下。按照上面的步骤,我们假定已经将硬盘安装好。
这里有一个小tips,就是先记下旧硬盘文件系统所对应的mount点,新硬盘分区次序按照旧的一样,这样免去我们下面容易混淆的步骤,我们查看/etc/fstab对照就知道了。不然搞了几下,自己都忘记了ad2s1e到底是用来挂载那个目录的。
1、使用sysinstall把新硬盘分区,设置好MBR,并一一对照原来的次序创建文件系统,假设原来的文件系统/dev/ad0s1g 对应/usr,那你新硬盘/dev/ad2s1g就用来做/usr,原来的文件系统/dev/ad0s1e 对应/var,那你新硬盘/dev/ad2s1e就用来做/var。按M分别清空所有文件系统的mount点,因为我们还没有建立临时的mount的目录,不清空会和系统原来的mount冲突的。
停止APACHE/MYSQL等
2、创建临时的目录用来作临时mount点并挂载这些文件系统。
hpserver# cd /mnt
hpserver# mkdir root
hpserver# mkdir usr
hpserver# mkdir var
用cat /etc/fstab查看原来的文件系统的对应关系,我们只要看最后面的一个字母就可以了,这样避免我们忘记了什么对应什么,这就是我刚才为什么让新硬盘的文件系统的名称对应以前的原因。
hpserver# mount /dev/ad2s1a /mnt/root
hpserver# mount /dev/ad2s1g /mnt/usr
hpserver# mount /dev/ad2s1e /mnt/var
3、复制硬盘最好用dump,尽量不用tar,因为你备份根分区的时候,如果不加参数排除一些目录,它会把全部东西备份到你新的分区的,这肯定不是我们想看到的。
hpserver# cd /mnt/root
hpserver# dump -f- / | restore -f- -r
hpserver# cd /mnt/var
hpserver# dump -f- /var | restore -f- -r
hpserver# cd /mnt/usr
hpserver# dump -f- /usr | restore -f- -r
4、到这里为止,数据备份和还原已经结束,检查一下有没有错漏,然后分别umount这些分区。
hpserver# umount /mnt/root
hpserver# umount /mnt/usr
hpserver# umount /mnt/var
5、最后,关机,摘掉原来的硬盘,把新硬盘挂到旧硬盘原来的位置,这步不要省略了,如果你不换位置,系统还是认为新硬盘是ad2,由于你的/etc/fstab里面是对应ad0的,所以启动会找不到/usr和/var等文件系统。启动看看,如果没有什么异常,那恭喜你,数据迁移已经成功,否则,请再看看有什么操作错误或者忘记做哪一步了。无论怎样,都别那么着急把旧硬盘内容清空,最好让新的系统运行几天观察有什么异常再动手。
切记,数据迁移的是一件比较危险的事情,操作过程中不能有差错,否则可能导致你原来的数据丢失,所以必须非常谨慎。
FreeBSD的硬盘分区策略
在开始安装系统以前, 必须决定要使用多大的硬盘空间来安装 FreeBSD, 而且必须决定 partition 应该如何分割. 因为一旦你安装完系统以后, 再想改变一个 partition 的大小就必须把资料备份出来再重新分区、格式化(format)。
一般情况下, 你必须准备一个 primary partition 给 FreeBSD, *BSD 传统上只能装在 primary 上。FreeBSD 经过修改可以使用逻辑分区(logical partition), 但开机区还是必须是 primary。
在FreeBSD 中,分区的概念与DOS/WIN系统略有不同。FreeBSD将一块硬盘分成最多四个slice(片段),每一个slice上又可以分成最多8个partition(分区)。也就是说FreeBSD将DOS/Windows里的一个分区看作一个slice。在以后的叙述中,将采用FreeBSD 的概念,即slice和partition的硬盘分区术语。
FreeBSD最多可以将一个slice分成8个partition,分别称之为a,b,c,d,e,f,g,h,传统上a,b,c,d分区有特殊的意义,a表示root分区,b表示swap分区,c表示整个slice,d表示整个硬盘从FreeBSD-2.0.5 Release开始,FreeBSD发展了新的slice概念,只有c内定位整个slice,其他都可自由使用,但一般还是遵循传统观念,即a:root,b:swap,efgh:其他。
下表展示了一个典型的硬盘分区情况。
wd0s1(Dos Pri-C:)
wd0s2(FreeBSD) wd0s3(Dos Extend)
wd0s2a(root) wd0s2b(swap) wd0s2e(/usr) wd0s5(D:) wd0s6(E:)
对非BSD的slice,是没有a,b,c,d等分区概念的,另外对于DOS扩展分区上的逻辑分区是定义为从s5开始编号的slice。即wd0上的dos扩展分区上的第一个逻辑分区为wd0s5,第二个逻辑分区为wd0s6。
硬盘分割策略一:
对 FreeBSD 的新使用者, 建议只把你的 BSD slice 分割成为两个区块,一个是 a, 当做 root partition 放所有文件, 另一个是 b, 用作 swap. (当然 a 要够大根据你要安装的文件的大小确定)
硬盘分割策略二:
如果有比较大的硬盘,则可以将硬盘分成多个partition,如:
partition a:100M for / (含/bin /sbin /etc /var kernel)
partition b:64M for swap
partition e:1000M for /usr
partition f:500M for /home
这样可以在重新安装系统时不损坏/home下存放的自己的文档资料。
上面的分割策略只是一个建议,你还是需要根据自己的需要决定如何进行分区,在你安装过几次系统之后就会找到自己喜欢的分区方法了。
(转)如何复制Freebsd到另外一块硬盘
FreeBSD 也可以用 cp 来复制文档 , 但是对于复制整个文档系统并不是好方法 .
这里介绍使用 dump 和 restore 来做 :
1. 创建新的文档系统
假如你的新硬盘为 ad1, 而将来的根分区将是 ad1s1a, 你可以先创建文档系统 :
newfs /dev/ad1s1a
mount /dev/ad1s1a /mnt
cd /mnt
2. 复制 :
dump -f- / | restore -f- -r
这是把老的根文档系统复制输出到管道 , restore 从管道里读数据 , 写入当前
目录所在的文档系统 .
3. 按部就班复制其他文档系统
复制完後 , 也许 要修改新硬盘下的 /etc/fstab, 安装上新的分区 , 摘下老硬盘
就可以了 .
再补充一点 , 如果你要复制的是另外一台机器 , 可以用 rsh, 这样就可以通过网络把一个分区数据传送到另外一台机器 , 不需要 NFS, 不需 SAMBA 等就可以解决问题 , 而 cp 就很难作到了。
newfs /dev/ad1s1a
mount /dev/ad1s1a /mnt
cd /mnt
rsh -l yourname thathost ‘dump -f- /’ | restore -f- -r
转自linuxaid
FreeBSD分区知识学习及实验备忘录
作者:顾翠文 EMAIL: win2linux@163.com
版权申明: 仅限非赢利性组织网站,BBS,以及个人博客收藏,用于其他用途前请先和作者联系。
关键字: freeBSD 分区 分区工具
今天对FreeBSD的硬盘分区和存储方式作了一组实验,现在记录下来备案。
首先,由于FreeBSD的分区方式和Linux以及windows的分区方式有很大不同,因此分区和磁盘存储相关的工具的使用也有很大的不同 .为了描述方便,我将FreeBSD中的slice称作主分区,而slice中进一步包含的partition称为逻辑分区。
一,基本概念。
在所有PC体系架构上安装的操作系统都只能分四个分区。这四个分区在不同的操作系统中有不同的说法,在windows和linux中,通常被称为主分区(primary partition),而在BSD风格的UNIX以及Solaris系统中被称为slice (英文原意为小碎片,不知道有没有好的翻译来表述)。slice和主分区是同一个概念,在PC上能安装的操作系统都能根据MBR中的分区表认出这样的主分区。 在windows和linux中,一个硬盘可以分四个主分区,其中一个可作为扩展分区,再在扩展分区中划分逻辑分区,而其他三个主分区则只能作为最小的分区单位了。就是说,只能选择一个扩展分区,然后再在扩展分区中划分逻辑分区。扩展分区中包含的逻辑分区数目可以有很多个,查了资料,一种说法是最多64个,还没有具体验证过,不过反正这个数目比较大,可把硬盘分得足够细。
而FreeBSD,则可以在每个slice中再划分更小的分区单位,在FreeBSD中硬盘的slice中,这种更小的分区单位被称为partition,其概念和windows和linux中的逻辑分区的概念类似。这种更小的分区单位用小写字母a-h表示,共有8个,但是其中c分区有特殊含义,c分区表示该分区所在的整个slice(主分区)。就相当于在solaris中/dev/dsk/c0t0d0c2分区一样,在sparc体系的solaris系统中c0t0d0c2表示的是整个磁盘,因为solaris中没有其他表示整个磁盘的设备名称。 从概念上讲FreeBSD中的/dev/ad0s1c 等同于 /dev/ad0s1
因此,在FreeBSD中,一个硬盘最多可划分(8-1)x4 = 28 个分区。原先老的FreeBSD系统中,逻辑分区d也有特殊用途,就是说,在老版本的FreeBSD系统中,每个硬盘最多能分(8-2)X4 = 24 个分区,但是现在这个d分区的特殊用途也已经淡化了,虽然用sysinstall划分逻辑分区的时候sysinstall会尽量避开使用d分区,但是今天经过实验验证,d分区标识也可以作为一个普通的数据存储分区标识。 因此,以IDE硬盘为例在freebsd中第一块硬盘正常情况下可用的分区设备号为:/dev/ad0s1a /dev/ad0s2a /dev/ad0s3a /dev/ad0s4a /dev/ad0s1b /dev/ad0s2b /dev/ad0s3b /dev/ad0s4b /dev/ad0s1d /dev/ad0s2d /dev/ad0s3d /dev/ad0s4d /dev/ad0s1e /dev/ad0s2e /dev/ad0s3e /dev/ad0s4e /dev/ad0s1f /dev/ad0s2f /dev/ad0s3f /dev/ad0s4f /dev/ad0s1g /dev/ad0s2g /dev/ad0s3g /dev/ad0s4g /dev/ad0s1h /dev/ad0s2h /dev/ad0s3h /dev/ad0s4h
二, FreeBSD下分区工具的使用。
在FreeBSD下最方便的分区方法是使用sysinstall提供的菜单选项,根据提示来完成分主分区(slice)和分逻辑分区(partiton)的划分工作。 这个方法比较简单,很容易学会。
今天主要学习了一下命令行工具fdisk 和 disklabel(又名bsdlabel)的使用。
首先,fdisk是用来划分主分区的,也就是用来划分slice,这一点和linux系统有很大的不同 .
一般的使用方法:dd if=/dev/zero of=/dev/ad0 bs=1k count=1 #目的是先清除硬盘上原有的分区表,新硬盘可跳过这步。
fdisk -BI /dev/ad0 #在硬盘/dev/ad0上创建一个主分区(slice)。
看了一下fdisk的man文档,参数B表示在硬盘的MBR中写入一个标准引导记录,I选项表示将整个硬盘划分出一个slice.也就是说,命令行的分区工具fdisk只能在一个硬盘上划分出一个主分区,应该通过-f参数加配置文件可以定义并划分出四个主分区,但是光用fdisk提供的参数,好像只能划分出一个来。这一点上来说,FreeBSD的命令行分区工具做得还不够人性化,还是用sysinstall提供的界面来分区更方便。
disklabel/bsdlabel的使用:
disklabel -B -w /dev/ad0s1 auto disklabel -e /dev/ad0s1
查看了bsdlabel的man文档,参数B表示在该主分区中写入引导程序。按照handbook中关于FreeBSD引导过程的描述,fdisk 的 B参数是表示在硬盘的MBR中写入boot0(512字节),而bsdlabel中的B参数则表示在该主分区中写入该主分区的引导记录(并非主引导记录),即boot1(512字节,写在主分区的第一个扇区)和boot2(大概8K左右,写在分区的某个特定区域,并非文件系统中)。 参数w即write,表示写入,此外还可用r参数读取。
[auto]表示在该主分区中自动划分出一个逻辑分区,有点类似于fdisk中的I参数。如果不加auto参数,则用disklabel -e /dev/ad0s1来分区划分出逻辑分区的时候,disklabel会自动打开一个编辑器,让你手工输入逻辑分区大小,偏移量等信息,然后保存后更据你编辑的信息来划分出逻辑分区。手工编写逻辑分区的信息需要对硬盘的知识比较了解,但是好处是可以很自由的安排逻辑分区的起始位置、大小以及分区名称等信息,而且可以更据FreeBSD的规则最多化出7个可用分区和一个特殊的c分区。而用auto参数字自动划分出一个逻辑分区的好处是不需要对硬盘有比较深入的了结,坏处是只能分一个可用的逻辑分区。
disklabel -e /dev/ad0s1 命令用来在该主分区(slice)中写入该逻辑分区的起始位置等信息。
执行完这条命令后,在/dev/目录下就会自动生成设备文件 ad0s1a 和ad0s1c ,如果是手工编辑逻辑分区信息生成多个分区的话,/dev下会有对应的设备文件生成,用newfs创建文件系统后就可以用该逻辑分区了。
以上命令在handbook中有描述,但是没有这么详细的说明,今天根据实验和man文档,以及自己的理解,写下这些备忘记录,以上理解应该是正确的。
综上所述fdisk工具是用来划分主分区(slice)的,他的操作对象是硬盘的第一个扇区(MBR),在MBR中写入标准引导程序(boot0),以及主分区的分区信息。 而disklabel/bsdlabel是用来在主分区中划分逻辑分区的,他的操作对象是硬盘中主分区的第一个扇区,以及一些特殊区域,用来写入引导程序的第二、第三步(boot1和boot2)以及位于该主分区中的逻辑分区的分区信息以及标识号。
一般情况下,用fdisk和disklabel/bsdlabel进行分区不太方便也不直观,sysinstall应该是一个快速直观的选择。
通过阅读相关文档和实验以及和其他操作系统的分区方式和概念的对比,对FreeBSD的分区概念和分区工具的使用有了比较清晰的了解 .
三,一组有趣的实验
在实验的过程中,发现一个有趣的现象,即:在FreeBSD中无论是整个硬盘/dev/ad0整个主分区/dev/ad0s1还是主分区中的逻辑分区 /dev/ad0s1a
都可以用newfs直接创建文件系统然后挂到某个目录下使用。
首先,我对一个没有任何分区的硬盘做如下操作:newfs /dev/ad0 mount /dev/ad0 /mnt
发现没有任何错误和警告信息,该硬盘没有分区就直接可以用了,实际测试了一下,也确实正确。
然后对硬盘划分了四个主分区,再分别在四个主分区上创建文件系统:
newfs /dev/ad0s1 newfs /dev/ad0s2 newfs /dev/ad0s3 newfs /dev/ad0s4
mount /dev/ad0s1 /mnt/1 mount /dev/ad0s2 /mnt/2 mount /dev/ad0s3 /mnt/3 mount /dev/ad0s4 /mnt/4
同样没有任何错误和警告,这些主分区在没有进一步划分逻辑分区的情况下也可直接创建文件系统后使用。
最后,再在四个主分区中分别划分出几个逻辑分区,创建文件系统后当然也能使用,这是FreeBSD中默认的硬盘使用方式。
我甚至对代表整个主分区的c号逻辑分区上创建文件系统:newfs /dev/ad0s1c mount /dev/ad0s1c /mnt 这样也能使用,当然 如果划分了其他逻辑分区的情况下,这种用法会破坏其他逻辑分区,这种用法和:newfs /dev/ad0s1 mount /dev/ad0s1 /mnt 应该是一致的。
通过实验得出结论:在FreeBSD中,硬盘不需要分区,可直接创建文件系统而使用该硬盘。
创建分区的好处,是可以和其他操作系统共存一个硬盘上。
在FreeBSD系统上做完上述实验后,本人又想到linux上是否也可以不划分分区而直接使用整个硬盘呢?
立即做了一下实验,证实了我的想法是正确的,只不过linux的创建文件系统命令mkfs.ext3会发出警告,只要回答yes就可以直接在一个没有分区的硬盘上创建文件系统并mount到系统中使用了。
命令如下:mkfs.ext3 /dev/sdb mke2fs 1.32 (09-NOv-2002)
/dev/sdb is entire device, not just on
Proceed anyway? (y,n) y
mount /dev/sdb /mnt
以上实验说明,在操作系统中,硬盘分区并非必需的,分区是为了更好的管理文件和与其他系统共存。