IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 二、对磁盘的操作(包括mount、df、du、fdisk等命令) -> 正文阅读

[系统运维]二、对磁盘的操作(包括mount、df、du、fdisk等命令)

二、对磁盘的操作

Linux 磁盘与磁盘分区 - sparkdev - 博客园 (cnblogs.com)

磁盘设备在 Linux 下的表示方法

在 Linux 系统中磁盘设备文件的命名规则为:
主设备号 + 次设备号 + 磁盘分区号
对于目前常见的磁盘,一般表示为:
sd[a-z]x
主设备号代表设备的类型,相同的主设备号表示同类型的设备。当前常见磁盘的主设备号为 sd。
次设备号代表同类设备中的序号,用 “a-z” 表示。比如 /dev/sda 表示第一块磁盘,/dev/sdb 表示第二块磁盘。
x 表示磁盘分区编号。在每块磁盘上可能会划分多个分区,针对每个分区,Linux 用 /dev/sdbx 表示,这里的 x 表示第二块磁盘的第 x 个分区。

如下图所示:

img

该系统中一共有四块磁盘 /dev/sda,/dev/sdb,/dev/sdc 和 /dev/sdd。其中的 /dev/sda 上创建了三个分区,分别是 /dev/sda1,/dev/sda2,/dev/sda5;/dev/sdb 上只有一个分区 /dev/sdb1。而 /dev/sdc 和 /dev/sdd 则尚未分区(也肯能是只有一个分区,分区的名称和磁盘的名称相同)。

磁盘分区

创建磁盘分区大概有下面几个目的:

  • 提升数据的安全性(一个分区的数据损坏不会影响其他分区的数据)
  • 支持安装多个操作系统
  • 多个小分区对比一个大分区会有性能提升
  • 更好的组织数据

本文以常见的 MBR 分区为例介绍磁盘分区中的一些常见概念。MBR 磁盘的分区由主分区、扩展分区和逻辑分区组成。在一块磁盘上,主分区的最大个数是 4,其中扩展分区也是一个主分区,并且最多只能有一个扩展分区,但可以在扩展分区上创建多个逻辑分区。因此主分区(包括扩展分区)的范围是 1-4,逻辑分区从 5 开始。对于逻辑分区,Linux 规定它们必须建立在扩展分区上,而不是建立在主分区上。
主分区的作用是用来启动操作系统的,主要存放操作系统的启动或引导程序,因此建议操作系统的引导程序都放在主分区,比如 Linux 的 /boot 分区,最好放在主分区上:

img

扩展分区只不过是逻辑分区的 “容器”。实际上只有主分区和逻辑分区是用来进行数据存储的,因而可以将数据集中存放在磁盘的逻辑分区中。
我们可以通过 fdisk 命令来查看磁盘分区的信息:

$ sudo fdisk -l /dev/sda

img

输出中的前几行是磁盘的基本信息,比如总大小为 80G,一共有多少个扇区(sector),每个扇区的大小等等。红框中的则是我们比较关注的分区信息:
第一列 Device 显示了磁盘分区对应的设备文件名。
第二列 Boot 显示是否为引导分区,上图中的 /dev/sda1 就是引导分区。
第三列 Start 表示磁盘分区的起始位置。
第四列 End 表示磁盘分区的结束位置。
第五列 Sectors 表示分区占用的扇区数目。
第六列 Size 显示分区的大小。
第七列和第八列显示的内容相同,分别是数值 ID 及其文字描述。 Id 列显示了磁盘分区对应的 ID,根据分区的不同,分区对应的 ID 号也不相同。Linux 下用 83 表示主分区和逻辑分区,5 表示扩展分区,8e 表示 LVM 分区,82 表示交换分区,7 表示 NTFS 分区。
上图中的信息表明:/dev/sda1 是一个主分区并且被用作引导分区;/dev/sda2 是扩展分区,其中只有一个逻辑分区,即 /dev/sda5,这点可以通过两个分区相同的大小证明。

利用fdisk可以划分磁盘分区:详见

Linux 磁盘与磁盘分区 - sparkdev - 博客园 (cnblogs.com)

挂载

linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。这里所说的“按一定方式”就是指的挂载。

将一个文件系统的顶层目录挂到另一个文件系统的子目录上,使它们成为一个整体,称为挂载。把该子目录称为挂载点。   
注意:1、挂载点必须是一个目录。     
2、一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。

fdisk命令

# fdisk命令可以查看所有已挂载和未挂载的设备
fdisk -l

mount命令

# mount挂载命令
mount [-t vfstype] [-o options] device dir
mount /dev/sdc1 /mnt/dataIO

1、-t vfstype 指定文件系统的类型,通常不必指定,mount 会自动选择正确的类型。
光盘或光盘镜像:iso9660 
DOS fat16文件系统:msdos 
Windows 9x fat32文件系统:vfat 
Windows NT ntfs文件系统:ntfs 
Mount Windows文件网络共享:smbfs 
UNIX(LINUX) 文件网络共享:nfs


2、-o options 主要用来描述设备或档案的挂接方式。
loop:用来把一个文件当成硬盘分区挂接上系统 
ro:采用只读方式挂接设备 
rw:采用读写方式挂接设备 
iocharset:指定访问文件系统所用字符集

3、device 要挂接(mount)的设备。

4、dir设备在系统上的挂接点(mount point)#### 提醒一下,mount命令没有建立挂载点的功能,因此你应该确保执行mount命令时,挂载点已经存在。(



开机自动挂载

# 将挂载写入开机自动挂载
# 如果我们想实现开机自动挂载某设备,只要修改/etc/fstab文件即可。
# 文件挂载的配置文件:/etc/fstab
查看此文件可知,每行定义一个要挂载的文件系统;
其每行的格式如下:

要挂载的设备或伪文件系统  挂载点  文件系统类型  挂载选项 转储频率 自检次序

UUID=6efb8a23-bae1-427c-ab10-3caca95250b1 /boot  xfs    defaults    0 0

    要挂载的设备或伪文件系统:设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc, sysfs)
    挂载点:指定的文件夹
    挂载选项:defaults
    转储频率:
      0:不做备份
      1:每天转储
      2:每隔一天转储
    自检次序:
      0:不自检
      1:首先自检;一般只有rootfs才用1;

umount

# 卸载命令:umount 设备文件名或挂载点
# 命令使用格式:
umount DEVICE
umount MOUNT_POINT


# 注意:卸载前要先确认是否有正在访问文件系统的进程
# fuser:查看正在访问指定文件系统的进程:
# 命令使用格式:
fuser -v MOUNT_POINT

# 终止所有在正访问指定的文件系统的进程:慎用!!
fuser -km MOUNT_POINT

磁盘使用情况与问题排查

df 命令

# df -h(人类可读方式)命令显示文件系统的磁盘使用情况统计:
# 可以显示挂载信息
df -h
Filesystem                          Size  Used Avail Use% Mounted on
/dev/mapper/vg_ioserverssd-lv_root   50G   41G  5.9G  88% /
tmpfs                                16G     0   16G   0% /dev/shm
/dev/sda1                           485M   40M  420M   9% /boot
/dev/mapper/vg_ioserverssd-lv_home  437G  403G   12G  98% /home.bak
/dev/sdb1                           110G   20G   85G  19% /SSD
/dev/sdc1                           2.0T  1.5T  435G  78% /test
StorCloud:/public                    73T   65T  8.4T  89% /public


# df也可以显示磁盘使用的文件系统信息:
df test 
Filesystem     1K-blocks    Used      Available Use% Mounted on 
/dev/sda6       29640780    4320600   23814492  16%       / 



# 用一个-i选项的df命令的输出显示inode信息而非块使用量。
df -i 
Filesystem      Inodes    IUsed    IFree     IUse% Mounted on 
/dev/sda6      1884160    261964   1622196   14%        / 
udev           212748     560      212188    1%         /dev 
tmpfs          216392     477      215915    1%         /run 
none           216392     3        216389    1%         /run/lock 
none           216392     8        216384    1%         /run/shm 
# 提示:磁盘空间未满,但是inode满了,也会导致系统空间不足,崩溃

du命令

du 和 df 算是一对同门师兄弟,du 侧重在文件夹和文件的磁盘占用方面,而 df 则侧重在文件系统级别的磁盘占用方面。

最常用的用法,当然就是查看当前所在文件夹的总磁盘占用量了。

#计算当前文件夹的总磁盘占用量, -s选项表示计算总和, -h选项表示以恰当的K/M/G单位展示
[roc@roclinux ruanjian]$ du -sh .
51M

#通配形式的参数首先被Shell解析, 然后-s选项发挥作用, 展示每一个参数对应的磁盘空间使用量
[roc@roclinux ruanjian]$ du -sh *
3.4M    curl-7.34.0.tar.gz
41M     soft
6.8M    wordpress-4.4.1.tar.gz

# -c选项,是 --total 的缩写形式,它表示的是针对输出的各个对象来计算其磁盘使用量的总和。比如,我们想计算当前文件夹下所有后缀是 tar.gz 的文件的磁盘使用量总和,那么命令是这样的:
[roc@roclinux ruanjian]$ du -ch *.tar.gz
3.4M    curl-7.34.0.tar.gz
6.8M    wordpress-4.4.1.tar.gz
11M     总用量
# 可以看到,最后一行展示出的 11M,便是-c选项起到的求和作用。

用 --max-depth 选项控制深度

# 用 --max-depth 选项控制深度
# 文件夹是可以嵌套的,有的时候,我们只想展示第一级或第二级子文件夹的信息,而不希望 du 统计的层次太深,那么我们可以用 --max-depth 选项来进行控制。
#当--max-depth设定为0时, 只显示当前文件夹总大小
#可见, --max-depth=0的作用, 相当于-s
[roc@roclinux movies]$ du --max-depth=0 -h .
5.2G
 
#当--max-depth设定为1时, 则增加显示了第一级的文件夹大小
[roc@roclinux movies]$ du --max-depth=1 -h .
2.7G     ./China
2.5G     ./USA
5.2G     .
 
#当--max-depth设定为2时, 则会继续增加显示下一级子文件夹
[roc@roclinux movies]$ du --max-depth=2 -h .
1.4G     ./China/2017
1.3G     ./China/2016
2.7G     ./China
1.2G     ./USA/2017
1.3G     ./USA/2016
2.5G     ./USA
5.2G     .

默认情况下,du 命令只会关心文件夹,输出的都是文件夹的空间使用量,而不会关注单个文件。

通过-a选项让 du 输出包括文件夹和文件在内的完整统计信息

#如果不指定-a选项
[roc@roclinux ruanjian]$ du -h .
41M     ./soft
51M     .
 
#指定了-a选项之后, du则会刨根问底儿地把所有文件夹和文件都展示出来
[roc@roclinux ruanjian]$ du -ah .
6.8M    ./wordpress-4.4.1.tar.gz
3.4M    ./curl-7.34.0.tar.gz
980K    ./soft/redis-2.6.16.tar.gz
40M     ./soft/go1.1.2.Linux-amd64.tar.gz
41M     ./soft
51M     .

什么文件占满了我的磁盘

磁盘被占满,是 Linux 工程师经常遇到的问题,如果能够熟练使用 du 和 sort 形成组合拳,那么找到元凶并非难事。

#只想看当前文件夹下第一级的大小排序
[roc@roclinux ruanjian]$ du -sh *|sort -nr
41M     soft
6.8M    wordpress-4.4.1.tar.gz
3.4M    curl-7.34.0.tar.gz
 
#想看当前文件夹和其子文件夹下的大排序
[roc@roclinux ruanjian]$ du -ah .|sort -hr
51M     .
41M     ./soft
40M     ./soft/go1.1.2.Linux-amd64.tar.gz
6.8M    ./wordpress-4.4.1.tar.gz
3.4M    ./curl-7.34.0.tar.gz
980K    ./soft/redis-2.6.16.tar.gz

这里补充一个 sort 的知识点,那就是-h选项和-n选项的区别:

  • -n选项,按数值进行比较,只会傻傻地比较数字,它会认为 98 K大于 2G。
  • -h选项,会更加聪明,先优先比较单位(G>M>K),然后再对数值进行比较。

磁盘爆了的排查方式

1.df -h		# 查看挂载的文件系统使用情况

2.df -i		# 查看inode节点的使用情况,inode满了也会影响,需要清理

3.du -ah .	# 查看当前目录下说所有文件的大小,找出大文件进行清理

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:58:21  更:2022-03-16 22:59:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:45:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码