Linux支持的文件系统
VFS
我们知道文件系统的种类有很多。
除了Linux标准的文件系统Ext2/Ext3/Ext4外,还有很多种文件系统 。linux通过叫做VFS的中间层对这些文件系统提供了完美的支持。
Virtualenv File System虚拟文件系统
虚拟文件系统(VFS)是一个处于用户进程和各类文件系统之间的抽象接口层,VFS提供访问 文件系统对象的通用对象模型(例如,i-node、文件对象、页缓存、)和方法,它对用户进程 隐藏了各种文件系统的差别。
正是因为有VFS,所以用户进程不用关心使用的是那种文件系 统,也更不需要知道各个文件系统应该使用哪个系统调用。
案例
$ cp /floppy/TEST /tmp/test
其中/floppy是MS-DOS磁盘的一个安装点
而/tmp是一个标准的第二扩展文件系统(second Extended Filesystom, Ext2)的目录。
如图VFS是用户的应用程序与文件系统实现之间的抽象层。
cp程序并不需要知道/floppy/TEST 和 /tmp/test是什么文件系统类型。
相反,cp程序直接与VFS交互,这是通过Unix程序设计人员都熟悉的普通系统调用来进行的。
下图显示了VFS的概况。
磁盘分区完毕后,还得进行格式化(format)方可使用,好比家里的房子,打好隔断后,还得装修完毕才能使用。
磁盘格式化是因为不同的操作系统
设置的文件属性、权限各不相同,还得将分区格式化后,称为操作系统能够识别、兼容的文件系统(filesystem)
不同的操作系统、使用的文件系统各不相同,如:
windows 98
- FAT
- FAT16
windows 2000
- NTFS
Linux自带文件系统
- Ext2
- ext3 、centos 5
- ext4、 centos 6
- xfs、 centos 7
网络文件系统
- Smb,Server Message Block、服务消息块,文件共享协议
- NFS,Network File System(NFS),网络文件系统,访问网络中其他主机的文件就像是自己计算机一样
集群文件系统
- Gfs, google File System,Google公司为了存储海量搜索数据而设计的专用文件系统。
- ocfs,Oracle Cluster File System是由Oracle开发并在GNU通用公共许可证下发布的共享磁盘文件系统。主要是为了适应使用集群计算的Oracle数据库管理系统。
分布式文件系统
- Ceph 是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。
交换文件系统
- swap
日志文件系统
journaling fs就是我们常说的: 日志型文件系统。
比较典型的有: ext3, ext4, xfs等, 而ext2是不支持 日志的文件系统,该文件系统基本上已经不再使用;
简单介绍其实现原理: 在磁盘上有一块区域专门用来保存日志,叫做journaling 区域,在更新磁盘上特定的block之前,首先把要做的变更 记录到 journaling 区域,然后才去更新相应的block。
这样在系统崩溃的时候,可以通过journaling区域的信息,进行replay, 从而实现 恢复;
如果是非日志文件系统,进行读写操作,内核直接修改文件元数据,如果在写入过程异常崩溃,文件一致性就会出错,且修复过程很漫长,因此必须使用日志类型文件系统。
文件系统创建工具
- 创建文件系统
mkfs命令
mkfs把分区格式化为某种文件系统
- 修复文件系统
fsck
检查并修复Linux文件系统
- 查看文件系统属性
dumpe2fs命令用于打印文件系统的超级块和块组信息,用于ext2 ext3 ext4文件
然而centos7使用的xfs文件系统,更换xfs_info命令查看分区信息
- 调整文件系统特性
tune2fs
调整/查看ext2/ext3文件系统的文件系统参数,Windows下面如果出现意外断电死机情况,下次开机一般都会出现系统自检。
Linux系统下面也有文件系统自检,而且是可以通过tune2fs命令,自行定义自检周期及方式。
-c max-mount-counts 设置强制自检的挂载次数 -1表示关闭
# tune2fs -c 30 /dev/hda1 #设置强制检查前文件系统可以挂载的次数
# tune2fs -c -l /dev/hda1 #关闭强制检查挂载次数限制。
- 列出所有设备的关系、文件系统
lsblk 列出所有的块设备,而且还能显示他们之间的依赖关系
[root@local-pyyu ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 2cf87472-f9c2-43cd-aa0e-1d8827ac307f /boot
└─sda2 LVM2_member VWePn4-g5RI-mWqG-6ted-DpQf-JU5Y-2OGJwi
├─centos-root xfs d417666c-9823-47db-b69d-f0c9318304c4 /
└─centos-swap swap ce7999ab-4ffc-455a-9849-af8aa3ed2975 [SWAP]
sdb
├─sdb1 xfs 5a912c96-90ec-4769-900c-53900a153ed4
├─sdb2
└─sdb5 ext4 628b3a87-267e-4100-9450-a8a9b4978ec7
sr0
格式化文件系统
给刚打好隔断的房间,装修------给刚分区号的磁盘格式化文件系统
#格式化为xfs文件系统
[root@local-pyyu ~]# mkfs.xfs -f /dev/sdb5
meta-data=/dev/sdb5 isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@local-pyyu ~]# lsblk -f -a
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 2cf87472-f9c2-43cd-aa0e-1d8827ac307f /boot
└─sda2 LVM2_member VWePn4-g5RI-mWqG-6ted-DpQf-JU5Y-2OGJwi
├─centos-root xfs d417666c-9823-47db-b69d-f0c9318304c4 /
└─centos-swap swap ce7999ab-4ffc-455a-9849-af8aa3ed2975 [SWAP]
sdb
├─sdb1 xfs 5a912c96-90ec-4769-900c-53900a153ed4
├─sdb2
└─sdb5 xfs 5db9857c-4ea6-4819-a265-89b2eb41396d
sr0
格式化为ext4
[root@local-pyyu ~]# mkfs.ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
关闭文件系统自检
[root@local-pyyu ~]# tune2fs -c -1 /dev/sdb5
tune2fs 1.42.9 (28-Dec-2013)
Setting maximal mount count to -1
如有需要将GPT改为MBR,还得用parted命令,fdisk命令无用
修改命令如下
parted /dev/sdb
(parted)mktable #输入格式化命令
New disk label type? msdos #这里是更换为MBR格式
Warning: The existing disk label on /dev/vdb will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No?Yes #确认格式化
fsck
fsck命令被用于检查并且试图修复文件系统中的错误。当文件系统发生错误四化,可用fsck指令尝试加以修复。
Linux在开机的时候,系统会自动调用fsck命令进行需要自检的磁盘检查
fsck命令
-a:自动修复文件系统,不询问任何问题;
-A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统;
-N:不执行指令,仅列出实际执行会进行的动作;
-P:当搭配"-A"参数使用时,则会同时检查所有的文件系统;
-r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式;
-R:当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查;
-s:依序执行检查作业,而非同时执行;
-t<文件系统类型>:指定要检查的文件系统类型;
-T:执行fsck指令时,不显示标题信息;
-V:显示指令执行过程。
系统开机过程会读取/etc/fstab文件,最后一列为1或2,磁盘在开机时候就会调用fsck自检
cat /etc/fstab
# /etc/fstab
# Created by anaconda on Fri Aug 18 03:51:14 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=59d9c*********933****76b5 / ext4 defaults 1 1
最后一列为0表示不对磁盘检查,1是检查
[root@www ~]# fsck -t ext3 /dev/sda1 #检查ext3 类型的分区/dev/sad1
总结
xfs文件系统 用xfs_info显示信息
用xfs_admin修改信息
ext3 ext4 用dumpe2fs显示信息
用tune2fs修改信息
Linux文件系统挂载
挂载
Linux 下设备不挂载不能使用,不挂载的设备相当于没门没窗户的监狱(进不去出不来),挂载相当于给设备创造了一个入口(挂载点,一般为目录)
例如Linux访问U盘数据
挂载通常是将一个存储设备
挂接到一个已经存在的目录
上,访问这个目录
就是访问该存储设备的内容。
对于Linux系统来说,一切皆文件,所有文件都放在以根目录
为起点的树形目录结构中,任何硬件设备也都是文件形式
如图所示,是U盘存储设备和Linux系统自己的文件系统结构,此时Linux想要使用U盘的硬件设备,必须将Linux本身的目录
和硬件设备的文件目录合二为一,此过程就称之为挂载
。
挂载操作会隐藏原本Linux目录中的文件,因此选择Linux本身的目录,最好是新建空目录用于挂载
挂载之后,这个目录被称为挂载点
mount命令
mount命令可以将指定的文件系统
挂载到指定目录(挂载点)
,在Linux系统下必须先挂载后才能访问设备资料
- 新的硬盘插到机器上,分区、格式化文件系统后,此时可以可以存放数据了
- 此时的硬盘插到linux上,也只是读取出了一个封闭的盒子,无法读写
- 和linux的文件夹进行
关联、挂载
后,即可通过访问被挂载的文件夹
,访问到硬盘的数据
参数 | 解释 |
---|---|
-l | 显示系统以挂载的设备信息 |
-a | 加载文件/etc/fstab中设置的所有设备 |
-t | t<文件系统类型> 指定设备的文件系统类型。如果不设置,mount自行选择挂载的文件类型 minix Linux最早使用的文件系统。 ext2 Linux目前的常用文件系统。 msdos MS-DOS 的 FAT。 vfat Win85/98 的 VFAT。 nfs 网络文件系统。 iso9660 CD-ROM光盘的标准文件系统。 ntfs Windows NT的文件系统。 hpfs OS/2文件系统。Windows NT 3.51之前版本的文件系统。 auto 自动检测文件系统。 |
-o | 添加挂载选项,是安全、性能优化重要参数 |
-r | 只读,等于-o ro |
-w | 读写,等-o rw |
对于mount的-o参数如下
参数 | 含义 |
---|---|
async | 以异步方式处理文件系统I/O操作,数据不会同步写入磁盘,而是写到缓冲区,提高系统性能,但损失数据安全性 |
sync | 所有I/O操作同步处理,数据同步写入磁盘,性能较弱,数据安全性高 |
atime/noatime | 文件被访问时是否修改时间戳,不更改时间,可以提高磁盘I/O速度 |
auto/noauto | 通过-a参数可以自动被挂载/不自动挂载 |
defaults | 默认值包括rw、suid、dev、exec、auto、nouser、async,/etc/fstab大多默认值 |
exec/noexec | 是否允许执行二进制程序,取消提供安全性 |
suid/nosuid | 是否允许suid(特殊权限)生效 |
user/nouser | 是否允许普通用户挂载 |
remount | 重新挂载 |
ro | 只读 |
rw | 读写 |
案例
xfs文件系统,mount多出很多新选项
#显示已经挂载情况
[root@local-pyyu ~]# mount -l
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
#分区dev/sda1挂载在 /boot文件夹 文件系统类型是 xfs,参数是(rw,relatime,attr2,inode64,noquota)
rw 读写
relatime mount 选项 relatime(relative atime 的意思)。relatime 的意思是访问文件时,仅在 atime 早于文件的更改时间时对 atime 进行更新。
attr2 在磁盘上存储内联扩展属性,提升性能
inode64 允许在文件系统的任意位置创建 inode
noquota 强制关闭所有文件系统限额功能
mount挂载案例
注意,如果分区未格式化,是无法写入数据的!!!
[root@local-pyyu ~]# mount /dev/sdb5 /mnt
mount: /dev/sdb5 写保护,将以只读方式挂载
mount: 未知的文件系统类型“(null)”
如何解决,格式化文件系统即可
[root@local-pyyu ~]# lsblk -f #看一下文件系统类型
[root@local-pyyu ~]# mkfs.xfs /dev/sdb5 #格式化分区
[root@local-pyyu ~]# mount /dev/sdb5 /mnt #此时正常挂载
默认挂载结果
/dev/sdb5 on /mnt type xfs (rw,relatime,attr2,inode64,noquota) #centos7默认的挂载选项
挂载使用分区,挂载过程图
只读挂载
[root@local-pyyu ~]# mount -o ro /dev/sdb5 /mnt
[root@local-pyyu ~]# mount
[root@local-pyyu ~]# ls /mnt
超哥.txt
[root@local-pyyu ~]# touch /mnt/超哥强啊.txt
touch: 无法创建"/mnt/超哥强啊.txt": 只读文件系统
禁止可执行文件
[root@local-pyyu ~]# mount -o noexec /dev/sdb5 /mnt
[root@local-pyyu ~]# cd /mnt
[root@local-pyyu mnt]# echo 'echo 爱的供养' > love.sh
[root@local-pyyu mnt]# chmod 777 love.sh
[root@local-pyyu mnt]# ll
总用量 4
-rwxrwxrwx 1 root root 18 12月 3 16:33 love.sh
-rw-r--r-- 1 root root 0 12月 3 16:02 超哥.txt
[root@local-pyyu mnt]# ./love.sh
-bash: ./love.sh: 权限不够
umount取消挂载
umount可卸除目前挂在Linux目录中的文件系统。
语法
-f 强制卸载
-l 懒惰的卸载。从文件系统层次分离文件系统,在不繁忙的情况下清理所有对文件系统的引用,常和-f参数共用
取消挂载案例
umount 设备|文件夹
umount /dev/sdb5
umount /media
取消挂载出错,设备繁忙
- 注意挂载点被使用中无法卸载,如被进程占用
[root@local-pyyu mnt]# pwd
/mnt
[root@local-pyyu mnt]# umount /mnt
umount: /mnt:目标忙。
解决方案:
- 查看挂载点被哪个进程占用
lsof /mnt
[root@local-pyyu ~]# fuser -v /mnt
用户 进程号 权限 命令
/mnt: root kernel mount /mnt
root 5239 ..c.. bash
- 杀死正在使用挂载点的进程
[root@local-pyyu ~]# fuser -km /mnt
查看系统以挂载的设备
- mount -l
- cat /etc/mtab
- cat /proc/mounts
交换分区
swap分区是一块特殊的硬盘空间,当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换内存中,从而使当前的程序腾出更多的内存量。
使用swap交换分区作用是,通过操作系统的调取,程序可以用到的内存远超过实际物理内存。磁盘价格要比内存便宜的多,因此使用swap交换空间是很实惠的,但是由于频繁的读写硬盘,这种方式会降低系统运行效率。
swap分区大小,根据物理内存大小和硬盘容量计算
swap交换空间只是用来应急的,容量分配要适量
- 内存小于1G,必须用swap提升内存使用量,否则运行不了几个应用
- 内存使用过多的应用,如视频制作等,使用swap防止内存不足,导致的软件崩溃
- 电脑休眠、内存数据断电丢失,因此将内存数据暂时存入swap交换空间,电脑休眠回复后,数据从swap读入内存,继续工作
centos建议分配swap
- 内存小于2G,swap分配等同内存大小空间
- 内存大于2G,分配2G交换空间
创建swap分区
第一步:先分区
第二步:格式化(swap命令不同,是mkswap)
第三步:使用swap分区
分区
格式化文件系统
mkswap可将磁盘分区或文件设为Linux的交换区。
[root@local-pyyu ~]# mkswap /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old xfs signature.
正在设置交换空间版本 1,大小 = 511996 KiB
无标签,UUID=64fb54dd-9383-44f9-a77f-c899898a9d68
开启swap交换分区
[root@local-pyyu ~]# swapon /dev/sdc1
[root@local-pyyu ~]# free -m
total used free shared buff/cache available
Mem: 3862 290 1729 11 1842 3170
Swap: 2547 0 2547
free命令
free 命令主要是用来查看内存和 swap 分区的使用情况的,其中:
- total:是指总数;
- used:是指已经使用的;
- free:是指空闲的;
- shared:是指共享的;
- buffers:是指缓冲内存数;
- cached:是指缓存内存数,单位是KB;
[root@local-pyyu ~]# free -m
total used free shared buff/cache available
Mem: 3862 140 3552 11 168 3498
Swap: 2047 0 2047
buff和cache
- buffers,缓冲,buffers是给写入数据加速的
- Cached,缓存,Cached是给读取数据时加速的
cached是指把读取出来的数据保存在内存中,再次读取,不用读取硬盘而直接从内存中读取,加速数据读取过程。
buffers是指写入数据时,把分散的写入操作保存到内存,达到一定程度集中写入硬盘,减少磁盘碎片,以及反复的寻道时间,加速数据写入。
可以理解为果园运输草莓
1.摘草莓的小姑娘,使用编织篮采摘
2.摘完一筐一筐草莓后,一起倒进运输车
而非,摘一个扔进车里一个
好比BT下载资料,电脑需要长时间24h的挂机运转,但是BT下载是碎片化的,如果直接写入磁盘也是零散的数据,由于机械磁盘的特性,写入大量零散的数据,会造成磁盘高负荷的机械运动,增加寻址时间,造成硬盘过早老化而损坏。
因此引入buffer,当数据攒到一定程度,例如512MB的时候,再一次性写入磁盘,这种化零为整的写入方式,大大降低了磁盘的负荷
总结buffer和cache
- 都是基于内存的中间层
- cache解决时间问题、提高读取速度
- buffer解决空间问题、给数据一个暂存空间
- cache利用内存提供的高速读写特性
- buffer利用内存提供的存储容量
我的内存被吃了
电脑无故提示内存不足,监控报警,新程序无法运行,都是物理内存不足,可能要释放cache缓存
释放缓存区的内存
1)清理pagecache(页面缓存)
[root@backup ~]# echo 1 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=1
2)清理dentries(目录缓存)和inodes
[root@backup ~]# echo 2 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=2
3)清理pagecache、dentries和inodes
[root@backup ~]# echo 3 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=3
上面三种方式都是临时释放缓存的方法,要想永久释放缓存,需要在/etc/sysctl.conf文件中配置:vm.drop_caches=1/2/3,然后sysctl -p生效即可!
另外,可以使用sync命令来清理文件系统缓存,还会清理僵尸(zombie)对象和它们占用的内存
sync:将内存缓冲区内的数据写入磁盘。
[root@backup ~]# sync
启用swap分区
使用swapon命令
原本的swap大小
[root@local-pyyu ~]# free -m
total used free shared buff/cache available
Mem: 3862 140 3552 11 168 3498
Swap: 2047 0 2047
激活swap分区
[root@local-pyyu ~]# swapon /dev/sdb1
查看swap空间
[root@local-pyyu ~]# free -m
total used free shared buff/cache available
Mem: 3862 141 3552 11 168 3497
Swap: 2547 0 2547
关闭swap空间
[root@local-pyyu ~]# swapoff /dev/sdb1
开机自动挂载
/etc/fstab是用来存放文件系统的静态信息的文件,当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。
# <fie sysytem><mount point><type><options><dump><pass>
- File system
指定设备名称、或是远程的文件系统NFS
mount 192.168.178.100:/home/nfs /mnt/nfs -o nolock #远程挂载不加锁
也可以挂载设备/dev/sda1 或是光盘 /dev/cdrom 或是u盘等
也可以是硬盘的卷标
也可以是用硬盘UUID
- mount point挂载点
自己创建一个目录,或是已存在的目录,然后挂载文件系统到这个目录,即可访问目录->访问文件系统
注意swap分区没有挂载点,填写none
- type类型
Linux能够支持的文件系统
ext3、 ext2、ext、swap
nfs、hpfs、ncpfs、ntfs、affs
umsdos、proc、reiserfs、squashfs、ufs。
adfs、befs、cifs、iso9660
kafs、minix、msdos、vfat
- options
可以通过man mount查看完整的参数
defaults,它代表包含了选项rw,suid,dev,exec,auto,nouser和 async。
- dump
表示将整个内容备份,一般为0不备份
1,每天备份
2,每隔一天备份
- fsck
一般为0
0 不自检
1,首要自检,一般只有根分区挂载点为1
2,次级自检
自动挂载在/etc/fstab所有定义的设备
cat /etc/fstab
/dev/sdb5 /chaoge xfs defaults 0 0
mount -a
报告文件系统磁盘空间的使用情况
df命令命令列出的是文件系统的可用空间
-i 用inode代替块
-l 只显示本地文件系统
-h 以kb mb gb显示单位
-T 显示每个文件系统的类型
[root@local-pyyu ~]# df -T
文件系统 类型 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 17811456 2601828 15209628 15% /
devtmpfs devtmpfs 1965092 0 1965092 0% /dev
tmpfs tmpfs 1977356 0 1977356 0% /dev/shm
tmpfs tmpfs 1977356 11848 1965508 1% /run
tmpfs tmpfs 1977356 0 1977356 0% /sys/fs/cgroup
/dev/sda1 xfs 1038336 132684 905652 13% /boot
tmpfs tmpfs 395472 0 395472 0% /run/user/0
[root@local-pyyu ~]# df -T -h
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 17G 2.5G 15G 15% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 130M 885M 13% /boot
tmpfs tmpfs 387M 0 387M 0% /run/user/0
[root@local-pyyu ~]# df -i -h
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/mapper/centos-root 8.5M 82K 8.5M 1% /
devtmpfs 480K 404 480K 1% /dev
tmpfs 483K 1 483K 1% /dev/shm
tmpfs 483K 1.3K 482K 1% /run
tmpfs 483K 16 483K 1% /sys/fs/cgroup
/dev/sda1 512K 325 512K 1% /boot
tmpfs 483K 1 483K 1% /run/user/0
统计文件、目录磁盘使用情况
linux操作系统
文件存取的最小单位是块,且单位是4kb,也就是8个扇区。
du(Disk Usage) - 报告磁盘空间使用情况
-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-k或--kilobytes 以KB(1024bytes)为单位输出。
-m或--megabytes 以MB为单位输出。
-s或--summarize 仅显示总计,只列出最后加总的值。
-h或--human-readable 以K,M,G为单位,提高信息的可读性。
-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
--exclude=<目录或文件> 略过指定的目录或文件。
-D或--dereference-args 显示指定符号链接的源文件大小。
-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
-l或--count-links 重复计算硬件链接的文件。
显示当前目录下所有目录,和文件
大小统计
[root@chaogelinux testdu]# du -h
4.0K ./chaoge_nginx/uwsgi_temp
4.0K ./chaoge_nginx/proxy_temp
4.0K ./chaoge_nginx/client_body_temp
12K ./chaoge_nginx/html
64K ./chaoge_nginx/conf
884K ./chaoge_nginx/logs
4.0K ./chaoge_nginx/fastcgi_temp
3.5M ./chaoge_nginx/sbin
4.0K ./chaoge_nginx/scgi_temp
4.5M ./chaoge_nginx
4.6M .
显示所有文件的统计大小
du -ah
单独统计文件大小
[root@chaogelinux testdu]# du mysql-5.5.15-1-mdv2011.0.x86_64.rpm -h
88K mysql-5.5.15-1-mdv2011.0.x86_64.rpm
统计/opt目录下,第一层文件夹所有的文件,文件夹大小
[root@chaogelinux testdu]# du -ah --max-depth=1 /opt
统计/opt下所有文件文件夹大小,且从大到小排序
[root@chaogelinux testdu]# du -sh /opt/* | sort -rn
统计当前目录下所有文件,文件夹大小,除了*.conf
文件
du -ah --exclude='*.conf'
仅仅统计第一层文件夹的大小
[root@chaogelinux testdu]# du -h --max-depth=1 /opt