免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7190 | 回复: 12
打印 上一主题 下一主题

[FreeBSD] FreeBSD分区知识学习及实验备忘录 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-03 18:40 |只看该作者 |倒序浏览
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 one partition!
Proceed anyway? (y,n) y

mount /dev/sdb /mnt

以上实验说明,在操作系统中,硬盘分区并非必需的,分区是为了更好的管理文件和与其他系统共存。

论坛徽章:
0
2 [报告]
发表于 2006-03-06 13:43 |只看该作者
写得还不少,应该顶

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2006-03-06 14:06 |只看该作者
不错

论坛徽章:
0
4 [报告]
发表于 2006-03-06 14:17 |只看该作者
支持原创


谢谢分享

论坛徽章:
0
5 [报告]
发表于 2006-03-06 16:58 |只看该作者
学习

论坛徽章:
0
6 [报告]
发表于 2006-03-06 17:16 |只看该作者
有趣

论坛徽章:
0
7 [报告]
发表于 2006-03-08 01:37 |只看该作者
It sounds an academic work.

论坛徽章:
0
8 [报告]
发表于 2006-03-08 10:35 |只看该作者

怎么在已有Windows的硬盘上分Slice?

怎么在已有Windows的硬盘上分Slice?
FreeBSD的Slice应该划分在什么地方,
和RedHat一样选在硬盘的剩余自由空间?
安装时选择装启动菜单,当卸载FreeBSD时,
是不是也是在DOS下 fdisk /mbr,然后就可以安全删除BSD分区?

论坛徽章:
0
9 [报告]
发表于 2006-03-10 12:11 |只看该作者
原帖由 hotbbs 于 2006-3-8 10:35 发表
怎么在已有Windows的硬盘上分Slice?
FreeBSD的Slice应该划分在什么地方,
和RedHat一样选在硬盘的剩余自由空间?
安装时选择装启动菜单,当卸载FreeBSD时,
是不是也是在DOS下 fdisk /mbr,然后就可以安全删除 ...


一般人的windows分区都是一个主分区+一个扩展分区, 然后扩展分区中又有几个逻辑分区.这对BSD系统来说,就是两个主分区.

因此,如果是这种情况的话,只能把第一个主分区缩小,或者把扩展分区缩小,腾出空白空间来划分出一个主分区.不能在windows的逻辑分区中安装BSD类系统. windows的扩展分区和逻辑分区是windows特有的概念,就和BSD系统中的slice+partition 一样. slice是大分区,partition是slice中进一步划分的更小的分区单位. windows中,扩展分区是一个大分区(PC标准分区),逻辑分区是扩展分区中进一步划分的更小的分区单位.但windows向用户屏蔽技术细节,这些不同的分区对用户来说都是以大写字母表示的C盘,D盘,E盘 等等。

linux为了迁就windows,也默认采用了windows的分区概念和方式.但是从条理上来说,BSD类的系统的分区概念和方式更合理一些. 因为linux迁就windows的分区方式,因此大部分用windows和linux的用户都不知道BSD系统的分区概念.也不知道一个硬盘只能分四个主分区等这样的知识, 具体的关于PC机硬盘的分区的详细知识请看我的另一偏文章<硬盘分区知识详解如何安装多系统>(搜 google)

论坛徽章:
0
10 [报告]
发表于 2007-07-05 11:37 |只看该作者
好文章 ,想进一步了解一下freebsd在支持多OS时的引导方式
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP