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
-
FAT
-
FAT16
-
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
针对磁盘进行实际格式化练习
-
先格式化文件系统 mkfs.xfs /dev/sdc1
-
关闭文件系统自检 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
以上就是有关磁盘格式化和创建文件系统的一些知识