文件系统


文件系统是指文件的组织与管理结构,是一个关于磁盘中各种有用信息的记录:即保存当前所使用磁盘的容量信息和所存储文件和目录
存储的主要内容:
磁盘的可用信息,包括已占用和剩余的空间;
文件与目录的属性;
文件与目录在磁盘中确切地址与链接信息。

block
#ls -lsh /etc/passwd
#stat /etc/passwd
Blocks:16 (16个扇区或叫物理块)
Blocks * 512 = IO Block

Linux 支持的文件系统
ext 扩展文件系统 (ext2:linux基本文件系统 ext3:增强版 ext4:第四个版本、日志文件系统)
swap:交换文件系统
nfs:网络文件系统,适合Linux或Unix机器间共享
smbfs:适合linux或unix和windows 机器件共享
windows 文件系统: dos vfat fat32 Linux最多可识别这三种
iso9660:CD光盘的只读文件系统
配置linux 支持NTFS文件系统
ntfs(win7)在linux中默认不支持,windows默认文件系统,功能强大
安装fuse、ntfs-3g ——> mount -t ntfs-3g /dev/sdb1 [挂载点]

linux内核采用虚拟文件系统层VFS可以将windows文件系统转换,使其显示好像Linux文件系统
规定目录树上所有东西统一为如下结构 dentry i-节点 data
文件系统本身也占用节点

文件系统重要参数
superblock(超级块):记录此file system 的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式
inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码
block:实际记录文件的内容,若文件太大,会占用多个block;小文件用小块,节约空间;大文件用大块,方便查找


#vim test.sh
DIR=/disk
free=$(df -i | grep $DIR | awk '{print $4}')
i=1
while ((free > 0))
do
touch /$DIR/file$i && echo file&i is ok
((i++))
free=$(df -i | grep $DIR | awk ‘{print $4}')
done
echo inode is not enough
#./test.sh
#touch /disk/file 无法创建文件
#df -h

超级块Superblock

启动扇区1k(并非绝对1K):永远为空,除非装双系统用以存放MBR;先装windows,再装linux 。
supershock
1k,一个分区的第2K位置
Boot sector + Superblock = 2k

索引文件系统

上面小方块表示Inode Table,下面打方块表示Data Block,通过指针找到相应的数据块
存取文件时不能分配到连续的块,通过碎片整理可以将文件的块放在一起加快索引速度

总结

创建完整文件系统的四个步骤:建立分区——>格式化分区(建立文件系统)——>检验文件系统——>装载文件系统
新加磁盘的完整步骤:物理链接——>分区——>格式化——>挂载——>更新/etc/fstab文件实现自动挂载

Linux常用分区ID
ID 标签 任务
83 Linux Linux ext文件系统
82 Linux Swap Linux 交换空间分区
85 Linux extended Linux 扩展分区
Fd Linux raid auto Linux 软件RAID分区
8e Linux LVM Linux 逻辑卷管理物理卷
————————————————————————————————————————————————
#df (disk and filesystem) report file system disk space usage
-h --human
-i --inodes
#mkfs make filesystem (mke2fs 了解)
自动补齐即可,后接分区设备
-L:lable 文件系统标签
-b : 指定块大小 (默认单位为字节)
:#mkfs.ext4 -L soft -b 1024 /dev/sdb6
#fsck file system check 诊断修复文件系统(通过扫描其他块的备份,备份块坏掉将无法修复)
自动补齐
-y : 自动输入yes

#dumpe2fs 分区设备 //查看ext文件系统信息 ,查看超级块 (2代表ext2,沿用)
:#dumpe2fs /dev/sdb6 |more

实验:破坏和修复文件系统
故障原因:非正常关机、突然断电、设备读写失误等
模拟破坏分区:
#dd if =/dev/zero of=/dev/sdb1 bs=512 count =4
#ls /disk1
#umount /disk1
#mount /dev/sdb1 /disk1
#fsck -y /dev/sdb1
#mount /dev/sdb1 /disk1

挂载文件系统
每个文件系统提供一个根目录作为文件系统的基础(每一个独立的文件系统都有一个根)
挂载文件系统时,这个根目录绑定在系统目录树中一个已经存在的目录上
这个已有的目录叫做文件系统的挂载点
挂载原理:将一个目录和另外一个文件系统的根的节点作绑定

#mkdir /disk
#mount /dev/sdb1 /disk
#ls -i /disk //此时的节点号为/dev/sdb1根目录的节点号;/disk 下的文件依旧在,暂时与原来的节点断开,内容不可见

#ls -ldi /disk/lost+found/

#mount //挂载文件系统、iso镜像到指定文件夹
:#mount [-t 类型] [-o 选项] 设备名 挂载点目录
选项
remount //重新挂载分区,不需先卸载再挂载
ro,rw // ro只读 rw读写(默认)
exec,noexec // 是否可以运行可执行文件
suid,nosuid //是否忽略SUID权限
loop //挂载镜像

/proc/mount 可看到最真实的全部挂载 :#cat /proc/mount

无法卸载已经挂载的设备?
原因:需要卸载的设备正在被使用
现象:提示"...device is busy"
解决方法:将工作目录切换到挂载点以外——>退出正在使用该设备的程序——>或使用fuser找出相关进程,并终止该进程
#fuser identify processes using files or sockets
-m mounted
-v vobose
-k kill
:#fuser -mv /media/cdrom
:#fuser -k /media/cdrom
————————————————————————————————————————
虚拟内存=交换空间:段时间缓解物理内存的不足;但不能代替物理内存
#mkswap make swap //创建交换文件系统
#mkswap [分区设备]
-L : 设置交换分区文件系统标签
#swapon [分区设备] //激活交换分区
#swapoff [分区设备] //停用交换分区
1.:#mkswap /dev/sdb5
:#swapon /dev/sdb5
:#free |grep -i swap 查看交换分区
2.:#dd if=/dev/zero of=

开机自动挂载

/etc/fstab : 包含了需要开机后自动挂载的文件系统记录
#vim /etc/fstab
设备位置 挂载点 文件系统 挂载选项 备份 扫描
LABEL=/boot /boot ext4 defaults,ro 1 2
UUID=102490b8-4135-44f1-a439-7bba50176f7c / ext4 defaults 1 1
/dev/sda3 swap swap defaults 0 0 (默认)

tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0

设备位置的三种写法 1.UUID 2. /dev/sdb 3. LABEL=/boot(标签)
该文件中使用文件系统标签可以避免由于添加删除设备造成的设备文件标识混乱(如:有多块硬盘时,其中一块坏掉,开机时可能导致覆盖)

挂载选项
auto,noauto : 是否允许自动挂载
user,nouser:是否允许普通用户挂载实现定义好的设备 $mount /mnt 只能用简单命令

备份(根据计划任务,默认两天)与之相关命令#dump
0.开机时不进行备份
1.开机时自动备份
2.开机后延迟备份

磁盘扫描 与之相关命令#fsck
0.开机不进行扫描
1.开机时进行扫描 (一般 / 目录设成1)
2. 开机后延迟扫描 (次要目录延迟扫描,不要配成 1)

devpts 点击右键打开不了终端
tmpfs 临时文件系统 ,从虚拟内存中划一半作为一般大型软件的交换空间
/pro 进程信息,硬件信息
/sys 驱动,内容与上面有一些重复

修改fstab后
#mount -a 逐行读取fstab文件进行所有挂载 (修改/etc/fstab文件后记得运行此条命令)
:#/etc/fstab中没有挂载的挂好
#mount /mnt 在fstab中找到相同的挂载点会自动挂载

系统启动时根分区是只读挂载,在启动过程中修改系统文件时需要重新挂载
#mount -o remount,rw /
——————————————————————————————————————————
文件系统的标签
#e2lable 查看和设置ext文件系统的标签
#e2lable [分区设备文件] [标签名]
#mkswap -L swap3 /dev/sdb5
#swapoff /dev/sdb5
#mkswap -L swap3 /dev/sdb5
#blkid block id // 查看文件系统的标签
:#blkid
:#blkid [分区设备文件]

#tune2fs 修改已有ext文件系统的参数
#tune2fs [] 分区设备文件
-L name 设置卷标签
-c n 最大挂载次数n,到达次数后强制要用fsck检查
-j 添加ext系统日志

——————————————————————————
主号码、次号码、.
#ls -l /dev/sd*
brw-rw----. 1 root disk 8, 0 3月 14 20:19 /dev/sda
brw-rw----. 1 root disk 8, 1 3月 14 20:19 /dev/sda1
brw-rw----. 1 root disk 8, 2 3月 14 20:19 /dev/sda2
brw-rw----. 1 root disk 8, 0 3月 14 20:19 /dev/sdb
brw-rw----. 1 root disk 8, 16 3月 14 20:19 /dev/sdb1
/ \ \
只有特定的进程可以访问该文件 主号码 次号码

主号码:每个设备驱动程序在内核中登记的一个整数
次号码:作为参数以区分不同的设备
/proc/devices文件:设备驱动程序和主号码表,

#lsblk 可看到磁盘和分区的主次号码 (磁盘使用次号码区分不同的分区 ,一个分区最多可以创建15个分区)
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 100M 0 part /boot
├─sda2 8:2 0 372.6G 0 part /
└─sda3 8:3 0 1G 0 part [SWAP]
sdb 8:16 1 14.5G 0 disk /media/ALIBOBO

#ls -Z /dev/sda //查看文件上下文信息,也就是文件的SElinux信息 ??
brw-rw----. 1 root disk system_u:object_r:fixed_disk_device_t:s0 /dev/sda
开机显示###############是在对文件加标记"."
上下文:对系统资源(文件、网络套接字、系统)进行限制的一种机制
————————————————————
磁盘配额

网盘的服务器运用了磁盘配额
磁盘配额对root不生效
实现条件:Linux 内核支持 ,quota软件包
作用范围:针对指定的文件系统(分区)
限制对象:用户帐号、组帐号
限制类型:磁盘容量(默认单位KB)、文件数量)文件数量通过inode来控制
限制方法:软限制、硬限制 (软限制 < 硬限制)

配置磁盘配额步骤
确保环境不会干扰:关闭selinux # setenforce 0 暂时生效 (或修改/etc/sysconfig/selinux disabled 重启才生效)
1.添加usrquota、grpquota挂载参数
#vim /etc/fstab
/dev/sdb1 /disk ext3 defaults,usrquota,grpquota 0 0
#mount -a (或mount -o remount /dev/sdb1)
/dev/sdb1 on /disk ext3 (rw,usrquota,grpquota) 若未看到正常挂载不要进行下一步

2. 检测磁盘配额并创建配额文件(通过fstab文件)
#quotacheck 创建配额文件
-vug [文件系统] -u、-g : 检测用户、组配额
-avug -v : verbose 显示执行过程信息 -a : 检测所有可用的分区
:#quotacheck -augv
此时若没有权限创建配额文件,root没有权限创建文件的原因:1.磁盘挂载点权限有问题 2.selinux未关闭
:ls /disk
生成的两个文件 aquota.group 、aquota.user 不能用vi 打开
:file /disk aquota.group

3.开启磁盘配额
#quotaon -avug
#quotaoff -avug 当创建另一个磁盘配额时要关闭磁盘配额

4.编辑用户和组帐号的配额设置
#edquota
-u user
-g group
-t (time) 编辑用户宽限时间(后不接任何东西)宽限时间应用于整个分区,对所有用户和组都是一样
-gt 编辑组宽限时间
-p [模板用户] [新用户] 复制配额,即将模板用户的配额复制给另一个用户 (常用于脚本)

:#edquota -u user1
Fileystem blocks soft hard inodes soft hard
0:无限制
block和inodes保持默认,无须编辑
注意单位默认为KB

5.查看配额使用情况
-s 使用易识别的单位显示容量
#quota 侧重用户和组 (后不接选项为差当前用户磁盘配额)
-u [user]
-g [goup]
:#quota -u hello
出现:Disk quotas for user hello (uid 501) : none
原因:1)磁盘挂载点没有文件 2)有文件但属主并非设置配额的用户

#repquota report quote 侧重文件系统
#repquota [文件系统]
-a --all

6.验证磁盘配额功能
切换到设置磁盘配额的分区(挂载点)使用touch 、cp 、dd 命令创建文件进行验证

#setquota 直接设置配额
#setquota [-u|-g] user/group block(soft) block(hard) inode(soft) inode(hard) 文件系统


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值