热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

实现从ext2到ext3文件系统转换

实现从ext2到ext3文件系统转换--Linux通用技术-Linux技术与应用信息,下面是详情阅读。
  (声明:本文仅供个人学习使用,版权归文章原创作者所有)

  日志文件系统ext3具有ext2所不具备的特点和优势。顺利完成从ext2到ext3的转换,是实现ext3优势的必经之路。ext3文件系统是ext2文件系统的更高一级版本,它有一个其它同类日志文件系统所不具备的独特优势——完全兼容ext2文件系统,因而ext3能充分利用ext2中已有的操作和应用,而且比ext2更有效、更易用。它在ext2的基础上加入了记录元数据的日志功能,是一个支持异步的日志。Red Hat 7.2和SuSE 7.3已率先发行了包含ext3文件系统的Linux。通过使用Linux最新安装版本和e2fsprogs Linux公用程序,可将ext3文件系统编译到系统的内核中。这里介绍的是ext2到ext3系统转换的一些基本方法,并为用户提供修正的参考建议。

  ext3日志文件系统

  1.日志文件系统
  日志文件系统的设计思想是跟踪文件系统的变化而不是文件系统的内容。它用独立的日志文件跟踪磁盘内容的变化,就像关系型数据库(RDBMS),因而比传统的文件系统安全。日志文件系统可以用事务处理的方式,提交或撤消文件系统的变化。当系统非正常关闭,处于写入磁盘过程中的文件系统被非正常卸载,文件系统就会处于不一致的状态。为了尽量减少文件系统的不一致性,缩短操作系统的启动时间,文件系统需追踪引起系统改变的记录,这些记录存放在与文件系统相分离的地方,通常称为“日志”。一旦这些日志记录被安全地写入,日志文件系统就可以将它们应用到文件系统中,清除引起系统发生改变的记录,并将它们组成一个引起文件系统改变的集。

  日志文件的主要作用就是可以最大程度地保证文件系统的一致性。通常文件系统存放日志记录,当重新引导计算机启动时,安装程序为保证文件系统的一致性会检测日志记录,并将它安全地、完整地应用到文件系统中。在大多数情况下,一般操作系统并不检测文件系统的一致性,使用日志文件系统的计算机则会在系统引导后,立即使用日志检测,降低数据丢失的可能性。

  2.ext3
  ext3文件系统是日志文件,且100%地兼容ext2文件系统,其与ext2文件系统的主要区别便是它的快速更新文件存储。计算机开始从磁盘上读取或写入数据就必须保证文件系统中文件与目录的一致性,所有日志文件中的数据均以数据块的形式存放在存储设备中。当磁盘分区时文件系统即被创建,按照文件形式、目录形式支持存储数据、组织数据的使用。

  ext3和ext2一样是由来自多家厂商的开发人员联合开发的。它的开发不依赖于任何个人或组织,它提供并使用了一个通用日志层generic journaling layer (jbd)。该层可以在其它环境中使用,能在文件系统中使用,还能够应用到其它设备中。目前Linux开始支持的NVRAM设备,ext3就能够支持。当由于软件或硬件错误导致文件系统崩溃时,文件修复程序e2fsck在修复数据方面是非常成功的,ext3使用了和e2fsck相同的代码来修复崩溃的文件系统,因此当出现数据崩溃时,ext3具有和ext2同样的防止数据丢失的优点。

  值得指出的是,上述这些优点中的每一点都不是ext3所独有的,其中的大部分别的文件系统也具有,但只有ext3才尽数具备,这也正是ext3的综合优势。ext3称得上是目前最能满足用户需要的日志文件系统。

  从ext2到ext3的转换

  1.转换
  从ext2文件系统到ext3文件系统的转换,一般的方法是通过在已有的ext2文件系统上添加日志文件。假设要把原/back (/dev/hda5)从ext2文件系统转换成ext3文件系统,通常具体步骤如下(建议在转换系统以前,最好备份文件系统):

  (1)卸载/back目录

  执行如下命令:
  umount /back

  (2)转换

  所使用的命令格式如下:
  /sbin/tune2fs -j

  例如,要将分区/dev/hda5的ext2系统转换成ext3文件系统,所使用的命令如下:

  /sbin/tune2fs -j /dev/hda5

  其中tune2fs是转换命令,- j选项表示是在已存在的ext2文件系统上建立的ext3日志。

  (3)安装/back目录

  执行如下命令:
  mount -text3 /dev/hda5/back

  执行命令后系统将创建一个日志文件,如果文件系统在转换的过程已经被装载(Mount),那么在根目录下会出现“.journal”文件,否则是没有这个日志文件的。

  (4)修改/etc/fstab文件

  例如,在将ext2日志文件系统转换成ext3日志文件系统之后,立即更新/etc/fstab引导记录,可以使用“auto”选项来进行。

  转换前情况:
  /dev/hda5 /opt ext2 defaults 1 2

  转换后情况:
  /dev/hda5 /opt ext3 defaults 1 0

  其中Linux的最后一个字段/etc/ fstab是为引导系统而设置的,并由“fsck(file system check)”程序检验文件系统的一致性,同时把/etc/fstab文件中的ext2修改为ext3。当使用ext3文件系统时,能将这个字段设定为“0”。这意味着fsck程序将不检查文件系统的一致性,文件系统的一致性将由后面的日志提供保证。如果要转换的是引导系统,必须使用initrd启动系统,可运行mkinitrd,并参照其手册描述步骤,同时确认LILO或Grub配置中是否装载了initrd。如果转换ext3没有成功,系统仍然能启动,但是引导系统会以ext2形式装载,而不是ext3。可以使用命令cat/proc/mount来确认这一点。

  使用如下命令:
  mount

  可以显示:
  /dev/hda5 on /test type ext3 (rw)

  这时表示系统已成功地从ext2转换到ext3。

  2.新建
  升级一个已有的ext2,使用tune2fs就可以了。对于需要创建新ext3文件系统的情况,要使用安装的e2fsprogs软件包中的mke2fs命令加-f参数。这就可以创建新的ext3文件系统。假设打算把/dev/hda5创建为ext3文件系统,具体步骤如下:

  (1)创建

  执行如下命令:
  mke2fs -j /dev/hda5

  (2)安装/back目录

  执行如下命令:
  mount -t ext3 /dev/hda5 /back

  (3)修改/etc/fstab文件

  新的e2fsprogs中的e2fsck支持ext3,当一个ext3文件系统被破坏时,先卸载该设备,再用e2fsck修复。

  执行如下命令:
  umount /back

  e2fsck -fy /dev/hda5

  当系统重新启动时,一般都要用日志文件系统进行检查,这需要一定的时间。用ext3可以避免重启动时长时间的文件系统检查,如使用下面的命令:

  tune2fs -i 0 -c 0 /dev/hda4

  可以关闭文件系统检查。

  如果要从ext3返回ext2,方法也非常简单,即卸载ext3重新安装ext2,命令如下:

  mount -text2 /dev/hda5 /test

  当然在启动中安装ext2,要在etc/fstab文件中重新设置才行。

  3.修正
  ext3也有缺点,其最大的缺点是没有现代文件系统所具有的能提高文件数据处理速度和解压的高性能。Red Hat Linux 8.0.94 发行注记上也指出ext3的一些问题。如果在beta版本上创建了打算永久保留的文件系统,我们推荐从每个文件系统里删除HTree索引功能的所有痕迹。方法是首先使用以下命令:

  tune2fs -O ^dir_index /dev/

  然后可以使用下面的命令从目录中删除索引:

  e2fsck -fD /dev/

  结束语
  Linux操作系统是操作系统家族中的优秀成员,是近年来用户数量增长最快的系统软件。ext2文件系统作为所有Linux发行版本的基本文件系统,负责对文件的管理、存取、共享及保护等手段提供给操作系统和用户。它不仅方便安全,还有效地提高了系统资源的利用率。在Red Hat Linux 7.2中,Red Hat首次采用支持日志文件系统ext3。它作为第一个正式支持的日志文件系统,无疑是全面兼容ext2的高性能文件系统,其兼容性包括在ext2文件系统上使用的所有其它应用。从ext2到ext3的升级简便,而且ext3改进了Linux系统的性能,解决系统中存在的不一致性的问题。ext3文件系统是一个优秀的、极具发展前景的文件系统。
推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了新款奇骏的两个让人上瘾的功能,分别是智能互联系统和BOSE音响。通过对新款奇骏的配置和功能进行评测,探讨了这两个新增功能的使用体验和优势。此外,还介绍了新款奇骏的其他配置和改进,如增加的座椅和驾驶辅助系统,以及内饰的舒适性提升。对于喜欢音响的消费者来说,BOSE音响的升级也是一个亮点。最后,文章提到了BOSE音响的数字还原能力,以及7座版无法配备BOSE音响的原因。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 信息安全等级保护是指对国家秘密信息、法人和其他组织及公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护,对信息系统中使用的信息安全产品实 ... [详细]
  • 无线认证设置故障排除方法及注意事项
    本文介绍了解决无线认证设置故障的方法和注意事项,包括检查无线路由器工作状态、关闭手机休眠状态下的网络设置、重启路由器、更改认证类型、恢复出厂设置和手机网络设置等。通过这些方法,可以解决无线认证设置可能出现的问题,确保无线网络正常连接和上网。同时,还提供了一些注意事项,以便用户在进行无线认证设置时能够正确操作。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文详细介绍了相机防抖的设置方法和使用技巧,包括索尼防抖设置、VR和Stabilizer档位的选择、机身菜单设置等。同时解释了相机防抖的原理,包括电子防抖和光学防抖的区别,以及它们对画质细节的影响。此外,还提到了一些运动相机的防抖方法,如大疆的Osmo Action的Rock Steady技术。通过本文,你将更好地理解相机防抖的重要性和使用技巧,提高拍摄体验。 ... [详细]
  • 本文详细介绍了华为4GLTE路由器B310的外置天线安装和设置方法。通过连接电源和网线,输入路由器的IP并登陆设置页面,选择手动设置和手动因特网设置,输入ISP提供商的用户名和密码,并设置MTU值。同时,还介绍了无线加密的设置方法。最后,将外网线连在路由器的WAN口即可使用。 ... [详细]
  • 本文讨论了前端工程化的准备工作,主要包括性能优化、安全防护和监控等方面需要注意的事项。通过系统的答案,帮助前端开发者更好地进行工程化的准备工作,提升网站的性能、安全性和监控能力。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
author-avatar
lixinleslee
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有