FreeBSD handbook中文版 12 存储 |
| 来源:本文出自: 作者: 张纪青编译 wxjoshua@163.com (2003-01-16 06:02:01) |
|
目录
12 存储
12.1 概要
12.2 设备命名
12.3 增加磁盘
12.4 网络,内存和基本文件系统
12.5 文件系统配额
12.6 创建和使用光学设备
12.7 RAID
12.8 用磁带机备份
12.9 备份程序
12.10 用软盘备份
=============================================================
第12 章. 存储
=============================================================
(翻译中出现的任何问题或错误,请广大读者及时反馈给我:freebsdhandbook@163.com)
12.1 概要
这章介绍了FreeBSD 中磁盘的使用方法。包括后备存储磁盘,网络附属磁盘和标准的
SCSI/IDE 存储设备。
读完这章,你将了解到这些:
. FreeBSD 中用来描述数据组织的术语。
. 如何挂上和卸载文件系统。
. 如何在你的系统上增加硬盘。
. 如何设置虚拟文件系统。
. 如何使用配额来限制磁盘空间的使用。
. 如何刻录CD 和DVD。
. 用于备份的多种存储媒介选项。
. 如何在FreeBSD 上使用备份程序。
. 如何备份到软磁盘。
这一章主要介绍在FreeBSD 中使用磁盘。
12.2 设备命名
下面是FreeBSD 支持的物理存储设备列表:
表12-1. 物理驱动器命名规则
驱动设备命名驱动器类型
ad IDE hard drives
acd IDE CDROM drives
SCSI hard drives and USB Mass storage da
第1 页FreeBSD 使用手册
devices
cd SCSI CDROM drives
mcd for Mitsumi CD-ROM, scd for Sony Assorted non-standard CDROM drives
CD-ROM, matcd for Matsushita/Panasonic
CD-ROM
fd Floppy drives
sa SCSI tape drives
ast IDE tape drives
fla for DiskOnChip Flash device Flash drives
myxd for Mylex, and amrd for AMI MegaRAID, RAID drives
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 把分区
叫做slices,这可能会把人搞糊涂。
在slice 中,驱动器被加到/dev/da1s1e。这被读作:SCSI 磁盘,编号为1(第二个SCSI
磁盘),slice 1,和e BSD 分区。在有些例子中,也可以简化为/dev/da1e。
12.3.1 使用sysinstall
1. 使用Sysinstall
第2 页FreeBSD 使用手册
你可以使用/stand/sysinstall 命令,选择它的使用菜单来分区和标签一个新的磁盘
(需要有root 权限)。运行/stand/sysinstall,然后选择配置菜单。根据配置菜单,上下
滚动,选择分区条目。接下来你会看到一个安装在你系统上的硬盘的列表。如果没有看到
da1,你需要重新检查你的硬件安装,在/var/run/dmesg.boot 文件中检查输出信息。
2. FDISK 分区编辑器
选择da1,键入FDISK 分区编辑器。选择A,为FreeBSD 使用全部的磁盘。当被告知你
是否要“remain cooperative with any future possible operating systems”时,回答
YES。使用W 保存刚才的修改。现在使用q 退出FDISK 编辑器。下面是你会看到的有关主引
导区的信息。现在你已在运行的系统上添加了一个磁盘,就选择None。
3. DiskLabel 编辑器
接下来是键入磁盘标签编辑器。这就是你要创建的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 使用命令行工具
12.3.2.1 使用Slices
第3 页FreeBSD 使用手册
这步安装将允许你的磁盘与可能安装在你电脑上的其他操作系统一起正确工作,而不会
搞乱其他操作系统的分区。强烈推荐使用这种方法来安装新磁盘。
# 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 来替换。
12.3.2.2 专用的
如果你并没有安装其他的操作系统,你可以使用专用模式。记住这种模式可能会弄乱
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
第4 页FreeBSD 使用手册
# vi /etc/fstab # add an entry for /dev/da1e
# mount /1
12.4 网络,内存和基本文件系统
除了安装在你电脑上的物理硬件:软盘驱动器、CD、硬盘等,其他形式的磁盘----虚拟
磁盘也能被FreeBSD 认出来。这些包括网络文件系统和coda,象md 这样的内存文件系统,
还有vnconfig 创建的后备文件系统。
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 vn0 newimage
# disklabel -r -w vn0 auto
# newfs vn0c
警告: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:
第5 页FreeBSD 使用手册
32
# mount /dev/vn0c /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
第6 页FreeBSD 使用手册
在默认情况下,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 将自动运行适当的命令来创建最初的
配额文件,所以并不需要手动来创建任何零长度的配额文件。
第7 页FreeBSD 使用手册
在通常的操作过程中,你并不要求手动运行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)
第8 页FreeBSD 使用手册
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 天的宽限期。
12.5.4 通过NFS 进行配额
Quotas 能够在NFS 服务器上被quota 子系统强迫使用。在NFS 客户端,rpc.rquotad
守护程序可以使quota 信息用于quota 命令,可以允许用户察看他们的quota 统计信息。
第9 页FreeBSD 使用手册
可以这样在/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 有tracks,
要在FreeBSD 中制作一个CD,你要准备将要写到CD 上的数据文件,然后根据每个tracks
写入到CD。
ISO 9660 文件系统被设计用来处理这些差异。它通常不会对文件系统作限制。幸运的
是,它提供了一个可扩展的机制允许在制作CD 时超越这些限制。
Mkisofs 程序能用来生成一个包含iso9660 文件系统的数据文件。它有很多支持的扩展
选项,下面会具体描述。你可以从/usr/ports/sysutils/mkisofs port 中安装它。
使用哪个工具来刻录CD 依赖于你的CD 刻录机是ATAPI 的还是其他类型的。ATAPI CD
使用burncd 程序。SCSI 和USB CD 刻录机使用cdrecord 程序。
12.6.2 mkisofs
mkisofs 制作一个ISO9660 的文件系统,简单用法如下:
# mkisofs -o imagefile.iso /path/to/tree
这个命令将创建一个包含ISO9660 文件系统的映象文件。在处理过程中,它将文件名称
影射为标准的ISO 9660 文件系统的文件名,它将排除那些不典型的ISO 文件系统的文件。
可以看看mkisofs 的详细描述,以便更好地使用它。
有很多选项能够用来克服那些限制。特别的,-R 选项能够启用Rock Ridge 扩展,-J
选项能启用用于microsoft 系统的Joliet 扩展,-hfs 能用来创建用于MAC 的HFS 文件系统。
第10 页FreeBSD 使用手册
对于那些即将要在FreeBSD 系统中使用的CD 来说,-U 能用来消除所有文件名的限制。
当使用-R 选项时,它会产生一个文件系统映象。
最后一个通常使用的选项是-b。这可以用来指定启动映象的位置,以产生一个叫做“El
Torito”的启动光盘。
12.6.3 burncd
如果你用的是ATAPI 的CD burner,你可以使用burncd 命令来刻录ISO 映象到CD 上。
Burncd 是基本系统的一部分,可以使用/usr/sbin/burncd 来安装。用法很简单,如下:
# burncd -f cddevice data imagefile.iso fixate
刻录imagefile.iso的一个拷贝。默认的设备是/dev/acd0c。看看burncd 的选项来设
置写入速度,刻完之后退出CD,然后写入声音数据。
12.6.4 cdrecord
如果你没有一个ATAPI 的CD burner,你必须使用cdrecord 来刻录你的CD。Cdrecord
不是基本系统的一部分;你必须从sysutils/cdrtools 或设当的package 中安装它。基本系
统的变化可能会引起这个程序的错误,可能是由“coaster”引起的。当你升级系统时,你
需要升级port,或者如果你已升级到-STABLE,你使用新版本时也要升级port。
Cdrecord 有很多选项,基本用法与burncd 相似。刻录一个ISO9660 映象文件只需这样
做:
# cdrecord dev= device imagefile.iso
使用cdrecord 的比较巧妙的方法是找到使用的dev。要找到正确的设置,可以使用
cdrecord 的-scanbus 标记,这会产生这样的结果:
# cdrecord -scanbus
Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 J.rg Schilling
Using libscg version 'schily-0.1'
scsibus0:
第11 页FreeBSD 使用手册
0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk
0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk
0,2,0 2) *
0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk
0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
scsibus1:
1,0,0 100) *
1,1,0 101) *
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM
1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner
1,7,0 107) *
这个列表列出了设备的适当的dev 值。在这个例子中,CRW 是1,5,0,所以正确的输
入应是dev=1,5,0。有一个很容易的方法可以指定这个值;看看cdrecord 的介绍。在那儿也
可以找到有关音轨,控制速度和其它的东西。
12.7 RAID
12.7.1 软件RAID
第12 页FreeBSD 使用手册
12.7.1.1 ccd (连接磁盘配置)
今天几乎每个人都收集了很多的多媒体文件。从mp3 到视频文件。我也有很多转换过的
mp3 音乐文件。我现在面临一个问题是如何存储这些文件。
选择一个比较好的解决方案,最重要的是产品的速度、性能和成本。通常这三者不可能
都满足,要获得比较快,和大容量的存储设备,就比较昂贵。但如果将成本降下来,那它的
速度或可靠性就会打折扣。我在设计系统时,希望在两者之间达到一个平衡。对我来说,速
度不是非常重要的,因为绝大多数的使用是通过百兆以太网来完成的。
通过几个磁盘来传输文件要快得多。最后,还要考虑可靠性。存放在这个大容量的存储
设备上的所有数据都被备份到了CD-R 盘上了。这个驱动器主要充当实时存储的功能,所以
如果一个驱动器坏了,我就可以换掉它,重建文件系统,把数据从CD-R 上拷回来。
总的计算一下,我需要在有限的成本下得到最大的存储容量。大型的IDE 磁盘现在是一
天比一天便宜。我发现Western Digital 30.7gb 5400 RPM 硬盘只需要150 美元。我买了三
个,加起来足有90GB 的存储容量。
12.7.1.1.1 安装硬件
我在一个已安装有一个IDE 硬盘的系统上再安装一个磁盘。最好是每个IDE 磁盘都使用
一个自己的IDE 控制器,但要求有两个IDE 控制器可能成本比较高。所以,我把两个磁盘一
个设置成主盘,一个设置成从盘。一个放在第一个IDE 控制器上作为系统磁盘,其他两个放
在第二个控制器上。
重启动后,系统BIOS 被配置成自动检测硬盘。FreeBSD 检测到了它们:
ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33
第13 页FreeBSD 使用手册
如果FreeBSD 没有检测到它们,请确定它们的跳线是否正确。接下来要考虑的是,如何
创建文件系统。我对vinum 和ccd 有一些研究。在一些特殊的配置中,ccd 是比较好的选择,
因为它比较简单。Vinum 显得有点超出了我的需要。
12.7.1.1.2 安装CCD
CCD 允许我将几个相同的磁盘通过一个逻辑文件系统连接起来。要使用CCD,我需要在
内核中配置CCD 支持选项。我把这行加入到我的内核配置文件中,然后重建内核:
pseudo-device ccd 4
在FreeBSD 4.0 和以后版本中,CCD 可以作为一个内核模块来加载。这儿是我如何给磁
盘做标记的:
disklabel -r -w ad1 auto
disklabel -r -w ad2 auto
disklabel -r -w ad3 auto
这儿把整个硬盘创建成ad1c, ad2c 和ad3c。下一步是改变disklabel 的类型。
disklabel -e ad1
disklabel -e ad2
disklabel -e ad3
这儿在每个已经设置了EDITOR 环境变量的磁盘上打开了disklabel,在我的例子中,
是vi。你可以看到:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)
我需要添加一个“e“分区给ccd 用。这可以是“c”分区的一个拷贝,但fstype 必须
是4.2BSD。做完之后,你会看到下面这些:
第14 页FreeBSD 使用手册
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)
e: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)
12.7.1.1.3 建造文件系统
现在,我已给每个磁盘都加上了标签,我需要建构ccd。要这样做,我需要一个叫
ccdconfig 的工具,在这儿是/dev/ccd0c。ccdoc 的设备节点可能不存在,所以你需要创建
它,执行下面的命令:
cd /dev
sh MAKEDEV ccd0
Ccdconfig 的最后配置是设备的排列问题。执行下面的命令:
ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e
这样就配置好了ccd。我现在要创建文件系统了。
newfs /dev/ccd0c
12.7.1.1.4 自动创建
最后,如果我要挂上ccd,我需要先配置它。我把当前的配置文件写入/etc/ccd.conf
中:
ccdconfig -g > /etc/ccd.conf
当我重新启动系统时,脚本/etc/rc 就运行ccdconfig –C。这样就能自动配置ccd 了。
如果你启动进入了单用户模式,你在挂上ccd 之前,你需要执行下面的命令来配置队列:
ccdconfig -C
然后,我们需要为ccd 在/etc/fstab 中配置一个记录,以便在启动时能被挂上。
第15 页FreeBSD 使用手册
/dev/ccd0c /media ufs rw 2 2
12.8 用磁带机备份
主要的磁带机有4mm、8mm、QIC、mini-cartridge 和DLT。
12.8.1 4mm (DDS: Digital Data Storage)
在Conner 买下Archive (主要的QIC 制造商)之后,4mm 磁带机取代了QIC 而成为工作
站备份资料的设备。它比8mm 小(3 x 2 x 0.5 inches, 76 x 51 x 12 mm ) ,但对于资料保存
的可信度仍不及8mm ,很安静,同时它的卡也比8mm 来的便宜。它和8mm 一样,读写头
的寿命都不长,因为它们同样是用螺旋状的方式来扫描的。数据传输的速度,约在150 KB/s
到500 KB/s 之间,可存储的空间从1.3 GB 到2.0 GB,硬件压缩可使空间加倍。磁带库单元
可以有6 台磁带机,120 个磁带匣,以自动切换的方式使用同一个磁带柜, 磁带库的容量
可达240 GB 。
4mm 和8mm 同样都是使用螺旋扫描的方式,所有螺旋扫描的优点及缺点,都可在4mm
和8mm 磁带机上看到。磁带在经过2000 次的使用或100 次的满载后,就该退休了。
12.8.2 8mm (Exabyte)
8mm 磁带机是最常见的SCSI 磁带机,也是磁带交换的最佳选择,几乎每个工作站都有
一台exabyte 2 GB 8mm 磁带机。8mm 磁带机可信度高、方便、且安静。卡匣小(4.8 x 3.3 x 0.6
inches,122 x 84 x 15 mm) 而且不贵。8mm 磁带机的下边是一个短短的读写头,而读写头的
寿命取决于磁带经过读写头时,高速的相对运动情况。数据传输的速度,约在250 KB/s 到
500 KB/s 之间,可存储的空间从300 MB 到7 GB,硬件压缩可使空间加倍。磁带库单元可
以有6 台磁带机,120 个磁带匣,以自动切换的方式使用同一个磁带柜,磁带库的容量可达
840 GB 。
资料是使用螺旋扫描的方式记录在磁带上的,读写头和磁带约相差6 度,磁带以270
度缠绕着轴,并抵住读写头,轴适时地旋转,使得磁带具有高密度,并可使磁道紧密地分布,
从一端到另一端。
12.8.3 QIC
QIC-150 是最常见的磁带机。和4 mm 及8 mm 比较,QIC 磁带机相当昂贵,最高可能
要5 倍的价钱(每GigaByte)。假如你需要的是六台左右的磁带机,那么QIC 将是正确的选择。
QIC 是最常见的磁带机,每个工作站都会有一台QIC 磁带机。QIC 磁带机具有几种不同的
第16 页FreeBSD 使用手册
存储密度。QIC 磁带机并不”安静”,读写时的声音都可清淅地听到。QIC 磁带机的规格:6
x 4 x 0.7 inches,15.2 x 10.2 x 1.7 mm 。Mini-cartridges 用的同样是1/4”宽的磁带,将在后
面讨论到。QIC 不具有磁带库及切换的功能。
数据传输的速度介于150 KB/s 和500 KB/s 之间,可存储的空间从40 MB 到15 GB。较
新的QIC 磁带机具有硬件压缩的功能。QIC 的使用率愈来愈低,渐渐被DAT 所取代。
资料以磁道的方式记录在磁带上,磁道数及磁道的宽度会根据容量而有所不同。通常新的磁
带机具有向后兼容(backward-compatibility)的读取功能(通常也具备写入的功能)。对于资料的
安全性,QIC 具有不错的评价。磁带在经过5000 次的使用后,就该退休了。
12.8.4 XXX* Mini-Cartridge
12.8.5 DLT
在这个章节所列出的磁带机中,DLT 具有最快的数据传输速率。1/2”(12.5 mm)的磁带
包含在单轴的磁带匣(4 x 4 x 1 inches,100 x 100 x 25 mm)中。磁带匣的一边是一个旋转匣道,
通过匣道的开合,可以让磁带卷动。磁带匣内只有一个轴,而本章中所提到的其它磁带匣都
是有两个轴的(9 track 磁带机例外)。
数据传输的速度约1.5 MB/s,是4mm,8mm 和QIC 磁带机的三倍,可存储的空间从
10 GB 到20 GB,具有磁带机数据库。磁带机数据库单元可以有1 到20 台磁带机,5 到900
个磁带匣,磁带机数据库的容量可达50 GB 到9 TB 。
资料存储在平行于磁带运行方向的磁道上(同QIC 磁带),一次写入两个磁道。读写头的
寿命相当长,每当磁带停止前进,磁带与读写头之间没有相对运动。
12.8.6 AIT
AIT 是sony 开发的一种新格式,每个磁带最高可以存储50GB。磁带机使用内存芯片来
保存磁带上的索引内容。这个索引能够被磁带机驱动器快速阅读来搜索磁带机上文件所处的
位置,而不象其他的磁带机需要化几分钟的时间才能找到文件。象SAMS:Alexandria 这样
的软件:能够操作四十或者更多的AIT 磁带库,直接使用内存芯片来进行通讯把内容显示
在屏幕上,以决定把什么文件备份到哪个磁带上,加载,恢复数据。
12.8.7 使用新的磁带
当你在一块完全空白的磁带上尝试写入数据时,你会得到类似下面这样的错误信息:
sa0(ncr1:4:0): NOT READY asc:4,1
第17 页FreeBSD 使用手册
sa0(ncr1:4:0): Logical unit is in process of becoming ready
信息指出这块磁带没有Identifier Block (block 编号0)。在QIC-525 之后的所有QIC 磁带,
都采用QIC-525 标准,必须写入一个Identifier Block。对于这种问题,有以下两种解决的办
法:
用mt fsf 1 可以使磁带机对磁带写入Identifier Block。
使用面版上的按钮退出磁带。
再插入一次,并dump 资料到磁带上。
这时dump 会传回DUMP: End of tape detected ,然后你会得到这样的错误信息:
HARDWARE FAILURE info:280 asc:80,96
这时用mt rewind 来倒转磁带,磁带操作的后续动作都完成了。
12.9 备份程序
主要有三个主要的备份程序:dump,tar,cpio.
12.9.1 Dump 和Restore
dump 和restore 是UNIX 传统的备份程序。它以block 为单位来备份资料,而不是以文
件,链接或目录来备份资料。dump 备份的是device 整个filesystem,不能只备份一个filesystem
的部分或是用到两个以上filesystem 的目录树。如果是遇到soft link ln 或是mounting point,
则只会记录下building block。dump 出现于AT&T UNIX 的Version 6 (约1975) 。默认的参
数适用于9-track 磁带(6250 bpi),所以如果要用高密度的磁带(最高可达62.182 ftpi),就不能
用默认的参数,而要另外指定参数。
rdump 和rrestore 可以通过网络,在另一台计算机的磁带机上备份资料。这两个程序都
是依靠rcmd 和ruserok 来访问远程的磁带机。因此,运行备份的使用者必须要有远程主机
的rhosts 访问权。rdump 和rrestore 的参数必需适用于远程主机(例如,当你从FreeBSD 连
到一台Sun 工作站komodo 去使用磁带机时,使用/sbin/rdump 0dsbfu 54000 13000 126
komodo:/dev/nrsa8 /dev/rda0a 2>&1) 。要注意的是,你必需检查你的情况,因为执行远
程命令会牵涉到“安全”(security)的问题(指资料的安全性)。也可以通过ssh 用一个更安全
的方式来使用rdump 和rrestore。
例12-4.通过ssh 使用rdump
# /sbin/dump -0uan -f - /usr | gzip -2 | ssh1 -c blowfish \
第18 页FreeBSD 使用手册
targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz
12.9.2 tar
tar 同样是在AT&T Unix Version 6 (约1975)时出现的。tar 可以直接对filesystem 做处理:
它直接将文件和目录写到磁带上,tar 不支持像cpio 那样多的选项,但tar 不需要用像cpio
那样奇怪的command pipeline。
许多版本的tar 不支持通过网络备份,而GNU 版的tar(FreeBSD 用的就是GNU 版的) 提
供相同于rdump 的参数来使用远程的设备。例如要tar Sun 工作站komodo 上一台Exabyte 磁
带机,就使用:/usr/bin/tar cf komodo:/dev/nrsa8 . 2>&1。对于不支持远程设备的tar,
可以使用一个pipeline 和rsh 来传送资料给远程的磁带机。
# tar cf - . | rsh hostname dd of=tape-device obs=20b
如果你对通过网络来备份会有安全问题,你应当使用ssh,而不是使用rsh.
12.9.3 cpio
cpio 是Unix 最早用来做文件交换的磁带机程序。它具有做byte-swapping 的选项,可以
用几种不同的格式写入,并且可以将资料pipe 给其它程序。cpio 没办法自动查找directory tree
内的文件列表,必须通过标准输入(stdin)来指定。
cpio 不支持通过网络的备份方式。你可以使用pipeline 和rsh 来传送资料给远程的磁带
机。
12.9.4 pax
pax 是IEEE/POSIX 标准的程序。由于多年来各种不同版本的tar 和cpio 间的不兼容,
为了防止这种情况,并使其标准化,POSIX 出了这套新的工具程序。pax 尝试可以读写各种
cpio 和tar 的格式,并可以自己增加新的格式。它的命令较类似cpio。
12.9.5 Amanda
Amanda (Advanced Maryland Network Disk Archiver) 并非单一的程序,而是一个主从式
(client/server) 的备份系统。一台Amanda server 可以备份任意数量,执行Amanda client ,
或是连上Amanda server 的计算机上的资料于一台磁带机上。一个常见的问题是,将资料写
入磁带机的时间,超过取得资料的时间,而Amanda 解决了这个问题。它使用一个“holding
disk”来同时备份几个filesystem。Amanda 建立“archive sets”:一组磁带,用来备份在Amanda
的组态文件中所列出的完整的filesystem。
第19 页FreeBSD 使用手册
Amanda 组态文件提供完整的备份控制及Amanda 产生的网络传输。Amanda 可以使用
上述任何一个备份程序来写入磁带。Amanda 可能是以port 或package 来取得,并非系统默
认就有的。
12.9.6 Do Nothing
“Do nothing”不是一个程序,而是最被广泛使用的备份策略。不需要预算,不需要备
份的计划表,全部都不用。如果你的资料发生了什么问题,忽略它!
假如你的时间和资料不值得你做这些事,那么“Do nothing”将是你最好的备份程序。要注
意的是,Unix 是相当好用的工具,你可能在几个月内,就发现你已经收集了不少,对你来
说,相当具有价值的东西。
“Do nothing”对于像/usr/obj 或其它可由你的计算机产生的文件来说,是最好的方法。
例如你从SGML 文件所产生的HTML 文件,就不需要备份,而应该备份的是SGML 文件。
12.9.7 哪个备份程序最好?
在dump 时期,Elizabeth D. Zwicky 测试了所有以上所列出的备份程序。在各式各样怪
异的filesystem 中,dump 是你明智的抉择。Elizabeth 建立起各式各样,奇怪,正常的filesystem,
并用各种备份程序,测试在各种filesystem 上备份及回存资料。这些怪异之处包括:具有hole
和一个null block 的文件,文件名具有funny character,无法读写的文件及设备,在备份时改
变文件大小,在备份时建立或删除的文件。她将结果刊出在LISA V in Oct. 1991.
torture-testing Backup and Archive Programs
(http://reality.sgi.com/zwicky_neu/testdump.doc.html)。
12.9.8 紧急恢复程序
12.9.8.1 在出现灾难前
在遇到任何的灾难前,你只需要做以下四个步骤:
第一,打出你的每个磁盘驱动器代号(例如: disklabel da0 | lpr),文件系统表
(/etc/fstab) ,以及所有的启动信息,并保留两份。
第二,确定遇到情况时,用来启动及修复的软盘(boot.flp、fixit.flp) 具有你所有
的设备代号(并且能够使用)。最简单的方法是用软盘启动,然后检查启动信息,如果你的设
备都有被列出,并且可以正常使用,就可以跳到第三步。
否则,你必须建立两张传统的可启动软盘,并包含fdisk、disklabel、newfs、mount 以
第20 页FreeBSD 使用手册
及你所使用的备份程序。这些程序必需被静态连接。如果你使用的是dump,那么这张软盘
就必需包含restore。
第三,定期将资料备份到磁带。任何在你上次备份后的改变都无法恢复。记得将磁带写
保护。
第四,测试你在第二步所建立的软盘及备份的磁带,将过程记录下来,并和这张可启动
的软盘、磁带放在一起。也许你在回存时会想要, 而这份记录将防止你破坏你的磁带(怎么
说呢?因为你可能将tar xvf /dev/rsa0 打成tar cvf /dev/rsa0 而重写了你的备份磁带)。
为了安全,你可以每次都做两份备份磁带及一张启动磁盘,并将其中一份备份磁带存放在远
方。远方不是指同一栋办公大楼的地下室(世贸中心的一些公司应该学到了一些教训),而
是真的要让你的磁带离你的计算机远远的。
以下是一个建立启动磁盘的shell script 例子:
#!/bin/sh
#
# create a restore floppy
#
# format the floppy
#
PATH=/bin:/sbin:/usr/sbin:/usr/bin
fdformat -q fd0
if [ $? -ne 0 ]
then
echo "Bad floppy, please use a new one"
exit 1
第21 页FreeBSD 使用手册
fi
# place boot blocks on the floppy
#
disklabel -w -B /dev/fd0c fd1440
#
# newfs the one and only partition
#
newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/fd0a
#
# mount the new floppy
#
mount /dev/fd0a /mnt
#
# create required directories
#
mkdir /mnt/dev
mkdir /mnt/bin
第22 页mkdir /mnt/sbin
mkdir /mnt/etc
mkdir /mnt/root
mkdir /mnt/mnt # for the root partition
mkdir /mnt/tmp
mkdir /mnt/var
#
# populate the directories
#
if [ ! -x /sys/compile/MINI/kernel ]
then
cat << EOM
The MINI kernel does not exist, please create one.
Here is an example config file:
#
# MINI -- A kernel to get FreeBSD on onto a disk.
#
machine "i386"
cpu "I486_CPU"
ident MINI
FreeBSD 使用手册
第23 页FreeBSD 使用手册
maxusers 5
options INET # needed for _tcp _icmpstat _ipstat
# _udpstat _tcpstat _udb
options FFS #Berkeley Fast File System
options FAT_CURSOR #block cursor in syscons or pccons
options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device
options NCONS=2 #1 virtual consoles
options USERCONFIG #Allow user configuration with -c XXX
config kernel root on da0 swap on da0 and da1 dumps on da0
controller isa0
controller pci0
controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
disk fd0 at fdc0 drive 0
controller ncr0
controller scbus0
第24 页FreeBSD 使用手册
device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
device npx0 at isa? port "IO_NPX" irq 13 vector npxintr
device da0
device da1
device da2
device sa0
pseudo-device loop # required by INET
pseudo-device gzip # Exec gzipped a.out's
EOM
exit 1
fi
cp -f /sys/compile/MINI/kernel /mnt
gzip -c -best /sbin/init > /mnt/sbin/init
gzip -c -best /sbin/fsck > /mnt/sbin/fsck
gzip -c -best /sbin/mount > /mnt/sbin/mount
第25 页FreeBSD 使用手册
gzip -c -best /sbin/halt > /mnt/sbin/halt
gzip -c -best /sbin/restore > /mnt/sbin/restore
gzip -c -best /bin/sh > /mnt/bin/sh
gzip -c -best /bin/sync > /mnt/bin/sync
cp /root/.profile /mnt/root
cp -f /dev/MAKEDEV /mnt/dev
chmod 755 /mnt/dev/MAKEDEV
chmod 500 /mnt/sbin/init
chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
chmod 555 /mnt/bin/sh /mnt/bin/sync
chmod 6555 /mnt/sbin/restore
#
# create the devices nodes
#
cd /mnt/dev
./MAKEDEV std
第26 页FreeBSD 使用手册
./MAKEDEV da0
./MAKEDEV da1
./MAKEDEV da2
./MAKEDEV sa0
./MAKEDEV pty0
cd /
#
# create minimum filesystem table
#
cat > /mnt/etc/fstab <<EOM
/dev/fd0a / ufs rw 1 1
EOM
#
# create minimum passwd file
#
cat > /mnt/etc/passwd <<EOM
root:*:0:0:Charlie &:/root:/bin/sh
EOM
第27 页FreeBSD 使用手册
cat > /mnt/etc/master.passwd <<EOM
root::0:0::0:0:Charlie &:/root:/bin/sh
EOM
chmod 600 /mnt/etc/master.passwd
chmod 644 /mnt/etc/passwd
/usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd
#
# umount the floppy and inform the user
#
/sbin/umount /mnt
echo "The floppy has been unmounted and is now ready."
12.9.8.2 出现灾难之后
主要的问题在于:你的硬件还能用吗?由于你已经做好定期的备份工作,所以你不必担
心软件的问题。
假如你的硬件已经损坏,首先,你必须先将已损坏的硬件更换掉。
如果你的硬件没有问题,再检查一下你的软盘。如果你用的是传统的启动磁盘,以
single-user (在出现boot: 后键入-s),并跳过下面这段。
如果你使用的是具有boot.flp 和fixit.flp 的启动磁盘,把这段看完。首先,用这张
磁盘启动。当屏幕出现安装选单时,选择Fixit—Repair mode with CDROM or floppy.。
根据屏幕的提示,插入有fixit.flp 的磁盘,restore,其它你需要用到的程序就会出现在
/mnt2/stand。
分别修复每一个文件系统。
试着mount 你的第一个磁盘的root 分区(例如:mount /dev/da0a /mnt)。假如这个磁
第28 页FreeBSD 使用手册
盘代号已经损坏,使用disklabel 来重新分割并重新分配磁盘代号(利用你之前所保留下来的
数据)。使用newfs 来建立文件系统,并重新mount 软盘read-write 的root 分区(mount -u -o
rw /mnt)。然后使用你的备份程序及备份磁带来修复文件系统(例如:restore vrf
/dev/sa0)。Unmount 这个文件系统(例如:umount /mnt) 。对于每个损坏的文件系统都重
复一次。
当你的系统正常打开后,将你的资料备份到新的磁带。任何造成资料丢失的灾难都可能
再次发生。现在花一些时间,也许可以使你免于下次的灾难。
12.10 用软盘备份
12.10.1 我能够使用软盘来备份数据吗?
软磁盘通常是用来备份的设备中不太适当的设备:
1. 这个设备不太可靠,特别是对长期使用的。
2. 备份和恢复都很慢。
3. 他们只有非常有限的存储容量
然而,如果你没有其他的备份数据的方法,那软盘备份总比没有备份要好。
如果你必须使用软盘的话,你必须确保盘片的质量。软盘在办公室中使用已经有许多年
了。最好使用一些名牌厂商的新产品,以确保质量。
12.10.2 那我如何备份我的数据到软盘呢?
最好的备份数据到软盘的方法是使用tar 程序加上-M 选项,它可以允许将数据备份到多
张软盘上。
要备份当前目录和子目录中所有的文件可以使用这个命令(需要有root 权限):
# tar Mcvf /dev/rfd0 *
当第一张盘满的时候,tar 会指示你插入下一张盘,插入第二张盘之后就打回车。这个
步骤可能需要重复很多次,直到这些文件备份完为止。
12.10.3 我可以压缩我的备份吗?
不幸的是,tar 在针对多卷文件是不允许使用-z 选项。当然,你可以用gzip 压缩所有
的文件,把他们打包到软盘,以后在用gunzip 解开。
第29 页FreeBSD 使用手册
12.10.4 我如何恢复我的备份?
要恢复使用的所有文件:
# tar Mxvf /dev/rfd0
要恢复第一张软盘起始使用的特殊文件:
# tar Mxvf /dev/rfd0 filename
Tar 程序会提示你插入后面的软盘,直到它找到所要求的文件。
如果你知道哪个文件在哪个盘上,你就可以插入那张盘,然后使用上面同样的命令。如
果软盘上的第一个文件与前面的文件是连续的,那tar 命令会警告你它无法恢复,即使你不
要求它这样做!
第30 页
(http://www.fanqiang.com)
|
|