按照这里的指导,任何人能够转换它们的文件系统,但因为以下任务需要高级的管理规范,在做这之前,确保你必须做了重要的备份。如果遇到任何错误,至少你能够用备份数据恢复。

在计算机中,文件系统是命名并且逻辑放置文件来存储,获取以及更新数据的一种方法,并且也用于在可用设备上管理空间。

文件系统被分成了两个部分,分别称为用户数据和元数据。在这里,我尝试探求在Ext2, Ext3和Ext4文件系统之间如何创建和转换各种Linux文件系统以及高级不同。

在进一步阅读前,简要介绍Linux文件系统。

Ext2 -- 第二种扩展文件系统

  • 在1993年引入ext2文件系统,由Remy Card开发了Ext2。在如Redhat和Debian的若干Linux发行版种,它是第一种默认文件系统。
  • 它克服了老旧Ext文件系统的限制。
  • 最大文件尺寸16GB - 2TB。
  • 没有日志特性。
  • 它还用于基于闪存存储介质,如USB闪存驱动器,SD卡等。

Ext3 -- 第三种扩展文件系统

  • 在2001年引入了Ext3文件系统,并且于具有日志特性,与内核2.4.15集成,其增强了稳定性并且消除了在不干净关机后需要检查文件系统的需求。
  • 最大文件尺寸16BG-2TB。
  • 提供了从Ext2到Ext3文件系统升级的功能,而不需要备份和恢复数据。

Ext4 -- 第四种扩展文件系统

  • Ext4,高预期的Ext3继任者。
  • 在2008年10月,Ext4作为稳定代码被融合到了内核2.6.28,其包含了一个Ext4文件系统。
  • 向老版本兼容
  • 最大文件尺寸16GB到16TB。
  • ext4文件系统能够选择关闭日志特性。
  • 其它特性,如子目录可扩展性,多块分配,延迟分配,快速FSCK等。

如何确定文件系统类型

要确定文件系统类型,在终端种以root用户执行以下命令。

[root@areadetector blctrl]# df -hT | awk '{print $1,$2,$NF}' | grep '^/dev'
/dev/mapper/rl-root xfs /
/dev/mapper/rl-home xfs /home
/dev/sda2 xfs /boot
/dev/sda4 xfs /home/blctrl
/dev/sda1 vfat /boot/efi
/dev/sdb4 vfat /run/media/blctrl/Rocky-8-6-x

创建一个Ext2或Ext3或Ext4文件系统

一旦你用fdisk或parted命令创建一个文件系统,使用mke2fs命令创建以上任一种文件系统并且确认用你想要的设备。

创建一个Ext2文件系统

[root@areadetector blctrl]# mke2fs /dev/sdb
mke2fs 1.45.6 (20-Mar-2020)
Found a dos partition table in /dev/sdb
Proceed anyway? (y,N) y
Creating filesystem with 2007040 4k blocks and 501952 inodes
Filesystem UUID: 60474893-7fb7-4a49-8235-a897662fd4eb
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

检查磁盘/dev/sdb上的文件系统:

[root@areadetector blctrl]# fsck -N /dev/sdb
fsck from util-linux 2.32.1
[/usr/sbin/fsck.ext2 (1) -- /dev/sdb] fsck.ext2 /dev/sdb
[root@areadetector blctrl]# lsblk -f
NAME        FSTYPE    LABEL    UUID                                   MOUNTPOINT
sda
├─sda1      vfat               9170-5EA4                              /boot/efi
├─sda2      xfs                2a91513c-5b4f-43fa-8703-342700a4d86a   /boot
├─sda3      LVM2_memb          62W36P-liwA-r1Lf-nOpd-2d1n-w1Gp-Vk1d0Y
│ ├─rl-root xfs                30b3e38f-4f2b-45b9-adb2-b31917f15bfd   /
│ ├─rl-swap swap               feb6eecc-e719-4ef8-8483-18a7ef823d66   [SWAP]
│ └─rl-home xfs                81befc77-f182-4683-a6de-b2f3fb7687cc   /home
└─sda4      xfs                0004936f-714e-4a93-9a4f-befe9d579cfe   /home/blctr
sdb         ext2               60474893-7fb7-4a49-8235-a897662fd4eb
sdc
└─sdc1      ntfs      Elements 10A88FA0A88F8348
sr0

创建一个Ext3文件系统

[root@areadetector blctrl]# mke2fs -j /dev/sdb
mke2fs 1.45.6 (20-Mar-2020)
/dev/sdb contains a ext2 file system
        created on Mon Jul 11 12:03:44 2022
Proceed anyway? (y,N) y
Creating filesystem with 2007040 4k blocks and 501952 inodes
Filesystem UUID: a40a8d74-e6d7-499d-bf56-1fc44a89c11a
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks):
done
Writing superblocks and filesystem accounting information: done

[root@areadetector blctrl]#
[root@areadetector blctrl]# fsck -N /dev/sdb
fsck from util-linux 2.32.1
[/usr/sbin/fsck.ext3 (1) -- /dev/sdb] fsck.ext3 /dev/sdb

或者
[root@areadetector blctrl]# mkfs.ext3 /dev/sdb
mke2fs 1.45.6 (20-Mar-2020)
/dev/sdb contains a ext3 file system
        created on Mon Jul 11 12:49:35 2022
Proceed anyway? (y,N) y
Creating filesystem with 2007040 4k blocks and 501952 inodes
Filesystem UUID: c241224c-b00e-4d11-bce1-1e232bf5dfad
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

[root@areadetector blctrl]# fsck
fsck         fsck.ext2    fsck.ext4    fsck.minix   fsck.vfat
fsck.cramfs  fsck.ext3    fsck.fat     fsck.msdos   fsck.xfs
[root@areadetector blctrl]# fsck -N /dev/sdb
fsck from util-linux 2.32.1
[/usr/sbin/fsck.ext3 (1) -- /dev/sdb] fsck.ext3 /dev/sdb

创建一个Ext4文件系统

[root@areadetector blctrl]# mke2fs -t ext4 /dev/sdb
或者
[root@areadetector blctrl]# mkfs.ext4 /dev/sdb

转换一个Ext2, Ext3或者Ext4文件系统

卸载文件系统并且转换它们总是一个更好的方式。在不卸载和挂载文件系统下,可用做转换。再次使用你的设备名称。

转换Ext2到Ext3

要更改一个Ext2文件系统到Ext3,启用日志特性,使用命令:

[root@areadetector blctrl]# fsck -N /dev/sdb   # 磁盘原来的文件系统类型
fsck from util-linux 2.32.1
[/usr/sbin/fsck.ext2 (1) -- /dev/sdb] fsck.ext2 /dev/sdb
[root@areadetector blctrl]# tune2fs -j /dev/sdb  # 将ext2文件系统转换成ext3
tune2fs 1.45.6 (20-Mar-2020)
Creating journal inode: done
[root@areadetector blctrl]# fsck -N /dev/sdb   # 磁盘现在的文件系统类型
fsck from util-linux 2.32.1
[/usr/sbin/fsck.ext3 (1) -- /dev/sdb] fsck.ext3 /dev/sdb

转换Ext2到Ext4

要从老的ext2文件系统转成具有最新日志特性的新ext4文件系统。运行以下命令:

[root@areadetector blctrl]# fsck -N /dev/sdb      # 原来的文件系统
fsck from util-linux 2.32.1
[/usr/sbin/fsck.ext2 (1) -- /dev/sdb] fsck.ext2 /dev/sdb
[root@areadetector blctrl]# tune2fs -O dir_index,has_journal,uninit_bg /dev/sdb #转换ext2文件系统到ext4
tune2fs 1.45.6 (20-Mar-2020)
Creating journal inode: done
[root@areadetector blctrl]# fsck -N /dev/sdb      # 现在的文件系统
fsck from util-linux 2.32.1
[/usr/sbin/fsck.ext4 (1) -- /dev/sdb] fsck.ext4 /dev/sdb

-p选项自动修复这个文件系统。

-f选项:即使文件系统看起来干净,强制检查文件系统。

接着,用e2fsck命令进行完全的文件系统检查来修复。

[root@areadetector blctrl]# fsck -N /dev/sdb
fsck from util-linux 2.32.1
[/usr/sbin/fsck.ext4 (1) -- /dev/sdb] fsck.ext4 /dev/sdb
[root@areadetector blctrl]# e2fsck -pf /dev/sdb
/dev/sdb: 11/501952 files (0.0% non-contiguous), 52322/2007040 blocks

转换Ext3到Ext4

要在一个已有ext3文件系统上启动ext4特性,使用命令。

[root@areadetector blctrl]# fsck -N /dev/sdb       # 磁盘原来的文件系统
fsck from util-linux 2.32.1
[/usr/sbin/fsck.ext3 (1) -- /dev/sdb] fsck.ext3 /dev/sdb
[root@areadetector blctrl]# tune2fs -O extents,uninit_bg,dir_index /dev/sdb # 将文件系统由ext3转存ext4
tune2fs 1.45.6 (20-Mar-2020)
[root@areadetector blctrl]# fsck -N /dev/sdb       # 磁盘现在的文件系统
fsck from util-linux 2.32.1
[/usr/sbin/fsck.ext4 (1) -- /dev/sdb] fsck.ext4 /dev/sdb

[/usr/sbin/fsck.ext4 (1) -- /dev/sdb] fsck.ext4 /dev/sdb  # 修复tune2fs已经修改的某些磁盘上的结构
[root@areadetector blctrl]# e2fsck -pf /dev/sdb
/dev/sdb: 11/501952 files (0.0% non-contiguous), 52322/2007040 blocks

警告:你一旦运行了以上命令,不能恢复或者挂载回ext3文件系统。

在运行这个命令后,我们必须运行e2fsck修复tune2fs已经修改的某些磁盘上的结构。

Logo

更多推荐