inode

Can inode and crtime be used as a unique file identifier?

假装没事ソ 提交于 2019-12-30 03:58:06
问题 I have a file indexing database on Linux . Currently I use file path as an identifier. But if a file is moved/renamed, its path is changed and I cannot match my DB record to the new file and have to delete/recreate the record. Even worse, if a directory is moved/renamed, then I have to delete/recreate records for all files and nested directories. I would like to use inode number as a unique file identifier, but inode number can be reused if file is deleted and another file created. So, I

Linux 软硬链接区别

本秂侑毒 提交于 2019-12-30 01:53:20
一、“硬链接“和“软链接“ 链接的概念: 链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件 。 链接的作用: 可以将链接简单地理解为 Windows 中常见的快捷方式(或是 OSX 中的替身),Linux 中常用它来解决一些库版本的问题,通常也会将一些目录层次较深的文件链接到一个更易访问的目录中。在这些用途上,我们通常会使用到 软链接(也称符号链接) 重点是软硬链接的区别: 首先,从使用的角度讲,两者没有任何区别,都与正常的文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行。 那区别在哪呢?在底层的原理上。为了解释清楚,我们首先在自己的一个工作目录下创建一个文件,然后对这个文件进行链接的创建: # touch myfile && echo "This is a test file." > myfile # cat myfile This is a test file. 现在我们创建了一个普通地不能再普通的文件了。然后我们对它创建一个硬链接,并查看一下当前目录: # ln myfile hard # ls -li 5445 -rw-r--r--. 2 root root 21 1月 8 06:40 hard 5445 -rw-r--r--. 2 root root 21 1月 8 06:40 myfile 在 ls

“软链接”和“硬链接”的区别

孤人 提交于 2019-12-30 01:00:59
什么是链接? 链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件。 它是用来干什么的? 你可以将链接简单地理解为 Windows 中常见的 快捷方式 (或是 OS X 中的替身),Linux 中常用它来解决一些库版本的问题,通常也会将 一些目录层次较深的文件 链接到一个 更易访问的目录 中。在这些用途上,我们通常会使用到 软链接 (也称 符号链接 )。 软链接和硬链接的区别是? 下面我们进入正题,来探讨一下软硬两种链接到底有什么区别? 首先,从使用的角度讲,两者没有任何区别,都与正常的文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行。 那区别在哪呢?在底层的原理上。 为了解释清楚,我们首先在自己的一个工作目录下创建一个文件,然后对这个文件进行链接的创建: $ touch myfile && echo "This is a plain text file." > myfile $ cat myfile This is a plain text file. 现在我们创建了一个普通地不能再普通的文件了。然后我们对它创建一个硬链接,并查看一下当前目录: $ ln myfile hard $ ls -li 25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 hard 25869085 -rw

Linux之软链接与硬链接

青春壹個敷衍的年華 提交于 2019-12-30 01:00:26
什么是链接? 链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件。 它是用来干什么的? 你可以将链接简单地理解为 Windows 中常见的快捷方式(或是 OS X 中的替身),Linux 中常用它来解决一些库版本的问题,通常也会将一些目录层次较深的文件链接到一个更易访问的目录中。在这些用途上,我们通常会使用到 软链接 (也称 符号链接 )。 软链接和硬链接的区别是? 下面我们进入正题,来探讨一下软硬两种链接到底有什么区别? 首先,从使用的角度讲,两者没有任何区别,都与正常的文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行。 那区别在哪呢?在底层的原理上。 为了解释清楚,我们首先在自己的一个工作目录下创建一个文件,然后对这个文件进行链接的创建: $ touch myfile && echo "This is a plain text file." > myfile $ cat myfile This is a plain text file. 现在我们创建了一个普通地不能再普通的文件了。然后我们对它创建一个硬链接,并查看一下当前目录: $ ln myfile hard $ ls -li 25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 hard 25869085 -rw-r--r--

硬链接和符号链接的区别

不想你离开。 提交于 2019-12-30 00:57:55
序 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号 。 文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。 链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。 Linux中的两种链接 Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。 硬链接 硬链接是文件的别名 。从技术上讲,他们公用一个inode(inode中包含了一个文件的所有必要的信息,说inode就是文件也是没有问题的)。 由于linux下的文件是通过索引节点(Inode)来识别文件,硬链接也可以认为是一个指向文件索引节点的指针,系统并不为它重新分配inode, 每添加一个一个硬链接,文件的链接数就加1, 删除一个则链接数减1。 大多数系统不允许创建一个目录的硬链接 。在允许创建目录硬链接的系统上,只有超级用户才能才能这样做。 不能创建跨文件系统(分区)的硬链接 (这些限制在POSIX中都不是强制性的)。 硬链接的创建语法 : ln 存在的文件 新的文件 [root@localhost link]# touch SingleFile ;新建一个空文件 [root@localhost link]# ls -l

磁盘

和自甴很熟 提交于 2019-12-28 07:32:08
磁盘IOPS IOPS即每秒的输入输出量(或读写次数) 数据吞吐量,指单位时间内可以成功传输的数据数量 磁盘的IOPS,就是一秒内进行多少次IO读写 磁盘的吞吐量,磁盘写入加速读出数据的大小 IOPS和吞吐量的关系 每秒 I/O 吞吐量= IOPS* 平均 I/O SIZE 确认磁盘 I/O 存在性能问题 对于随机负载,当遇到余下情况时,我们那通常认为存在 I/O 性能问题: 1. 平均读时间大于 15ms 2. 在具有写 cache 的条件下,平均写时间大于 2.5ms 对于顺序负载,当遇到余下情况时,我们那通常认为存在 I/O 性能问题: 1. 在一个磁盘上有两个连续的 I/O 流 2. 吞吐量不足(即远远小于磁盘 I/O 带宽) 对于一块磁盘来讲,随着 IOPS 数量的增加,I/O service 也会增加,并且会有一个饱和点,即 IOPS 达到某个点以后,IOPS 再增加将会引起 I/O service time 的显著增加。 图 3. 磁盘 IOPS 与 IO service time 关系图 从经验上讲,我们在测试工作中,我们主要关注 IOPS 和吞吐量以及磁盘的 busy% 这三个数值。如果 IOPS 和吞吐量均很低,磁盘的 busy% 也很低,我们会认为磁盘压力过小,造成吞吐量和 IOPS 过低;只有在 IOPS 和吞吐量均很低,磁盘的 busy% 很高(接近

linux硬链接与软链接

喜欢而已 提交于 2019-12-26 18:40:12
supper block:记录文件系统的整体信息,包括inode/block大小、总量、使用量、剩余量,文件系统格式与相关信息等 inode:记录文件的属性和所在的block号码(不记录文件名),一个文件只占用一个inode,大小固定为128bytes,12个直接、1个间接、1个双间接、一个三间接记录区 block:记录文件的实际内容,一个block最多存放一个文件,一个文件可能占用多个block 文件系统一开始就将inode与block规划好了,除非重新格式化或者利用resize2fs等命令更改文件系统的大小,否则inode与block固定后就不再变动 通过dumpe2fs 分区 可查看该文件系统的上述信息 软链接:ln -s 原文件 目标文件(如果不加参数s,默认为硬链接) 1.两者inode号不同,目标文件的inode号的指针指向原文件的inode号 2.相当于快捷方式,可以跨分区 3.删除链接文件对原文件无影响,删除原文件链接文件失效 4.修改原文件或链接文件,文件内容都改变 硬链接:ln 原文件 目标文件 1.两者inode号相同 2.只可对文件创建,不能对目录创建,不能跨分区 2.删除链接文件对原文件无影响,删除原文件对链接文件无影响 3.修改原文件或链接文件,文件内容都改变 [root@oldboy 1]# touch a.txt [root@oldboy 1]#

linux驱动开发从入门到rm -rf/】1 字符设备驱动20191225

家住魔仙堡 提交于 2019-12-26 05:55:46
老规矩,有人写的更好,不复制 https://blog.csdn.net/ARAFATms/article/details/79397800 照办。但是注意:安装驱动、运行测试程序 都要sudo 用管理员权限运行,不然肯定出错 我的测试:ubuntu18.04lts #include "linux/kernel.h" #include "linux/module.h" #include "linux/fs.h" #include "linux/init.h" #include "linux/types.h" #include "linux/errno.h" #include "linux/uaccess.h" #include "linux/kdev_t.h" #define MAX_SIZE 1024 MODULE_AUTHOR("Downey"); //作者信息 MODULE_DESCRIPTION("Linux kernel driver - hello_world PLUS!"); //模块的描述,可以使用modinfo xxx.ko指令来查看 MODULE_VERSION("0.1"); //模块版本号 //指定license版本 MODULE_LICENSE("GPL"); //设置加载时可传入的参数 int my_open(struct inode *inode,

To understand the same inode numbers for different objects in Ubuntu

微笑、不失礼 提交于 2019-12-24 05:48:33
问题 Why does /cdrom has the same inode -number than /sys/devices/platform/power in Ubuntu? The following have the same inode number in my Ubuntu ./media/BACKUP_1/MISC ./cdrom ./sys/devices/platform/power I get them by running the following at root find . -inum 12 2> /dev/null Reply to Leffler's answer I run stat cdrom I get File: `cdrom' -> `media/cdrom' Size: 11 Blocks: 0 IO Block: 4096 symbolic link Device: 801h/2049d Inode: 12 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)

How to find the code segment of a Linux driver in tmpfs? (in real-time)

╄→尐↘猪︶ㄣ 提交于 2019-12-24 02:30:33
问题 I have a character driver called drv1 , and a user application uses ioctl to communicate with it, which will transmit the parameter struct file *filp . Now I want to find out the address of the code segment of drv1 , but I came across some problems. At first, I guess struct file *filp might be useful so I looked at the definition in source code, and find a pointer struct inode *f_inode; /* cached value */ . Then I roughly searched the definition of struct inode (I'm not sure whether it is