系统调用


Linux支持的文件系统:

位于内核空间中的文件系统驱动

1.内核一部分

2.内核模块

位于用户空间中的文件系统管理应用程序

管理命令


Linux自己的文件系统:

ext ext2 ext3 ext4(最大分区50TB,可以做根分区,可以做启动分区)

xfs(企业级64位文件系统,最大分区500TB,可以做根和启动分区)

reiserfs(良好的反删除功能)

btrfs(技术预览版)


光盘文件系统:iso9660

网络文件系统:NFS、CIFS

集群文件系统:gfs2、ocfs2

内核级的分布式文件系统:ceph

伪文件系统:proc、sysfs、tmpfs、hugepagefs


windows的文件系统:vfat,ntfs


Unix的文件系统:ufs,FFS,JFS,zfs


交换分区文件系统:swap


用户空间中的分布式文件系统:mogilefs,moosefs,glusterfs

 

对于不同的发行版的Linux,都有其默认的文件系统选择:

RHEL、CentOS

5:ext3

6:ext4

7:xfs


文件系统的管理工具:


写一个脚本,如果发现用户hacker登录,则将登录时间和主机记录于日志/var/log/login.log中;

#!/bin/bash

#

if who | grep -q "\" ; then

  for I in $(who | grep "\" | cut -d ' ' -f3-5 --output-delimiter=' '); do

    echo -n $I >> /var/log/login.log

  done

fi


管理文件系统:

创建文件系统:

mkfs

mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.btrfs, ...


文件系统检测和修复工具

fsck

fsck.ext3, fsxk.ext3, fsck.ext4, fsck.xfs, ...


文件系统属性查看工具

dumpe2fs


文件系统的属性调整工具

tune2fs


创建文件系统工具:

mkfs命令:

mkfs - build a Linux filesystem

mkfs [options] [-t type] [fs-options] device [size]


mkfs -t ext2 /dev/sdb1


注意:

1.不要使用磁盘设备名称和扩展分区设备名称作为mkfs命令的参数;

如果使用磁盘设备作为mkfs的参数,所有的分区都将被删除

如果使用扩展分区作为mkfs的参数,所有的逻辑分区都将被删除

2.能够作为mkfs命令参数的设备,是主分区设备和逻辑分区设备;


如果只是计划创建ext系列文件系统的话,可以使用mke2fs命令:

mke2fs:

mke2fs - create an ext2/ext3/ext4 filesystem

常用选项:

-b block-size:在创建文件系统时,调整块大小;

-i bytes-per-inode:指明inode与字节的比率,即:多少个字节可以建一个inode,默认值为16384;

-j:创建有日志功能的文件系统,就是ext3

-N number-of-inodes:直接指明要给此文件系统创建的inode的数量;

-m reserved-blocks-percentage:指定为超级用户root预留的磁盘空间的百分比;默认是5;

-t fstype:指定文件系统类型,ext2 ext3 ext4,默认是ext2

-O [^]feature[,...]:关闭或开启文件系统的特性

-L volume-label:为文件系统指定卷标


如果只计划修改ext系列文件系统的卷标,可以使用e2label命令:

e2label:

e2label - Change the label on an ext2/ext3/ext4 filesystem

e2label device [ new-label ]


注意:如果不加卷标信息,表示查看指定设备的卷标;

如果添加了卷标信息, 表示修改指定设备的卷标;


如果想要修改ext系列文件系统的属性,可以使用tune2fs命令:

tune2fs:

tune2fs  - adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems

调整那些在ext2,3,4文件系统上的可修改的参数;

常用选项:

-j:将ext2文件系统修改为ext3;

-m reserved-blocks-percentage:修改为超级用户预留的磁盘空间的百分比;

-o [^]mount-options[,...]:修改文件系统的默认挂载选项;

-r reserved-blocks-count:修改为超级用户预留的磁盘空间的块的数量;

-L volume-name:修改文件系统的卷标

-O [^]feature[,...]:修改文件系统的特性,将其关闭或启用;

-l:显示超级块的内容  相当于dumpe2fs -h 


文件系统的检测修改工具:

fsck

-t fstype:指定要检测的文件系统类型;

-a:无需交互,自动修复所有问题

-r:交互式修复问题


ext系列文件系统专门的检测修复工具:

e2fsck

-y:在交互过程的所有的问题,都以"yes"回答;

-f:强制检测修复;即使文件系统处于clean状态;


blkid:

blkid - command-line utility to locate/print block device attributes

blkid -L label:根据卷标进行查找

blkid -U uuid:根据UUID进行查找


findfs:

findfs - Find a filesystem by label or UUID

findfs LABEL=label

findfs UUID=uuid


创建swap文件系统

前提:分区类型必须是swap类型

修改的方法是:在fdisk交互模式中,使用t命令将指定分区的类型修改为82即可;

mkswap

mkswap - set up a Linux swap area

-L LABEL:设置交互分区的卷标

-f:强制执行


使用文件系统——挂载

FHS


根文件系统之外的其他文件系统如果想要被访问;都必须通过某种方式关联到根文件系统上,具体做法就是把其他文件系统装载到根文件系统中的某个目录之中;这个过程称为"挂载";用于关联其他文件系统的那个目录,称为挂载点;


挂载点:mount point,也是其他文件系统的访问入口;例如:/boot

要求:

1.作为挂载点的目录必须事先存在;

2.作为挂载点的目录应该是没有被使用或不能被其他进程使用的目录;

3.作为挂载点的目录一旦挂载文件系统,其内原有的文件将被隐藏;


完成挂载操作,使用mount命令:

mount 

mount - mount a filesystem

mount [-fnrsvw] [-t vfstype] [-o options] device dir


常用选项:

-r:readonly,以只读的方式挂载目标文件系统;光盘

-w:read and write,以读写的方式挂载目标文件系统;

-n:默认情况下,设备挂载或卸载的操作会同步更新到/etc/mtab中,如果在挂载时使用了-n选项,则表示我们要禁用此特性,即便挂载成功,也不会更新到/etc/mtab中。

-t vsftype:指明要挂载的设备上创建的文件系统类型;如果省略该选项,mount命令会通过blkid来判断要挂载的目标设备的文件系统类型;

-L LABEL:挂载文件系统时,使用卷标代替设备名称

-U UUID:挂载文件系统时,使用UUID代替设备名称

-a:mount -a:按照/etc/fstab文件中填写的设备进行自动挂载;

-o option:

sync/nosync:同步/异步操作

atime/noatime:文件或目录被读取访问时,是否更新访问时间戳;

diratime/nodiratime:目录被读取访问时,是否更新访问时间戳;

ro/rw:是以只读/读写的方式挂载文件系统;

dev/nodev:在此文件系统中是否允许创建设备文件;

exec/noexec:在此文件系统中是否允许运行程序文件;

auto/noauto:是否允许使用mount -a方式挂载/etc/fstab中的文件系统;

user/nouser:是否允许普通用户挂载此文件系统;

suid/nosuid:是否允许程序文件上的SUID和SGID特殊权限生效;

relatime/norelatime:是否参考inode访问时间来修改其修改时间和改变时间

remount:不经卸载实现重新挂载,可以应用新的挂载选项;

acl:可以使文件系统支持facl功能;

defaults:默认选项;包括:rw, suid, dev, exec, auto, nouser, async, and relatime

loop:使用环回设备;将镜像文件挂载到挂载点;


defaults,ro,nosuid

-B, --bind:将某个目录绑定至另一个目录;

mount --bind|-B 源目录 目标目录


卸载文件系统:

umount mount_point|device


挂载光盘:

1.保证光盘镜像文件放入虚拟机光驱

2.保证光驱处于"已连接"状态

3.创建光盘挂载点,mount -r /dev/sr0 mount_point


挂载U盘:

需要事先让系统识别U盘设备,然后根据设备名进行挂载;/dev/sdc1


挂载交互分区:

swapon, swapoff

swapon, swapoff - enable/disable devices and files for paging and swapping


-a:自动挂载存储于/etc/fstab文件中的交互分区设备;


df

-h -T -P 

free

-k -m -g


/etc/fstab文件的格式:

共6个字段,使用空白字符分隔:

1.要挂载的设备

设备文件名

LABEL

UUID

伪文件系统

2.挂载点

swap设备无需挂载点,指定swap即可;

3.文件系统类型

4.挂载选项:defaults

5.转储频率:

使用dump命令备份分区的频率

0:表示不备份

1:每天备份一次

2:每隔一天备份一次

6.自检次序

0:不自检

1:优先自检,通常只设置在根文件系统上;

2:次级自检

...

9:最低优先级自检


Linux系统中常有的压缩和解压缩工具:

压缩:以时间换空间的一种操作;

压缩的原理:标记和替换

压缩比:压缩之前与压缩之后的文件的大小的比值;

纯文本文件压缩比较大

视频、图像等文件压缩比小


能够实现压缩功能的工具:

compress/uncompress:.Z扩展名

gzip/gunzip:.gz扩展名

bzip2/bunzip2:.bz2扩展名

xz/unxz:.xz扩展名,目前压缩比最高的工具

zip/unzip:.zip扩展名


gzip:

gzip, gunzip, zcat - compress or expand files

-d:解压缩

-#:以指定的压缩比进行压缩,1-9,9为最高级;默认6

-c:将压缩结果输出到标准输出,不会对原文件进行压缩;

gzip -c /PATH/TO/FILE > /PATH/TO/COMPRESS_FILE.gz


bzip2:

bzip2, bunzip2 - a block-sorting file compressor, v1.0.4

  bzcat - decompresses files to stdout

  -d:解压缩

  -#:指定压缩比进行压缩,1-9,默认为6

  -k:保留原文件不删除,创建新的压缩文件;


xz:

xz, unxz, xzcat - Compress or decompress .xz files

-d:解压缩

  -#:指定压缩比进行压缩,1-9,默认为6

  -k:保留原文件不删除,创建新的压缩文件;


tar:归档程序

tar——tape archive:磁带档案

tar [OPTION...] [FILE]...

主选项:

-c:创建档案文件

-x:释放档案文件的内容

-t:查看档案文件中包含的文件

-u/-r:向档案文件中添加新的文件


辅助选项:

-f:指定档案的文件的路径

-C:在释放档案文件中的内容时,指定释放的路径;

-z:在创建档案文件时,调用gzip进行压缩

-j:在创建档案文件时,调用bzip2进行压缩

-J:在创建档案文件时,调用xz进行压缩(可能不支持)

--exclude:在释放档案文件时,排除某个文件;

-k:在释放档案文件时,不会覆盖同名文件;