在CentOS 7 上使用PaceMaker构建NFS HA服务

基本环境

  • 总共四台虚拟机,安装CentOS 7 X64系统。

  • 每台虚拟机两张网卡,分别连接两个网络,NAT网络192.168.195.0,仅主机网络192.168.162.0。

  • Target主机安装iSCSI TGT服务,提供共享存储服务。

  • Test1和Test2主机利用Target主机提供的共享存储对外提供A/P结构的NFS服务,使用PaceMaker进行集群管理。

  • Develop主机mount有Test主机提供的NFS服务并测试其功能。

网络配置

IP地址

使用静态IP地址,并按如下的方式进行配置。

Target
	eth0 : 192.168.195.131
	eth1 : 192.168.162.131

Test1
	eth0 : 192.168.195.132
	eth1 : 192.168.162.132

Test2
	eth0 : 192.168.195.133
	eth1 : 192.168.162.133

Develop
	eth0 : 192.168.195.136
	eth1 : 192.168.162.136

NFS使用的浮动IP为:192.168.195.200。

域名解析

在四台机器的域名解析文件下增加如下部分,并确保相互可以ping通。

$ vi /etc/hosts
192.168.195.131 target
192.168.195.132 test1
192.168.195.133 test2
192.168.195.136 develop

配置iSCSI

安装tgt服务

在Target主机上执行如下操作:

安装软件包

$ yum install -y scsi-target-utils iscsi-initiator-utils

配置tgt服务,使用/dev/sdd1分区作为第一个LUN,密码为nfsha。

$ cp -v /etc/tgt/targets.conf /etc/tgt/targets.conf.bak
$ vi /etc/tgt/targets.conf
<target iqn.2016-12.org.lr:lvm>
  backing-store /dev/sdd1
  initiator-address 192.168.0.0/16
  incominguser nfsha nfsha
</target>

在LVM中忽略掉/dev/sdd1分区。

$ vi /etc/lvm/lvm.conf
global_filter = [ "a|/dev/sdc|","r|.*/|" ]

重启服务

$ systemctl enable tgtd.service
$ systemctl restart tgtd.service
$ systemctl status tgtd.service

$ tgtadm -L iscsi -m target -o show

配置initiator客户端

在Test1,Test2,Develop三个主机上执行如下操作:

安装软件包。

$ yum install -y iscsi-initiator-utils

设置客户端名称,把XXX分别换成test1,test2,develop。

$ vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2016-12.com.lr:XXX

设置验证协议和密码。

$ vi /etc/iscsi/iscsid.conf
node.session.auth.authmethod = CHAP
node.session.auth.username = nfsha
node.session.auth.password = nfsha

重启服务。

$ systemctl enable iscsid.service
$ systemctl restart iscsid.service
$ systemctl status iscsid.service

发现及添加存储。

$ iscsiadm -m discovery -t st -p 192.168.195.131
$ iscsiadm -m node -T iqn.2016-12.org.lr:lvm -p 192.168.195.131:3260 -l
$ iscsiadm -m discovery -t st -p 192.168.162.131
$ iscsiadm -m node -T iqn.2016-12.org.lr:lvm -p 192.168.162.131:3260 -l

查看新添加的存储。

$ iscsiadm -m node –l
192.168.195.131:3260,1 iqn.2016-12.org.lr:lvm
192.168.162.131:3260,1 iqn.2016-12.org.lr:lvm
$ ll /dev/sd*
brw-rw---- 1 root disk 8,0 11月 24 16:25 /dev/sda
brw-rw---- 1 root disk 8,1 11月 24 16:25 /dev/sda1
brw-rw---- 1 root disk 8,2 11月 24 16:25 /dev/sda2
brw-rw---- 1 root disk 8,3 11月 24 16:25 /dev/sda3
brw-rw---- 1 root disk 8,16 11月 24 16:25 /dev/sdb
brw-rw---- 1 root disk 8,17 11月 24 16:25 /dev/sdb1
brw-rw---- 1 root disk 8,32 11月 24 16:25 /dev/sdc
brw-rw---- 1 root disk 8,48 11月 24 16:25 /dev/sdd
brw-rw---- 1 root disk 8,64 11月 24 16:25 /dev/sde
brw-rw---- 1 root disk 8,80 11月 24 16:25 /dev/sdf

新生成的设备为sde和sdf。

增加多路径

在Test1,Test2,Develop三个主机上执行如下操作:

安装软件包并加载驱动。

$ yum install -y device-mapper*
$ modprobe dm-multipath

查看iSCSI设备的WWID。

$ /lib/udev/scsi_id -g -u /dev/sde
360000000000000000e00000000010001

配置多路径名称。

$ vi /etc/multipath.conf
blacklist {
  devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
  devnode "^sd[a-d][0-9]*"
}

defaults {
  user_friendly_names yes
  path_grouping_policy multibus
  failback immediate
  no_path_retry fail
}

multipaths {
  multipath {
    wwid 360000000000000000e00000000010001
    alias lvm
  }
}

启动服务

$ mkdir /run/multipathd/ -pv
$ touch /run/multipathd/multipathd.pid
$ chmod 777 /run/multipathd/multipathd.pid

$ systemctl enable multipathd.service
$ systemctl restart multipathd.service
$ systemctl status multipathd.service
$ reboot

刷新multipath缓存

$ multipath -F
$ multipath -v2
$ multipath -ll
lvm (360000000000000000e00000000010001) dm-2 IET,VIRTUAL-DISK    
size=10G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
  |- 4:0:0:1 sde 8:64 active ready running
  `- 3:0:0:1 sdf 8:80 active ready running

配置LVM

允许LVM扫描iscsi设备

$ vi /etc/lvm/lvm.conf
filter = [ "a|/dev/mapper/lvm|","r|.*/|" ]

创建LVM分区

$ pvcreate /dev/mapper/lvm
$ vgcreate storage /dev/mapper/lvm

$ lvcreate -L 10G -n test storage

配置LVM,设置locking_type为1,设置use_lvmetad为0,禁用lvmetad服务。

$ lvmconf --enable-halvm --services --startstopservices

设置volume_list,排除我们要使用的storage卷组,避免系统自动激活。

$ vgs --noheadings -o vg_name
  storage
$ vi /etc/lvm/lvm.conf
volume_list = [  ]

重建initramfs,避免内核启动时,卷组自动激活。

$ dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)

重启系统,使配置生效。

$ reboot

配置集群服务

初始化设置

在Test1和Test2上进行如下配:

禁用防火墙

$ systemctl disable firewalld
$ systemctl stop firewalld
Or
$ firewall-cmd --permanent --add-service=high-availability
$ firewall-cmd --add-service=high-availability
$ firewall-cmd --reload

禁用SeLinux

$ setenforce 0
$ sed -i.bak "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
$ reboot

安装软件包。

$ yum install pcs pacemaker fence-agents-all

修改集群账号密码

$ passwd hacluster
$ cat /etc/passwd | grep hacluster
hacluster:x:189:189:cluster user:/home/hacluster:/sbin/nologin

重启服务

$ systemctl start pcsd.service
$ systemctl enable pcsd.service
$ systemctl status pcsd.service

初始化集群

在任意一个Test节点上进行如下配:

认证集群账户

$ pcs cluster auth test1 test2
Username: hacluster
Password: 
test1: Authorized
test2: Authorized

创建集群

$ pcs cluster setup --start --name my_cluster test1 test2
Shutting down pacemaker/corosync services...
Redirecting to /bin/systemctl stop  pacemaker.service
Redirecting to /bin/systemctl stop  corosync.service
Killing any remaining services...
Removing all cluster configuration files...
test1: Succeeded
test2: Succeeded
Starting cluster on nodes: test1,test2...
test2: Starting Cluster...
test1: Starting Cluster...
Synchronizing pcsd certificates on nodes test1,test2...
test1: Success
test2: Success

Restaring pcsd on the nodes in order to reload the certificates...
test1: Success
test2: Success

手动启动集群

$ pcs cluster start

设置集群开机启动

$ pcs cluster enable --all

查看集群状态

$ pcs cluster status
test1: Success
test2: Success

$ pcs cluster enable --all
test1: Cluster Enabled
test2: Cluster Enabled

$ pcs cluster status
Cluster Status:
 Last updated: Tue Dec 13 14:58:32 2016		Last change: Tue Dec 13 14:57:07 2016 by hacluster via crmd on test2
 Stack: corosync
 Current DC: test2 (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum
 2 nodes and 0 resources configured
 Online: [ test1 test2 ]

PCSD Status:
  test1: Online
  test2: Online

配置fence设备

安装插件软件包

$ yum install -y fence-*

查看可用fence插件

$ pcs stonith list

查看fence插件使用说明

$ pcs stonith describe fence_kdump
fence_kdump - Fence agent for use with kdump

The fence_kdump agent is intended to be used with with kdump service.

Stonith options:
  nodename: Name or IP address of node to be fenced
  ipport: Port number
  family: Network family
  action: Fencing action
  timeout: Timeout in seconds
  verbose: Print verbose output
  version: Print version
  usage: Print usage
  priority: The priority of the stonith resource. Devices are tried in order of highest priority to lowest.
  pcmk_host_map: A mapping of host names to ports numbers for devices that do not support host names.
  pcmk_host_list: A list of machines controlled by this device (Optional unless pcmk_host_check=static-list).
  pcmk_host_check: How to determine which machines are controlled by the device.
  pcmk_delay_max: Enable random delay for stonith actions and specify the maximum of random delay

创建fence_kdump。

$ pcs stonith create my_fence fence_kdump test1

查看fence状态。

$ pcs stonith show my_fence
 Resource: my_fence (class=stonith type=fence_kdump)
  Operations: monitor interval=60s (my_fence-monitor-interval-60s)

配置NFS服务

创建文件系统资源

创建NFS分区,并格式化为ext4文件系统。

$ lvcreate -L 50G -n nfs storage
$ mkfs.ext4 /dev/storage/nfs

挂载NFS分区。

$ mkdir /mnt/nfs
$ mount /dev/storage/nfs /mnt/nfs

创建NFS目录和测试文件。

$ mkdir -pv /mnt/nfs/exports
$ mkdir -pv /mnt/nfs/exports/export1
$ mkdir -pv /mnt/nfs/exports/export2

$ touch /mnt/nfs/exports/export1/clientdatafile1
$ touch /mnt/nfs/exports/export2/clientdatafile2

卸载NFS分区,并去激活LVM卷组。

$ umount /dev/storage/nfs
$ vgchange -an storage

创建LVM资源,以便激活卷组。

$ pcs resource create my_lvm LVM volgrpname=storage exclusive=true --group nfsgroup

创建文件系统资源。

$ pcs resource create nfsshare Filesystem \
device=/dev/storage/nfs directory=/mnt/nfs fstype=ext4 --group nfsgroup

创建导出资源

创建NFS服务资源。

$ pcs resource create nfs-daemon nfsserver \
nfs_shared_infodir=/mnt/nfs/nfsinfo nfs_no_notify=true --group nfsgroup

创建exportfs资源。

$ pcs resource create nfs-root exportfs clientspec=192.168.0.0/255.255.0.0 \
options=rw,sync,no_root_squash directory=/mnt/nfs/exports fsid=0 --group nfsgroup

$ pcs resource create nfs-export1 exportfs clientspec=192.168.0.0/255.255.0.0 \
options=rw,no_root_squash directory=/mnt/nfs/exports/export1 fsid=1 --group nfsgroup

$ pcs resource create nfs-export2 exportfs clientspec=192.168.0.0/255.255.0.0 \
options=rw,no_root_squash directory=/mnt/nfs/exports/export2 fsid=2 --group nfsgroup

创建浮动IP资源。

$ pcs resource create nfs_ip IPaddr2 ip=192.168.195.200 cidr_netmask=24 --group nfsgroup

创建nfsnotify资源。

$ pcs resource create nfs-notify nfsnotify source_host=192.168.195.200 --group nfsgroup

查看当前状态。

$ pcs status
Cluster name: my_cluster
Last updated: Tue Dec 13 15:09:27 2016		Last change: Tue Dec 13 15:09:15 2016 by root via cibadmin on test1
Stack: corosync
Current DC: test2 (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum
2 nodes and 9 resources configured

Online: [ test1 test2 ]

Full list of resources:

 my_fence	(stonith:fence_kdump):	Started test1
 Resource Group: nfsgroup
     my_lvm	(ocf::heartbeat:LVM):	Started test2
     nfsshare	(ocf::heartbeat:Filesystem):	Started test2
     nfs-daemon	(ocf::heartbeat:nfsserver):	Started test2
     nfs-root	(ocf::heartbeat:exportfs):	Started test2
     nfs-export1	(ocf::heartbeat:exportfs):	Started test2
     nfs-export2	(ocf::heartbeat:exportfs):	Started test2
     nfs_ip	(ocf::heartbeat:IPaddr2):	Started test2
     nfs-notify	(ocf::heartbeat:nfsnotify):	Started test2

PCSD Status:
  test1: Online
  test2: Online

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

验证和测试

在Develop节点上进行如下测试。

查看当前导出的文件系统

$ showmount -e 192.168.195.200
Export list for 192.168.195.200:
/mnt/nfs/exports/export1 192.168.0.0/255.255.0.0
/mnt/nfs/exports         192.168.0.0/255.255.0.0
/mnt/nfs/exports/export2 192.168.0.0/255.255.0.0

验证NFSv4

$ mkdir nfsshare
$ mount -o "vers=4" 192.168.195.200:export1 nfsshare
$ mount | grep nfsshare
192.168.195.200://export1 on /root/nfsshare type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.195.136,local_lock=none,addr=192.168.195.200)
$ ls nfsshare
clientdatafile1
$ umount nfsshare

验证NFSv3

$ mkdir nfsshare
$ mount -o "vers=3" 192.168.195.200:/mnt/nfs/exports/export2 nfsshare
$ mount | grep nfsshare
    192.168.195.200:/mnt/nfs/exports/export2 on /root/nfsshare type nfs (rw,vers=3,mountaddr=192.168.195.200,mountvers=3,mountport=20048,mountproto=udp,addr=192.168.195.200)
$ ls nfsshare
clientdatafile2
$ umount nfsshare

Failover测试

使用NFSv4挂载export1。

$ mkdir nfsshare
$ mount -o "vers=4" 192.168.195.200:export1 nfsshare
$ ls nfsshare

查看集群运行状态,当前服务全部运行在Test2节点上。

$ Cluster name: my_cluster
Last updated: Tue Dec 13 15:20:53 2016		Last change: Tue Dec 13 15:20:50 2016 by root via crm_attribute on test1
Stack: corosync
Current DC: test2 (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum
2 nodes and 9 resources configured

Online: [ test1 test2 ]

Full list of resources:

 my_fence	(stonith:fence_kdump):	Started test1
 Resource Group: nfsgroup
     my_lvm	(ocf::heartbeat:LVM):	Started test2
     nfsshare	(ocf::heartbeat:Filesystem):	Started test2
     nfs-daemon	(ocf::heartbeat:nfsserver):	Started test2
     nfs-root	(ocf::heartbeat:exportfs):	Stopped
     nfs-export1	(ocf::heartbeat:exportfs):	Stopped
     nfs-export2	(ocf::heartbeat:exportfs):	Stopped
     nfs_ip	(ocf::heartbeat:IPaddr2):	Stopped
     nfs-notify	(ocf::heartbeat:nfsnotify):	Stopped

PCSD Status:
  test1: Online
  test2: Online

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

运行测试循环代码。

$ while :; do date +"%s %c -- $i" | tee -a ~/nfsshare/nfstest.log; sleep 1; (( ++i )); done

挂起Test2主机。

$ pcs cluster standby test2

查看集群运行状态,当前服务全部运行在Test1节点上。

$ pcs status
Cluster name: my_cluster
Last updated: Tue Dec 13 15:26:16 2016		Last change: Tue Dec 13 15:25:47 2016 by root via crm_attribute on test1
Stack: corosync
Current DC: test2 (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum
2 nodes and 9 resources configured

Node test2: standby
Online: [ test1 ]

Full list of resources:

 my_fence	(stonith:fence_kdump):	Started test1
 Resource Group: nfsgroup
     my_lvm	(ocf::heartbeat:LVM):	Started test1
     nfsshare	(ocf::heartbeat:Filesystem):	Started test1
     nfs-daemon	(ocf::heartbeat:nfsserver):	Started test1
     nfs-root	(ocf::heartbeat:exportfs):	Started test1
     nfs-export1	(ocf::heartbeat:exportfs):	Started test1
     nfs-export2	(ocf::heartbeat:exportfs):	Started test1
     nfs_ip	(ocf::heartbeat:IPaddr2):	Started test1
     nfs-notify	(ocf::heartbeat:nfsnotify):	Started test1

PCSD Status:
  test1: Online
  test2: Online

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

在Test2主机上。

$ dmesg -c
[ 3145.065649] nfsd: last server has exited,flushing export cache

在Test1主机上。

$ dmesg -c
[ 4423.429239] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: (null)
[ 4424.169604] NFSD: starting 90-second grace period (net ffffffff81a26d80)

在Develop主机上。

$ cat ~/nfsshare/nfstest.log 
...
1481613943 2016年12月13日 星期二 15时25分43秒 -- 71
1481613944 2016年12月13日 星期二 15时25分44秒 -- 72
1481613945 2016年12月13日 星期二 15时25分45秒 -- 73
1481613946 2016年12月13日 星期二 15时25分46秒 -- 74
1481613947 2016年12月13日 星期二 15时25分47秒 -- 75
1481614054 2016年12月13日 星期二 15时27分34秒 -- 76
1481614055 2016年12月13日 星期二 15时27分35秒 -- 77
1481614056 2016年12月13日 星期二 15时27分36秒 -- 78
1481614057 2016年12月13日 星期二 15时27分37秒 -- 79
1481614058 2016年12月13日 星期二 15时27分38秒 -- 80
1481614059 2016年12月13日 星期二 15时27分39秒 -- 81
...

$ dmesg -c
...
[39697.057079] nfs: server 192.168.195.136 not responding,still trying
[39701.648036] nfs: server 192.168.195.136 not responding,still trying
[39738.902904] nfs: server 192.168.195.136 not responding,timed out
[39918.946359] nfs: server 192.168.195.136 not responding,timed out
[39923.889380] nfs: server 192.168.195.136 not responding,timed out
...

$ cat /proc/fs/nfsfs/servers
NV SERVER   PORT USE HOSTNAME
v4 c0a8c3c8  801   1 192.168.195.200

$ cat /proc/fs/nfsfs/volumes 
NV SERVER   PORT DEV     FSID              FSC
v4 c0a8c3c8  801 0:42    0:0               no

可以看到,在切换主机前后后,Develop主机上的写入进程大概被阻塞107秒(多次反复测试,均在95秒到110秒之间),之后可以正常进行读写。

在读写时进行主备切换,查看文件是否能够正确读写。

$ cp /Data/Software/OS/CentOS-7-x86_64-Everything-1511.iso .
$ md5sum /Data/Software/OS/CentOS-7-x86_64-Everything-1511.iso CentOS-7-x86_64-Everything-1511.iso
dba29c59117400b111633be2bf2aaf0e  /Data/Software/OS/CentOS-7-x86_64-Everything-1511.iso
dba29c59117400b111633be2bf2aaf0e  CentOS-7-x86_64-Everything-1511.iso

参考文档

Red Hat Enterprise Linux 7 High Availability Add-On Administration

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


#使用军哥的lnmp配置虚拟主机,需要注意的是要配置hosts文件(这一点官方没有讲到)具体方法:1、修改hosts文件sudo vim /etc/hosts2、在hosts文件中新增一行(这里类似于windows上配置hosts文件)127.0.0.1 www.baidu.com3、保存并重启网络
一、配置编译环境 yum update &amp;&amp; yum upgrade yum groupinstall &quot;Development Tools&quot; yum install gcc gcc-c++ pcre* openssl* gd-devel* zlib-devel
一、下载repo文件 二、备份并替换系统的repo文件 三、执行yum源更新操作
LAMP -- Linux Apache MySQL PHP 在CentOS安装的顺序,我一般是Apache&#160;-&gt;&#160;MySQL&#160;-&gt;&#160;PHP 第一步、安装并配置Apache 1、使用yum安装 [plain]&#160;view plaincopy
一、下载nginx安装包,官网下载中心http://nginx.org/download [root@localhost software]# wget http://nginx.org/download/nginx-1.10.1.tar.gz 二、解压nginx安装包 [root@localhos
1.下载composer curl -sS https://getcomposer.org/installer | php ps:如果出现php无法运行的情况,请先把PHP加入环境变量,具体操作参考《centOS安装PHP》 2.移动或复制composer到环境下可执行 cp composer.ph
一、卸载旧版本的vim 二、安装终端字符处理库ncurses 三、下载Vim8 四、编译安装 五、添加到系统环境变量 六、安装成功
引言 我们在日常的开发过程中,很多时候需要连接服务器查看日志或者在服务器上调试代码。但是,使用 ssh 命令登录服务器每次都需要输出密码,就比较繁琐。因此我们可以使用 sshpass 通过参数指定密码进行登录。解决了这个问题之后,我发现登录服务器之后,还需要手动 cd 切换到项目目录或者日志目录。为
iptables basics Introduction iptables 是一个配置 Linux 防火墙的工具,是 netfilter 项目的一部分。 在 Linux Kernel 3.13 及以上版本中, nftables 将作为后继者取代 iptables 以成为更强大易用的防火墙工具 Bas
一、下载tengine 二、安装tenginx(nginx)的模块依赖库 三、解压并指定安装路径 四、编译安装 五、启动(tengine)nginx 六、访问(tengine)nginx
这篇文章介绍了如何快速部署一套Kubernetes集群,下面就快速开始吧! 准备工作 机器部署规划 主机 | IP | 部署组件 | | master主节点 | 192.168.199.206 | etcd、kube apiserver、kube controller manager、kube sc
一、pip下载 二、解压安装 三、安装完成
1、WebBench安装: yum install ctags(先安装依赖库) mkdir /usr/local/man (创建一个目录不然会报错) wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz tar zxv
1:查看环境: [root@10-4-14-168 html]# cat /etc/redhat-release CentOS release 6.5 (Final) 2:关掉防火墙 [root@10-4-14-168 html]# chkconfig iptables off 3:配置CentOS
安装 1.检查当前是否有安装php rpm&#160;-qa|grep&#160;php 如果有安装PHP,那么请先删除这些安装包: yum&#160;remove&#160;php* 2.安装php源 Centos 5 安装php源: rpm&#160;-ivh&#160;http://mirro
一、安装 二、配置 三、修改配置文件 四、program 配置 五、启动
Sed 日常使用介绍 简介 是 环境下常用的流处理工具, 可以处理字符流, 文件或者二进制文件流。 各个 发行版都会配备 及其衍生的命令工具, 因此, 掌握该工具的基本用法, 足以满足我们日常的许多文本处理的任务。 以下采用示例的方式对 进行基本用法介绍. 如果有兴趣了解更高级的使用技巧, 本文采用
linux下开机自启: 在/etc/init.d目录下新建文件elasticsearch 并敲入shell脚本: 注意, 前两行必须填写,且要注释掉。 第一行为shell前行代码,目的告诉系统使用shell。 第二行分别代表运行级别、启动优先权、关闭优先权,且后面添加开机服务会用到。 shell脚本
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限 chmod +x /usr
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。 查询当前目录总大小可以使用d