Linux文件系统由三部分组成:文件名,inode,block(真正存数据)
inode:文件数据都存储在块中,那么很显然,我们必须找到一个地方存储文件的元信息,比如文件的创建者,文件的创建日期,文件的大小等等。这种存储文件元信息的区域叫做inode,中文译名为 索引节点
inode的内容:
inode包含文件的元信息,具体来说有以下内容:
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置
例如:使用stat命令查看文件inode信息
[wang@localhost ~]$ stat /etc/passwd
File: `/etc/passwd'
Size: 1667 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 925374 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-12-20 20:47:17.929700869 -0500
Modify: 2016-12-20 20:47:11.339701023 -0500
Change: 2016-12-20 20:47:11.340701019 -0500
[wang@localhost ~]$ ll /etc/passwd
-rw-r--r--. 1 root root 1667 Dec 20 20:47 /etc/passwd
inode的大小:
inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。
例如:
查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令
[wang@localhost ~]$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/VolGroup-lv_root 1152816 99078 1053738 9% /
tmpfs 125551 7 125544 1% /dev/shm
/dev/sda1 128016 38 127978 1% /boot
/dev/sr0 0 0 0 - /media/CDROM
每个文件最少有一个inode号,操作系统用inode号码来识别不同的文件。
[wang@localhost ~]$ ls -i /etc/passwd
925374 /etc/passwd
[wang@localhost ~]$ ls -i /boot/grub/grub.conf
65031 /boot/grub/grub.conf
查看目录下:
[wang@localhost ~]$ ls -i /boot/
14 config-2.6.32-431.el6.x86_64 11 lost+found
65027 efi 15 symvers-2.6.32-431.el6.x86_64.gz
65025 grub 13 System.map-2.6.32-431.el6.x86_64
17 initramfs-2.6.32-431.el6.x86_64.img 16 vmlinuz-2.6.32-431.el6.x86_64
[wang@localhost ~]$ ll -i /etc/passwd
925374 -rw-r--r--. 1 root root 1667 Dec 20 20:47 /etc/passwd
[wang@localhost ~]$ ls -i /etc/passwd
925374 /etc/passwd
查看目录的inode号:
[wang@localhost ~]$ ls -di /etc/
915715 /etc/
拓展:Linux中的ctime,mtime,atime的区别
ctime:改变时间
mtime:修改时间
改变和修改之间的区别在于改文件的属性还是更改他的内容。chmod a-w myfile,那么这是一个改变
echo foo>>myfile 那么这是一个修改
改变是文件的索引节点发生了改变,修改是文本本身的内容发生了变化
atime:访问时间
访问时间是文件最后一次被读取的时间,因此阅读一个文件会更新它的访问时间,但是他的改变时间和修改时间并没有改变
ls -lc filename 列出文件的ctime
ls -lu filename 列出文件的atime
ls -l filename 列出文件的mtime
ln命令可以创建硬链接:
ln 源文件 目标文件
文件名 -- inode -- block
例如:
[wang@localhost ~]$ touch a.txt
[wang@localhost ~]$ ll a.txt
-rw-rw-r--. 1 wang wang 82 Dec 21 04:54 a.txt
[wang@localhost ~]$ ln a.txt a2.txt
[wang@localhost ~]$ ll a.txt
-rw-rw-r--. 2 wang wang 82 Dec 21 04:54 a.txt
[wang@localhost ~]$ ll a2.txt
-rw-rw-r--. 2 wang wang 82 Dec 21 04:54 a2.txt
[wang@localhost ~]$ ls -i a.txt a2.txt
142721 a2.txt 142721 a.txt
测试:
[wang@localhost ~]$ rm -rf a.txt
[wang@localhost ~]$ cat a2.txt
sssssssssssssssssssssssssss
aaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbb
[wang@localhost ~]$ ll a2.txt
-rw-rw-r--. 1 wang wang 82 Dec 21 04:54 a2.txt
总结:硬链接特点,创建时,不能跨分区,不能给文件夹
软件链接:相当于window中的快捷方式
ln -s 源文件或目录 软件链名字
[wang@localhost ~]$ ln -s a2.txt as.txt
[wang@localhost ~]$ ls
a2.txt b.txt Desktop Downloads Music Pictures Public text.sh
as.txt c.txt Documents hello.java mydir pub Templates Videos
[wang@localhost ~]$ ll as.txt
lrwxrwxrwx. 1 wang wang 6 Dec 21 08:28 as.txt -> a2.txt
例如:
[root@localhost wang]# ll /etc/grub.conf
lrwxrwxrwx. 1 root root 22 Nov 21 17:41 /etc/grub.conf -> ../boot/grub/grub.conf
例如:
[root@localhost wang]# ln -s /boot/grub/grub.conf aa.txt
[root@localhost wang]# ln -s /boot/grub ccc
软链接数是不会变的。
[root@localhost wang]# ll /boot/grub/grub.conf
-rw-------. 1 root root 819 Nov 21 17:41 /boot/grub/grub.conf
查看目录的链接数:
[root@localhost wang]# ls test/
test2
[root@localhost wang]# ll -a test/
total 12
drwxr-xr-x. 3 root root 4096 Dec 21 09:05 .
drwx------. 32 wang wang 4096 Dec 21 09:04 ..
drwxr-xr-x. 2 root root 4096 Dec 21 09:05 test2
[root@localhost wang]# cd test/
[root@localhost test]# ls -id .
142707 .
[root@localhost test]#
[root@localhost test]#
[root@localhost test]# ls -id test2/..
142707 test2/..
实例:
web服务器中小文件很多,导致硬盘有空间,单无法创建文件
inode数被用光了
[root@localhost test]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/VolGroup-lv_root 1152816 99083 1053733 9% /
tmpfs 125551 7 125544 1% /dev/shm
/dev/sda1 128016 39 127977 1% /boot
/dev/sr0 0 0 0 - /media/CDROM
block设置大:效率高,利用率低
block设置小:效率低,利用率高
一般系统默认就行
ext4文件系统和ext3文件系统的强的方面:
ext4和ext3兼容
更大的文件系统和更大的文件
无限数量的子目录
无日志 模式