背景

我们知道,U盘默认是 FAT32 格式, FAT32NTFS 是两种不同的文件系统。 FAT32 是一种较旧的文件系统,支持较小的文件和较小的磁盘容量,而 NTFS 是一种较新的文件系统,支持更大的文件和更大的磁盘容量。 NTFS 还提供更好的安全性、文件压缩和许多其他高级功能。因此,如果需要更大的文件和更好的安全性,建议使用 NTFS

2023-03-11-NTFS.png

有一个 vfat 格式的U盘,之前是在 Linux 上进行格式化的,在Windows上读不出来。计划再到 Linux 上将其格式化为 NTFS 的,这样就可以在 Windows 上使用了。不过在操作过程中遇到了几个问题。

  1. vfat格式的U盘在Linux上挂载之后中文乱码;
  2. mkfs命令按下Tab键后系统上没有ntfs选项(如果是国产的操作系统,一般是有的);
  3. 如何格式化U盘。

关注磁盘 /dev/sdb 下的 /dev/sdb1

[root@hadoop5 yum.repos.d]# fdisk -l

磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000cac76

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   209715199   103808000   8e  Linux LVM

磁盘 /dev/mapper/centos-root:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘 /dev/mapper/centos-home:50.5 GB, 50457477120 字节,98549760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘 /dev/sdb:31.5 GB, 31457280000 字节,61440000 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00000000

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1              64    61439999    30719968    c  W95 FAT32 (LBA)

系统信息

使用一台虚拟机。。

[root@k8s0 local]# uname -a
Linux k8s0 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@k8s0 local]# cat /proc/version
Linux version 3.10.0-1127.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Mar 31 23:36:51 UTC 2020
[root@k8s0 local]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
  • 配置信息
内存:4G
处理器:2*2
硬盘:100G

问题1:vfat格式的U盘在Linux上挂载之后中文乱码

  • 挂载
# 挂载操作
[root@hadoop5 ~]# mount -t vfat /dev/sdb1 /mnt/u

# 挂载成功:/dev/sdb1 ==> /mnt/u
[root@hadoop5 u]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        50G  7.3G   43G   15% /
/dev/sda1               xfs      1014M  150M  865M   15% /boot
/dev/mapper/centos-home xfs        47G   33M   47G    1% /home
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sdb1               vfat       30G  5.7G   24G   20% /mnt/u

# 发现中文字符乱码
[root@hadoop5 u]# ls
??            boot          dists                 kylin.ico            pool
????-207.pdf  [BOOT]        EFI                   LICENSE              SHA256SUMS
????-??2.pdf  boot.catalog  ESP                   md5sum.txt           System Volume Information
AUTORUN.INF   casper        kazam_33n4kqou.movie  TRANS.TBL
  • 解决中文字符乱码问题

在执行挂载命令时,添加字符集参数: iocharset=utf8 即可解决中文字符乱码问题。

# 带字符集参数挂载
[root@hadoop5 ~]# mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/u

# 中文字符正常显示
[root@hadoop5 u]# ls
AUTORUN.INF   casper  kazam_33n4kqou.movie  pool                       演示
boot          dists   kylin.ico             SHA256SUMS                 测试-207.pdf
[BOOT]        EFI     LICENSE               System Volume Information  测试-教学2.pdf
boot.catalog  ESP     md5sum.txt            TRANS.TBL

问题2:mkfs命令按下Tab键后系统上没有ntfs选项

注意这里是输入 mkfs 命令,按下 TAB 键;不是回车键。

[root@hadoop5 ~]# mkfs
mkfs         mkfs.btrfs   mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.ext4    mkfs.minix   mkfs.xfs
  • 可以通过安装ntfsprogs解决

yum -y install ntfsprogs

如果系统提示找不到 ntfsprogs 包,可尝试更换 yum源 来解决。

[root@hadoop5 ~]# cd /etc/yum.repos.d/
[root@hadoop5 yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  CentOS-x86_64-kernel.repo

# 养成好习惯:将之前的源备份
[root@hadoop5 yum.repos.d]# mkdir backup
[root@hadoop5 yum.repos.d]# mv ./* backup
mv: 无法将目录"./backup" 移动至自身的子目录"backup/backup"# 配置阿里的yum源
[root@hadoop5 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@hadoop5 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

[root@hadoop5 yum.repos.d]# yum clean all
已加载插件:fastestmirror
正在清理软件源: base extras updates
Cleaning up list of fastest mirrors
[root@hadoop5 yum.repos.d]# yum makecache

# 安装ntfsprogs包
[root@hadoop5 yum.repos.d]# yum -y install ntfsprogs

# mkfs命令按下Tab键后系统上出现ntfs选项
[root@hadoop5 yum.repos.d]# mkfs
mkfs         mkfs.cramfs  mkfs.ext3    mkfs.minix   mkfs.xfs     
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.ntfs    

问题3:如何格式化U盘

  • 删除分区
    我这里先删除已有分区: fdisk /dev/sdb 之后,键入 d 删除分区,再键入 w 写入保存。
# 注意这里是fdisk /dev/sdb,不是fdisk /dev/sdb1
fdisk /dev/sdb
  • 执行格式化

格式化之前需要先卸载:umount /dev/sdb1

mkfs.ntfs -f /dev/sdb1

其他

如果想要格式化为 vfat 格式,但是 mkfs 命令按下 Tab 键后系统上没有 vfat 选项,可以通过安装 dosfstools 包来解决。

# mkfs没有vfat
[root@hadoop5 ~]# yum -y install dosfstools

# mkfs命令按下Tab键后系统上出现vfat选项
[root@hadoop5 ~]# mkfs
mkfs         mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.vfat    
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.ntfs    mkfs.xfs

小总结

结了在 Linux 上处理vfat格式U盘的过程。解决了挂载后中文乱码问题,安装 ntfsprogs 解决了 mkfs 命令找不到 ntfs 选项的问题,以及如何格式化U盘为 NTFS 格式。同时提到了如何安装 dosfstools 来解决 mkfs 命令找不到vfat选项的问题。在实际工作中,我们通常也将将 FAT32 格式化为 NTFS ,主要原因包括:

  1. 更好的安全性:NTFS支持更多的安全特性,如文件和文件夹级别的权限控制,加密和压缩功能,有助于保护数据安全。
  2. 更大的文件大小和分区支持:NTFS支持更大的单个文件和分区大小,适用于存储大型文件和数据。
  3. 更好的性能和稳定性:NTFS在处理大容量磁盘和文件时通常比FAT32更高效和稳定。
  4. 更多的功能:NTFS支持更多高级功能,如日志记录、磁盘配额和动态磁盘等,适用于更复杂的存储需求。

但需要注意的是,将 FAT32 格式化为 NTFS 会导致数据丢失,因此在进行格式化之前务必备份重要数据。


If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

Logo

更多推荐