- 文件系统管理工具
- 创建文件系统的工具
- mkfs
- 具体实现各不相同,mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat...
- 或者统一使用mkfs -t命令,例如mkfs -t ext2 /dev/sda3
- mkfs
- 检测及修复文件系统的工具
- fsck
- fsck.ext2, fsck.ext3...
- fsck
- 查看文件系统属性的工具
- ext系列文件系统:dumpe2fs,tune2fs
- 其它各个文件系统工具各不相同
- 调整文件系统特性的工具
- ext系列文件系统:tune2fs
- 其它各个文件系统工具各不相同
- 创建文件系统的工具
- 内核级文件系统的组成部分
- 文件系统驱动:由内核提供
- 文件系统管理工具:由用户空间的应用程序提供
- ext系列文件系统的管理工具
- mkfs.ext2, mkfs.ext3, mkfs.ext4;或者mkfs -t
- 后面的版本兼容前面的版本
- 使用方法:COMMAND Partition,例如mkfs.ext2 /dev/sda3
- CentOS 6默认不支持xfs文件系统,需要安装xfs的npm包。
- yum install xfsprogs
- yum -y install xfsprogs,就不用敲yes了
- ext系列文件系统专用的管理工具:mke2fs
- mke2fs [Options] Partition
- -t {ext2 | ext3 | ext4}:指明格式化的文件系统类型是什么
- mkfs.ext4 = mkfs -t ext4 = mke2fs -t ext4
- -b {1024 | 2048 | 4096}:指明块大小,分别代表1k,2k,4k
- -L LABEL:指明卷标
- -j:创建有日志功能的文件系统ext3
- mkfs.ext3 = mkfs -t ext3 = mke2fs -t ext3 = mke2fs -j
- -i #:每多少字节一个inode,bytes-per-inode
- -N #:直接指明要给此文件系统创建的inode的数量
- -m #:指定预留空间的百分比,不需要加百分号,给一个数字就行了;默认是5%
- -O [^]FEATURE:以给定的特性创建目标文件系统,不加^表示启用某特性,加了表示取消某特性
- mkfs.ext3 = mkfs -t ext3 = mke2fs -t ext3 = mke2fs -j = mke2fs -O has_journal
- e2lable命令:ext系列文件系统专用的卷标查看修改工具
- 查看:e2lable Partition
- 修改:e2lable Partition Label
- tune2fs命令:查看或修改ext系列文件系统的某些属性
- 只能修改某些属性,例如块大小创建之后就不能再修改
- tune2fs [Options] Partition
- -l:查看超级块的内容
- -j:将ext2升级为ext3,不损害数据
- -L LABEL:修改卷标,不损害数据
- -m #:调整预留空间的百分比
- -O [^]Feature:开启或关闭某种特性
- -o [^]mount_options:开启或关闭某种默认的挂载选项,比如acl选项
- dumpe2fs命令:显示ext系列文件系统的属性信息
- dumpe2fs [-h] Partition
- -h:只显示超级块的信息;
- 用于实现文件系统检测的工具
- 因进程意外终止或系统崩溃,断电等原因导致的写入操作非正常终止时,可能会造成文件损坏,此时,建议检测并修复文件系统;建议离线进行,即不要挂载,或者不要写入。
- ext系列文件系统的专用工具:e2fsck
- e2fsck [Options] Partition
- -y:对所有问题自动回答为yes
- -f:即使文件系统处于clean状态(与dirty状态对应),也要强制进行检测
- fsck:通用的工具
- -t:指明文件系统类型,如果不指明的话有时候会自动检测出来
- fsck -t ext4 = fsck.ext4
- -a:无需交互而自动修复所有错误
- 不推荐,因为修复就是把坏文件删除,有些文件已经写了很多了,删除就全没了
- -r:交互式修复
- -t:指明文件系统类型,如果不指明的话有时候会自动检测出来
- mkfs.ext2, mkfs.ext3, mkfs.ext4;或者mkfs -t
- blkid命令:
- blkid Partition:查看分区的相关属性
- blkid -L LABEL:根据LABEL定位分区
- blkid -U UUID:根据UUID定位分区
- swap文件系统
- Linux上的交换分区必须使用独立的文件系统,且文件系统的System ID必须为82
- mkswap命令:创建swap文件系统
- mkswap [Options] Partition
- -L LABEL:指明卷标
- -f:强制
- Windows无法识别Linux的文件系统
- Windows的NTFS文件系统在某些桌面级的Linux版本上被支持
- Windows的fat32文件系统在Linux上被识别为vfat文件系统
- 存储设备需要在两种系统之间交叉使用时,应该使用windows和linux同时支持的文件系统: fat32(vfat)
- mkfs.vfat Partition
- 文件系统的使用
- 首先要“挂载”:mount命令和umount命令
- 根文件系统之外的其它文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”;此目录即为“挂载点”;
- 挂载点:mount_point,用于作为另一个文件系统的访问入口
- 挂载点特性
- 事先存在的目录
- 应该使用未被且不会被其它进程使用到的目录
- 挂载点下原有的文件将会被隐藏
- mount命令:
- mount [-fnrsvw] [-t vfstype] [-o options] device dir
- 命令选项
- -r:只读挂载
- -w:读写挂载,为默认值
- -n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性
- -t vfstype:指明要挂载的设备上的文件系统的类型;多数情况下可以省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型
- -L LABLE:挂载时以卷标的方式指明设备
- mount -L LABEL dir
- -U UUID:挂载时以UUID的方式指明设备
- 挂载选项
- -o options:挂载选项
- sync/async:同步/异步操作;写入内存后,过一会儿再写入磁盘叫异步,立即写入磁盘叫同步;异步性能好,但是同步数据不容易丢失(比如突然断电)
- atime/noatime:文件或目录在被访问时,是否更新其访问时间戳
- diratime/nodiratime:目录在被访问时,是否更新其访问时间戳
- remount:重新挂载
- acl:支持使用facl功能
- mount -o acl device dir
- tune2fs -o acl device; mount device dir
- 复习facl命令
- setfacl -m u:centos:rw- fstab
- getfacl fstab
- ro:只读
- rw:读写
- dev/nodev:此设备上是否允许创建设备文件
- exec/noexec:是否允许运行此设备上的程序文件;可以防止木马等未授权的程序自动运行;
- auto/noauto:是否允许mount命令使用-a选项自动挂载
- user/nouser:是否允许普通用户挂载此文件系统
- suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效
- defaults:使用默认选项,rw,suid,dev,exec,auto,nouser,async and relatime
- -o选项之间通过逗号分隔,例如:mount -o remount,acl /dev/sda3 /mnt
- -o options:挂载选项
- 一个使用技巧:可以实现将目录绑定至另一个目录,作为其临时访问入口
- mount --bind 源目录 目标目录
- unmount 目标目录
- 查看当前系统上所有已挂载的设备
- 直接使用mount命令
- cat /etc/mtab
- cat /proc/mounts
- 挂载光盘
- mount -r /dev/cdrom mount_point
- 光盘设备文件:/dev/cdrom,/dev/dvd
- 挂载U盘
- 事先需要识别U盘的设备文件
- 挂载本地的回环设备(如iso镜像文件,img映像文件)
- mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT
- umount命令:
- umount device | dir
- 注意:正在被进程访问到的挂载点无法被卸载
- 查看被哪个或者哪些进程所占用
- lsof mount_point,例如:lsof /mnt
- fuser -v mount_point,例如:fuser -v /mnt
- 终止所有正在访问某挂载点的进程
- fuser -km mount_point
- 查看被哪个或者哪些进程所占用
- 交换分区
- 创建交换分区的命令:mkswap
- 交换分区的启用和禁用不能使用mount
- 启用:swapon
- swapon [options] [device]
- -a:定义在/etc/fstab文件中的所有swap设备
- 禁用:swapoff
- swapoff device
- 设定除根文件系统以外的其它文件系统能够开机时自动挂载:/etc/fstab文件
- 每行定义一个要挂载的文件系统及相关属性,一共有6个字段
- 要挂载的设备,有四种方式指定:设备文件,UUID,Label,伪文件系统(如sysfs,proc,tmpfs等)
- 挂载点
- swap类型的设备的挂载点为swap
- 文件系统类型
- 挂载选项
- 如果要同时指明多个挂载选项,彼此之间用逗号分隔
- 转储频率
- 0:从不备份
- 1:每天备份一次
- 2:每隔一天备份一次
- 自检次序
- 0:不自检
- 1:首先自检,通常只能是根文件系统可用1
- 2:次级自检
- ......
- mount -a命令会将fstab中定义的所有支持自动挂载的设备挂载上来
- 每行定义一个要挂载的文件系统及相关属性,一共有6个字段
- 两个与磁盘相关的命令:df和du
- df命令:查看磁盘的使用状态
- df [option]... [file]...
- -l:仅显示本地文件系统的相关信息
- -h:以人类可读的方式做单位换算后显示
- -i:显示inode的使用情况,而非blocks
- du命令:评估文件占用的空间大小
- du [option]... [file]...
- -s:summary,显示目录下所有文件的大小之和
- -h:以人类可读的方式做单位换算后显示
练习:
1,创建一个10G的分区,并格式化为ext4文件系统
- block大小为2048;预留空间为2%;卷标为MYDATA
- 挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳
- 可开机自动挂载,且默认有acl挂载选项
以下为另一个相似题目的答案,用来参考。不是本题答案。
(1) 创建20G分区略,假设为/dev/sda7
(2) mke2fs -t ext4 -b 2048 -L 'MYDATA' /dev/sda7
(3) 编辑/etc/fstab文件,
LABEL=‘MYDATA’ /mydata ext4 defaults,acl 0 0
2,创建一个大小为1G的swap分区,并启用之
后期补充:
- 删除文件的过程
- 将此文件inode指向的所有data block标记为未使用
- 将此文件的inode标记为未使用
- 复制文件
- 新建文件
- 移动文件
- 同一文件系统:改变仅仅是路径
- 不同文件系统:复制文件,并删除原文件
- 符号链接文件的inode指向数据块的指针里存放的是一个字符串,即原文件的路径;但是当原文件的路径很长的时候,也有可能存在数据块里,然后inode指向该数据块