查看系统支持哪些文件系统,可以用 ls -l /lib/modules/$(uname -r)/kernel/fs 来查看。查看已经加载到内存中的文件系统可以用 cat /proc/filesystems 。
df 列出系统整个磁盘的使用量。
-h 以直观形式显示大小,如k,M,G来显示。默认是以k来显示的。
-H 以1000来作为换算,如本来是1G=1024M的,这里1G=1000M。就像我们买的1TB硬盘按生产商的算法来算就是1000G。按电脑的换算就是1000/1024*1000=976GB.
-i 显示Inode数量,而不显示文件系统大小。
-T 显示文件系统类型
-t 指定文件系统类型
-a 列出所有文件系统,包含特殊格式。如/dev/shm等。
[root@www.linuxidc.com ext4]# df -aT
文件系统 类型 1K-块 已用 可用 已用% 挂载点
/dev/mapper/vg_CentOS6-lv_root
ext4 18102140 1688680 15493908 10% /
proc proc 0 0 0 – /proc
sysfs sysfs 0 0 0 – /sys
devpts devpts 0 0 0 – /dev/pts
tmpfs tmpfs 515660 0 515660 0% /dev/shm
/dev/sda1 ext4 495844 28694 441550 7% /boot
none binfmt_misc 0 0 0 – /proc/sys/fs/binfmt_misc
sunrpc rpc_pipefs 0 0 0 – /var/lib/nfs/rpc_pipefs
可以看到/proc,/sys等大小都为0,其实这些挂载目录并不是放在硬盘中的,而是放在内存中,随系统的启动而自动加载到内存中了!所以并不占用硬盘的空间。
如果要查询/home/sun目录的挂载点是什么 可以用df /home/sun来查看。
[root@www.linuxidc.com ext4]# df -TH /home/sun/
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/mapper/vg_centos6-lv_root
ext4 19G 1.8G 16G 10% /
du 列出指定文件或文件夹的大小。
-a 列出所有文件及大小。默认只列出各目录统计大小。而不会一一列出目录下的所有文件及文件的大小。
-h 和df一样。
-s 仅显示要列出的目录总量,而不会将目录下的子目录等再显示出来,这个常用。
-S 仅显示目录所占用量,而不包括目录下面的文件及文件夹大小
-k,-m 以k,m的形式显示文件大小。
仅显示sun整个文件夹大小
[root@www.linuxidc.com home]# du -s sun
28 sun
仅显示sun文件夹本身大小,不包括里面的ss,.gnome2文件夹。并列出子目录大小
[root@www.linuxidc.com home]# du -S sun
4 sun/ss
4 sun/.gnome2
20 sun
[root@www.linuxidc.com home]# du -Ss sun
20 sun
[root@www.linuxidc.com home]# du sun
4 sun/ss
4 sun/.gnome2
28 sun
显示/目录下所有文件夹大小
[root@www.linuxidc.com home]# du -sh /*
7.2M /bin
18M /boot
4.0K /cgroup
200K /dev
22M /etc
硬链接ln 硬链接是通过文件系统的inode来建立的连接。我们知道,一个文件的数据与inode号码存在一一对应关系。而目录则是记录着文件名。通过查找目录而找到文件名,即而找到该文件inode对应的数据区块。在同一个挂载的文件系统中,每个文档都有且只有一个inode号。不同数据inode号码并不会重复。但是,我们可以将不同的文件名指向同一个inode。这样,操作不同的文件名时,其实是操作的同一个数据!删除其中一个文件名时,只是删除了该文件名与inode对应的关系,而并没有删除inode与数据区块。硬链接即将不同的文件名对应到同一个inode中。所以,其实硬链接是不占用inode号,也不占用block容量的。更改硬链接的内容,其实就是更改了数据的内容。
在/home/sun/下新建文件test,并且内容为abcd
[root@www.linuxidc.com sun]# echo abcd >test
查看test,发现其链接数量为1
[root@www.linuxidc.com sun]# ll test
-rw-r–r–. 1 root root 5 9月 29 13:53 test
查看/home目录所属的文件系统总inode使用量为61969.
[root@www.linuxidc.com sun]# df -i /home/
文件系统 Inode 已用(I) 可用(I) 已用(I)%% 挂载点
/dev/mapper/vg_centos6-lv_root
1150560 61969 1088591 6% /
查看其/home目录使用容量大小532k
[root@www.linuxidc.com sun]# du -s /home
532 /home
将test硬链接至/home/sjb/,并更名为lntest
[root@www.linuxidc.com sun]# ln test /home/sjb/lntest
查看链接过去的文件内容,发现与test一样
[root@www.linuxidc.com sun]# cat /home/sjb/lntest
abcd
对比两个文件的Inode及链接数。发现inode一样,且链接数变为了2.
[root@www.linuxidc.com sun]# ll -i /home/sjb/lntest test
130915 -rw-r–r–. 2 root root 5 9月 29 13:53 /home/sjb/lntest
130915 -rw-r–r–. 2 root root 5 9月 29 13:53 test
再次查看/的inode使用数量,发现还是为61969。所以建立的硬链接并未占用inode量
[root@www.linuxidc.com sun]# df -i /home/
文件系统 Inode 已用(I) 可用(I) 已用(I)%% 挂载点
/dev/mapper/vg_centos6-lv_root
1150560 61969 1088591 6% /
再次查看/home使用容量,发现还是532k
[root@www.linuxidc.com sun]# du -s /home
532 /home
删除/home/sun/test文件,再查看/home/sjb/lntest,发现lntest里面的内容仍然还在
[root@www.linuxidc.com sun]# rm -f test ; cat /home/sjb/lntest
abcd
由上可知,建立的新链接并不占用使用量,(只不过文件名那几个字母还是必需占用一点点的)。而紧紧只是一个名称与inode的关联而已。删除其中一个名称,并不影响另一个名称的使用。而编辑任意一个名称里面的内容则会导致两个文件内容都改变。
由于硬链接的这些特性,导致硬链接只能针对文件,不能针对目录,也不能跨分区而链接!
ln -s 软链接,这个是将一个文件名链接到另一个文件名,然后通过另一个文件名的inode对应关系来读取数据。所以如果删了源文件,链接档随即失效。
[root@www.linuxidc.com sun]# echo cdef >test
[root@www.linuxidc.com sun]# df -i /home; du -s /home
文件系统 Inode 已用(I) 可用(I) 已用(I)%% 挂载点
/dev/mapper/vg_CentOS6-lv_root
1150560 61969 1088591 6% /
532 /home
[root@www.linuxidc.com sun]# ln -s /home/sun/test /home/sjb/lnstest
[root@www.linuxidc.com sun]# df -i /home; du -s /home
文件系统 Inode 已用(I) 可用(I) 已用(I)%% 挂载点
/dev/mapper/vg_centos6-lv_root
1150560 61970 1088590 6% /
532 /home
[root@www.linuxidc.com sun]# cat /home/sjb/lnstest
cdef
[root@www.linuxidc.com sun]# rm -f test ; cat /home/sjb/lnstest
cat: /home/sjb/lnstest: 没有那个文件或目录
[root@www.linuxidc.com sun]# ll /home/sjb/
总用量 0
lrwxrwxrwx. 1 root root 14 9月 29 14:22 lnstest -> /home/sun/test
可以看到,软链接中的数据也是不占用空间的,仅仅只是文件名的几个字符占用一丁点空间而已,但是会占用一个inode。而且在删除了源文件后,链接即无法读取。注意:建立软链接链接源文件一定要用绝对路径,如果只用相对路径的话链接的目标文件是无法读取的!