第12章 存 储
12.1概要
这章介绍了FreeBSD中磁盘的使用方法。包括后备存储磁盘,网络附属磁盘和标准的SCSI/IDE存储设备。
读完这章,你将了解到这些:
FreeBSD中用来描述数据组织的术语(partition和slice)。
如何挂上和卸载文件系统。
如何在你的系统上增加硬盘。
如何设置虚拟文件系统。
如何使用配额来限制磁盘空间的使用。
如何刻录CD和DVD。
用于备份的多种存储媒介选项。
如何在FreeBSD上使用备份程序。
如何备份到软磁盘。
12.2 设备命名
下面是FreeBSD支持的物理存储设备列表:
表12-1. 物理驱动器命名规则
|
驱动器类型 |
驱动设备命名 |
|
IDE hard
drives |
ad |
|
IDE CDROM
drives |
acd |
|
SCSI hard
drives and USB Mass storage devices |
da |
|
SCSI CDROM
drives |
cd |
|
Assorted
non-standard CDROM drives |
mcd for
Mitsumi CD-ROM,scd for Sony CD-ROM,matcd for
Matsushita/Panasonic CD-ROM |
|
Floppy
drives |
fd |
|
SCSI tape
drives |
sa |
|
IDE tape
drives |
ast |
|
Flash
drives |
fla for
DiskOnChip Flash device |
|
RAID drives |
myxd for
Mylex,and amrd for AMI MegaRAID,idad for Compaq Smart
RAID. |
12.3添加磁盘
假设我们要给一台只有一个磁盘的机器增加一个新的SCSI磁盘。首先,需要关掉计算机,然后按操作规程来安装驱动器,控制器和驱动程序。
以root登陆计算机。安装完驱动器后,检查一下/var/run/dmesg.boot有没有找到新的磁盘。新增加的磁盘就是da1,我们在/1挂上它。(如果你正添加一个IDE驱动器,在4.0版以前的系统就是wd1,而4.0和以后的版本的系统就是ad1)。
因为FreeBSD运行在IBM-PC兼容机上,它必须遵循PC BIOS的分区规范。这与传统的BSD分区是不同的。一个PC的磁盘最高只能有四个BIOS(主)分区。如果磁盘只安装FreeBSD,你可以使用一种模式。另外,FreeBSD必须安装在PC
BIOS支持的分区内。FreeBSD把分区叫做slice,这可能会把人搞糊涂。你可以在只安装FreeBSD的磁盘上使用slice,也可以在安装有其他操作系统的磁盘上使用slice。这不会搞乱其他操作系统的Fdisk分区工具。
在slice这个例子中,驱动器被添加到/dev/da1s1e。这被读作:SCSI磁盘,编号为1(第二个SCSI磁盘),slice
1和e BSD分区。在有些例子中,也可以简化为/dev/da1e。
12.3.1使用sysinstall
1. 使用Sysinstall
你可以使用/stand/sysinstall命令,选择它的使用菜单来分区和标签一个新的磁盘(需要有root权限)。运行/stand/sysinstall,然后选择配置菜单。根据配置菜单,上下滚动,选择分区条目。接下来你会看到一个安装在你系统上的硬盘的列表。如果没有看到da1,你需要重新检查你的硬件安装,在/var/run/dmesg.boot文件中检查dmesg输出信息。
2. FDISK分区编辑器
选择da1,键入FDISK分区编辑器。选择A,为FreeBSD使用全部的磁盘。当被告知你是否要“remain cooperative with any
future possible operating systems”时,回答YES。使用W保存刚才的修改。现在使用q退出FDISK编辑器。下面是你会看到的有关主引导区的信息。现在你已在运行的系统上添加了一个磁盘,就选择None。
3. DiskLabel编辑器
接下来是键入磁盘标签编辑器(Disk label Editor)。这就是你要创建的BSD分区。一个磁盘最高可以有8个分区,标记为a-h。有几个分区标签有特殊的用途。有的分区被用作root分区(/)。你的系统磁盘(你从它那儿启动的分区)必须有一个a分区。B分区被用作交换分区,你可以用很多磁盘用作交换分区。
Sysinstall的标签编辑器支持非root和非swap分区。在标签编辑器中,可以使用C创建一个文件系统。当提示这是否是一个FS(文件系统)或swap时,选择FS,然后给出一个加载点(如:/mnt)。当在post-install模式时添加一个磁盘,sysinstall不会为你在/etc/fstab中创建,所以你指定的加载点并不重要。
你现在已经准备把新标签写到磁盘上,然后创建一个文件系统,可以按下W来实现。出现任何错误都会使它不能创建新的分区。可以退出标签编辑器然后重新执行sysinstall。
4. 完成
下面一步就是编辑/etc/fstab,为你的新磁盘添加一个记录。
12.3.2使用命令行工具
使用Slice
这步安装将允许你的磁盘与可能安装在你计算机上的其他操作系统一起正确工作,而不会搞乱其他操作系统的分区。强烈推荐使用这种方法来安装新磁盘。
# dd if=/dev/zero of=/dev/rda1 bs=1k count=1
# fdisk -BI da1 #初始化你的新磁盘
# disklabel -B -w -r da1s1 auto #加上标签
# disklabel -e da1s1 #现在编辑你刚才创建的磁盘分区
# mkdir -p /1
# newfs /dev/da1s1e # 为你创建的每个分区重复这个操作
# mount -t ufs /dev/da1s1e /1 # 挂上分区
# vi /etc/fstab # 完成之后,添加合适的记录到你的/etc/fstab文件
如果你有一个IDE磁盘,记得要用ad来替换da,4.x以前的系统要用wd来替换。
专用的
如果你并没有安装其他的操作系统,你可以使用专用模式。记住这种模式可能会弄乱microsoft的操作系统;但不会对它进行破坏。
# dd if=/dev/zero of=/dev/rda1 bs=1k count=1
# disklabel -Brw da1 auto
# disklabel -e da1
#创建'e'分区
# newfs -d0 /dev/rda1e
# mkdir -p /1
# vi /etc/fstab
# 为/dev/da1e添加一条记录
# mount /1
另外一种方法:
# dd if=/dev/zero of=/dev/rda1 count=2
# disklabel /dev/rda1 | disklabel -BrR da1 /dev/stdin
# newfs /dev/rda1e
# mkdir -p /1
# vi /etc/fstab
# add an entry for /dev/da1e
# mount /1
12.4 网络,内存和基本文件系统
除了安装在你计算机上的物理硬件:软盘驱动器,CD,硬盘等,其他形式的磁盘——虚拟磁盘也能被FreeBSD认出来。这些包括网络文件系统和coda,象md(memory disk)这样的内存文件系统,还有vnconfig或mdconfig创建的后备文件系统。
12.4.1 vnconfig: 后备文件系统
Vnconfig可以配置和启用vnode伪磁盘设备。一个vnode是一个文件的描述,是文件活动的中心。这是说vnconfig使用文件来创建和操作一个文件系统。
挂上一个存在的文件系统的映像:
例12-1.使用vnconfig挂上一个存在的文件系统的映像
# vnconfig vn0 diskimage
# mount /dev/vn0c /mnt
使用vnconfig创建一个新的文件系统映像:
例12-2.使用vnconfig创建一个新的后备磁盘
# dd if=/dev/zero of= newimage bs=1k count= 5k
5120+0 records in
5120+0 records out
# vnconfig -s labels -c vn 0 newimage
# disklabel -r -w vn 0 auto
# newfs vn 0c
Warning: 2048 sector(s) in last cylinder unallocated
/dev/rvn0c: 10240 sectors in 3 cylinders of 1 tracks, 4096 sectors
5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g)
super-block backups (for fsck -b #) at:
32
# mount /dev/vn 0c /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/vn0c 4927 1 4532 0% /mnt
12.4.2 md: 内存文件系统
md是一个简单,高效创建内存文件系统的方法。
例如:
例12-3. md memory disk
# dd if=newimage of=/dev/md0
5120+0 records in
5120+0 records out
# mount /dev/md0c /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0c
4927 1 4532 0% /mnt
12.5文件系统配额
配额是操作系统的一个可选择的特性,它允许你限制用户使用的磁盘空间大小或是使用的文件数量。这可以防止某个用户强占所有的磁盘空间。
12.5.1配置你的系统来启用磁盘配额
在决定使用磁盘配额前,确信磁盘配额已经在你的内核中配置好了。只要在你的内核配置文件中添加下面一行就行了:
options QUOTA
在默认情况下,GENERIC内核是不会启用这个功能的,所以你必须配置,重建和安装一个定制的内核。请参考FreeBSD内核配置这章了解更多有关内核配置的信息。
接下来,你需要在/etc/rc.conf中启用磁盘配额。可以通过添加下面这行来完成:enable_quotas=“YES”
很好的控制你的配额启动情况,这是另外一个可利用的变量。通常启动时,集成在每个文件系统上的配额会被配额检查程序自动检查。配额检查功能能够确保在配额数据库中的数据正确地反映了文件系统的数据情况。这是一个很耗时间的处理进程,它会影响你系统的启动时间。如果你想跳过这一步,可以加入下面这一行:
check_quotas=“NO”
如果你运行的是3.2-RELEASE以前的版本,配置比较简单,只需要配置一个选项。在你的/etc/rc.conf中设置下面这行:
check_quotas=“YES”
最后,你要编辑/etc/fstab文件,在每一个文件系统基础上启用磁盘配额。这是你可以启用用户和组配额,或启用你的所有文件系统的地方。要在一个文件系统上启用每个用户的配额,可以在/etc/fstab记录中为你要启用配额的文件系统添加下面一行。例如:
/dev/da1s2g /home ufs rw,userquota
1 2
同样的,要启用组配额,使用组配额选项来代替用户配额关键字。要同时启用用户和组配额,可以这样做:
/dev/da1s2g /home ufs rw,userquota,groupquota 1 2
默认情况下,配额文件是存放在文件系统的以quota.user和quota.group命名的根目录下。可以看看fstab的联机手册了解更多信息。即使联机手册说你可以为配额文件指定一个可改变的区域,这里并不推荐这样做,因为不同的配额工具不一定遵循这样的规则。到这儿,你可以用你的新内核重新启动你的系统。/etc/rc将自动运行适当的命令来创建最初的配额文件,所以并不需要手动来创建任何零长度的配额文件。
在通常的操作过程中,你并不要求手动运行quotacheck,quotaon,quotaoff命令。然而,你可能需要阅读与他们的操作相似的联机手册。
12.5.2设置配额限制
一旦你配置好了启用配额的系统,可以检查一下它们是否真的有用。可以这样做:
# quota -v
你应当为启用配额的每个文件系统看看一个磁盘使用和当前配额限制的在线摘要。你现在可以使用edquota命令准备启用配额限制。
你有几个有关如何强迫限制用户或组可以分配到的磁盘空间大小的选项。你可以限制磁盘空间的分配,或文件的数量,或两者都有。这些限制中的每一个最终可分为两类:硬限制和软限制。
一个硬限制可能无法被超越。一旦一个用户访问到了他们的硬限制,他们无法在文件系统中得到任何分配。例如,如果用户在文件系统上有一个500 blocks的硬限制,而当前已经分派了490个blocks,用户就只能分派剩下的10个blocks。如果硬是要分派11个blocks将会失败。
软限制可以被有时间限制性地超越。这段时间可以被理解为宽限期,默认是一个星期。如果一个用户延缓时间太长的话,软限制将会变成硬限制,根本就不允许被指派。当用户在软限制延后时,宽限期将会被重新安排。
下面是一个当你运行edquota命令时看到的例子。当edquota命令被调用时,你会被转移进EDITOR环境变量指派的编辑器中,允许你编辑配额限制。
# edquota -u test
Quotas for user test:
/usr: blocks in use: 65, limits (soft
= 50, hard = 75)
inodes in use: 7, limits (soft
= 50, hard = 60)
/usr/var: blocks in use: 0, limits (soft
= 50, hard = 75)
inodes in use: 0, limits (soft
= 50, hard = 60)
在每一个文件系统上,你通常会看到两行。一行是block限制,另一行是inode限制。简单地改变你要修改的配额限制的值。例如,提高这个用户软限制的数值到500,硬限制的数值到600。
/usr: blocks in use: 65, limits (soft
= 50, hard = 75)
到:
/usr: blocks in use: 65, limits (soft
= 500, hard = 600)
当你离开编辑器的时候,新的配额限制设置将会被保存。
12.5.3检查配额限制和磁盘使用
你既可以使用quota也可以使用requota命令来检查配额限制和磁盘使用情况。Quota命令能够检查单个用户和组的配额和磁盘使用情况。只有超级用户才可以检查其他用户的配额和磁盘使用情况。requota命令可以用来了解所有配额和磁盘的使用情况。
下面是一个使用quota -v命令后的输出情况。
Disk quotas for user test (uid 1002):
Filesystem blocks
quota limit grace files
quota limit grace
/usr 65* 50 75 5days 7 50 60
/usr/var 0 50 75
0
50 60
上面的例子中,在/usr文件系统中,这个用户超越了软限制(50 blocks)15个blocks,而且它有5天的宽限期。
注意*号表示用户当前超过了他的配额限制。
通常用户没有在上面使用任何磁盘空间的文件系统不会在quota命令的输出中显示,即使他有一个针对文件系统的配置限制。-v选项将显示那些文件系统,如上一个例子中的/usr/var文件系统。
12.5.4通过NFS进行配额
配额能够在NFS服务器上被配额子系统强迫使用。在NFS客户端,rpc.rquotad命令可以使quota信息用于quota命令,可以允许用户察看它们的quota统计信息。
可以这样在/etc/inetd.conf中启用rpc.rquotad:
rquotad/1 dgram rpc/udp wait root
/usr/libexec/rpc.rquotad rpc.rquotad
现在重起inetd:
# kill -HUP 'cat /var/run/inetd.pid'
12.6创建和使用光学设备(CD和DVD)
12.6.1介绍
CD与普通的磁盘相比有很多不同的特性。最初,它们是不能被用户写入的。CD有磁道(track),要在FreeBSD中制作一个CD,你要准备将要写到CD上的数据文件,然后根据每个track写入到CD。
ISO9660文件系统被设计用来处理这些差异。它通常不会对文件系统作限制。幸运的是,它提供了一个可扩展的机制允许在制作CD时超越这些限制。
mkisofs程序能用来生成一个包含一个ISO9660文件系统的数据文件。它有很多支持的扩展选项,下面会具体描述。你可以从/usr/ports/sysutils/mkisofs port中安装它。
使用哪个工具来刻录CD依赖于你的CD刻录机是ATAPI的还是其他类型的。ATAPI CD刻录器使用burncd程序,可以在基本系统中找到。SCSI和USB
CD刻录机使用cdrecord程序,可以在/sysutils/cdrtools中找到。
12.6.2 mkisofs
mkisofs制作一个ISO9660的文件系统,简单用法如下:
# mkisofs -o imagefile.iso /path/to/tree
这个命令将创建一个包含ISO9660文件系统的imagefile文件,它是目录树/path到/tree