Linux文件系统管理
VFS:(Virtual File System 虚拟文件系统) VFS 是一种软件机制,与它相关的数据结构只存在于物理内存当中。所以在每次系统初始化期间,Linux 都首先要在内存当中构造一棵 VFS 的目录树(在 Linux 的源代码里称之为 namespace),实际上便是在内存中建立相应的数据结构。VFS 中的各目录其主要用途是用来提供实际文件系统的挂载点。
VFS 目录树结构:
Linux文件系统支持的类型: 基本文件系统:Ext2, Ext3, Ext4, Reiserfs(支持小文件), xfs(支持大文件), btrfs, JFS, vfat(支持WindowsFAT32), NTFS 交换分区:swap 集群文件系统:GFS2(全局文件系统), OCFS2 网络文件系统:NFS, smbfs(CIFS) Common Internet File System 光盘:iso9660 分布式文件系统:ceph moosefs, mogilefs, hdfs, gfs, glusterfs
(1)日志型文件系统: 非日志型文件系统:ext2 日志型文件系统:ext3
(2)swap: 交换分区
创建文件系统:
在分区上执行格式化(高级格式化)要使用某种文件系统需满足两个条件: 内核中:支持此中文件系统 用户空间:有文件系统管理工具
文件系统管理工具:
mkfs、mke2fs、e2label、blkid、dumpe2fs、tune2fs、fsck、e2fsck
<<========================================【mkfs】========================================>>
mkfs命令
功能:
创建文件系统
格式:
mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
常用选项:
-t fstype 指定要创建何种文件类型 -c 在制做档案系统前,检查该分区是否有坏道 -fs 指定建立文件系统时的参数
实例:
# mkfs -t ext2 /dev/sda3
# mkfs -t ext3 /dev/sda2
# mkfs -t ext4 /dev/sda1
Ext4: mkfs -t ext4 = mkfs.ext4 = mke2fs -t ext4
Ext3: mkfs -t ext3 = mkfs.ext3 = mke2fs -t ext3 = mke2fs -j
Ext2: mkfs -t ext2 = mkfs.ext2 = mke2fs -t ext2
<<========================================【mke2fs】========================================>> mke2fs命令 功能: 创建ext系列文件系统,支持ext2、ext3、ext4 格式: mke2fs [OPTION]... DEVICE 常用选项: -t {ext2|ext3|ext4} -j : 相当于-t ext3 -L Label:卷标 -b {1024|2048|4096}:指定块大小 -i #: #个字节给预留一个inode -N #: 直接指定预留多少个Inode -I #:Inode大小 -m #:预留管理员的空间百分比,默认为5 -O:指定分区特性 配置文件: /etc/mke2fs.conf 实例: //先用fdisk创建一个20G的逻辑分区
//用fdisk -l 查看当前/dev/sda硬盘的已有分区,此时可见已添加了一个20G的分区sda5
//但是此时内核仍未识别到该新添加的分区,所以还不能对其创建文件系统
//使用partx -u 更新分区列表,此时内核已识别到该新添加的分区sda5
//使用mke2fs命令创建文件系统,类型为ext4,添加卷标:Newpartition,指定块大小为4096
<<========================================【blkid】========================================>> blkid命令 功能: 查看设备的属性,UUID和TYPE 格式: blkid/dev/SOMEDEVICE: 实例: //查看刚刚新建的sda5分区的文件系统类型、卷标、UUID <<========================================【e2label】========================================>> e2label命令 功能: 查看分区的卷标和为分区设定卷标 格式 e2label/dev/SOMEDEVICE: 查看卷标 e2label/dev/SOMEDEVICE 新卷标名 实例: //使用e2label命令查看sda5的卷标,并把卷标修改为database <<========================================【dumpe2fs】========================================>> dumpe2fs命令 功能: 用于查看ext文件系统的超级块和快组信息 格式: dumpe2fs[ OPTIONS ]... device 常用选项: -h: 仅查看超级块中保存的信息 <<========================================【tune2fs】========================================>> tune2fs命令 功能: 用于调整“ext2/ext3”文件系统中的可改参数 格式: tune2fs[ OPTIONS ]... device 常用选项: -l: 查看超级块中的信息 -L 卷标名: 设定卷标 -m: 预留管理员的空间百分比,默认为5 -r: 设定文件系统保留块的大小 -j: 如果原来的文件系统为ext2, -j能够将其提升为ext3 -O [^] feature[,...]: 调整分区特性 -o [^] mount-options[,...]: 设定其默认挂载选项 async: 异步I/O sync: 同步I/O noatime/atime: 是否更新访问时间戳,建议noatime auto/noauto: 是否能够被mount -a选项自动挂载; diratime/nodiratime: 是否更新目录的访问时间戳; exec/noexec:是否允许执行其中的二进制程序; _netdev: 在网络设备启用之前禁止尝试挂载网络设备 remount: 重新挂载 acl: 启用facl 文件访问控制列表 ro:挂载为只读 rw:挂载为可读写 user/nouser: 是否允许普通挂载此设备
实例: //开启/dev/sda5 分区的默认挂载选项,启动文件访问控制列表 <<========================================【fsck】========================================>> fsck命令 功能: 用于检查并且试图修复文件系统中的错误,当文件系统发生错误时,可用fsck指令尝试加以修复 常用选项: -t fstype -a:自动修复文件系统,不询问任何问题 -r: 交互式修复错误 -A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统 -P:当搭配"-A"参数使用时,则会同时检查所有的文件系统 -v:执行时显示详细的信息 <<========================================【e2fsck】========================================>> e2fsck命令 功能: 用于检查文件系统的完整性,通过适当的选项可以尝试修复出现的错误 常用选项: -f: 强制检测 -y: 对问题自动回答为yes -b<superblock>: 指定superblock,而不使用预设的superblock -B<区块大小>:指定区块的大小,单位为字节 -v:执行时显示详细的信息 e2fsck执行后的传回值及代表意义如下: 0 没有任何错误发生。 1 文件系统发生错误,并且已经修正。 2 文件系统发生错误,并且已经修正。 4 文件系统发生错误,但没有修正。 8 运作时发生错误。 16 使用的语法发生错误。 128 共享的函数库发生错误。 交换分区: 虚拟内存并不是真正的内存,它是在硬盘上划分出一块区域,将其格式化成物理内存相同的格式。一旦发生了物理内存不足的情况,就可以将物理内存页框中的数据移动到虚拟内存上。而物理内存空间被重新释放后,又可以将虚拟内存页框中的数据移动回去,这个过程就好像是在交换数据一样,故这一区域被称为交换分区(swap) <<==============================【mkswap、swapon、swapoff】==============================>> mkswap命令 功能: 用于在一个文件或者设备上建立交换分区。在建立完之后要使用sawpon命令开始使用这个交换区。 常用选项: -c:建立交换区前,先检查是否有损坏的区块 -L label 另外两个相关命令: swapon -a #标记所有的交换分区都为启用状态 -p #: 在启用的时候指定其优先级 swapoff -a #禁用所有 实例: //创建一个空间为4G的分区/dev/sda6,然后把该分区创建为交换分区 文件系统的挂载和使用 将额外文件系统与根文件系统某现存的目录建立关联关系,进而使得此目录作为其他文件系统访问入口的行为,称之为挂载,解除此关系关系的过程称为卸载。 挂载点: mountpoint, 设备挂载至目录: 注意:挂载点在挂载后,其内部原有的文件会被暂时隐藏,建议使用空目录作为挂载点 相关命令:mount、umount、fuser、free、df、du <<========================================【mount】========================================>> mount命令 功能: 用于挂载文件系统到指定的挂载点 mount:不跟任何参数,可显示当前系统所有已挂载的设备 格式: mount[options] [-t fstype] [-o option] 设备 挂载点 常用选项: -tfstype 挂载的文件系统格式 -a:加载文件“/etc/fstab”中描述的所有文件系统 -o [^]:文件系统默认挂载选项的启用或关闭 async:异步模式 sync: 同步模式 atime/noatime:是否更新访问时间戳; diratime/nodiratime:是否更新目录的访问时间戳; auto/noauto: 是否允许此设备被自动挂载; exec/noexec:是否允许执行此文件系统上应用程序; dev/nodev:是否支持在此设备上使用设备文件; suid/nosuid: remount:重新挂载 ro:挂载为只读 rw:挂载为可读写 user/nouser: 是否允许普通挂载此设备; acl:是否支持此设备上使用facl; defaults:rw,suid, dev, exec, auto, nouser, and async 如挂载时没有设定特性,可使用tune2fs修改: # tune2fs -o mount-option 设备默认挂载属性 # tune2fs -o ^mount-option 取消默认挂载属性 几个关键的配置文件: /etc/rc.d/rc.sysinit:系统初始化脚本 /etc/mtab:记载的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件等; /etc/fstab:是开机后系统自动挂载的文件系统。 此文件中定义的文件系统挂载表 每行定义一个文件系统:(每行包含的内容) 1、要挂载的设备或伪文件系统 LABEL=, UUID= 2、挂载点 3、文件系统类型 4、挂载选项,多个选项间使用逗号分隔; defaults 5、转储频率 0:从不备份 1:每日备份 6、自检次序 0: 不自检 1:首先自检,通常只有/才有1; <<========================================【umount】========================================>> umount命令 功能: 卸载已挂载的分区,(当设备空闲时才可以被卸载) 格式: umountDEVICE umountMOUNT_POINT <<========================================【fuser】========================================>> fuser命令 功能: 查看占用挂载的设备的进程: 常用选项: fuser-v 挂载点: 查看当前正在访问该挂载点的进程 fuser-km 挂载点: 终止所有正在访问该挂载点的进程: <<========================================【free】========================================>> free命令 功能: 查看内存空间使用状态: 常用选项: -m: 显示结果以MB为单位 -g: 显示结果以GB为单位 内核映射文件中内存的相关信息: # cat/proc/meminfo
<<========================================【df】========================================>> df命令 功能: 查看当前系统上已挂载的分区,及其空间使用信息、inode信息等
常用选项: -a或--all:包含全部的文件系统 -h或--human-readable:以可读性较高的方式来显示信息 -i或--inodes:显示inode的信息 -T或--print-type:显示文件系统的类型
<<========================================【du】========================================>> du命令 功能: 统计文件或目录的实际大小
常用选项: -a或-all: 显示目录中个别文件的大小 -h或--human-readable: 以K,M,G为显示单位 -L<符号链接>或--dereference<符号链接>: 显示指定符号链接的源文件大小 -S或--separate-dirs: 显示个别目录的大小时,并不含其子目录的大小 -c或--total: 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和 -s或--summarize: 仅显示总计,只列出最后加总的值 -k或--kilobytes: 以KB(1024bytes)为单位输出 -m或--megabytes: 以MB为单位输出 -l或--count-links: 重复计算硬件链接的文件 -L<符号链接>或--dereference<符号链接>: 显示选项中所指定符号链接的源文件大小 -D或--dereference-args: 显示指定符号链接的源文件大小
实例: [iyunv@localhost~]# du -sch /etc 23M /etc 23M total [iyunv@localhost~]# ^C [iyunv@localhost~]#
练习:创建一个10G的文件系统,类型为ext4,要求开机可自动挂载至/mydata目录 1、使用fdisk命令,创建一个10G的分区
2、使用partx命令更新分区表让内核能够识别到新创建的分区
3、使用e2fs命令为此分区创建文件系统,类型为ext4
4、在根目录下创建mydata目录,并使用mount命令挂载分区
5、使用blkid命令查看该分去的UUD,并把该值复制下来
6、编辑/etc/fstab配置文件,添加一行该分区的信息,下次开机后系统将会自动挂载该分区
7、可使用mount -a 命令加载当前/etc/fstab配置文件内所有分区,并立即挂载
|