Linux文件系统管理

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程序设计人员都熟悉的普通系统调用来进行的。

image-20191218141224279

下图显示了VFS的概况。

image-20191203100508813


磁盘分区完毕后,还得进行格式化(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, 从而实现 恢复;

image-20191203101421874

如果是非日志文件系统,进行读写操作,内核直接修改文件元数据,如果在写入过程异常崩溃,文件一致性就会出错,且修复过程很漫长,因此必须使用日志类型文件系统。

文件系统创建工具

  • 创建文件系统
mkfs命令
mkfs把分区格式化为某种文件系统

image-20191203102030275

  • 修复文件系统
fsck
检查并修复Linux文件系统

image-20191203102222416

  • 查看文件系统属性
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文件系统挂载

image-20191203142426219

挂载

Linux 下设备不挂载不能使用,不挂载的设备相当于没门没窗户的监狱(进不去出不来),挂载相当于给设备创造了一个入口(挂载点,一般为目录)

例如Linux访问U盘数据

image-20191203144528306

image-20191203144537469

挂载通常是将一个存储设备挂接到一个已经存在的目录上,访问这个目录就是访问该存储设备的内容。

对于Linux系统来说,一切皆文件,所有文件都放在以根目录为起点的树形目录结构中,任何硬件设备也都是文件形式

如图所示,是U盘存储设备和Linux系统自己的文件系统结构,此时Linux想要使用U盘的硬件设备,必须将Linux本身的目录和硬件设备的文件目录合二为一,此过程就称之为挂载

挂载操作会隐藏原本Linux目录中的文件,因此选择Linux本身的目录,最好是新建空目录用于挂载

挂载之后,这个目录被称为挂载点

mount命令

mount命令可以将指定的文件系统挂载到指定目录(挂载点),在Linux系统下必须先挂载后才能访问设备资料

  • 新的硬盘插到机器上,分区、格式化文件系统后,此时可以可以存放数据了
  • 此时的硬盘插到linux上,也只是读取出了一个封闭的盒子,无法读写
  • 和linux的文件夹进行关联、挂载后,即可通过访问被挂载的文件夹,访问到硬盘的数据
参数解释
-l显示系统以挂载的设备信息
-a加载文件/etc/fstab中设置的所有设备
-tt<文件系统类型> 指定设备的文件系统类型。如果不设置,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默认的挂载选项

挂载使用分区,挂载过程图

image-20191203160548239

只读挂载

[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

image-20191203170514084

[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分区

分区

image-20191204093107009

格式化文件系统

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是指把读取出来的数据保存在内存中,再次读取,不用读取硬盘而直接从内存中读取,加速数据读取过程。

image-20191204135114866

buffers是指写入数据时,把分散的写入操作保存到内存,达到一定程度集中写入硬盘,减少磁盘碎片,以及反复的寻道时间,加速数据写入。

image-20191204140118008

可以理解为果园运输草莓
1.摘草莓的小姑娘,使用编织篮采摘
2.摘完一筐一筐草莓后,一起倒进运输车
而非,摘一个扔进车里一个

好比BT下载资料,电脑需要长时间24h的挂机运转,但是BT下载是碎片化的,如果直接写入磁盘也是零散的数据,由于机械磁盘的特性,写入大量零散的数据,会造成磁盘高负荷的机械运动,增加寻址时间,造成硬盘过早老化而损坏。

因此引入buffer,当数据攒到一定程度,例如512MB的时候,再一次性写入磁盘,这种化零为整的写入方式,大大降低了磁盘的负荷

image-20191204140641621

总结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是用来存放文件系统的静态信息的文件,当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。

image-20191204143728701

# <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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值