[10分钟Linux]-Linux文件系统监控命令

Posted 云运维联盟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[10分钟Linux]-Linux文件系统监控命令相关的知识,希望对你有一定的参考价值。

点击上方 “公众号” 可以订阅哦!

    前面介绍了如何添加新磁盘,接下来,首先介绍对于已经分区格式化、挂载载的磁盘,如何获取它们的信息?

    

Part.1 查看文件系统


1.1 查看文件系统状态:dumpe2fs

    顾名思义,起初dumpe2fs命令产生有关ext2文件系统低层信息的标准输出。目前,dumpe2fs支持查看ext2/ext3/ext4文件系统信息。

    下面的例子使用dumpe2fs命令查看sda1文件系统信息。

    # dumpe2fs /dev/sda1

    dumpe2fs 1.41.12 (17-May-2010)

    Filesystem volume name:   <none> ①

    Last mounted on:          /boot

    Filesystem UUID:          870b3ded-6eaf-4d60-ba02-9a905991f453

    Filesystem magic number:  0xEF53

    Filesystem revision #:    1 (dynamic)

    Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize ②

    Filesystem flags:         signed_directory_hash 

    Default mount options:    user_xattr acl

    Filesystem state:         clean

    Errors behavior:          Continue

    Filesystem OS type:       Linux

    Inode count:              128016   ③

    Block count:              512000   ④

    Reserved block count:     25600

    Free blocks:              449166

    Free inodes:              127977

    First block:              1

    Block size:               1024   ⑤

    Fragment size:            1024

    Reserved GDT blocks:      256

    Blocks per group:         8192

    Fragments per group:      8192

    Inodes per group:         2032

    Inode blocks per group:   254

    Flex block group size:    16

    Filesystem created:       Tue Nov 10 00:19:12 2015

    Last mount time:          Thu Aug  2 16:33:04 2018

    Last write time:          Thu Aug  2 16:33:04 2018

    Mount count:              6

    Maximum mount count:      -1

    Last checked:             Tue Nov 10 00:19:12 2015

    Check interval:           0 (<none>)

    Lifetime writes:          60 MB

    Reserved blocks uid:      0 (user root)

    Reserved blocks gid:      0 (group root)

    First inode:              11

    Inode size:          128

    Journal inode:            8

    Default directory hash:   half_md4

    Directory Hash Seed:      a77454df-e07a-4347-8a91-9efdc4cda57f

    Journal backup:           inode blocks

    Journal features:         (none)

    Journal size:             8M

    Journal length:           8192

    Journal sequence:         0x0000001d

    Journal start:            1

    

    

    Group 0: (Blocks 1-8192) [ITABLE_ZEROED]

      Checksum 0x1317, unused inodes 2014  ⑥

      Primary superblock at 1, Group descriptors at 2-3

      Reserved GDT blocks at 4-259

      Block bitmap at 260 (+259), Inode bitmap at 276 (+275)

      Inode table at 292-545 (+291)

      3820 free blocks, 2014 free inodes, 2 directories, 2014 unused inodes

      Free blocks: 4373-8192

      Free inodes: 19-2032

    ... ...

    ①文件系统标签。这一栏是空的,因为mke2fs命令行没有(使用命令行选项-L)指定标签。

    ②ext4文件系统可以包括几种功能,在这里列出。

    ③文件系统中i-节点的数目。

    ④文件系统中的块数目。

    ⑤块大小,在这里是1024字节(1KB)。因为分区不大(512000块1k大小的块大约为500MB),所以mke2fs命令选择较小的块大小。

    ⑥最后,mkfs命令产生空闲块和其他几组块的信息。

1.2 设置和查看文件系统标签

    e2lable命令可以查看和设置ext2/ext3/ext4文件系统卷标,e2lable语法如下:

e2label 设备文件 【新卷标】

    如果不指定卷标,是查看该分区的卷标名称是什么。下面是我设置卷标和查看卷标的实例。

    # e2label /dev/sda1 /boot

    # e2label /dev/sda1 

    /boot

    除了使用e2lable查看卷标,也可以使用dumpe2fs查看卷标。如下所示:

    # dumpe2fs /dev/sda1 |head -1

    dumpe2fs 1.41.12 (17-May-2010)

    Filesystem volume name:   /boot

1.3 查看UUID

    Linux系统除了可以使用,设备名或者是卷标挂载文件系统,还可以使用UUID挂载文件系统 

1

什么是UUID?

    为了解决这个问题,UUID诞生了。它采用128位长度来表示一个名字,且同时考虑了时间和空间的唯一性,最重要的是它不需要申请注册,任何人都可以使用本地计算机运行程序自动生成。

2

Linux分区为何使用UUID?

    Linux系统对识别出的硬盘分区采用类似 /dev/sda1,/dev/sdb1这样的格式进行动态命名。假设机器装有两块串口硬盘,Linux会按照识别顺序对第一个识别出的硬盘命名为/dev/sda,对第二块识别出的硬盘命名为/dev/sdb。而问题是识别顺序是随机的,所以启动机器之前不能确定/dev/sda到底是哪块硬盘。

    通常,我们会在/etc/fstab配置文件中设置自动挂载分区,如果系统有多块硬盘,那么下次启动的时候,不能确定挂载目录到底挂载了哪个硬盘的第一分区,如果这个挂载点对系统运行非常重要,那么就有可能出现问题。

    为解决上述问题,UUID被文件系统设计者采用,使其可以持久唯一标识一个硬盘分区。其实方式很简单,就是在文件系统的超级块中使用128位存放UUID。这个UUID是在使用文件系统格式化分区时计算生成的,例如Linux下的文件系统工具mkfs就在格式化分区的同时,生成UUID并把它记录到超级块的固定区域中。

02

查看UUID:blkid

    Linux系统中,可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。命令语法:

blkid 设备名

    以下是我使用blkid命令查询/dev/sda1分区信息范例:

    # blkid /dev/sda1

    /dev/sda1: LABEL="/boot" UUID="870b3ded-6eaf-4d60-ba02-9a905991f453" TYPE="ext4"

1.4 查看文件系统使用情况

    要查看已经挂接的磁盘的使用情况,使用df 命令。以下是我使用df查看文件系统使用情况的范例:

    # df -h

    Filesystem            Size  Used Avail Use% Mounted on

    /dev/mapper/VolGroup-lv_root

                           50G  2.6G   45G   6% /

    tmpfs                 935M     0  935M   0% /dev/shm

    /dev/sda1             477M   38M  414M   9% /boot

    /dev/mapper/VolGroup-lv_home

                          262G   60M  248G   1% /home

    /dev/sr0              3.6G  3.6G     0 100% /media

    10.1.1.3:/webroot      50G  2.6G   45G   6% /usr/local/apache/htdocs

    输出了6 列,分别表示:

    设备名、总容量、已经使用的容量、未使用的容量、已使用百分比、挂载点。

1.5 查看文件和目录使用空间:du

    du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。du命令的语法:

du [选项] [文件]

    常用选项:

     · -b或-bytes  显示目录或文件大小时,以byte为单位。   

    · -c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。 

    · -k或--kilobytes  以KB(1024bytes)为单位输出。

    · -m或--megabytes  以MB为单位输出。   

    · -s或--summarize  仅显示总计,只列出最后加总的值。

    · -h或--human-readable  以K,M,G为单位,提高信息的可读性。

    以下是我使用du查看/media目录容量的范例:

    # du -sh /media/

    3.7G/media/

    以上显示为3.7G,/media目录挂载了RHEL的系统安装盘,说明整个光盘的容量为3.7G。


Part.2 交换空间管理


    很多人把交换空间与Windows系统中的“虚拟内存(Virtual Memory)” 相提并论。在某种程度上这两个的意义是一样的,不过仔细论其运行的原理,两者还是有许多不同之处。两者相同的地方是都可以暂时作为内存使用;然而其启用时机与用法却大不相同。

    Windows 的虚拟内存是开机时就必须要启动,甚至没有配置虚拟内存,可能无法顺利启动;另外Windows会同时使用物理内存与虚拟内存,即使实体内存还足够,应用程序还是会使用虚拟内存

2.1 交换空间

    Linux 中的交换空间(Swap space)在物理内存(RAM)被充满时被使用。如果系统需要更多的内存资源,而物理内存已经充满,内存中不活跃的页就会被转移到交换空间中。虽然交换空间可以为带有少量内存的机器提供帮助,但是这种方法不应该被当做是对内存的取代。交换空间位于硬盘驱动器上,它比进入物理内存要慢。

    这样做的好处是,提高了系统执行的效率。因为物理内存的读取速度远高于磁盘上的交换内存,所以,Linux 会优先使用物理内存,万不得以才会动用交换内存。通过这个技巧,可以提高Linux 整体的执行效率。

2.2 交换空间的种类

    交换空间可以是一个专用的交换分区(推荐的方法),也可以是一个交换文件,或是两者的结合。

1

分区类型的交换空间

    分区类型的交换空间,是以分区为其配置单位。该分区有多大,启用之后交换空间就会增加多大。

    你可以在Linux系统中配置一个分区,并且设置其系统识别码 (System ID) 为“82 - Linux Swap/Solaris”,如此一来,这个分区就可以被 Linux 拿来作为内存使用。

    以分区呈现的交换空间,其优点为效率高,而其缺点则为弹性差。

    由于Linux可以直接使用该分区的每一个扇区,因此,在读取时效率会比文件类型的交换空间高。

    然而要建立分区类型的交换空间,你必须要产生一个分区;如果该磁盘驱动器又是 Linux的启动磁盘,那你必须要重新启动 Linux系统,才能让 Linux可以抓得到这个新的分区;如果你打算卸载这个交换空间空间,也必须要重新启动系统,因此分区类型的置换内存空间在使用上比较麻烦且欠缺弹性。

2

文件类型的交换空间

    文件类型的交换空间,则是以文件为配置单位,该文件有多大其交换空间的空间就有多大。文件类型的交换空间,优点是弹性佳,缺点则为效率较差。

    由于配置的单位是文件,因此,如果你发现Linux的物理内存快要用光时,你可以马上配置一个文件出来,作为交换空间使用;当你不再需要该交换空间,也可以在停用后直接删除,以回收磁盘空间,所以文件类型的交换空间远较分区类型的交换空间空间来的更具弹性。

    然而,因为交换空间是以文件的类型储存数据,当Linux 在读取文件类型的交换空间时,还必须要通过文件系统方能使用真正的扇区、磁轨,故在执行上效率较差。

    如果允许,我强烈建议你优先采用分区类型的交换空间;只在没有多余的磁盘空间可以产生新的分区时,才使用文件类型的交换空间。

2.3 建立交换空间

    有时,你会有必要在安装后添加更多的交换空间。例如,你把系统内存从512MB升级到1024MB,但是你只有512MB 的交换内存。如果你执行的是大量使用内存的操作或运行需要大量内存的程序,把交换区增加到1024MB 可能会对你有利。

    你有两种选择:添加一个交换分区或添加一个交换文件。推荐添加一个交换分区,不过,若你没有多少空闲空间可用,创建交换分区可能会不大容易。

1

添加分区类型的交换空间

    要产生分区类型的交换空间,你必须使用fdisk之类的分区管理工具,先建立一个分区,然后将其分区识别符(Partition ID),设置为 “82 - Linux swap/Solaris”。完成后,这个分区就可以作为交换空间使用。

2

添加文件类型的交换空间

    如果是要制作文件类型的交换空间,那么你得先产生一个空的文件,其大小便是未来交换空间的大小。

    要产生空的文件方法有很多种,在此我推荐使用dd这个命令来产生适当大小的文件空间。通常我们会在 dd 命令后,以 if 参数,指定从 /dev/zero 设备读入数据;以of参数,指定输出到哪个文件;以bs参数,指定每一条数据的大小;最后以count参数指定总共要读多少次。

    以下是我使用dd命令产生一个1024MB大小的交换空间范例:

    # ls -lh //swapfile

    ls: /swapfile: 没有此一文件或目录

    # dd if=/dev/zero of=/tmp/swapfile bs=1G count=1

    100+0 records in

    100+0 records out

    # ls -lh /swapfile

    -rw-r--r--  1 root root 1G Mar  2 14:18 /swapfile

2.4 创建交换空间文件系统

    建立交换空间所需的空间后,接着必须在磁盘上创建交换空间的文件系统。由于交换空间中储存的数据,与一般的文件数据不一样,为了让 Linux 系统能够更有效率的读取交换空间空间,Linux提供一个名为swapfs的特殊文件系统,用来储存交换空间中的数据。

    要创建交换空间的文件系统,你必须使用mkswap这个工具,其语法如下:

mkswap DEVICE

    其中DEVICE是交换空间的设备名称或者文件名称。

    以下是我使用mkswap创建交换内存文件系统的范例:

    # fdisk -l /dev/sda | grep '/dev/sda2'

    /dev/sda22116212810439182  Linux swap ①

    # mkswap /dev/sda2 ②

    Setting up swapspace version 1, size = 106889 kB

    # ls -lh /swapfile

    -rw-r--r--  1 root root 100M Mar  2 14:18 /tmp/swapfile ③

    # mkswap /swapfile ④

    Setting up swapspace version 1, size = 104853 kB

    ①这是我产生的一个分区,其系统识别码 (System Id) 为“82 - Linux Swap”,等一下我就拿这个分区来作为分区类型的交换空间。

    ②现在,我使用mkswap在/dev/sda2 这个分区上建立swapfs文件系统,以便稍候可以作为交换空间。

    ③这是我刚刚使用dd产生的空的文件,大小为1024MB。

    ④同样使用mkswap在 /swapfile中创建swapfs文件系统。

2.5 启用交换空间

    创建完交换内存空间的文件系统后,如果不启用交换空间,是无法使用的。如果你要启用交换内存空间,请使用swapon命令,其语法如下:  

swapon DEVICE 

    其中DEVICE是交换内存空间的文件名称。分区类型的交换内存,DEVICE 为分区的设备文件名称;如果是文件类型的交换内存,DEVICE 则是其文件名称。

    以下是我使用swapon启用交换内存空间的范例:

    # free

    totalusedfreesharedbufferscached

    Mem:1027736346316681420015088227216

    -/+ buffers/cache:104012923724

    Swap:1052216 ①01052216

    # swapon /dev/sda2 ②

    # free

    totalusedfreesharedbufferscached

    Mem:1027736346316681420015120227216

    -/+ buffers/cache:103980923756

    Swap:1156596 ③01156596

    # swapon /swapfile ④

    # free

    totalusedfreesharedbufferscached

    Mem:1027736346444681292015144227216

    -/+ buffers/cache:104084923652

    Swap:1258988 ⑤01258988

    #

    ① 我先用free命令查看目前的交换内存的状况。按照这里显示的信息,目前我的Linux中共有 1,052,216 Bytes 的交换内存空间。

    ②接着使用swapon命令,将/dev/sda2启用。

    ③再次查询目前的交换内存的状况,现在的交换内存共有1,156,596 Bytes,共增加 1,156,596 - 1,055,216 = 101,380 Bytes,增加的部分,实际上就是/dev/sda2提供的交换内存空间。

    ④再启用/swapfile这个文件类型的交换内存空间。

    ⑤目前的交换内存空间共有1,258,988 Bytes,比起前一个步骤,增加了102,392Bytes,当然,增加的空间就是由 /swapfile 这个交换内存空间所产生的。

2.6 停用交换空间

    如果你不再需要使用某一个交换内存空间,你可以停止使用它;或者,如果打算修改交换内存空间的配置,你也必须先停用后才能进行其它的配置。

    你可以使用swapoff命令来停用交换内存。swapoff 的语法如下:

swapoff  [[-a] | DEVICE ]

    你可以使用swapoff停用所有的或某一个交换内存空间。-a参数代表停用所有的交换内存空间;如果只要停用某一个,请将DEVICE换成交换内存空间的相关的文件名称。

    以下是我使用swapoff停用交换内存空间的范例:

    # free

    totalusedfreesharedbufferscached

    Mem:1027736346444681292015160227216

    -/+ buffers/cache:104068923668

    Swap:1258988①01258988

    # swapoff /dev/sda2

    # free

    totalusedfreesharedbufferscached

    Mem:1027736346444681292015172227216

    -/+ buffers/cache:104056923680

    Swap:1154608 ②01154608

    # swapoff /tmp/swapfile

    # free

    totalusedfreesharedbufferscached

    Mem:1027736346444681292015188227216

    -/+ buffers/cache:104040923696

    Swap:1052216 ③01052216

    

    ①在停用交换内存空间之前,先看一下目前已启用的交换内存有多大?

    ②在停用 /dev/sda2后,现在已启用的交换内存大小,已经减为1,154,608 KB。

    ③停用/mnt/swapfile 交换内存空间后,总共启用的交换内存空间总数为1,052,216KB。

    swapon除了可以来启用交换内存外,还能用来查看目前每一个交换内存空间的使用状况。你只需执行swapon -s,它就会显示目前系统中每一个交换内存空的大小、类型以及使用率等信息。

    以下是我使用swapon -s的示范说明:

    # swapon -s

    FilenameTypeSize   UsedPriority

    /dev/sda1partition1052216 0-1

    /dev/sda2partition104380  0-4

    /swapfilefile102392  0-5

    其中每列的含义,依次为文件名称、交换内存空间的类型、交换内存空间大小、已使用的大小、优先级。

2.7 设置交换空间

    同一般的文件系统一样,要在引导时启用,交换内存数据也可以在/etc/fstab 里面设置。

    以我创建出来的 /dev/sda2和/swapfile两个交换内存空间为例,如果希望每次开机时,都会自动启用这两个交换内存的话,那我就可以在/etc/fstab加入下面两行:

    /dev/sda2swapswapdefaults00

    /swapfileswapswapdefaults00

云运维联盟

专注Linux云平台运维

以上是关于[10分钟Linux]-Linux文件系统监控命令的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统监控命令详解

linux 性能监控-实用命令(摘抄)

linux 操作系统级别监控 TOP命令

linux性能监控工具介绍

Linux系统监控命令

Linux命令之实时监控系统进程状态top