创建文件系统--分区格式化
格式化:
低级格式化:
划分磁道
高级格式化:
创建文件系统,按照某种特定的标准,将整个分区划分为大小相同的若干小的逻辑编址单元,每个这样的单元称为块(block)【windows中称为簇】;
划分块的标准:
在Linux的文件系统中,主要的块的划分标准就是:每个块包括2^1或2^2或2^3个扇区;即块大小可以是1024字节或者是2048字节或者是4096字节;
注意:
1.被划分出来的块,每一个只能存放一个文件的内容,一个文件可以存储在多个块上;
2.如果在某个分区中要创建大量的小文件,就将块大小设置的小一些;反之,如果在某个分区中要创建大量的大文件,就将块大小设置的大一些;
3.如果分区的空间较大可以将块设置的大一些;
FHS--文件系统的层级标准
对于数据的管理:
平面分类管理:
遍历数据;
空间分类管理(层次化)
逻辑编址:创建文件系统实际上就是给分区进行存储空间的逻辑地址;
特点:仅需要经过有限次且有效的查找即可定位到目标文件;
在一个分区中创建了文件系统的步骤:
1.首先,文件系统会将分区划分成大小相等的若干块数据块;
元数据块:
存放文件的属性信息(大小,权限,所有权,时间戳,数据块指针【直接指针、间接指针】);
存放每个文件的元数据的固定的存储空间,称为index node,简称inode;
在Linux的文件系统中,每个inode大小一般是128字节;每个iNode都有其对应的inode编号;
位图:
inode位图
块位图
数据块:
存放文件中所包含的流式数据的内容;
日志块:断点续传,根据日志传输数据,保证数据的一致性;
特殊文件:
只占据元数据块中的inode,而不占据数据块;
设备文件:
block special
character special
此类文件是将元数据区域inode中的数据块指针换成了设备号来保存;
符号链接文件:
symbolic link
此类文件是将inode中数据块指针换成了另一个文件的访问路径;
随着磁盘空间越来越大,划分出来的块的数量越来越多,管理难度越来越大;通过划分块组来解决此问题;
块组来解决此问题:
块组:
每个快组中有独立的元数据块和数据块;
存放数据的时候,以块组内的数据优先选择,如果块组内的数据块不够,可以通过文件系统的存储策略来申请多个块组协同存储;
超级块:
主要定义了在整个分区中有多少个块组,及每个块组的边界;
为了防止超级块发生故障导致整个文件系统崩溃,文件系统会自动对超级块进行备份;
为了防止数据的不一致,在文件系统中引入日志块的概念;
日志块:对于数据的写入操作做日志记录的块;
数据不一致通常是由不洁关机、不洁断电导致;
一个完整的Linux系统:
超级块,inode,inode bitmap,block bitmap,data block,journal block
想要查找/var/log/message文件的内容,是怎样的查找过程?
目录:内容是文件名;
每个文件名是文件的特有的标识,每个文件名都对应一个inode;
Linux支持的文件系统:
位于内核空间中的文件系统驱动路径:/usr/lib/modules/KERNEL-VERSION/kernel/fs/
文件系统可以是内核的一部分,也可以是内核的模块;
位于用户空间中的文件系统管理程序:
管理命令:
Linux支持的文件系统:
1.Linux专属的文件系统:
ext系列:ext(极不稳定)->ext2(核心)、ext3(引入日志块,解决数据不一致)、ext4(从centos6开始默认使用)
ext4特性:
单个分区最大可达到50TB;
单个文件最大可达到64EB;
可以在根分区上设置文件系统;
可以在启动分区上设置文件系统;
2.xfs:(扩展的文件系统)
最大分区支持500TB;
默认在centos7中使用;
3.reiserfs:文件恢复性较强(没落ing)
4.btrfs:2016年正式发行,之前都是技术预览版;无须分区,直接存放文件,数据负载均衡;
5.ISO9660:光盘文件系统
6.FAT(Linux中支持windows文件系统FAT):Linux中写法多:vfat
7.NTFS:默认不支持,可以通过调整内核参数以获得支持;
8.网络文件系统:NFS、CIFS
9.集群文件系统:gfs2、ocfs2
10.分布式文件系统:
内核级:ceph
用户空间(应用级):mogilefs、moosefs、glusterfs
11.Unix的文件系统:ufs、FFS、JFS、zfs(终极文件系统)
12.伪文件系统:proc、sys、tmpfs、hugepagefs;
并非管理磁盘数据的文件系统,而是管理内存数据的文件系统;
对于不同的发行版本的Linux,都有其默认使用的文件系统;
RHEL或centos系列:
5:ext3
6:ext4
7:xfs
管理文件系统:
创建文件系统:
使用文件系统(挂载文件系统):
停止使用文件系统(卸载文件系统):
文件系统的检测和修复;
创建文件系统的用户空间工具:
mkfs - 创建一个 Linux 文件系统
mkfs [ -V ] [ -t 文件系统类型 ] [ fs-选项 ] 文件系统 [ 块 ]
RHEL或centos系列发行版本中,可以使用mkfs.ext4,mkfs.btrfs,...等工具来代替mkfs来创建文件系统
示例:
mkfs -t ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2
注意:
1.不要使用磁盘设备名称或扩展分区设备名称作为mkfs命令的参数;如果使用磁盘设备或扩展分区设备名称作为mkfs命令的参数,则所有分区都将被删除;
2.只有主分区和逻辑分区才能使用mkfs命令创建文件系统;
3.如果要创建的目标文件系统是ext系列文件系统,那么可以使用mke2fs命令;
mke2fs命令:
mke2fs - create an ext2/ext3/ext4 filesystem
常用选项:
-b block-size:在创建文件系统时,指定每一个块的大小;默认值是4096字节,单位是字节;调整时,只能写1024,2048及4096;
-i bytes-per-inode:在创建文件系统时,指定inode与字节的比率;即多少个字节创建一个inode,默认值是16384;
-j:创建有日志功能的文件系统,即:ext3;
-m reserved-blocks-percentage:在创建文件系统时,指定为管理员保留的磁盘空间的百分比;默认值是5;
-n:并非真正创建文件系统,而好似显示在创建文件系统时所做的操作;
-N number-of-inodes:在创建文件系统时,直接指明在此文件系统中创建的inode的数量;
-O [^]feature[,...]:在创建文件系统时,关闭或开启文件系统特性;
-t fs-type:在创建文件系统时,指定文件系统类型;
修改ext系列文件系统的卷标:
e2label命令
e2label - Change the label on an ext2/ext3/ext4 filesystem
e2label device [ new-label ]
注意:如果不加new-label参数,则是查看指定设备的卷标;如果添加了new-label参数,则直接将设备的卷标设置为new-label,而不考虑原来是否有卷标或者原卷标是什么;
修改ext系列文件系统的属性,可以使用tune2fs命令:
tune2fs - adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems
在ext2/ext3/ext4文件系统上调整那些
常用选项:
-l:显示超级块的内容;
-j:将ext2文件系统修改调整为ext3文件系统(该过程是单向的);
-m reserved-blocks-percentage::调整文件系统中文件预留空间的百分比;
-r reserved-blocks-count:调整文件系统中预留的磁盘空间的块数;
-L volume-name:修改卷标;
-O [^]feature[,...]:修改文件系统特性是否打开;
文件系统的检测和修复工具:
fsck - 检查并修复Linux文件系统
fsck [ -ar ] [ -t fstype ] [filesystem ... ]
常用选项:
-t fstype:指定要检测的文件系统的文件系统类型;
-a:无须交互,自动修复检测到的所有问题;
-r:交互式修复检测到的问题;
ext系列文件系统专用的检测工具:
e2fsck
e2fsck - check a Linux ext2/ext3/ext4 file system
格式:e2fsck [-y] [-f] device
常用选项:
-y:在交互式过程中所有的问题都以“yes”来回答;
-f:强制检测并修复;即使文件系统处于clean状态也修复;
blkid
blkid - locate/print block device attributes
格式:
blkid -L label | -U uuid
blkid [-dghlv] [-c file] [-o format] [-s tag]
[-t NAME=value] [device ...]
blkid -p [-O offset] [-o format] [-S size] [-s tag]
[-n list] [-u list] device ...
blkid -i [-o format] [-s tag] device ...
常用选项:
-L label:根据指定的卷标进行块设备查找定位;
-U UUID:根据指定的UUID进行块设备查找定位;
findfs:
findfs - find a filesystem by label or UUID
LABEL=<label>
Specifies filesystem label.
UUID=<uuid>
Specifies filesystem UUID.
swap文件系统:
前提:分区的类型必须是swap类型,即:分区的系统id必须是82;
修改方法:在fdisk交互模式中,使用t命令将指定的分区类型修改为82即可;
创建swap文件系统:
mkswap
mkswap - 建立一个linux交换区
格式:mkswap [-c] [-vN] [-f] device
常用选项:
-f,--force:强制执行;
-L LABEL:设置交换分区的卷标;
-U UUID:指定交换分区的UUID,建议不使用此选项而是让系统自动生成;
示例:mkswap /dev/sdb3
利用一个大文件创建交换分区:
示例:
~]# dd if=/dev/zero of=/tmp/swapfile bs=1024 count=1024000
~]# mkswap /tmp/swapfile
使用文件系统--挂载:
挂载:对于Linux系统来说,文件系统只能有唯一的一个原初访问入口,此访问入口被称为“根文件系统”;其他所有的文件系统都必须通过某种特定的方式关联至根文件系统或者根文件系统的子目录中,而此关联过程被称为“挂载”;用于关联根文件系统和其他文件系统的目录,就被称为“挂载点”;
挂载点:mount point,通常是一个目录,该目录在成为挂载点后,就是其他文件系统的访问入口;如:/boot
要求:
1.作为挂载点的目录必须事先存在(不存在则挂载必定失败);
2.作为挂载点的目录应该是没有被使用或不能被其他进程占用的目录,换言之,必须是空闲目录;
3.作为挂载点目录,一旦挂载其他文件系统,则失去原系统中的特性;简单说,如果一个目录中有文件名,一旦挂载了其他文件系统,则原来的文件名不可见,这样的目录中新的内容是新文件系统中的文件名;这个过程会一直持续到新文件系统被卸载;
完成挂载操作,使用mount命令;
mount - mount a filesystem
格式:mount [-lhV]
mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o option[,option]...] device|dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
常用选项:
-r,--read only:以只读方式挂载目标文件系统;通常用于光盘挂载;
-w, --rw, --read-write:以可读可写的方式挂载目标文件系统,默认挂载方式;
-n, --no-mtab:默认情况下,所有挂载块设备的操作都会被自动记录在/etc/mtab文件中,如果使用了-n,--no-mtab选项,即表示即便挂载成功,也不会将挂载信息记录在/etc/mtab文件中;
-t, --types vfstype:在挂载文件系统时,指明目标文件系统的类型;如果省略该选项,mount命令会通过blkid来判断要挂载的目标文件系统的类型;
-L, --label label:通过指定的文件系统的卷标来挂载目标文件系统;
-U, --uuid uuid:通过指定的文件系统的UUID来挂载目标文件系统;
-a, --all:根据/etc/fstab文件中所指定的文件系统进行自动挂载;
-o, --options opts:在挂载目标文件系统时,可以调整挂载参数选项;
FILESYSTEM INDEPENDENT MOUNT OPTIONS:
sync/async:同步/异步挂载选项;
atime/noatime:文件或目录被访问时,是否更新访问时间戳;
diratime/nodiratime:目标被访问时,是否更新访问时间戳;
ro/rw:是以只读/可读可写方式来挂载文件系统;相当于-r/-w选项的功能;
dev/nodev:在此文件系统中是否允许创建设备文件;
exec/noexec:在此文件系统中,是否允许执行程序文件,包括各种二进制文件和各种脚本;
auto/noauto:在挂载此文件系统时,是否可以使用-a选项进行挂载;
user/nouser:是否允许普通用户挂载此文件系统;
uid/nouid:在此文件系统中,是否允许程序文件上的suid和sgid特殊权限生效;
relatime/norelatime:在此文件系统中,是否参考inode访问时间来修改其修改时间戳和改变时间戳;
remount:对于目标文件系统不需要卸载就可以应用新的挂载选项;
acl:只在ext系列文件系统或xfs文件系统中使用,可以使用文件系统的发出来、功能;
defaults:默认选项,其中包括:rw,suid,dev,exec,auto,nouser,and async.
loop:使用环回设备,将镜像文件当做文件系统挂载至指定的挂载点;
-B,--BIND:将某个已经挂载的文件系统绑定至另一个挂载点;
示例:# mount -B|--bind mount_point1 mount_point2
示例:# mount /dev/sdb1 /mnt/db1
# mount -o remount,ro /mnt/db1
卸载已经挂载的文件系统:
umount命令:
umount - 卸载文件系统
umount -a :卸载当前已经挂载的文件系统中的所有可卸载的文件系统;
umount {dir|device}...:通过指定的挂载点或设备文件名称,卸载指定设备;
挂载光盘:
在虚拟机中,需要保证光盘镜像文件被放入虚拟机的光驱,并且保证虚拟机的光驱处于“已连接”的状态;需要实现创建挂载点(/mnt/cdrom)
# mount -r /dev/sr0 /mnt/cdrom
挂载交换分区:
swapon:
卸载交换分区:
swapoff:
swapon.swapoff - enable/disable devices and file for paging and swapping
-a,--all:自动挂载/etc/fstab文件中被正确定义的所有的交换分区;
/etc/fstab文件的格式:
共6个字段,默认使用空白字符(制表符)作为字段分隔符;留个字段的含义分别为:
1.要挂载的设备或文件系统名称,也可以是卷标或UUID;
如果要使用卷标必须使用:LABEL="label"
如果要使用UUID必须使用:UUID="uuid"
2.挂载点:
swap设备或文件无需挂载点,在此字段写swap即可;
3.文件系统类型:
4.默认的文件系统挂载选项:想要指定多个选项时,使用逗号分隔的列表;
5.转储频率:
使用dump命令自动备份分区数据的频率:
0:表示不备份;
1:每天备份一次:
2:每两天备份一次,即:每隔一天备份一次;
...
6.自检次序:
0:不自检
1:优先自检,通常仅设置在根文件系统上;
2:次级自检;
...
9:最低优先级自检;
/etc/fstab文件的作用:
在系统启动过程中,会自动挂载该文件中所有被正确列出的文件系统;