inode

20190830

谁都会走 提交于 2019-11-29 03:33:54
任务: 2.17 隐藏权限lsattr/chattr 2.18 特殊权限set_uid 2.19 特殊权限set_gid 2.20 特殊权限stick_bit 2.21 软链接文件 2.22 硬连接文件 lsattr/chattr chattr +i 锁定文件,不能修改 chattr +a 只能追加,使用于日志文件 加-R参数 set_uid 创建set_uid权限,是为了让一般用户在执行某些程序的时候,能够暂时具有该程序拥有者的权限。列如:账号和密码的存放文件其实是/etc/passwd与/etc/shadow,它们的拥有者是root。在这个权限中,仅有root可以强制写入。一个普通用户去更新自己的密码时,使用的就是/usr/bin/passwd程序,却可以更新成功,而/usr/bin/passwd的拥有者是root set_gid 可以应用在文件和目录上。设置在文件上和set_uid类似,前提是这个文件必须是可执行的二进制文件。设置set_gid后,执行该文件的用户会临时以该文件所属组的身份执行。若目录被设置这个权限后,任何用户在此目录下创建的文件或者目录都具有和该目录所属组相同的组 stick_bit SBit一般用于目录上,对文件的意义不大。SBit对目录的作用是:在具有SBit的目录下,用户若在该目录下具有w及x权限,则当用户在该目录下创建文件或目录时

深入理解Linux文件系统(一)

不想你离开。 提交于 2019-11-29 03:28:03
inode和block概述 文件数据包括元信息与实际数据 文件存储在硬盘上,硬盘最小储存单位是 “扇区”,每个扇区储存512字节。 block(块) 中文译名为“索引节点”,也叫i节点 用于存储文件元信息 1、inode的内容 inode 包含很多的文件元信息,但不包含文件名,例如 文件的字节数 文件拥有着的UserID 文件的GropuID 文件的读、写、执行权限 文件的时间戳 目录文件的结构 目录也是一种文件 目录文件的结构 每一个inode都有一个号码,操作系统用inode号码来识别不同的文件 Linux系统内部不使用文件名,而是用inode号码来识别文件 对于用户来说,文件只是inode号码便于识别的别称 inode号码 (1)、系统找到这个文件名对应的inode号码 (2)、通过inode号码获取inode信息 (3)、根据inode信息,找到文件数据所在的block,读出数据 inode的大小 inode也会消耗硬盘空间,每个inode的大小,一般是128字节或256字节 格式化文件系统时确定inode总数 使用df-i可以查看每个硬盘分区的inode总数和已经使用的数量 实际操作 1、我们在opt里输入mkdir abc创建一个空目录,输入 touch aaa.txt再abc目录里里创建一个空文件,可以通过ls -i 查看文件的inode节点号 2、也可stat

我是如何学习写一个操作系统(九):文件系统

依然范特西╮ 提交于 2019-11-29 03:22:37
前言 这个应该是这个系列的尾声了,一个完整的操作系统可能最主要的也就是分成这几大模块:进程管理、内存管理和文件系统。计算机以进程为基本单位进行资源的调度和分配;而与用户的交互,基本单位则是文件 生磁盘 文件正是对生磁盘的抽象 磁盘的组成 一个磁盘由多个盘面串联而成,而一个盘面又被分为磁道,磁道又由扇区组成。 磁盘的访问单元就是扇区,一个扇区为512字节 磁盘的使用 CPU向磁盘的控制器发出一个指令 控制器开始进行寻道、旋转和传输 最后完成后向CPU发送一个中断 也就是向控制器发送柱面磁头扇区等信息,然后等待回应 盘块 盘块是对扇区的抽象 程序负责提高盘块block,而磁盘驱动负责从block计算出cyl,head,sec(CHS),最后传递到磁盘控制器上 磁盘访问时间 = 写入控制器时间 + 寻道时间 + 旋转时间 + 传输时间 其中主要的时间都在寻道时间和旋转时间,所以对扇区抽象成盘块就可以一次访问多个扇区来节省磁盘的访问时间 磁盘调度 既然有多进程交替执行,就有可能多个进程同时访问相同磁盘的情况,就需要一个请求队列来处理所有请求,就会涉及到调度算法了 FCFS调度 FCFS是最公平最直观的算法,也就是按照队列顺序来访问磁盘,但是效率也很低下,磁头会在不规律的磁道长途奔袭 SSTF调度 SSTF算法就类似短作业优先算法,先寻找更近距离的磁道,但是SSTF算法可能会产生饥饿问题

What is there behind a symbolic link?

ε祈祈猫儿з 提交于 2019-11-29 03:16:34
How are symbolic links managed internally by UNIX/Linux systems. It is known that a symbolic link may exist even without an actual target file (Dangling link). So what is that which represents a symbolic link internally. In Windows, the answer is a reparse point . Questions: Is the answer an inode in UNIX/Linux? If yes, then will the inode number be same for target and links? If yes, can the link inode can have permissions different from that of target's inode (if one exists)? jm666 It is not about UNIX/Linux but about filesystem implementation - but yes, Unix/Linux uses inodes at kernel level

文件系统

*爱你&永不变心* 提交于 2019-11-29 00:40:29
==什么是文件系统? 计算机的文件系统是一种存储和组织数据的方法,文件系统使用文件和树形目录的抽象逻辑 概念代替了硬盘和光盘等物理设备使用数据块的概念 文件系统通常使用硬盘和光盘这样的存储设备,并维护文件在设备中的物理位置。 实际上文件系统也可能仅仅是一种访问数据的界面而已,实际的数据是通过网络协议 (如NFS、SMB、9P等)提供的或者内存上,甚至可能根本没有对应的文件(如proc文件系统) ==什么是数据块? 块是一段标准长度(块大小)的字节或位元,一般为512字节或1024字节,又称为簇,是管理 存储的最小单元,一般一次会读取一个完整的块 ==文件系统类型有哪些? 磁盘支持类型:FAT、exFAT、NTFS、HFS、HFS+、ext2、ext3、ext4、ODS-5、btrfs、XFS、UFS、ZFS。 linux支持类型:Btrfs、JFS、ReiserFS、exFAT、ext、ext2、ext3、ext4、XFS、ISO 9660、 Minix、MSDOS、UMSDOS、VFAT、NTFS(Linux Kernel内置的NTFS驱动程序,写入功能不稳定)、 HPFS、NFS、SMB、SysV、PROC等 Windows支持类型:FAT12/FAT16 FAT32/VFAT FAT64/exFAT NTFS ==不同的文件系统类型,怎么访问? vfs虚拟文件系统

Why do inode numbers start from 1 and not 0?

本小妞迷上赌 提交于 2019-11-28 21:17:18
The C language convention counts array indices from 0. Why do inode numbers start from 1 and not 0? If inode 0 is reserved is for some special use, then what is the significance of inode 0? dmeister Usually, the inode 0 is reserved because a return value of 0 usually signals an error. Multiple method in the Linux kernel -- especially in the VFS layer shared by all file systems -- return an ino_t, e.g. find_inode_number . There are more reserved inode numbers. For example in ext2 : #define EXT2_BAD_INO 1 /* Bad blocks inode */ #define EXT2_ROOT_INO 2 /* Root inode */ #define EXT2_BOOT_LOADER

How to store one billion files on ext4? [closed]

六眼飞鱼酱① 提交于 2019-11-28 21:12:26
I only created about 8 million files, then there was no free inode in /dev/sdb1. [spider@localhost images]$ df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sdb1 8483456 8483456 0 100% /home Someone says can specify the inode count when format the partition. e.g. mkfs.ext4 -N 1000000000. I tried but got an error: "inode_size (256) * inodes_count (1000000000) too big...specify higher inode_ratio (-i) or lower inode count (-N). ". What's the appropriate inode_ratio value? I heard the min inode_ratio value is 1024 for ext4. Is it possible to store one billion files on a single partition?

浅析Linux文件(一)inode与block、硬链接与软链接、恢复误删文件

倾然丶 夕夏残阳落幕 提交于 2019-11-28 20:18:23
一、inode与block 1.inode和block概述 文件数据包括元信息与实际数据,一个文件必须占用一个inode,但至少占用一个block。 扇区:文件存储在硬盘上,硬盘的最小存储单位是扇区,每个扇区存储空间是512字节。 block(块):连续的八个扇区组成一个block,block是文件存取的最小单位,用来存储文件数据。 inode(索引节点):也叫i节点,用于存储文件元信息。 2.inode的理解 (1)inode包含文件元信息: 文件的字节数 文件拥有者的User ID(UID) 文件的Group ID(GID) 文件具有的读、写、执行权限 文件的时间戳(atime、ctime、mtime) 当我们想查看某个文件的inode信息时,使用的是“stat”命令,后面直接接文件的路径和名称即可。 [root@localhost opt]# stat test/ 文件:"test/" 大小:24 块:0 IO 块:4096 目录 设备:802h/2050d Inode:33574981 硬链接:2 权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root) 环境:unconfined_u:object_r:usr_t:s0 最近访问:2019-08-28 11:39:33.953003238 +0800 最近更改:2019-08

inode与block

不打扰是莪最后的温柔 提交于 2019-11-28 20:18:19
概念 块(block):由多个扇区组成,文件存储的最小单位 i节点(inode):存储文件元信息的区域 inode包含的文件元信息 查询inode命令 删除文件也可以通过删除节点号删除 命令 find ./* -inum 节点号 -delete inode的大小 inode也会消耗硬盘空间,每个inode的大小,一般是128字节或256字节。inode的总数,在格式化时给定。执行df -i即可查看每个硬盘的inode总数和已经使用的数量 每个硬盘都有inode的总数,所以当inode节点耗尽以后,在该文件系统中将无法创建新的文件 上图时硬盘节点状况,在sbd1中目前只用了三个节点,在此硬盘中创建大量空文件,占据节点 由图可知,一旦占满节点,将无法创建文件 来源: https://blog.51cto.com/14449536/2433416

shell习题-15

好久不见. 提交于 2019-11-28 19:16:27
题目要求 写个shell,看看你的Linux系统中是否有自定义用户(普通用户),若是有,一共有几个? 核心要点 centos6 uid>=500 eentos7 uid>=1000 awk -F ':' '$3>=500' /etc/passwd|wc -l centos 5 6 awk -F ':' '$3>=1000' /etc/passwd|wc -l centos 7 awk -F 'release' '{print $2}' /etc/redhat-release|cut -d '.' -f1 参考答案 #!/bin/bash v=`awk -F 'release ' '{print $2}' /etc/redhat-release |cut -d '.' -f1` user() { if [ $1 -eq 0 ] then echo "系统没有自定义的用户" else echo "系统存在自定义用户,有$1个" fi } case $v in 5|6) n=`awk -F ':' '$3>=500' /etc/passwd|wc -l` user $n ;; 7) n=`awk -F ':' '$3>=1000' /etc/passwd|wc -l` user $n ;; *) echo "脚本出错." ;; esac 题目要求 写一个shell脚本