Category: Linux

  • CentOS 7 更改 interface name

    习惯于用 eth0 eth1 ,不习惯 em1, enp0s3,在 kickstart 文件中写如下脚本,使用 eth0, eth1

    # grub 的配置,关键是内核启动参数 net.ifnames=0 biosdevname=0
    
    cat << __EOT__ > /etc/default/grub
    GRUB_TIMEOUT=5
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet net.ifnames=0 biosdevname=0"
    GRUB_DISABLE_RECOVERY="true"
    __EOT__
    
    # 生成实际使用的 grub2.cfg
    grub2-mkconfig -o /boot/grub2/grub.cfg
    
    # 删掉不喜欢的 interface name
    rm -f /etc/sysconfig/network-scripts/ifcfg-em*
    rm -f /etc/sysconfig/network-scripts/ifcfg-en*
    
    # 创建 eth0, eth1 模板
    cat << __EOT__ > /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    BOOTPROTO="static"
    IPV6INIT="no"
    NM_CONTROLLED="yes"
    ONBOOT="yes"
    TYPE="Ethernet"
    IPADDR=192.168.x.x
    NETMASK=255.255.255.0
    GATEWAY=192.168.x.1
    __EOT__
    
    cat << __EOT__ > /etc/sysconfig/network-scripts/ifcfg-eth1
    DEVICE=eth1
    BOOTPROTO="static"
    IPV6INIT="no"
    NM_CONTROLLED="yes"
    ONBOOT="no"
    TYPE="Ethernet"
    __EOT__
    
  • sort命令

    对 /etc/hosts 文件排序默认是按字符串

    如果对 ip 排序

    sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n /etc/hosts
    sort -t . +0 -1n +1 -2n +2 -3n +3 -4n /etc/hosts

    发现一个简单方法

    sort -V /etc/hosts

    排序命令Sort
    sort -k 2,2
    -k, –key=POS1[,POS2]
    start a key at POS1 (origin 1), end it at POS2 (default end of line)

  • 使用nat时net.ipv4.tcp_timestamps参数

    在使用 iptables 做 nat 时,发现内网机器 ping 某个域名 ping 的通,而使用 curl 测试不通

    原来是 net.ipv4.tcp_timestamps 设置了为 1 ,即启用时间戳

    cat /proc/sys/net/ipv4/tcp_timestamps

    这时将其关闭

    修改 /etc/sysctl.conf 中

    net.ipv4.tcp_timestamps = 0
    sysctl -p

    生效

    原理

    问题出在了 tcp 三次握手,ping 的通 icmp ok ,http ssh mysql 都不 ok

    经过nat之后,如果前面相同的端口被使用过,且时间戳大于这个链接发出的syn中的时间戳,服务器上就会忽略掉这个syn,不返会syn-ack消息,表现为用户无法正常完成tcp3次握手,从而不能打开web页面。在业务闲时,如果用户nat的端口没有被使用过时,就可以正常打开;业务忙时,nat端口重复使用的频率高,很难分到没有被使用的端口,从而产生这种问题。

    只有客户端和服务端都开启时间戳的情况下,才会出现能ping通不能建立tcp三次握手的情况

     

  • 对比两个文件夹是否相同

    find dirname1 -type f  -exec md5sum {} + | awk '{print $1}' | sort | md5sum
    find dirname2 -type f  -exec md5sum {} + | awk '{print $1}' | sort | md5sum
    

    如果值不一样
    分别进入两个目录中

    for i in `ls`; do echo $i ; find $i -type f  -exec md5sum {} + | awk '{print $1}' | sort | md5sum ; done
    
  • 查看 ssd 寿命

    安装必要的软件

    yum install -y MegaCli Lib_Utils

    得到 device id

    /opt/MegaRAID/MegaCli/MegaCli64 -LdPdInfo -aALL | grep -B 30 'Solid State Device' | grep 'Device Id' 

    我这里得到的是 1, 下面用 smartctl 的时候跟上 ,1

    smartctl -a -d sat+megaraid,1 /dev/sdc  | grep Media_Wearout_Indicator

    Wear Levelling Count(颗粒平均擦写次数):最后一列为 0,即这块硬盘的全盘写入/擦除(P/E)数为 0 次,显示还有 100% 的寿命.

    ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
    233 Media_Wearout_Indicator 0x0032   100   100   000    Old_age   Always       -       0
  • dd清除GPT信息

    方法一

    dd if=/dev/zero of=/dev/sdb bs=512 count=2

    方法二

    parted /dev/sdb mklabel gpt

    参考:
    http://unix.stackexchange.com/questions/167500/using-dd-to-zero-a-gpt-table-from-disc-how-many-bytes-to-write