| |
| |
6.Linux文件系统
Linux作为一个开源操作系统的优势之一就是为用户提供了多种操作系统的支持。现代Linux内核几乎可以支持所有计算机系统常用的文件系统,从基本的FAT到高性能的文件系统例如JFS。因为Red Hat Enterprise Linux主要支持两种文件系统(ext2和ext3),我们将主要介绍它们的特点,对其他Linux文件系统我们仅做简要介绍。
(1)ext2
ext2文件系统是ext3文件系统的前身。是一个快速、简便的文件系统,它与目前大部分文件系统的显著不同就是ext2不支持日志。
(2)ext3,Red Hat默认的文件系统
自从Red Hat 7.2开始,安装默认的文件系统就是ext3。Ext3是应用广泛的ext2文件系统的更新版本,它加入了对日志的支持。下面列举了这个文件系统的一些特性。
Linux作为一个开源操作系统的优势之一就是为用户提供了多种操作系统的支持。现代Linux内核几乎可以支持所有计算机系统常用的文件系统,从基本的FAT到高性能的文件系统例如JFS。因为Red Hat Enterprise Linux主要支持两种文件系统(ext2和ext3),我们将主要介绍它们的特点,对其他Linux文件系统我们仅做简要介绍。
(1)ext2
ext2文件系统是ext3文件系统的前身。是一个快速、简便的文件系统,它与目前大部分文件系统的显著不同就是ext2不支持日志。
(2)ext3,Red Hat默认的文件系统
自从Red Hat 7.2开始,安装默认的文件系统就是ext3。Ext3是应用广泛的ext2文件系统的更新版本,它加入了对日志的支持。下面列举了这个文件系统的一些特性。
- 可用性:ext3可以保证数据写入磁盘的一致性,万一出现了非正常的关机(电源的失效或者系统的崩溃),服务器不需要花费时间去校验数据的一致性,因此极大的减少了系统恢复的时间。
- 数据完整性:加入特殊的日志功能,所有数据,包括文件数据和元数据都是有日志记录的。
- 速度:通过data=writeback参数,你可以根据应用的需要来调整数据的写入速度。
- 灵活性:从ext2转换到ext3文件系统是非常简单的并且不需要重新格式化硬盘。通过执行tune2fs命令和编辑/etc/fstab文件,你可以非常容易的将ext2文件系统更新到ext3文件系统。Ext3文件系统也可以禁用日志后作为ext2使用。利用一些第三方的工具软件可以更灵活的使用ext3文件系统,比如PartitionMagic可以编辑ext3分区。
(3)ReiserFS
ReiserFS是一个快速的日志文件系统,它优化了磁盘空间的使用、加快了故障恢复速度。今天ReiserFS是SUSE Linux默认的文件系统。
(4)JFS
JFS是一个完全64位的文件系统,它可以支持非常大的文件和分区。JFS是由IBM为AIX系统开发的,现在在GPL license下以及可以使用了。JFS对大容量的分区和文件,尤其是HPC和数据库应用来说是一种理想的操作系统。如果你想了解更多关于JFS的信息,请访问下面链接
[url]http://jfs.sourceforge.net[/url]
(5)XFS
XFS是SGI为IRIX系统开发的高性能的日志文件系统。它的特点和应用都和JFS相当接近。
ReiserFS是一个快速的日志文件系统,它优化了磁盘空间的使用、加快了故障恢复速度。今天ReiserFS是SUSE Linux默认的文件系统。
(4)JFS
JFS是一个完全64位的文件系统,它可以支持非常大的文件和分区。JFS是由IBM为AIX系统开发的,现在在GPL license下以及可以使用了。JFS对大容量的分区和文件,尤其是HPC和数据库应用来说是一种理想的操作系统。如果你想了解更多关于JFS的信息,请访问下面链接
[url]http://jfs.sourceforge.net[/url]
(5)XFS
XFS是SGI为IRIX系统开发的高性能的日志文件系统。它的特点和应用都和JFS相当接近。
7.Proc文件系统
proc文件系统不是一个实时文件系统,但是它的作用却非常大。它提供了一个运行中的内核的接口,并不存储实际的数据。Proc文件系统使系统管理员可以监控和调整内核运行状态。下图描述了一个proc文件系统的示例,大部分Linux性能调优工具都需要借助proc文件系统的信息来进行工作。

在proc文件系统中,我们可以看到分别记录不同信息的多个子目录,但是proc目录下的大部分文件可读性都不是很强,建议最好使用可读性更强的工具例如vmstat等来查看proc中记录的信息。请牢记proc目录的相应目录结构。
- 在/proc目录下的文件
proc根目录下保存着一些记录了系统信息的文件,这些文件你可以通过vmstat和cpuinfo等工具来读取。 - 数字1到X
各个以数字为名称的文件夹,代表的是运行进程的PID。例如,目录1记录了init进程的一些统计信息。 - acpiapci是一个现代桌面和笔记本电脑的电源配置和管理接口,因为apci主要是一个个人电脑的技术,所以在一些服务器系统上经常被禁用。可以访问下面链接获得更多acpi的相关信息
[url]http://www.apci.info[/url] - bus
这个子目录记录了系统的总线子系统的信息,例如pci总线或者usb接口。 - irq
irq子目录下记录了系统的中断信息。 - net
net子目录记录了一些关于你的网卡的重要信息,比如接收的多点广播封包或者每个网卡的路由。 - scsi
scsi子目录包含了关于系统的scsi子系统的信息,例如连接的设备或者驱动的版本。ips子目录是记录关于IBM ServerRAID阵列卡信息的。 - sys
sys目录下包含了一些可以调整的内核参数。 - tty
tty子目录包含了系统虚拟终端的信息。
8.理解Linux调优参数
在我们介绍Linux系统的各种调优参数和性能监测工具之前,需要先讨论一些关于性能调优的参数。因为Linux是一个开源操作系统,所以又大量可用的性能监测工具。对这些工具的选择取决于你的个人喜好和对数据细节的要求。所有的性能监测工具都是按照同样的规则来工作的,所以无论你使用哪种监测工具都需要理解这些参数。下面列出了一些重要的参数,有效的理解它们是很有用处的。
在我们介绍Linux系统的各种调优参数和性能监测工具之前,需要先讨论一些关于性能调优的参数。因为Linux是一个开源操作系统,所以又大量可用的性能监测工具。对这些工具的选择取决于你的个人喜好和对数据细节的要求。所有的性能监测工具都是按照同样的规则来工作的,所以无论你使用哪种监测工具都需要理解这些参数。下面列出了一些重要的参数,有效的理解它们是很有用处的。
(1)处理器参数
- CPU utilization
这是一个很简单的参数,它直观的描述了每个CPU的利用率。在xSeries架构中,如果CPU的利用率长时间的超过80%,就可能是出现了处理器的瓶颈。 - Runable processes
这个值描述了正在准备被执行的进程,在一个持续时间里这个值不应该超过物理CPU数量的10倍,否则CPU方面就可能存在瓶颈。 - Blocked
描述了那些因为等待I/O操作结束而不能被执行的进程,Blocked可能指出你正面临I/O瓶颈。 - User time
描述了处理用户进程的百分比,包括nice time。如果User time的值很高,说明系统性能用在处理实际的工作。 - System time
描述了CPU花费在处理内核操作包括IRQ和软件中断上面的百分比。如果system time很高说明系统可能存在网络或者驱动堆栈方面的瓶颈。一个系统通常只花费很少的时间去处理内核的操作。 - Idle time
描述了CPU空闲的百分比。 - Nice time
描述了CPU花费在处理re-nicing进程的百分比。 - Context switch
系统中线程之间进行交换的数量。 - Waiting
CPU花费在等待I/O操作上的总时间,与blocked相似,一个系统不应该花费太多的时间在等待I/O操作上,否则你应该进一步检测I/O子系统是否存在瓶颈。 - Interrupts
Interrupts值包括硬Interrupts和软Interrupts,硬Interrupts会对系统性能带来更多的不利影响。高的Interrupts值指出系统可能存在一个软件的瓶颈,可能是内核或者驱动程序。注意Interrupts值中包括CPU时钟导致的中断(现代的xServer系统每秒1000个Interrupts值)。
(2)内存参数
- Free memory
相比其他操作系统,Linux空闲内存的值不应该做为一个性能参考的重要指标,因为就像我们之前提到过的,Linux内核会分配大量没有被使用的内存作为文件系统的缓存,所以这个值通常都比较小。 - Swap usage
这个值描述了已经被使用的swap空间。Swap usage只表示了Linux管理内存的有效性。对识别内存瓶颈来说,Swap In/Out才是一个比较又意义的依据,如果Swap In/Out的值长期保持在每秒200到300个页面通常就表示系统可能存在内存的瓶颈。 - Buffer and cache
这个值描述了为文件系统和块设备分配的缓存。注意在Red Hat Enterprise Linux 3和更早一些的版本中,大部分空闲内存会被分配作为缓存使用。在Red Hat Enterprise Linux 4以后的版本中,你可以通过修改/proc/sys/vm中的page_cache_tuning来调整空闲内存中作为缓存的数量。 - Slabs
描述了内核使用的内存空间,注意内核的页面是不能被交换到磁盘上的。 - Active versus inactive memory
提供了关于系统内存的active内存信息,Inactive内存是被kswapd守护进程交换到磁盘上的空间。
(3)网络参数
- Packets received and sent
这个参数表示了一个指定网卡接收和发送的数据包的数量。 - Bytes received and sent
这个参数表示了一个指定网卡接收和发送的数据包的字节数。 - Collisions per second
这个值提供了发生在指定网卡上的网络冲突的数量。持续的出现这个值代表在网络架构上出现了瓶颈,而不是在服务器端出现的问题。在正常配置的网络中冲突是非常少见的,除非用户的网络环境都是由hub组成。 - Packets dropped
这个值表示了被内核丢掉的数据包数量,可能是因为防火墙或者是网络缓存的缺乏。 - Overruns
Overruns表达了超出网络接口缓存的次数,这个参数应该和packets dropped值联系到一起来判断是否存在在网络缓存或者网络队列过长方面的瓶颈。 - Errors
这个值记录了标志为失败的帧的数量。这个可能由错误的网络配置或者部分网线损坏导致,在铜口千兆以太网环境中部分网线的损害是影响性能的一个重要因素。
(4)块设备参数
- Iowait
CPU等待I/O操作所花费的时间。这个值持续很高通常可能是I/O瓶颈所导致的。 - Average queue length
I/O请求的数量,通常一个磁盘队列值为2到3为最佳情况,更高的值说明系统可能存在I/O瓶颈。 - Average wait
响应一个I/O操作的平均时间。Average wait包括实际I/O操作的时间和在I/O队列里等待的时间。 - Transfers per second
描述每秒执行多少次I/O操作(包括读和写)。Transfers per second的值与kBytes per second结合起来可以帮助你估计系统的平均传输块大小,这个传输块大小通常和磁盘子系统的条带化大小相符合可以获得最好的性能。 - Blocks read/write per second
这个值表达了每秒读写的blocks数量,在2.6内核中blocks是1024bytes,在早些的内核版本中blocks可以是不同的大小,从512bytes到4kb。 - Kilobytes per second read/write
按照kb为单位表示读写块设备的实际数据的数量。
转载于:https://blog.51cto.com/241072/57278