分享
 
 
 

在2.4内核上使用ext3文件系统

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

简介

本文简要叙述了如何在2.4版内核上安装并运行ext3日志文件系统。

ext3是由 Stephen C. Tweedie 博士为2.2版内核编写的。

这一文件系统由 Peter Braam Andreas Dilger Andrew Morton Stephen Tweedie 迁移到2.4版内核上。 Ted Ts'o 维护着极为重要的e2fsprogs工具,并为ext3功能设计与实现提供了宝贵建议。 Alexander Viro 贡献了ext3目录搜索部分代码。

对本文的任何评注,请电邮至 Andrew Morton

如对本软件有怀疑、问题或者bug报告,请电邮至 ext3用户邮件列表

该邮件列表订阅指南参见 https://listman.redhat.com/mailman/listinfo/ext3-users/

现状

到七月末,ext3开发有些减缓,因为我们正为发布1.0版而努力。

对2.4.7内核而言,ext3补丁已经相当稳定、性能优越。在x86体系SMP环境下的测试已经完成。其它系统结构的测试报告(不论成功还是失败),请发送到 ext3用户 列表。

一个比较突出的问题是磁盘限额。在2.4.7内核的磁盘限额代码中,有一些已知的因素会引起死锁,ext3又增加了新的不稳定因素。这与在-ac内核中的磁盘限额代码有很大不同,一旦这部分并入Linus的内核中,我们会继续开发并测试ext3的磁盘限额代码。这并不是说ext3加上磁盘限额一定会引起崩溃--但如果你长时间大负荷使用文件系统,代码将会引起锁死,你必须重启才能恢复受影响的文件系统操作。我们只对-ac内核进行了磁盘限额代码测试--在这种情况下工作完全正常。

安装

http://www.zip.com.au/~akpm/linux/ext3/ 下载最新的内核补丁

cd /usr/src/linux

gunzip < ~/ext3-2.4-0.x.y.patch.gz | patch -p1

注:原文如此,但实际需要用cat命令代替gunzip命令。

make menuconfig

在filesystems菜单中选取ext3。请同时勾选“JBD debugging support”,因为如果出了什么错,这可以给出有用的诊断信息。通常不用选取“Buffer head tracing”--它将耗用大量内存。然而如果你遇到ext3的‘声明失败'错,请在提出bug报告前,设置为允许“缓冲跟踪”,看看能否重复产生这个问题--那会产生大量有用信息。

ext3文件系统支持可以编译进内核,也可以编译成可挂载模块。编进内核的好处在于,如果出现错误,可以简化诊断信息的收集工作。

编译并安装内核。

其它软件

你需要从 http://www.kernel.org/pub/linux/utils/util-linux/ 下载最新的 util-linux 包。

其中 mount 命令的改进如后文所述。

你需要从 [url=http://www.pccode.net].net/"http://e2fsprogs.sourceforge.net/ 下载e2fsprogs 1.25或更新的版本。

从ext2文件系统转换

ext2文件系统可以通过创建一个日志文件转换成ext3。新建日志文件,只要在目标文件系统(可以是已挂载的)上运行

tune2fs -j /dev/hdXX 命令。文件系统现在就成为ext3了。换句话说,只要简单的卸载/重挂载它(当然要在相应修改/etc/fstab之后),你就可以把这个区作为ext3格式使用了。要用ext3格式挂载根分区,最简单的方法是重启。

建立新的ext3文件系统

只要运行 mke2fs -j /dev/hdXX 命令在该设备上建立新的ext3文件系统。

在ext2和ext3间切换

在正常卸载的情况下,ext3文件系统可以被当作ext2来挂载。未正常关机的ext3文件系统不能作为ext2被挂载,因为日志中仍有ext2无法处置的临时数据。

e2fsprogs提供的e2fsck程序可以进行日志回溯,因此在已经破坏的ext3文件系统上运行 e2fsck -fy /dev/hdXX 就可以修复它,并允许以ext2格式挂载。

ext3软件将拒绝挂载ext2文件系统--目前文件系统上一定要有日志文件才可以。

根文件系统的LILO选项

如果你的根文件系统是ext3,缺省情况下,支持ext3的内核将用ext3格式挂载根分区。你可以通过下述LILO选项取代缺省操作:

LILO: linux rootfstype=ext2

你还可以通过LILO的 rootflags 向根文件系统提供挂载选项。例如:

LILO: linux rootflags=data=journal

非LILO引导管理器

引导管理器LILO跟文件系统无关--它用预先定义好的块表来定位和加载操作系统映像到内存中。

然而其它(更聪明的?)引导管理器例如SILO(SPARC上用的)和Open Firmware(PowerPC上用的)自带文件系统驱动,它们可以直接打开和装载ext2文件系统上的文件。

这在根文件系统是ext3,并且未正常关机的情况下会引起问题。处在这种状态下的ext3与ext2不兼容--需要首先执行恢复操作。这一不兼容性记录在文件系统的超级块中,完全兼容ext2的引导管理器 应该 给出错误提示,并拒绝打开这个文件系统上的文件。这就是我们不希望见到的,系统不能启动!

看来Open Firmware没做完整的超级块兼容性检查,所以它仍然会从需要修复的ext3文件系统载入文件。只能说万幸。

然而SILO 要进行 完整的兼容性检查,从需要修复的ext3文件系统引导会令SILO产生“too many symlinks”错误,或别的什么问题。要避免这类严重问题的发生,你需要确保引导区文件系统是ext2类型而不是ext3的(或打上补丁让SILO略过兼容性检查?)。

透明衔接文件系统

在只支持ext2和支持ext3的内核之间来回切换的问题之一是,需要告诉内核,用什么文件系统类型来挂载所有设备。通常这需要修改 /etc/fstab 。

最新版的 mount 能认识ext3并自动选择ext3文件系统类型。The version of fsck in e2fsprogs-1.23

and later can also do this if the fstype is auto . Here's

the state of play:

如果 mount 命令没有指定目标分区的fstype,而它自动检测到了ext3,它将首先尝试用ext3挂载,如果失败,再尝试用ext2。

如果 mount 命令带 auto 参数来指定fstype,它将首先检测ext3并尝试挂载,如果失败,再尝试用ext2。

如果 fsck 命令带 auto 参数来指定fstype,它将自动检测文件系统类型,然后运行相应检查(对ext2和ext3而言都是fsck.ext2)。

建议使用最新的e2fsprogs稳定版本,并在 /etc/fstab 中用 auto 指定fstype。

注意 :要使fstype auto 能正常工作,你 必须 使用e2fsprogs-1.23或更高版本!

注意 :如果你使用的是最近的Red Hat发行版,并且从官方安装包自己编译util-linux,你可能会在挂载文件系统时遇到挂载失败问题。这是由于Red Hat在他们发行的版本中,给 mount 命令加上了“-O”参数。这一选项加在他们的 /etc/rc.d/rc.sysinit 里,这就使得标准的 mount 命令返回“unrecognised option -O”错误。

解决方法是,编辑 /etc/rc.d/rc.sysinit ,去掉任何“-O no_netdev”字符串。

注意 :使用“自动”来指定根文件系统类型将使 /bin/df 不正常,从而使根文件系统的信息不能输出。

解决方法:始终在 /etc/fstab 中指定根文件系统为ext3。

周期性文件系统检查

e2fsck的功能之一是对文件系统进行常规的强制检查,即使文件系统被标志为正常的。一般情况下,每二十次挂载或者每180天,两个条件之一满足就进行检查。

这一例行检查对ext3同样有效,很可能你不希望这样--我们选择ext3的目的之一就是减少由fsck引起的漫长的停机时间。

因此对于ext3来说,关闭这一功能比较好。用以下命令

tune2fs -i 0 -c 0 /dev/hdxx

来禁止检查。

注意:这意味着周期性的停机并手动检查磁盘是 你的 责任。多数Linux发行版中,通过建立 /forcefsck 文件然后重启,很容易做到。

外部日志

在0.9.5版上,ext3支持把日志放到另外的设备上。这个设备可以是磁盘或是一个NVRAM设备。NVRAM设备可以用Andrew Tridgell的trivial RAM disk( trd )驱动来模拟,该驱动在ext3的CVS库中。

你需要一个非常新的e2fsprogs,版本为1.23-WIP-0727或更高。

安装 trd :

mknod /dev/trd b 240 0

insmod trd.o trd_size=50000(对一个50MB的设备)

建立一个外部日志:

mke2fs -O journal_dev /dev/trd

在/dev/hda5上建立使用外部日志设备的ext3文件系统:

mke2fs -J device=/dev/trd /dev/hda5

mount /dev/hda5 /mnt/some/place -t ext3

注意!你须要指定文件系统类型(-t ext3),因为mount(8)中的自动检测文件系统类型不认识带外部日志的ext3。

当然,你可以使用真正硬盘上的分区作为外部日志设备--只要用 /dev/hdXX 替换上述 /dev/trd 。

注意:只能在测试中使用虚拟磁盘驱动器来模拟NVRAM设备。这样做会失去日志带来的恢复时间上的好处(你一定要用fsck完整检查文件系统),事实上在系统崩溃后,你将丢失数据并增大文件系统毁坏的几率。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有