[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 交换空间的种类
交换空间可以是一个专用的交换分区(推荐的方法),也可以是一个交换文件,或是两者的结合。
分区类型的交换空间
分区类型的交换空间,是以分区为其配置单位。该分区有多大,启用之后交换空间就会增加多大。
你可以在Linux系统中配置一个分区,并且设置其系统识别码 (System ID) 为“82 - Linux Swap/Solaris”,如此一来,这个分区就可以被 Linux 拿来作为内存使用。
以分区呈现的交换空间,其优点为效率高,而其缺点则为弹性差。
由于Linux可以直接使用该分区的每一个扇区,因此,在读取时效率会比文件类型的交换空间高。
然而要建立分区类型的交换空间,你必须要产生一个分区;如果该磁盘驱动器又是 Linux的启动磁盘,那你必须要重新启动 Linux系统,才能让 Linux可以抓得到这个新的分区;如果你打算卸载这个交换空间空间,也必须要重新启动系统,因此分区类型的置换内存空间在使用上比较麻烦且欠缺弹性。
2
文件类型的交换空间
文件类型的交换空间,则是以文件为配置单位,该文件有多大其交换空间的空间就有多大。文件类型的交换空间,优点是弹性佳,缺点则为效率较差。
由于配置的单位是文件,因此,如果你发现Linux的物理内存快要用光时,你可以马上配置一个文件出来,作为交换空间使用;当你不再需要该交换空间,也可以在停用后直接删除,以回收磁盘空间,所以文件类型的交换空间远较分区类型的交换空间空间来的更具弹性。
然而,因为交换空间是以文件的类型储存数据,当Linux 在读取文件类型的交换空间时,还必须要通过文件系统方能使用真正的扇区、磁轨,故在执行上效率较差。
如果允许,我强烈建议你优先采用分区类型的交换空间;只在没有多余的磁盘空间可以产生新的分区时,才使用文件类型的交换空间。
2.3 建立交换空间
有时,你会有必要在安装后添加更多的交换空间。例如,你把系统内存从512MB升级到1024MB,但是你只有512MB 的交换内存。如果你执行的是大量使用内存的操作或运行需要大量内存的程序,把交换区增加到1024MB 可能会对你有利。
你有两种选择:添加一个交换分区或添加一个交换文件。推荐添加一个交换分区,不过,若你没有多少空闲空间可用,创建交换分区可能会不大容易。
添加分区类型的交换空间
要产生分区类型的交换空间,你必须使用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文件系统监控命令的主要内容,如果未能解决你的问题,请参考以下文章