linux下hdparm查看硬盘信息

显示硬盘的相关设置
[root@cnscn ~]# hdparm /dev/sda
/dev/sda:
IO_support = 0 (default 16-bit)
readonly = 0 (off)
readahead = 256 (on)
geometry = 19929[柱面数]/255[磁头数]/63[扇区数], sectors = 320173056[总扇区数], start = 0[起始扇区数]

.显示硬盘的柱面、磁头、扇区数
[root@cnscn ~]# hdparm -g /dev/sda
/dev/sda:
geometry = 19929[柱面数]/255[磁头数]/63[扇区数], sectors = 320173056[总扇区数], start = 0[起始扇区数]

.评估硬盘的读取效率
[root@cnscn ~]# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 166 MB in 3.03 seconds = 54.85 MB/sec
[root@cnscn ~]# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 160 MB in 3.01 seconds = 53.11 MB/sec
[root@cnscn ~]# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 166 MB in 3.00 seconds = 55.31 MB/sec

.评估硬盘快取的读取效率
[root@cnscn ~]# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 3784 MB in 2.00 seconds = 1894.60 MB/sec
[root@cnscn ~]# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 3816 MB in 2.00 seconds = 1909.06 MB/sec
[root@cnscn ~]# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 3728 MB in 2.00 seconds = 1866.29 MB/sec

.检测IDE硬盘的电源管理模式
[root@cnscn ~]# hdparm -C /dev/sda
/dev/sda:
drive state is: standby [省电模式]
.显示IDE硬盘的内定硬件规格
[root@cnscn ~]# hdparm -i /dev/sda

.直接检测硬盘的硬件规格
[root@cnscn ~]# hdparm -I /dev/sda
/dev/sda:
ATA device, with non-removable media
Model Number: Maxtor 6B160M0
Serial Number: B404PTJH
Firmware Revision: BANC1BM0
Standards:
Supported: 7 6 5 4
Likely used: 7
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63

CHS current addressable sectors: 16514064
LBA user addressable sectors: 268435455
LBA48 user addressable sectors: 320173056
device size with M = 1024*1024: 156334 MBytes
device size with M = 1000*1000: 163928 MBytes (163 GB)
Capabilities:
LBA, IORDY(can be disabled)
Queue depth: 32
Standby timer values: spec’d by Standard, no device specific minimum
R/W multiple sector transfer: Max = 16 Current = 16
Advanced power management level: unknown setting (0×0000)
Recommended acoustic management value: 192, current value: 254
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* NOP cmd
* READ BUFFER cmd
* WRITE BUFFER cmd
* Host Protected Area feature set
* Look-ahead
* Write cache
* Power Management feature set
Security Mode feature set
* SMART feature set
* FLUSH CACHE EXT command
* Mandatory FLUSH CACHE command
* Device Configuration Overlay feature set
* 48-bit Address feature set
* Automatic Acoustic Management feature set
SET MAX security extension
Advanced Power Management feature set
* DOWNLOAD MICROCODE cmd
* General Purpose Logging feature set
* SMART self-test
* SMART error logging
Security:
Master password revision code = 65534
supported
not enabled
not locked
not frozen
not expired: security count
not supported: enhanced erase
Checksum: correct

.检测并设置IDE硬盘的32位I/O模式
检测
[root@cnscn ~]# hdparm -c /dev/sda
/dev/sda:
IO_support = 0 (default 16-bit) [默认16位I/O]
设置
[root@cnscn ~]# hdparm -c 1 /dev/sda

.检测并设置IDE硬盘的DMA模式
[root@cnscn ~]# hdparm -d /dev/sda
/dev/sda:

[root@cnscn ~]# hdparm -d 1 /dev/sda

.检测读取文件时,预先存入快取的扇区数
[root@cnscn ~]# hdparm -a /dev/sda
/dev/sda:
readahead = 256 (on)

.查询并设置硬盘多重扇区存取的扇区数,以增进硬盘的存取效率
[root@cnscn ~]# hdparm -m /dev/sda
[root@cnscn ~]# hdparm -m 参数值为整数值如8 /dev/sda
.将内顾虑缓冲的数据写入硬盘,并清除缓冲区的数据
[root@cnscn ~]# hdparm -f /dev/sda
来源:http://cw000.blog.51cto.com/1428057/566747

inotify-tools使用方法介绍

inotify-tools 是为linux下inotify文件监控工具提供的一套c的开发接口库函数,同时还提供了一系列的命令行工具,这些工具可以用来监控文件系统的事件。 inotify-tools是用c编写的,除了要求内核支持inotify外,不依赖于其他。inotify-tools提供两种工具,一是inotifywait,它是用来监控文件或目录的变化,二是inotifywatch,它是用来统计文件系统访问的次数。现在介绍一下它的使用方法。

安装方法

  1. wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
  2. tar xzf inotify-tools-3.14.tar.gz ;cd inotify-tools-3.14
  3. ./configure –prefix=/usr && make && su -c ‘make install’

使用例子

inotifywait

1、实时监控/home的所有事件(包括文件的访问,写入,修改,删除等)

  1. inotifywait -rm /home

2、监控/var/log/messeges中有关httpd的日志

  1. #!/bin/sh
  2.        while inotifywait -e modify /var/log/messages; do
  3.          if tail -n1 /var/log/messages | grep httpd; then
  4.            kdialog –msgbox "Apache needs love!"
  5.          fi
  6.        done

inotifywatch

1、统计/home文件系统的事件

  1. inotifywatch -v -e access -e modify -t 60 -r /home

参数说明

inotifywait

语法:
inotifywait [-hcmrq] [-e ] [-t ] [–format ] [–timefmt ] [ … ]
参数:
-h,–help
输出帮助信息
@
排除不需要监视的文件,可以是相对路径,也可以是绝对路径。
–fromfile
从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。
-m, –monitor
接收到一个事情而不退出,无限期地执行。默认的行为是接收到一个事情后立即退出。
-d, –daemon
跟–monitor一样,除了是在后台运行,需要指定–outfile把事情输出到一个文件。也意味着使用了–syslog。
-o, –outfile
输出事情到一个文件而不是标准输出。
-s, –syslog
输出错误信息到系统日志
-r, –recursive
监视一个目录下的所有子目录。
-q, –quiet
指定一次,不会输出详细信息,指定二次,除了致命错误,不会输出任何信息。
–exclude
正则匹配需要排除的文件,大小写敏感。
–excludei
正则匹配需要排除的文件,忽略大小写。
-t , –timeout
设置超时时间,如果为0,则无限期地执行下去。
-e , –event
指定监视的事件。
-c, –csv
输出csv格式。
–timefmt
指定时间格式,用于–format选项中的%T格式。
–format
指定输出格式。
%w 表示发生事件的目录
%f 表示发生事件的文件
%e 表示发生的事件
%Xe 事件以“X”分隔
%T 使用由–timefmt定义的时间格式

inotifywatch

语法:
inotifywatch [-hvzrqf] [-e ] [-t ] [-a ] [-d ] [ … ]
参数:
-h, –help
输出帮助信息
-v, –verbose
输出详细信息
@
排除不需要监视的文件,可以是相对路径,也可以是绝对路径。
–fromfile
从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。
-z, –zero
输出表格的行和列,即使元素为空
–exclude
正则匹配需要排除的文件,大小写敏感。
–excludei
正则匹配需要排除的文件,忽略大小写。
-r, –recursive
监视一个目录下的所有子目录。
-t , –timeout
设置超时时间
-e , –event
只监听指定的事件。
-a , –ascending
以指定事件升序排列。
-d , –descending
以指定事件降序排列。

可监听事件

access 文件读取
modify 文件更改。
attrib 文件属性更改,如权限,时间戳等。
close_write 以可写模式打开的文件被关闭,不代表此文件一定已经写入数据。
close_nowrite 以只读模式打开的文件被关闭。
close 文件被关闭,不管它是如何打开的。
open 文件打开。
moved_to 一个文件或目录移动到监听的目录,即使是在同一目录内移动,此事件也触发。
moved_from 一个文件或目录移出监听的目录,即使是在同一目录内移动,此事件也触发。
move 包括moved_to和 moved_from
move_self 文件或目录被移除,之后不再监听此文件或目录。
create 文件或目录创建
delete 文件或目录删除
delete_self 文件或目录移除,之后不再监听此文件或目录
unmount 文件系统取消挂载,之后不再监听此文件系统。

简单介绍RPM包制作方法

RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。使用rpm安装软件和管理软件非常的方便。而这节我们不是介绍如何使用rpm安装或管理软件,而是如何把源码制作成rpm包。
下面我们以制作nginx的rpm开始介绍其制作方法。以下操作在centos-5 32系统进行。

制作nginx的rpm例子

1、建立目录结构

/usr/src/redhat/SOURCES — 存放源代码,补丁,图标等文件。
/usr/src/redhat/SPECS — 存放用于管理rpm制作进程的spec文件。
/usr/src/redhat/BUILD — 解压后的文件存放在这里。
/usr/src/redhat/RPMS — 存放由rpmbuild制作好的二进制包。
/usr/src/redhat/SRPMS —存放由rpmbuild制作好的源码包。

  1. mkdir -p /usr/src/redhat
  2. cd /usr/src/redhat
  3. mkdir SOURCES SPECS BUILD RPMS SRPMS

2、下载源码包

下载源码包到SOURCES目录,不需要解压。

  1. cd /usr/src/redhat/SOURCES
  2. wget http://nginx.org/download/nginx-1.2.1.tar.gz

3、创建Spec文件

  1. cd /usr/src/redhat/SPECS
  2. vi nginx.spec

内容如下:

  1. #
  2. # Example spec file for nginx
  3. #
  4. Summary: high performance web server
  5. Name: nginx
  6. Version: 1.2.1
  7. Release: 1.el5.ngx
  8. License: 2-clause BSD-like license
  9. Group: Applications/Server
  10. Source: http://nginx.org/download/nginx-1.2.1.tar.gz
  11. URL: http://nginx.org/
  12. Distribution: Linux
  13. Packager: zhumaohai <[email protected]>
  14.  
  15. %description
  16. nginx [engine x] is a HTTP and reverse proxy server, as well as
  17. a mail proxy server
  18. %prep
  19. rm -rf $RPM_BUILD_DIR/nginx-1.2.1
  20. zcat $RPM_SOURCE_DIR/nginx-1.2.1.tar.gz | tar -xvf –
  21. %build
  22. cd nginx-1.2.1
  23. ./configure –prefix=/usr/local/nginx
  24. make
  25. %install
  26. cd nginx-1.2.1
  27. make install
  28. %preun
  29. if [ -z "`ps aux | grep nginx | grep -v grep`" ];then
  30. killall nginx >/dev/null
  31. exit 0
  32. fi
  33. %files
  34. /usr/local/nginx

4、开始RPM制作

在制作RPM包之前需要安装必要的工具,如rpmbuild,gcc等。

  1. yum install gcc rpm-build pcre-devel
  1. cd /usr/src/redhat/SPECS/
  2. rpmbuild -bb nginx.spec

一切顺利的话,会生成nginx的rpm包,/usr/src/redhat/RPMS/i386/nginx-1.2.1-1.el5.ngx.i386.rpm。

5、测试rpm包

  1. rpm -ivh /usr/src/redhat/RPMS/i386/nginx-1.2.1-1.el5.ngx.i386.rpm

spec文件解释

从以上的简单例子可以看出,制作rpm包最重要的还是spec文件,下面解释一下例子所用到的指令。
#:以#开头是注释,rpm会忽略它。
Summary:简单描述软件。
Name :定义rpm的名称。
Version: 定义软件版本
Release: 发行版本
License: 定义许可证
Group: 软件分类
Source: 源码下载地址
URL: 源码相关网站
Distribution: 发行版系列
Packager: 打包人的信息

%description:软件详细描述,可多行
%prep :软件编译之前的处理,如解压。
%build :开始编译软件,如make
%install :开始安装软件,如make install
%files :指定哪些文件需要被打包,如/usr/local/nginx
%preun :定义卸载之前的动作,如杀掉进程。
这里只介绍了几个常用的tag,更详细的请参考:http://www.rpm.org/max-rpm/ch-rpm-inside.html

修改xen vps系统时间

今天把博客vps搬到其它机房,连上新xen vps,修改时间,却怎么也不生效,特记录修改方法:

  1. cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  2. echo "xen.independent_wallclock=1" >>/etc/sysctl.conf
  3. /sbin/sysctl -p
  4. echo "/sbin/ntpdate  cn.pool.ntp.org" >>/etc/rc.local
  5. ntpdate cn.pool.ntp.org

centos安装或修复grub引导

有时候我们使用u盘安装linux系统,不小心把grub安装到u盘,导致引导需要插入u盘才能启动服务器,或者grub损坏,这时需要重新安装grub到硬盘。

安装grub方法1

指定/boot分区

  1. grub> root (hd0,0)

如果不确定/boot是在哪个分区,使用下面的命令找出。

  1. grub> find /boot/grub/stage1

安装grub到第一硬盘的MBR。

  1. grub> setup (hd0)

或者安装grub到第一硬盘第一分区引导扇区。

  1. grub> setup (hd0,0)

安装grub方法2

  1. # grub-install –root-directory=/boot /dev/hda

使用grub手动引导linux和windows

引导Linux

重启进入到grub菜单界面时,按“c”键进入grub命令模式。
1、指定/boot所在的分区,比如分区是第一块硬盘第一分区,即hd0,0

  1. grub> root (hd0,0)

2、指定kernel。

  1. grub> kernel /vmlinuz

3、指定initrd。

  1. grub> initrd /initrd

4、开始引导。

  1. grub> boot

引导windows

重启进入到grub菜单界面时,按“c”键进入grub命令模式。

  1. grub> rootnoverify (hd0,0)
  2. grub> chainloader +1
  3. grub> makeactive
  4. grub> boot

U盘安装CentOS系统

下面来简单说下使用U盘安装CentOS系统,这里以centos-6.2 i386 minimal为例安装。
使用到的材料:
1、centos-6.2 i386 minimal
下载地址:http://mirrors.163.com/centos/6.2/isos/i386/CentOS-6.2-i386-minimal.iso
2、UltraISO
下载地址:http://www.crsky.com/soft/1134.html
3、U盘一个
开始安装:
1、打开UltraISO,依次点击“文件”》“打开”,选择“CentOS-6.2-i386-minimal.iso”文件。
2、“启动”》“写入硬盘映像”,在“硬盘驱动器选择u盘”,写入方式默认即可,点击“格式化”格式u盘,最后“写入”即可完成。
3、完成写入后,只保留“images”和“isolinux”两个文件夹,其余的全部删除,然后复制CentOS-6.2-i386-minimal.iso到u盘根目录。
4、重启以u盘启动,选”Install or upgrade an existing system”回车,语言选择“Chinese(Simplified)”回车,选择键盘模式,默认,然后回车。在下一步“Installation Method”选择“Hard drive”,然后选择u盘所在的分区(不确定的可以一个个尝试)。下面就是常规的系统安装了。

增加Linux最大打开文件数/文件描述符

一、查看最大打开文件数

1、查看系统及最大打开文件数

  1. [root@localhost ~]# cat /proc/sys/fs/file-max
  2. 65535

2、查看当前用户最大打开文件数

  1. # ulimit -Hn //查看硬限制
  2. # ulimit -Sn //查看软限制

二、设置最大打开文件数

1、系统及的设置

  1. # vi /etc/sysctl.conf

增加:

  1. fs.file-max = 100000

立即生效:

  1. # sysctl -p

2、用户级设置

  1. vi /etc/security/limits.conf

设置如下:

  1. httpd soft nofile 4096
  2. httpd hard nofile 10240

httpd是用户,可以使用通配符*表示所有用户。
要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。
查看 /etc/pam.d/login 文件中有:

  1. session required /lib/security/pam_limits.so

也可以在/etc/profile后面加上ulimit -n 10240
使用如下命令立即生效:

  1. # su – httpd
  2. $ ulimit -Hn 10240
  3. $ ulimit -Sn 4096

Linux内核 sysctl.conf 优化设置

可以通过/etc/sysctl.conf控制和配置Linux内核及网络设置。

# 避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1

# 开启恶意icmp错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses = 1

# 开启SYN洪水攻击保护
net.ipv4.tcp_syncookies = 1

# 开启并记录欺骗,源路由和重定向包
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# 处理无源路由的包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# 开启反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# 确保无人能修改路由表
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0

# 不充当路由器
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# 开启execshild
kernel.exec-shield = 1
kernel.randomize_va_space = 1

# IPv6设置
net.ipv6.conf.default.router_solicitations = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 0
net.ipv6.conf.default.accept_ra_pinfo = 0
net.ipv6.conf.default.accept_ra_defrtr = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.default.dad_transmits = 0
net.ipv6.conf.default.max_addresses = 1

# 优化LB使用的端口

# 增加系统文件描述符限制
fs.file-max = 65535

# 允许更多的PIDs (减少滚动翻转问题); may break some programs 32768
kernel.pid_max = 65536

# 增加系统IP端口限制
net.ipv4.ip_local_port_range = 2000 65000

# 增加TCP最大缓冲区大小
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608

# 增加Linux自动调整TCP缓冲区限制
# 最小,默认和最大可使用的字节数
# 最大值不低于4MB,如果你使用非常高的BDP路径可以设置得更高

# Tcp窗口等
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_window_scaling = 1
转自:http://www.hit008.com/read.php?5

通过调整Linux内核参数提升网络性能

如下网络配置参数调整,主要是针对请求压力大的Linux (2.6 kernel)服务器而言.
如果服务器压力不大,那么维持默认即可.

下述内容取材于”Performance Tuning For Linux Server”一书.

  1. $ /proc/sys/net/core/wmem_max

最大socket写buffer,可参考的优化值:873200

  1. $ /proc/sys/net/core/rmem_max

最大socket读buffer,可参考的优化值:873200

  1. $ /proc/sys/net/ipv4/tcp_wmem

TCP写buffer,可参考的优化值: 8192 436600 873200

  1. $ /proc/sys/net/ipv4/tcp_rmem

TCP读buffer,可参考的优化值: 32768 436600 873200

  1. $ /proc/sys/net/ipv4/tcp_mem

同样有3个值,意思是:
net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力.
net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段.
net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket.
上述内存单位是页,而不是字节.
可参考的优化值是:786432 1048576 1572864

  1. $ /proc/sys/net/core/netdev_max_backlog

进入包的最大设备队列.默认是300,对重负载服务器而言,该值太低,可调整到1000.

  1. $ /proc/sys/net/core/somaxconn

listen()的默认参数,挂起请求的最大数量.默认是128.对繁忙的服务器,增加该值有助于网络性能.
可调整到256.

  1. $ /proc/sys/net/core/optmem_max

socket buffer的最大初始化值,默认10K.

  1. $ /proc/sys/net/ipv4/tcp_max_syn_backlog

进入SYN包的最大请求队列.默认1024.对重负载服务器,增加该值显然有好处.
可调整到2048.

  1. $ /proc/sys/net/ipv4/tcp_retries2

TCP失败重传次数,默认值15,意味着重传15次才彻底放弃.可减少到5,以尽早释放内核资源.

  1. $ /proc/sys/net/ipv4/tcp_keepalive_time
  2. $ /proc/sys/net/ipv4/tcp_keepalive_intvl
  3. $ /proc/sys/net/ipv4/tcp_keepalive_probes

这3个参数与TCP KeepAlive有关.默认值是:
tcp_keepalive_time = 7200 seconds (2 hours)
tcp_keepalive_probes = 9
tcp_keepalive_intvl = 75 seconds
意思是如果某个TCP连接在idle 2个小时后,内核才发起probe.
如果probe 9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效.
对服务器而言,显然上述值太大. 可调整到:

  1. /proc/sys/net/ipv4/tcp_keepalive_time  1800
  2. /proc/sys/net/ipv4/tcp_keepalive_intvl  30
  3. /proc/sys/net/ipv4/tcp_keepalive_probes  3
  1. $ proc/sys/net/ipv4/ip_local_port_range

指定端口范围的一个配置,默认是32768 61000,已够大.
原文:http://butian.org/knowledge/linux/1402.html