du的原理 linux_Linux 文件系统管理

7944c3a551410c16ddfca73b936a1a6a.png

1、文件系统介绍

1)、Linux 文件系统特性

  • super block(超级块)
    • 记录整个文件系统的信息。包括 block 与 inode 的总量,已经使用的 block 和 inode 的数量,未使用的 block 和 inode 的数量,block 与 inode 的大小,文件系统的挂载时间,最近一次的写入时间等。
  • data block(数据块,也称作 block)
    • 用来实际保存数据的(柜子的隔板),block 的大小(1kb、2kb、4kb)和数量在格式化后就已经决定,不能改变,除非重新格式化(制作柜子的时候,隔断大小就已经决定,不能更改,除非重新制作柜子)。每个 block 只能保存一个文件数据,要是文件数据小于一个 block 块,那么这个 block 的剩余空间不能被其它文件使用,要是文件数据大于一个 block 块,则占用多个 block 块。Windows 中磁盘碎片整理工具的原理就是把一个文件占用的多个 block 块尽量整理到一起,这样可以加快读写速度。
  • inode(i 节点,柜子门上的标签)
    • 用来记录文件的权限(r、w、x),文件的所有者和所属组,文件的大小,文件的状态改变时间(ctime),文件的最近一次读取时间(atime),文件的最近一次修改时间(mtime),文件的数据真正保存的 block 编号。每个文件需要占用一个 inode

2、文件系统命令

① df 命令

用来查看硬盘分区空间使用情况df -h
[root@hepingfly 桌面]# df -hT       加个 -T 参数,结果会多出 Type 这一列,显示分区的文件系统类型
Filesystem     Type     Size  Used Avail Use% Mounted on
/dev/sda2      ext4     9.8G  3.0G  6.3G  33% /
tmpfs          tmpfs    491M   80K  491M   1% /dev/shm
/dev/sda1      ext4     976M   34M  892M   4% /boot
/dev/sda3      ext4     4.8G   11M  4.6G   1% /home
/dev/sr0       iso9660  3.7G  3.7G     0 100% /media/CentOS_6.8_Final

② du 命令

我们经常用这个命令来查看目录大小,因为用 ll 去查看目录大小不准确,使用 ll 去查看目录带下一般都是 4k 或者 4k 的倍数,因为使用 ll 它统计出来的实际上是,目录中存的所有文件名的大小,一个 block 占 4kb 如果一个 block 存不下就用两个 block 去存,占 8kb。du [选项] [目录或文件名]
选项:
-a:显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量。
​ -h :人性化显示
​ -s :统计总占用量,而不列出子目录和子文件占用量
[root@hepingfly init]# du -hs /home/
104K	/home/

说明:

du 与 df 的区别:du 是用于统计文件大小的,统计文件大小是准确的,df 是用于统计空间大小的,统计的剩余空间是准确的。
有时候会存在这两个统计不一致的情况,原因是 df 统计的是空间,临时文件、垃圾文件等都会占用空间,df 就光统计文件大小,所以这两个会存在差异情况。

③ dumpe2fs 命令

显示磁盘状态

dumpe2fs /dev/sda3

④ 判断文件类型

file 文件名 判断文件类型
type 命令名 判断命令类型
[root@hepingfly hgfs]# type mkdir      这个命令是外部命令
mkdir is /bin/mkdir 
[root@hepingfly hgfs]# type cd         这个命令是内置命令
cd is a shell builtin
[root@hepingfly hgfs]# cd /home/hepingfly/
[root@hepingfly hepingfly]# ll
总用量 8
-rw-r--r--. 1 root root    4 4月  18 00:07 abc
-rw-r--r--. 1 root root    0 4月  18 00:06 abc~
drwxr-xr-x. 2 root root 4096 4月  17 23:59 test
[root@hepingfly hepingfly]# file test           表示这是一个目录
test: directory
[root@hepingfly hepingfly]# file abc            表示这是一个文件
abc: ASCII text# 上面命令,在你写 shell 脚本的时候可能会用到

3、手工分区

fdisk 命令

fdisk -l
查看系统所有硬盘及分区

使用如下命令进行分区:

①『 fdisk /dev/sdb 』 进行磁盘分区(在开始分区的时候还没有分区号)

sdb 表示第二块硬盘,我之前只有一块硬盘,现在我新添加一块硬盘,要对这块硬盘进行分区,所以写 /dev/sdb
注意这个 sdb 后面不能跟数字,因为数字是表示分区号,我现在就是没有分区才要去分区的,如果写分区号,代表都有分区了,那我还分什么区。
假如你原来有两块硬盘,现在新添加一块硬盘,要对这个硬盘进行分区,那么这里就要写 /dev/sdc 了

你输入上面的命令就会开始分区了,分区的时候会与系统进行交互。

fdisk 交互指定说明:

命令说明a设置可引导标记b编辑 bsd 磁盘标签c设置 DOS 操作系统兼容标记d删除一个分区l显示已知的文件系统类型。82 为 Linux swap 分区,83 为 Linux 分区m显示帮助菜单n新建分区o建立空白 DOS 分区表p打印分区列表q不保存退出s新建空白 SUN 磁盘标签t改变一个分区的系统 IDu改变显示记录单位v验证分区表w保存退出x附加功能

②具体分区步骤见:

https://console.cloud.tencent.com/cos5/bucket/setting?type=filelist&bucketName=shp-notes-1257820375&path=%252Fshp-linux%252F®ion=ap-chengdu
这个里面 1~ 18 个截图,建议把截图弄出来放到 word 中,看更方便

③分区完成之后要进行格式化:

格式化,建立文件系统:

mkfs -t ext4 /dev/sdb1mkfs -t ext4 /dev/sdb5
说明:
ext4 表示 linux 的文件系统,上面我在分区的时候分了一个主分区,一个扩展分区,一个逻辑分区,扩展分区不能存储数据,也不能格式化,逻辑分区,分区号是从 5 开始的,所以把 sdb1 和 sdb5 格式化后,建立文件系统才能使用

④ 建立挂载点

mkdir /disk1mkdir /disk5
所有的分区都是要挂载之后才能使用的

⑤ 挂载

mount /dev/sdb1 /disk1mount /dev/sdb5 /disk5

⑥ 查看

mount 查看所有已挂载的分区和光盘
fdisk -l 查看系统分区
df -h 查看磁盘空间使用情况

4、自动挂载

我们只允许对固定设备做自动挂载,不允许对光盘或者 U 盘等移动硬盘做自动挂载。因为你如果对移动设备做了自动挂载,但是系统启动的时候,你如果忘了插入光盘或者 U 盘,那么系统就会直接崩溃,因为它找不到这个设备。

如何自动挂载?

通过修改分区自动挂载文件实现。

vim /etc/fstab 注意:这个文件直接参与系统启动,如果修改错误,系统启动报错
vim /etc/fstab
UUID=adec8353-015d-4846-9f00-d4f16630ec3a /                       ext4    defaults        1 1
UUID=1b8318b7-046d-4694-b723-afa92e96888e /boot                   ext4    defaults        1 2
UUID=f20a6373-1d80-4fcc-9d8d-a7c2be91d11f /home                   ext4    defaults        1 2
UUID=cc8c66fd-21d7-42ee-8a6f-3d62c71e09b0 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

解释下上面的内容:

  • 第一列:设备文件名
  • 第二列:挂载点
  • 第三列:文件系统
  • 第四列:挂载选项
  • 第五列:是否可以被备份 0 :不备份 1:每天备份 2:不定期备份(建议写 1)
  • 第六列:是否检测磁盘 fsck 0 : 不检测 1:启动时检测 2:启动后检测(建议写 2)

自动挂载示例:

vim /etc/fstab
/dev/sdb1               /disk1                  ext4    defaults        1 2
/dev/sdb5               /disk5                  ext4    defaults        1 2# 这样我就是实现了 sdb1 和 sdb5 这两个分区开机自动挂载

说明:

其实在上面我们也看到了,第一列有 UUID ,其实也可以使用 UUID 去进行挂载。其实使用 UUID 去挂载还会有好处,好处就是当硬盘增加了新的分区,或者分区的顺序改变,再或者内核升级后,仍然能够保证分区能够正确的加载,而不至于造成启动障碍。
使用 UUID 挂载,只需要把第一列的设备文件名换成查询到的分区 UUID 即可,其他列和使用设备文件名挂载一样。

如何查询分区对应的 UUID:

ls -l /dev/disk/by-uuid/
[root@hepingfly disk1]# ls -l /dev/disk/by-uuid/
总用量 0
lrwxrwxrwx. 1 root root 10 4月  23 21:30 1b8318b7-046d-4694-b723-afa92e96888e -> ../../sda1
lrwxrwxrwx. 1 root root 10 4月  23 21:30 3731f19b-ecd4-4ac5-ad41-303c894ed742 -> ../../sdb5
lrwxrwxrwx. 1 root root 10 4月  23 21:30 6aedc6ac-d2e1-465e-a824-07b4b9d10ae5 -> ../../sdb1
lrwxrwxrwx. 1 root root 10 4月  23 21:30 adec8353-015d-4846-9f00-d4f16630ec3a -> ../../sda2
lrwxrwxrwx. 1 root root 10 4月  23 21:30 cc8c66fd-21d7-42ee-8a6f-3d62c71e09b0 -> ../../sda5
lrwxrwxrwx. 1 root root 10 4月  23 21:30 f20a6373-1d80-4fcc-9d8d-a7c2be91d11f -> ../../sda3# 使用上面的命令可以看到每个分区对应的 UUID

测试:

mount -a 重新挂载所有内容
再输入 mount 命令,查看是否挂载成功。或者重启也行。

5、parted 命令分区

我们 Linux 系统中有两种常见的分区表,MBR 分区表和 GPT 分区表。

  • MBR 分区表 :支持最大分区是 2TB ,最多支持 4 个主分区,或 3 个主分区 1 个扩展分区
  • GPT 分区表:支持最大 18EB 的分区(1EB = 1024PB = 1024 * 1024TB),最多支持 128 个分区,其中 1 个系统保留分区,127 个用户自定义分区

一般我们使用 fdisk 命令进行分区的时候,都是对 MBR 分区表进行分区,但是这种分区表,支持的硬盘最大 2TB,也就是说你硬盘容量如果大于 2TB ,使用 MBR 分区表后面的都不会识别了。所以如果你硬盘容量超过 2TB,就需要使用 parted 命令进行分区。另外,你使用 parted 命令分完区之后,就不会存在什么主分区、扩展分区、逻辑分区了,因为我们说之所以存在主分区、扩展分区、逻辑分区,就是因为 MBR 分区表,最多支持 4 个主分区,所以我们想突破 4 个主分区的限制,就弄出了扩展分区和逻辑分区,那么现在 GPT 分区表,已经支持 128 个分区了,所以就不需要这些主分区、扩展分区、逻辑分区了,都是主分区。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

box-shadow IE8兼容处理

根据canisue&#xff08;http://caniuse.com/#searchbox-shadow&#xff09;&#xff0c;box-shadow兼容性如下图所示&#xff1a; 测试代码&#xff1a; 1 <!DOCTYPE html>2 <html>3 4 <head>5 <meta charset"UTF-8">6 …

ECharts.js学习(一) 简单入门

EChart.js 简单入门 最近有一个统计的项目要做&#xff0c;在前端的数据需要用图表的形式展示。网上搜索了一下&#xff0c;发现有几种统计图库。 MSChart 这个是Visual Studio里的自带控件&#xff0c;使用比较简单&#xff0c;不过数据这块需要在后台绑定。 ichartjs 是一款…

金蝶云系统显示服务器离线,金蝶云服务器已离线是什么情况

金蝶云服务器已离线是什么情况 内容精选换一换根据是否支持挂载至多台云服务器可以将磁盘分为非共享磁盘和共享磁盘。一个非共享磁盘只能挂载至一台云服务器&#xff0c;而一个共享磁盘可以同时挂载至多台云服务器。共享磁盘是一种支持多个云服务器并发读写访问的数据块级存储设…

分布式是什么意思_机架式ups是什么意思?与分布式DPS有何不同之处?

ups电源很多人听过了&#xff0c;主要是让设备在突然断电的情况下遭遇停电的损坏&#xff0c;保障数据及重要程序运行。那么&#xff0c;机架式ups电源可能就是很多人不太了解的了&#xff0c;在说到与分布式DPS有何不同之处那是很少有人清楚了解了&#xff0c;不管怎么说&…

【原】老生常谈-从输入url到页面展示到底发生了什么

刚开始写这篇文章还是挺纠结的&#xff0c;因为网上搜索“从输入url到页面展示到底发生了什么”&#xff0c;你可以搜到一大堆的资料。而且面试这道题基本是必考题&#xff0c;二月份面试的时候&#xff0c;虽然知道这个过程发生了什么&#xff0c;不过当面试官一步步追问下去的…

WebApi在MVC 4中一个Controll多个post方法报错处理

http://blog.csdn.net/lqh4188/article/details/53542400&#xff08;原创&#xff09; 转载于:https://www.cnblogs.com/william-CuiCui0705/p/8023832.html

关于文件关联的图标不能正常显示

不知道有没有人遇到过这种情况&#xff1a; 这两种情况都是关联的图标不能正常显示&#xff0c;但是可以正常打开。总觉得看着挺碍眼的&#xff0c;就看了下注册表&#xff0c;发现可以用以下方法解决&#xff1a; 打开注册表&#xff0c;[HKEY_CLASSES_ROOT]找到需要修改的文件…

华为畅享8plus停产了吗_牢记华为手机“三不买”原则,不花冤枉钱,选错要吃亏!...

如今华为手机已经占据国内手机市场份额的半壁江山&#xff0c;华为自然也就成为了买手机的首选。那么华为手机真的好吗&#xff1f;我认为应该理性看待&#xff0c;因为每个手机品牌都有好手机也有差手机&#xff0c;其实买华为你只需要牢记“三不买”原则&#xff0c;就可以不…

Spring MVC:MySQL和Hibernate的安全性

Spring有很多不同的模块。 所有这些对于具体目的都是有用的。 今天&#xff0c;我将讨论Spring Security。 该模块提供了灵活的方法来管理访问Web应用程序不同部分的许可。 在这篇文章中&#xff0c;我将研究Spring MVC &#xff0c; Hibernate &#xff0c; MySQL与Spring Sec…

Python 离线 安装requests第三方库

一、介绍 requests是Python的一个HTTP客户端库&#xff0c;跟urllib&#xff0c;urllib2类似&#xff0c;不过requests的优势在于使用简单&#xff0c;相同一个功能&#xff0c;用requests实现起来代码量要少很多。毕竟官方文档都很直白的说&#xff1a; python的标准库urllib2…

JS分页条插件

目标 制作js分页导航jq插件,用于无刷新分页或者刷新分页 实现目标参考京东和天猫的分页条. 有四个固定按钮,前页码,后页码,首页,末页. 程序关键点在于计算中间页面的起止位置.逻辑是以当前页码为参照点,根据需要显示的页码按钮个数,计算参照点前后的页码数量. 当起止点小于1或者…

头同尾合十的算法_乘法速算之首同尾合十

两位数乘两位数中&#xff0c;有一种特殊情况不需要列竖式&#xff0c;可以直接说出答案&#xff0c;那就是“首同尾合十”——十位相同&#xff0c;个位数字之和是10。一、巧算方法前两位&#xff1a;十位数字(十位数字1)&#xff0c;后两位&#xff1a;个位相乘例如&#xff…

JavaFX逆运动学库2.0

这是第一篇讲解javafx-ik的基础教程&#xff0c; javafx-ik是JavaFX的逆运动学库。 该库的源代码可以从GitHub下载。 什么是 图1&#xff1a;单骨 骨骼是使用javafx-ik库进行逆运动学的基本基础。 骨骼具有一定长度和关节&#xff0c;骨骼可以围绕该关节旋转。 具有关节的一端…

html权重值_史上最全的web前端面试题汇总及答案HtmlCss(二)

作者&#xff1a;樱桃小丸子儿链接&#xff1a;https://www.jianshu.com/p/abadcc84e2a4HTML&CSSimg的alt和title的异同&#xff1f;**alt **是图片加载失败时&#xff0c;显示在网页上的替代文字&#xff1b;**title **是鼠标放上面时显示的文字,title是对图片的描述与进一…

解决问题SyntaxError: Unexpected token import

ES6语法的模块导入导出(import/export)功能,我们在使用它的时候&#xff0c;可能会报错&#xff1a; SyntaxError: Unexpected token import 语法错误&#xff1a;此处不应该出现import 我遇到的情况是import语法不识别导致的。在这里&#xff0c;有两种方法可以解决。 1: 使用…

使用Gradle的简单Spring MVC Web应用程序

除了我们现在将使用Spring MVC而不是原始servlet之外&#xff0c;该文章将与我们以前的文章Simple Gradle Web Application相似。 使用Gradle运行基本的Spring MVC应用程序确实很容易。 您可以在Github上下载本教程的源代码。 先决条件 安装Gradle 我们的基本项目结构将是&am…

tps波动很大的原因_花生价格小幅上涨,要突破6元大关?粮贩:还有很大距离...

花生是一种重要的油料作物&#xff0c;虽然并不是全国都种植&#xff0c;但在黄淮、长江流域&#xff0c;西北和东北等地区&#xff0c;均广泛种植&#xff0c;近期花生价格一直是农民朋友的关注点&#xff0c;从今年花生价格来看&#xff0c;自从花生上市后&#xff0c;价格起…

html css 基础(标签选择,分页,行和块元素)

&#xff08;1&#xff09;html标签选择 1、<a></a> 的功能有连接&#xff0c;下载&#xff0c;锚点 2、<span></span> 用来区分字体样式&#xff0c;<strong></strong>和<em></em>用来强调某段文字 3、如果是描述性的某段…

使用LDAP保护Java EE6中的Web应用程序

在上一篇文章中&#xff0c;我们解释了如何在通过传输层安全性&#xff08;TLS&#xff09;/安全套接字层&#xff08;SSL&#xff09;传输数据时保护数据。 现在&#xff0c;让我们尝试了解如何为使用LDAP服务器进行身份验证的基于JEE 6的Web应用程序应用安全机制。 目的&…

设计模式(二十二)------23种设计模式(14):解释器模式

使用频率&#xff1a;★☆☆☆☆ 一、什么是解释器模式 定义一些语法规则&#xff0c;然后定义一个解析器去解析该语法&#xff1b; 所谓解释器模式就是定义语言的文法&#xff0c;并且建立一个解释器来解释该语言中的句子。 在这里我们将语言理解成使用规定格式和语法的代码。…