操作系统

当前位置:金沙棋牌 > 操作系统 > ctime的区别及如何降低atime更新,6系列最小化安装

ctime的区别及如何降低atime更新,6系列最小化安装

来源:http://www.logblo.com 作者:金沙棋牌 时间:2019-09-01 13:32

金沙棋牌 ,关闭Centos写磁盘功能

一个Linux文件默认有3个时间。

  • atime:对此文件的访问时间。

  • ctime:此文件inode发生变化的时间。

  • mtime:此文件的修改时间。

如果有多个小文件(比如Web服务器的页面上有多个小图片),通常就没有必要记录文件的访问时间了,这样可以减少写磁盘的I/O。这要如何配置呢?

首先,修改文件系统的配置文件:vim /etc/fstab。然后,在包含大量小文件的分区中使用noatime和nodiratime这两个命 令。

例如:/dev/sda5 /data/pics ext3 noatime,nodiratime 0 0这样文件被访问时就不会再产生写磁盘的I/O了。

一个Linux文件默认有3个时间。 atime:对此文件的访问时间。 ctime:此文件inode发生变化的时间。 mtime:此文件的修改时...

mount BlockDevice MountPoint -o noatime

增加具有sudo权限的用户

添加用户的步骤和过程比较简单(这里略过),由于系统已经禁止了root远程登录,因此需要一个具有sudo权限的admin用户,权限跟root相当,这里用vim命令,在打开的/etc/sudoers文件内容里添加如下内容:

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
admin   ALL=(ALL)       ALL
#如果在进行sudo切换时不想输入密码,可以做如下更改:
#admin  ALL=(ALL) NOPASSWD:ALL

[root@localhost tmp]# ll

ls -l filename 列出文件的 mtime  ll 查看的是mtime

启动网卡

在配置CentOS 6.4的网卡IP地址时,容易忽略的一项是Linux在启动时未启动网卡,其后果很明显,那就是该Linux机器永远也没有IP地址。下面是一台线上环境服务器网卡/etc/sysconfig/network-scripts/ifcfg-eth0文件的配置内容:

DEVICE=eth0
BOOTPROTO=static
HWADDR=00:14:22:1B:71:20
IPV6INIT=no
IPV6_AUTOCONF=yes
ONBOOT=yes   ——>此项一定要记得更改为yes,它会在系统引导时就启动网卡设备
NETMASK=255.255.255.192
IPADDR=203.93.236.146
GATEWAY=203.93.236.129
TYPE=Ethernet
PEERDNS=yes   ——>允许用从DHCP处获得的DNS覆盖本地的DNS
USERCTL=no    ——>不允许普通用户修改网卡

-rw-r--r--. 1 root root 0 1月 17 18:40 chaoxi  

 

Linux服务器 CentOS 6系列最小化安装优化脚本详解02————修改history记录、定时校正服务器时间、停止IPv6网络服务、调整最大文件打开数、关闭写磁盘I/O功能、配置SSH服务

ll -u 查看atime  

对于某些用户某些应用,atime 信息可能是必要的,比如本节一开始提到的邮件程序和备份工具。如果完全禁止 atime 更新会使这些程序无法正常工作。针对这种情况,Linux 在内核 2.6.20 中添加了一个新的 mount 选项 relatime(relative atime 的意思)。relatime 的意思是访问文件时,仅在 atime 早于文件的更改时间时对 atime 进行更新。在内核 2.6.24 中,又对 relatime 进行了扩展,在访问文件时,当 atime 已经超过某个时间(例如一天)没有更新,就对 atime 进行更新。这个扩展的意思就是调整 atime 的更新粒度。

停止IPv6网络服务

默认状态下,IPv6是被启用的。可以使用如下命令查看:

[root@private ~]# lsmod | grep ipv6
nf_conntrack_ipv6       8748  2 
nf_defrag_ipv6         11182  1 nf_conntrack_ipv6
nf_conntrack           79758  3 nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state
ipv6                  317340  267 ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6
[root@private ~]# 

可以根据业务的需求进行选择是否禁用IPv6。
首先需要确认IPv6是否处于被启动的状态,命令如下:

[root@private ~]# ifconfig -a
eth1      Link encap:Ethernet  HWaddr FA:16:3E:59:FE:45  
          inet addr:192.168.0.4  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::f816:3eff:fe59:fe45/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24806 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17881 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8638429 (8.2 MiB)  TX bytes:1753384 (1.6 MiB)
          Interrupt:45 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:10 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:700 (700.0 b)  TX bytes:700 (700.0 b)

[root@private ~]#

通过ifconfig命令发现当前处于被启动的状态,修改对于配置文件,停止IPv6,命令如下:

[root@private ~]# echo "install ipv6 /bin/true" > /etc/modprobe.d/disable-ipv6.conf
#每当系统需要加载ipv6模块时,强行执行/bin/ture来代替实际加载的模块
[root@private ~]# echo "IPV6INIT=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0
#禁用基于IPv6网络,使之不会触发启动

[root@localhost tmp]# ll -c

BlockDevice
指定 GFS2 文件系统所在的块设备。

修改SSH登录配置

SSH服务配置优化,请保持机器中至少包含一个具有sudo权限的用户,下面的配置会禁止root远程登录,代码内容如下所示:

sed -i 's@#PermitRootLogin yes@PermitRootLogin no@' /etc/ssh/sshd_config 
#禁止root远程登录
sed -i 's@#PermitEmptyPasswords no@PermitEmptyPasswords no@' /etc/ssh/sshd_config       
#禁止空密码登录
sed -i 's@#UseDNS yes@UseDNS no@' /etc/ssh/sshd_config /etc/ssh/sshd_config 
#关闭SSH反向查询,以加快SSH的访问速度

在/tmp/chaoxi中添加内容,ctime、mtime都发生变化

在这个示例中,GFS2 文件系统位于 /dev/vg01/lvol0,并挂载到关闭了 atime 更新的 /mygfs2 目录中。

关闭写磁盘I/O功能

Linux文件默认有3个时间,分别如下所示。

  • atime:对此文件的访问时间。
  • ctime:此文件inode发生变化的时间。
  • mtime:此文件的修改时间。
    如果有多个小文件(比如Web服务器的页面上有多个小图片),通常是没有必要记录文件的访问时间的,这样就可以减少写磁盘的I/O,可这要如何配置呢?
    首先,修改文件系统的配置文件/etc/fstab,然后,在包含大量小文件的分区中使用noatime和nodiratime这两个命令。例如:
/dev/sda5 /data/pics ext3 noatime,nodiratime 0 0

这样文件被访问时就不会再产生写磁盘的I/O了。

[root@localhost tmp]# ll -c

用法

修改SHELL命令的history记录个数

通过修改/etc/profile中的HISTSIZE的值即可,使用sed命令修改如下:

[root@private ~]# sed -n '/HISTSIZE/p' /etc/profile
HISTSIZE=1000
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
[root@private ~]# sed -n '/HISTSIZE=/ s/=.*/=100/p' /etc/profile
HISTSIZE=100
[root@private ~]# sed -i '/HISTSIZE=/ s/=.*/=100/' /etc/profile
[root@private ~]# sed -n '/HISTSIZE/p' /etc/profile
HISTSIZE=100
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

-rw-r--r--. 1 root root 7 1月 17 18:41 chaoxi

ls -lu filename 列出文件的 atime

定时校正服务器时间

[root@private ~]# yum -y install ntp
[root@private ~]# crontab -e -u  root
*/5 * * * * /usr/sbin/ntpdate ntp.api.bz
#ntp.api.bz是一组NTP服务器,目前分散在上海和浙江电信
[root@private ~]# /usr/sbin/ntpdate ntp.api.bz
 6 Jun 00:56:24 ntpdate[107454]: adjust time server 17.253.72.243 offset 0.010472 sec
 #可以使用dig命令查看
 [root@private ~]# dig ntp.api.bz

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> ntp.api.bz
;; global options:  cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42597
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;ntp.api.bz.            IN  A

;; ANSWER SECTION:
ntp.api.bz.     60  IN  CNAME   time.asia.apple.com.
time.asia.apple.com.    78080   IN  CNAME   time-ios.g.aaplimg.com.
time-ios.g.aaplimg.com. 38  IN  A   17.253.72.243
time-ios.g.aaplimg.com. 38  IN  A   17.253.72.241
time-ios.g.aaplimg.com. 38  IN  A   17.253.84.125

;; Query time: 32 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Tue Jun  6 00:57:02 2017
;; MSG SIZE  rcvd: 142

[root@localhost tmp]# ll -u

MountPoint
指定要挂载 GFS2 文件系统的目录。

调整Linux的最大文件打开数

调整Linux的最大文件打开数,否则运行Squid服务的机器在高负载均衡时,执行性能会很差。或者在Linux上部署应用时,有时候也会遇到“too many open files”这样的问题。
其实Linux是有文件句柄限制的,但是默认值是1024,生产环境下比较容易打开这个值,所以需要进行调整。

下面打开/etc/security/limit.conf命令,在最后一行添加如下命令:

* soft nofile 65535
* hard nofile 65535

正解的做法应该是除了以上步骤之外,还要在系统的/etc/rc.local文件里添加如下内容:
ulimit -SHn 65535
另外,ulimit-n命令并不能真正看到文件的最大文件打开数,可用如下脚本查看:

#!/bin/bash
for pid in `ps aux |grep nginx |grep -v grep|awk '{print $2}'`
do
cat /proc/${pid}/limits |grep 'Max open files'
done

[root@localhost tmp]# chmod 755 chaoxi

二、atime更新的一些问题及解决方法

我的/tmp目录现在是空的,新建一个文件chaoxi,查看发现三个时间一致

示例

首先我们需要知道如何查看相应的时间:

那么,显而易见这三个时间的变化应该是很频繁的,我现在运维的有一个mysql集群,读写很频繁,可以在/etc/fstab使用noatime、nodiratime两个参数来避免文件系统不断记录文件的访问时间产生的磁盘I/O。如下:

如果不想对整个文件系统禁止 atime 更新,而只是想针对某些文件或目录禁止,则可以通过 chattr 命令来完成,如下面的命令:

相信各位Linux系统管理员经常接触到以下三种时间,ctime改变时间(change time)、mtime修改时间(modification time)、atime访问时间(access time),它们三个有什么区别呢?我们又该如何去对待它们呢?

当挂载文件系统时,可指定 Linux 挂载选项 noatime,它可在那个文件系统中禁用 atime 更新。

[root@localhost tmp]# ls

1)使用 noatime 挂载

ll 查看mtime

但是对于大部分应用来说,atime 信息并不重要,而系统更新 atime 所带来的开销却是巨大的。因为系统每访问一次某个文件,就要对这个文件更新一个新的 atime 时间值。我这里所说的访问,并不是从用户角度来看的打开一个文件,而是系统底层的每一次 open 和 read 等操作。设想一下,我们每对文件进行一次读操作,都要引起一个对磁盘的写操作,即使我们要读的内容已经存在于内存的 Page Cache 中,还是要对磁盘进行一个写操作。这样引起的开销确实是巨大的,这些写操作会使磁盘更多的处于忙碌状态,这对系统性能(因为磁盘在完成一个写操作的时候会暂时阻止其他的写操作)以及电量消耗都是不利的。

ll -c 查看ctime

除了 noatime,还有两个和 atime 相关的文件系统选项。一个是 nodiratime,此选项只针对目录禁止进行 atime 更新(注意 noatime 对文件和目录都生效,是 nodiratime 的超集)。这样就可以使 ls这样的命令不会更新目录的 atime 值。

[root@localhost tmp]# ll -c

一、每个文件内节点和目录内节点都有三个与之相关的时间戳:

-rw-r--r--. 1 root root 0 1月 17 18:40 chaoxi

可以对某个目录及其下面的所有文件禁止 atime 更新。

-rw-r--r--. 1 root root 7 1月 17 18:41 chaoxi

ls命令查看:
ls -lc filename 列出文件的 ctime

-rw-r--r--. 1 root root 7 1月 17 18:41 chaoxi  

也可以将 noatime 选项写在 /etc/fstab 文件里。

[root@localhost tmp]# ll

根据 POSIX 的规定,Linux 以及 Unix 等系统都要为系统中的所有文件记录文件的最后访问时间,叫做 atime。对于某些应用来说,atime 是很重要的信息。比如一些邮件程序会通过邮件文件的 atime 来判断此邮件是否已读;一些备份和清理程序会根据文件在多长时间内没有被访问,来决定是否对文件进行清理和归档。

-rw-r--r--. 1 root root 0 1月 17 18:40 chaoxi

目前 relatime 还没有被广泛的应用,因为许多 Linux 发行版的内核版本和 mount 命令还没有支持这个选项。如果你的系统支持 relatime,可以使用方法2

金沙棋牌 1

你可以通过stat来查看文件的mtime,ctime,atime等属性,也可以通过ls命令来查看,具体如下:
stat filename

[root@localhost tmp]# cat chaoxi

 

/dev/mapper/VolGrouplv_root / ext4 noatime,nodiratime 0 0

chattr -R A /some/dir

[root@localhost tmp]# ll -c

atime、mtime、ctime的区别及如何降低atime更新 mount时的option  noatime

[root@localhost tmp]# ll

使用 noatime 挂载,可在那个文件系统中禁用 atime 更新。

[root@localhost tmp]# ll -u

ctime — 最后一次修改inode属性的时间
mtime — 最后一次修改文件(或者目录)数据的时间
atime — 最后一次访问文件(或者目录)数据的时间

[root@localhost tmp]# ll -u

如果启用了 atime 更新,因为在 GFS2 和其它 Linux 文件系统中这是默认设置,那么每次在读取文件时都需要更新其内节点  inode

-rw-r--r--. 1 root root 7 1月 17 18:41 chaoxi

有两个可用来降低 atime 更新效果的方法:

[root@localhost tmp]# touch chaoxi

mount /dev/vg01/lvol0 /mygfs2 -o noatime

[root@localhost tmp]# echo "chaoxi" > /tmp/chaoxi

查看/tmp/chaoxi内容,只有atime变化

-rw-r--r--. 1 root root 7 1月 17 18:40 chaoxi  

chaoxi

[root@localhost tmp]# ll

-rwxr-xr-x. 1 root root 7 1月 17 18:41 chaoxi

-rwxr-xr-x. 1 root root 7 1月 17 18:41 chaoxi  

[root@localhost tmp]# ll -u

修改/tmp/chaoxi文件权限,只有ctime变化

-rw-r--r--. 1 root root 7 1月 17 18:41 chaoxi

-rwxr-xr-x. 1 root root 7 1月 17 18:42 chaoxi

到这里我们大致验证了这三个时间的一些变化规律,可以得到一个粗浅的结论:ctime是在写入文件、更改属主、权限或着链接时随Inode的内容更改而变化的;mtime是在写入文件时随文件内容的更改而变化的;atime是在读取文件或者执行文件时变化的。

本文由金沙棋牌发布于操作系统,转载请注明出处:ctime的区别及如何降低atime更新,6系列最小化安装

关键词: