磁盘格式化及创建文件系统

本文详细介绍了Linux系统中如何使用fdisk命令进行磁盘分区,以及VFS的作用,展示了不同类型的文件系统如Ext2/Ext3/Ext4、NTFS等。此外,文中还涵盖了文件系统创建、修复、维护(如fsck、tune2fs)以及磁盘检查工具lsblk的应用实例。
摘要由CSDN通过智能技术生成

linux系统

使用fdisk命令对磁盘进行分区 1-4个主分区,第5个序号开始是逻辑分区

linux支持的文件系统 VFS

我们知道文件系统的种类有很多,除了linux标准的文件系统Ext2/Ext3/Ext4外,还有很多种文件系统,linux通过叫做VFS的中间层对这些文件系统提供了完善的支持。

Virtualenv File System 虚拟文件系统

虚拟文件系统(VFS)是一个处于用户进程和各类文件系统之间的抽象接口层,VFS提供访问文件系统对象的通用对象模型(例如:i-node,文件对象,页缓存)和方法,它对用户进程 隐藏了各种文件系统的差别。

正是因为有VFS,所以用户进程不用关心使用的那种文件系统,也更不需要知道各个文件系统该使用哪个系统调用。

案例

$ cp /floppy/TEST /tmp/test

其中 /floppy是MS_DOS磁盘的一个安装点,而/tmp是一个标准的第二扩展文件系统(second Extended Filesystem,Ext2)的目录。

VFS是用户的应用程序与文件系统实现之间的抽象层。

cp程序并不需要知道/floppy/TEST和/tmp/test是什么文件系统类型。

相反,cp程序直接与VFS交互,这里通过Unix程序设计人员都熟悉的普通系统调用来进行的。

inf=open("/floppy/TEST",o_TRUNC,O);
outf=open("/tmp/test",O_WRONLY|O_CREAT|O_TRUNC,0600);
do {
	i = read(inf,buf,4096);
	write(outf,buf,i);
} while (1);
close (outf);
close (inf);

VFS文件系统(文件系统的通用模型)
磁盘分区完毕后,还得进行格式化(format)方可使用。
磁盘格式化是因为,不同的操作系统,设置的文件属性,权限各不相同,还得将分区格式化后,成为操作系统能够识别,兼容的文件系统(filesystem)
不同的操作系统,使用的文件系统各不相同,如:

windows 98

  1. FAT

  2. FAT16

  3. FAT32

window 2000

NTFS

linux自带的文件系统

1.Ext2

2.Ext3 centos5

3.Ext4 centos6

4.xfs centos7

网络文件系统(网络共享文件系统)

1.Smb , Server Message Block,服务消息块,文件共享想协议

+CIFS,Common Internet File System

2.NFS, Network File System(简写NFS) , 网络文件系统,访问网络中其他主机的文件,就像是自己计算机一样(网络共享文件系统),

Smb主要用于windows与linux实现文件共享,我们可以通过linux系统搭建一个Smb文件系统,然后通过windows去访问linux系统上的资料,这个非常好用,Samba服务器+CIFS
集群文件系统:

1.Gfs, Google File System,Google公司为了存储海量搜索数据而设计的专用文件系统。比如大数据系统就会用Gfs

2.ocfs, Oracle cluster File System是由Oracle开发并在GNU通用公共许可下发布的共享磁盘文件系统。主要是为了适应使用集群计算的Oracle数据库过了系统。

分布式文件系统

1.Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能,为了服务器存储可扩展性和可靠性。

2.CIFS(Common Internet File System) 通用互联网文件系统。

交换文件系统

Swap

日志文件系统:

区别主要在于,是否是日志型文件系统(ext2不带日志的文件系统,其他ext3,ext4,xfs等都是带日志的文件系统)

日志文件系统 日志区域 在/不在 文件系统上

修改数据流程

写数据

1.数据写入日志区域称作日志记录 journaling-----------------Journal area

2.应用数据到文件系统-------------------file system

3.删除日志

journaling fs 就是我们常说的:日志型文件系统

比较典型的有:ext3,ext4,xfs等,而ext2是不支持日志文件系统,该文件系统基本上已经不再使用;

简单介绍其(journaling fs)实现原理:

在磁盘上有一块区域专门用来保存日志,叫做journaling区域,在更新磁盘上特定的block之前,首先要做的变更记录到journaling区域,然后才去更新相应的block.

这样在系统崩溃的时候,可以通过journaling区域的信息,进行replay,从而实现恢复:

如果是非日志文件系统,进行读写操作,内核直接修改写入文件元数据,如果在写入过程异常崩溃,文件一致性就会出错,且修复过程很漫长,因此必须使用日志型文件系统。

文件系统创建工具

1.创建文件系统

mkfs命令:针对磁盘分区进行格式化文件系统 ,mkfs把分区格式化为某种文件系统。

mkfs + tab 键

# 查看磁盘文件系统类型
root@ubuntu:~# lsblk -f
NAME  FSTYPE FSVER LABEL       UUID                 FSAVAIL FSUSE% MOUNTPOINTS
fd0                                                                                      
loop0 squash 4.0                                               0   100% /snap/bare/5
loop1 squash 4.0                                               0   100% /snap/core/16202
loop2 squash 4.0                                               0   100% /snap/core/16574
loop3 squash 4.0                                               0   100% /snap/core20/1169
loop4 squash 4.0                                               0   100% /snap/core20/2105
loop5 squash 4.0                                               0   100% /snap/core22/1033
loop6 squash 4.0                                             0   100% /snap/firefox/3779
loop7 squash 4.0                                              0   100% /snap/firefox/631
loop8 squash 4.0                                       0   100% /snap/gnome-3-38-2004/143
loop9 squash 4.0                                        0   100% /snap/gnome-3-38-2004/76
loop10 squash 4.0                                       0   100% /snap/gnome-42-2204/141
loop11 squash 4.0                                   0   100% /snap/gtk-common-themes/1519
loop12 squash 4.0                                   0   100% /snap/gtk-common-themes/1535
loop13 squash 4.0                                 0   100% /snap/snap-store/557
loop14 squash 4.0                                         0   100% /snap/snap-store/959
sda                                                                                      
├─sda1
│                                                                                        
├─sda2 vfat   FAT32                   4D72-6786                   505.9M     1% /boot/efi
└─sda3 ext4 1.0  f4b2aa80-fa0b-417e-ab7b-fa27caf2f921 82.3G 10% /var/snap/firefox/common/host-hunspell
                                                                                         /
sdb                                                                                      
├─sdb1
│                                                                                        
├─sdb2
│                                                                                        
├─sdb5
│                                                                                        
└─sdb6
                                                                                         
sdc                                                                                      
├─sdc1
│                                                                                        
└─sdc2
                                                                                         
sr0   iso966       CDROM             2024-02-08-08-47-13-00                              
sr1   iso966 Jolie Ubuntu 21.10 amd64    2021-10-12-21-08-32-00  

# 查看在此操作系统下可以创建哪些文件系统
root@ubuntu:~# mkfs+tab键
mkfs         mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.vfat    
mkfs.bfs     mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.ntfs 

# 创建文件系统  即对设备 /dev/sdc1 进行磁盘格式化
root@ubuntu:~# mkfs.ext4 /dev/sdc1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 122066 4k blocks and 122112 inodes
Filesystem UUID: 52572ca0-5fbf-4604-b1df-e887a0af43dd
Superblock backups stored on blocks: 
        32768, 98304

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
root@ubuntu:~# lsblk -f | grep sdc
sdc                                                                                                     
├─sdc1 ext4     1.0                                 52572ca0-5fbf-4604-b1df-e887a0af43dd                
└─sdc2 
root@ubuntu:~# mkfs
mkfs         mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.vfat    
mkfs.bfs     mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.ntfs 

# 创建文件系统  即对设备 /dev/sdc2 进行磁盘格式化   
root@ubuntu:~# mkfs.ntfs /dev/sdc2
Cluster size has been automatically set to 4096 bytes.
Initializing device with zeroes: 100% - Done.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.

# 查看 磁盘格式化后 的文件系统
root@ubuntu:~# lsblk -f | grep sdc
sdc                                                                                                     
├─sdc1 ext4     1.0                                 52572ca0-5fbf-4604-b1df-e887a0af43dd                
└─sdc2 ntfs                                         0B145F533BB37153  

2.修复文件系统

fsck命令:检查并修复 linux 文件系统

默认读取 /etc/fstab 开机挂载文件的

fsck+tab键

# fsck命令,是否检查磁盘文件系统,修复错误
# 1. 禁止文件系统开机修复错误
# 修改 /etc/fstab文件,然后改成如下设置
root@ubuntu:~# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda3 during installation
UUID=f4b2aa80-fa0b-417e-ab7b-fa27caf2f921 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda2 during installation
UUID=4D72-6786  /boot/efi     vfat    umask=0077      0     1 # 结尾是0就不检查,1就检查错误
/swapfile       none          swap    sw              0     0
/dev/fd0      /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
root@ubuntu:~# 
# 2. 针对磁盘进行修复检查  
	fsck -t 指定文件系统类型 设备名
root@ubuntu:~# fsck -t ntfs /dev/sdc2
fsck from util-linux 2.37.2
root@ubuntu:~# fsck -t ext4 /dev/sdc1
fsck from util-linux 2.37.2
e2fsck 1.46.5 (30-Dec-2021)
/dev/sdc1: clean, 11/122112 files, 11925/122066 blocks
	



root@ubuntu:~# fsck
fsck         fsck.cramfs  fsck.ext2    fsck.ext3    fsck.ext4    fsck.fat     fsck.minix   fsck.msdos   fsck.vfat

# 默认读取 /etc/fstab 开机挂载文件的
root@ubuntu:~# cat /etc/fstab
#
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda3 during installation
# ubuntu系统
UUID=f4b2aa80-fa0b-417e-ab7b-fa27caf2f921 /        ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda2 during installation
UUID=4D72-6786  /boot/efi       vfat    umask=0077      0       1
/swapfile        none            swap    sw              0       0
/dev/fd0    /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0


# centos系统
/dev/mapper/centos-root /    xfs   defaults  0 0   # 最后一位是0,代表不对系统进行检查
UUID=2cf87472-f9c2-43cd-aa0e-1d8827ac307f /boot  xfs  defaults 0 0
/dev/mapper/centos-swap  swap   swap  defaults   0 0
3.查看文件系统的属性 dump2fs命令和 xfs_info命令

对于centos7之前的文件系统,使用 dump2fs 命令,打印文件系统的块组信息,适用于 ext2,ext3,ext4

对于centos7之后的文件系统而言默认用的是 xfs 文件系统,使用 xfs_info打印文件系统信息

4.自动检查文件系统是否正常开机 tune2fs 命令

设置linux是否正常开机自动检查文件系统正常与否

# 关闭文件系统自检
root@ubuntu:~# tune2fs -c -1 /dev/sdc1
tune2fs 1.46.5 (30-Dec-2021)
Setting maximal mount count to -1

5. lsblk 命令
列出所有的设备以及文件系统信息
lsblk -f # 列出分区的文件系统类型
root@ubuntu:~# lsblk -f
NAME  FSTYPE FSVER LABEL       UUID                 FSAVAIL FSUSE% MOUNTPOINTS
fd0                                                                                      
loop0 squash 4.0                                               0   100% /snap/bare/5
loop1 squash 4.0                                               0   100% /snap/core/16202
loop2 squash 4.0                                               0   100% /snap/core/16574
loop3 squash 4.0                                               0   100% /snap/core20/1169
loop4 squash 4.0                                               0   100% /snap/core20/2105
loop5 squash 4.0                                               0   100% /snap/core22/1033
loop6 squash 4.0                                             0   100% /snap/firefox/3779
loop7 squash 4.0                                              0   100% /snap/firefox/631
loop8 squash 4.0                                       0   100% /snap/gnome-3-38-2004/143
loop9 squash 4.0                                        0   100% /snap/gnome-3-38-2004/76
loop10 squash 4.0                                       0   100% /snap/gnome-42-2204/141
loop11 squash 4.0                                   0   100% /snap/gtk-common-themes/1519
loop12 squash 4.0                                   0   100% /snap/gtk-common-themes/1535
loop13 squash 4.0                                 0   100% /snap/snap-store/557
loop14 squash 4.0                                         0   100% /snap/snap-store/959
sda                                                                                      
├─sda1
│                                                                                        
├─sda2
│     vfat   FAT32                   4D72-6786                             505.9M     1% /boot/efi
└─sda3
      ext4   1.0                     f4b2aa80-fa0b-417e-ab7b-fa27caf2f921   82.3G    10% /var/snap/firefox/common/host-hunspell
                                                                                         /
sdb                                                                                      
├─sdb1
│                                                                                        
├─sdb2
│                                                                                        
├─sdb5
│                                                                                        
└─sdb6
                                                                                         
sdc                                                                                      
├─sdc1
│                                                                                        
└─sdc2
                                                                                         
sr0   iso966       CDROM             2024-02-08-08-47-13-00                              
sr1   iso966 Jolie Ubuntu 21.10 amd64
                                     2021-10-12-21-08-32-00                              
root@ubuntu:~# 

root@ubuntu:~# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
fd0      2:0    1   1.4M  0 disk 
loop0    7:0    0     4K  1 loop /snap/bare/5
loop1    7:1    0 105.8M  1 loop /snap/core/16202
loop2    7:2    0 105.4M  1 loop /snap/core/16574
loop3    7:3    0  61.8M  1 loop /snap/core20/1169
loop4    7:4    0  63.9M  1 loop /snap/core20/2105
loop5    7:5    0  74.1M  1 loop /snap/core22/1033
loop6    7:6    0 262.5M  1 loop /snap/firefox/3779
loop7    7:7    0 150.4M  1 loop /snap/firefox/631
loop8    7:8    0 349.7M  1 loop /snap/gnome-3-38-2004/143
loop9    7:9    0 242.3M  1 loop /snap/gnome-3-38-2004/76
loop10   7:10   0   497M  1 loop /snap/gnome-42-2204/141
loop11   7:11   0  65.2M  1 loop /snap/gtk-common-themes/1519
loop12   7:12   0  91.7M  1 loop /snap/gtk-common-themes/1535
loop13   7:13   0  54.2M  1 loop /snap/snap-store/557
loop14   7:14   0  12.3M  1 loop /snap/snap-store/959
sda      8:0    0   100G  0 disk 
├─sda1   8:1    0     1M  0 part 
├─sda2   8:2    0   513M  0 part /boot/efi
└─sda3   8:3    0  99.5G  0 part /var/snap/firefox/common/host-hunspell
                                 /
sdb      8:16   0   100G  0 disk 
├─sdb1   8:17   0   256M  0 part 
├─sdb2   8:18   0     1K  0 part 
├─sdb5   8:21   0    50G  0 part 
└─sdb6   8:22   0  49.7G  0 part 
sdc      8:32   0   120G  0 disk 
├─sdc1   8:33   0 476.8M  0 part 
└─sdc2   8:34   0  46.1G  0 part 
sr0     11:0    1  82.4M  0 rom  
sr1     11:1    1   2.9G  0 rom  

root@ubuntu:~# lsblk | grep sd
sda      8:0    0   100G  0 disk 
├─sda1   8:1    0     1M  0 part 
├─sda2   8:2    0   513M  0 part /boot/efi
└─sda3   8:3    0  99.5G  0 part /var/snap/firefox/common/host-hunspell
sdb      8:16   0   100G  0 disk 
├─sdb1   8:17   0   256M  0 part 
├─sdb2   8:18   0     1K  0 part 
├─sdb5   8:21   0    50G  0 part 
└─sdb6   8:22   0  49.7G  0 part 
sdc      8:32   0   120G  0 disk 
├─sdc1   8:33   0 476.8M  0 part 
└─sdc2   8:34   0  46.1G  0 part 
针对磁盘进行实际格式化练习
  1. 先格式化文件系统 mkfs.xfs /dev/sdc1
  2. 关闭文件系统自检 tune2fs -c -1 /dev/sdc1
# 先格式化文件系统     mkfs.xfs  /dev/sdc1
root@ubuntu:~# mkfs.ext4 /dev/sdc1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 122066 4k blocks and 122112 inodes
Filesystem UUID: 52572ca0-5fbf-4604-b1df-e887a0af43dd
Superblock backups stored on blocks: 
        32768, 98304

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

# 关闭文件系统自检     tune2fs -c -1 /dev/sdc1
root@ubuntu:~# tune2fs -c -1 /dev/sdc1
tune2fs 1.46.5 (30-Dec-2021)
Setting maximal mount count to -1
root@ubuntu:~# tune2fs -c -1 /dev/sdc2
tune2fs 1.46.5 (30-Dec-2021)
tune2fs: Bad magic number in super-block while trying to open /dev/sdc2
/dev/sdc2 contains a ntfs file system

 以上就是有关磁盘格式化和创建文件系统的一些知识

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值