Linux之文件系统管理
文件系统不仅包含着文件中的数据而且还有文件系统的结构,不同Linux发行版本之间的文件系统差别很少,主要表现在系统管理的特色工具以及软件包管理方式的不同,文件目录结构基本上都是一样的。
Linux的文件结构是单个的树状结构,根目录是“/”,其他目录都要位于根目录下。每个目录一般都存放
特定类型的文件,下表常见目录:
/ 根目录,只能包含目录,不能包含具体文件
/bin 存放可执行文件。很多命令就对应/bin目录下的某个程序,例如 ls、cp、mkdir。/bin目录对
所有用户有效
/dev 硬件驱动程序。例如声卡、磁盘驱动等,还有如
/dev/null、/dev/console、/dev/zero、/dev/full 等文件
/etc 主要包含系统配置文件和用户、用户组配置文件
/lib 主要包含共享库文件,类似于Windows下的DLL;有时也会包含内核相关文件
/boot 系统启动文件,例如Linux内核、引导程序等
/home 用户工作目录(主目录),每个用户都会分配一个目录
/mnt 临时挂载文件系统。这个目录一般是用于存放挂载储存设备的挂载目录的,例如挂载CD-ROM的cdrom目录
/proc 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统
/tmp 临时文件目录,系统重启后不会被保存。
/usr /user目下的文件比较混杂,包含了管理命令、共享文件、库文件等,可以被很多用户使用
/var 主要包含一些可变长度的文件,会经常对数据进行读写,例如日志文件和打印队列里的文件
/sbin和 /bin 类似,主要包含可执行文件,不过一般是系统管理所需要的,不是所有用户都需要
文件系统类型
ext2:早期linux中常用的文件系统
ext3:ext2的升级版,带日志功能
ext4:ext4的升级版,增加很多新的功能
RAMFS:内存文件系统,速度很快
iso9660:光盘或光盘镜像
NFS:网络文件系统,由SUN发明,主要用于远程文件共享
ocfs2, gfs2:集群文件系统
ceph,moosefs, mogilefs, hdfs, gfs, glusterfs:分布式文件系统
创建文件系统工具
mkfs命令:新建文件系统在指定的分区上
语法 : mkfs [-V] [-t fstype] [fs-options] filesys [blocks] [-L Lable]
常见参数选项
device:检查的硬盘分区,例如:/dev/sdb1
-V: 详细显示模式
-t: 指定系统的类型,Linux 的预设值为 ext2
-c: 检查分区是否有坏道
-l bad_blocks_file : 将有坏道的block文件加到 bad_blocks_file 里面
block: 指定block 的大小
-L: 建立lable标签
示例: 1、检查已经创建的/dev/sdb1
2、/dev/sdb1指定创建类型ext4
mke2fs命令:用于创建磁盘分区上的“etx2/etx3”文件系统
语法 mke2fs(选项)(参数)
常见参数选项
-b:指定区块大小,单位为字节
-c:检查是否有损坏的区块
-f:指定不连续区段的大小,单位为字节
-F:不管指定的设备为何,强制执行mke2fs
-i:指定字节/inode"的比例
-N:指定要建立的inode数目
-L:设置文件系统的标签名称
-m:指定给管理员保留区块的比例,预设为5%
-q:执行时不显示任何信息
-r:指定要建立的ext2文件系统版本
示例:重新指定/dev/sdb1文件系统类型ext2,指定管理员保留区域比例7%
文件系统属性查看及调整工具
e2label:获取或设置ext2、ext3文件系统对应的分区的卷标
语法:e2label device [ new-label ]
常见参数选项
device:分区设备名称
new-label:新设定的卷标名称,不能超过16字符
示例:设定/dev/sdb1,新标签为mydata
tune2fs是调整和查看ext2/ext3文件系统的文件系统参数。文件系统自检,而且是可以通过tune2fs命令,自行定义自检周期及方式。
语法:tune2fs [选项] device
常用参数选项
-l:查看文件系统信息
-c:max-mount-counts 设置强制自检的挂载次数,如果开启,每挂载一次mount conut就会加1,超过次数就会强制自检
-i:interval-between-checks[d|m|w] 设置强制自检的时间间隔[d天m月w周]
-m:reserved-blocks-percentage 保留块的百分比
-j:将ext2文件系统转换为ext3类型的文件系统
-L:volume-label 类似e2label的功能,可以修改文件系统的标签
-r:reserved-blocks-count 调整系统保留空间
-o:设置或清除默认挂载的文件系统选项
-O:文件系统属性的启动或关闭
示例:转换/dev/sdb1文件系统为ext3,更新标签为mydata1
dumpe2fs:显示“ext2/ext3”文件系统的超级块和块组信息
语法:dumpe2fs [-bh] 设备名称
常见参数选项
-h :显示超级块信息
示例:显示/dev/sdb1超级块组信息
文件系统检测工具
fsck命令:用于检查并且试图修复文件系统中的错误
语法:fsck(选项)(参数)
常见参数选项
-a:自动修复文件系统
-A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统
-N:不执行指令,仅列出实际执行会进行的动作
-P:当搭配"-A"参数使用时,则会同时检查所有的文件系统
-r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式
-R:当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查
-s:依序执行检查作业,而非同时执行
-t<文件系统类型>:指定要检查的文件系统类型
-V:显示指令执行过程。
示例:如不清楚哪个文件出了问题,可以直接: fsck ---->输入:y
e2fsck命令:用于检查第二扩展文件系统的完整性,通过适当的选项可以尝试修复出现的错误,
一般用于ext系列。
e2fsck执行后的传回值及代表意义如下:
0 没有任何错误发生
1 文件系统发生错误,并且已经修正
2 文件系统发生错误,并且已经修正
4 文件系统发生错误,但没有修正
8 运作时发生错误
16 使用的语法发生错误
128 共享的函数库发生错误
语法:[选项] FLIE
常见参数选项
-a:自动修复文件系统不提示;
-d:显示排错信息;
-f:即使文件系统没有错误迹象,仍强制地检查正确性;
-F:执行前先清除设备的缓冲区;
-t:显示时间信息;
-v:执行时显示详细的信息;
-y:采取非互动方式执行,所有的问题均设置以"yes"回答。
示例:检查/dev/sdb1是否有问题,如发现问题便自动修复:
e2fsck -a -y /dev/sdb1
文件系统的挂载
挂载文件系统,目前有两种方法: 用mount来挂载;通过/etc/fstab文件来开机自动挂载
语法:mount [options] [-o mount_options] device directory
[options]常见参数选项
-a:挂载/etc/fstab配置文件中指定的文件系统
-r:以只读方式挂载文件系统
-w:以可读/写模式挂载文件系统
-t fstype:指定被挂载的文件系统类型为fstype
-o mount_options:在命令行中指定挂载选项
[-o mount_options]常见参数选项
dev:允许读取文件系统上的字符设备或块设备
exec:运行执行挂载分区上的程序
noexec:禁止执行该文件系统上的程序
nouser:禁止非root用户挂载或卸载该文件系统
user:允许某个普通用户挂载该文件系统,但禁止其他普通用户卸载该文件系统
users:允许任何用户可以挂载或卸载该文件系统
fuser查看或终止正在访问指定挂载点:
# fuser -v MOUNT_POINT //查看正在访问挂载点
# fuser -km MOUNT_POINT //终止所有正在访问指定的挂载点的进程
相关挂载配置文件:/etc/fstab,理解配置文件中个字段信息:
要挂载的设备或伪文件系统 :设备文件、LABEL=、UUID=、伪文件系统名称
挂载点 :挂载文件名称
文件系统类型 :ext2、ext3、ext4、sawp
挂载选项 :defaults
转储频率 :0: 不转储 1: 每天转储 2: 每隔一天转储
自检次序 :0:不自检 1:首先自检,通常只有/才为1
示例:
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Aug 25 13:54:49 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/MyVG01-root / xfs defaults 0 0
UUID=af94db7d-e070-4d85-9e0c-ef44c8404033 /boot xfs defaults 0
0
/dev/mapper/MyVG01-usr /usr xfs defaults 0 0
/dev/mapper/MyVG01-swap swap swap defaults 0 0
示例:/dev/sdb1挂载在/tmp/Mydata1上,并且开机自动挂载,查看当前挂载点
umount命令:用来卸载某个目录下已经挂载的文件系统
语法:umount [options] directory
options:
-a:卸载/etc/mtab文件中记录的所有文件系统
-t fstype:只卸载fstype类型的文件系统
示例:取消/tmp/Mydata1挂载
交换分区简述:当系统的物理内存不够用的时,就需要将物理内存中的一部分空间释放出来,以供
当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间
被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。因此系统总是
在物理内存不够时,才进行Swap交换
一般设置swap大小:
4G以内的物理内存,SWAP 设置为内存的2倍
4-8G的物理内存,SWAP 等于内存大小
8-64G 的物理内存,SWAP 设置为8G
64-256G物理内存,SWAP 设置为16G
注:交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷
查看当前swap状态用free命令
启用交换分区:swapon
关闭交换分区:swapoff
示例:磁盘添加swap,SWAP标签swap-files,大小2G,并设置开机自动挂载,挂载点为/tmp/swap(注
:fdisk ID的编号示83,它代表这个分区是ext的分区,82才是Linux swap文件系统)
文件系统占用情况查看工具命令:free、df、du
free命令:空闲的、已用的物理内存及swap内存,及被内核使用的buffer
语法:free [选项]
常见参数选项:
-b:以Byte为单位显示内存使用情况
-k:以KB为单位显示内存使用情况
-m:以MB为单位显示内存使用情况
-g:以GB为单位显示内存使用情况
命令比较简单,前面已经有示例做了演示,这里不在做演示
df命令:查看文件系统的磁盘空间情况
语法:df [选项] [文件]
常见参数选项
-h:方便阅读方式显示
-i:显示inode信息
du命令:查看使用空间的
语法:du [选项][文件]
常见参数选项
-a:显示目录中个别文件的大小。
-m:以MB为单位输出。
-h:以K,M,G为单位,提高信息的可读性。
-L<符号链接>:显示选项中所指定符号链接的源文件大小。
-l:重复计算硬件链接的文件。
示例:查看当前系统磁盘、/tmp/log目录使用情况
linux链接文件:硬链接(Hard Link)、符号链接(Symbolic Link)/也称软链接。ln命令默认产生硬链接。
硬连接:指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身
和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
符号连接(Symbolic Link),也叫软连接。类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
练习:新建aa、bb、cc文件,aa硬链接bb,aa软链接cc,aa插入 mytest,删除aa文件,查看bb,cc文件
通过练习得知:
1、删除符号连接cc,对aa,bb无影响
2、删除硬连接bb,对aa,cc也无影响
3、删除原文件aa,对硬连接bb没有影响,导致符号连接cc失效
4、同时删除原文件aa,硬连接bb,整个文件会真正的被删除
练习:创建一个10G文件系统,类型为ext4,要求开机可自动挂载至/mydata目录;