sed -i ‘/#/d’ /etc/maxscale.cnf #删除文件中的以#号开头的行
~]#PATH=/usr/local/mysql/bin:KaTeX parse error: Expected 'EOF', got '#' at position 25: … ~]#̲vim /etc/profil…PATH #将源码安装的软件 绝对路径的命令永久设置成系统命令
~]#source /etc/profile
单引号''和双引号""
两者都是解决变量中间有空格的问题。
在bash中“空格”是一种很特殊的字符,比如在bash中这样定义str=this is String,这样就会报错,为了避免出错就得使用单引号''和双引号""。
单引号'',双引号""的区别是单引号''剥夺了所有字符的特殊含义,单引号''内就变成了单纯的字符。双引号""则对于双引号""内的参数替换($)和命令替换(``)是个例外。
比如说 n=3
echo '$n'
结果就是n3
改成双引号 echo "$n",结果就是3
反引号``
反引号``是命令替换,命令替换是指Shell可以先执行``中的命令,将输出结果暂时保存,在适当的地方输出。语法:`command`
下面的例子中,将命令执行结果保存在变量中:
#!/bin/bash
DATE=date
echo “Date is $DATE” USERS=who | wc -l
echo “Logged in user are $USERS” UP=date ; uptime
echo “Uptime is $UP”
运行结果:
Date is Thu Jul 2 03:59:57 MST 2009 Logged in user are 1 Uptime is Thu Jul 2 03:59:57 MST 2009 03:59:57 up 20 days, 14:03, 1 user, load avg: 0.13, 0.07, 0.15
stat 文件名 /目录 #查看文件目录的元数据屬性
rmdir 目录 #删除空目录
255.255.255.248
512 256 128 64 32 16 8 4 2 1
子网掩码的换算方法
1 首先将子网掩码换算成二进制
2 把子网中对应的主机部分的ip地址换算成二进制
3把子网中主机部分对应的ip地址转换为0是当前网段最小ip 转换为1是当前网段最大ip
非交互试发邮件
~]# mail -s 主题 地址用户名 << ABC
内容
ABC
字符比较的符号有 == != -Z
数字的有 -eq -ne -gt -ge -lt -le
文件或目录 -e -f -d -r(读) -w(写) -x(执行)
awk格式
BEGIN 里的命令 在读取文件之前执行1次
{} 里的命令 在读取文件之前执行n次
END 里的命令 在读取文件之后执行1次
awk 选项 ‘BEGIN{} 条件{} END{}’ 文件
选项-F 指定分隔符
-v 变量=值
条件: /正则/ #对整行匹配/a/
$1~/正则/ # 仅对第一列匹配$1~/a/
$1!~/正则/ #不对 第一列匹配$1~/a/
精确匹配符号(字符,数字) == != > >= < <=
HPC
用户管理
~LDAP
~NIS
存储管理
~NFS
~CLUSTRE----开源的版本
~GPFS----商业版IBM
调度管理
~Torque
~Openpbs
~Pbspro
~Slurm
~LSF---->商业版–IBM
NIS安装
Server端
yum install ypserv ypbind
Client
yum install ypbind
·cd /var/yp make 同步数据
·/etc/sysconfig/network
·NISDOMAIN=NIS域名
·/etc/yp.conf
·domain 域名 server serverIP
·/etc/nsswitch.conf
·33行 files 后面添加nis
·nisdomainname
·systemctl start yppasswdd 起服务
·systemctl start ypserv
Client 端
把服务端所做的三个文件scp到客户端对应的目录下
ypcat passwd 查看服务端非系统自带的用户
yum -y install tmux 终端
tmux attach -t 会话名 ---- 连接会话
ctrl+b d —分离会话
tmux new -s 名字 ----创建窗口
tmux ls ----查看会话
tmux kill-session -t 会话名 ----杀死会话
ctrl+b w ----切换窗口
exit ctrl+b & ----退出窗口
面板
ctrl+b % 垂直分割 ctrl+b o 跳到另一边
ctrl+b " 上下分割 ctrl+b 上下左右键切换
在使用过程中,如果有断电情况会保存数据,后续直接使用tmux attach -t 会话名 就可以正常使用。
linux下终端分屏使用的两种方法(screen和tmux)
一、使用screen分屏(只能上下分屏,不能左右分屏)
(1)安装工具
在ubuntu系统中使用sudo apt-get install screen 安装screen工具
(2)使用工具
1,输入命令screen使用工具
2,上下分屏:ctrl + a 再按shift + s
3,切换屏幕:ctrl + a 再按tab键
4,新建一个终端:ctrl + a 再按c
5,关闭一个终端:ctrl + a 再按x (或直接按exit退出)
二、使用tmux分屏(既可以左右分屏,也可以上下分屏)
(1)安装工具
在ubuntu系统中使用sudo apt-get install tmux安装tmux工具
(2)使用工具
1,输入命令tmux使用工具
2,上下分屏:ctrl + b 再按 "
3,左右分屏:ctrl + b 再按 %
4,切换屏幕:ctrl + b 再按o
5,关闭一个终端:ctrl + b 再按x
6,上下分屏与左右分屏切换: ctrl + b 再按空格键
virsh
virsh 是kvm一个管理工具包。virsh提供两种执行模式:”直接模式(Direct Mode)”与”互动模式(Interactive Mode)”。在直接模式里,你必须在Shell中以参数、自变量的方式来执行virsh,如果在互动模式中,则virsh会提供一个提示字符串, 你可以在该提示字符串后,输入要执行的命令。如果执行virsh没有指定任何参数或自变量则默认就是进入互动模式。 与xm一样,COMMAND也是 virsh提供的命令
virsh语法: virsh [COMMAND] [ARGS…]
参数:
autostart #自动加载指定的一个虚拟机
connect #重新连接到hypervisor
console #连接到客户会话
create #从一个SML文件创建一个虚拟机
start #开始一个非活跃的虚拟机
destroy #删除一个虚拟机
define #从一个XML文件定义一个虚拟机
domid #把一个虚拟机名或UUID转换为ID
domuuid #把一个郁闷或ID转换为UUID
dominfo #查看虚拟机信息
domstate #查看虚拟机状态
domblkstat #获取虚拟机设备快状态
domifstat #获取虚拟机网络接口状态
dumpxml #XML中的虚拟机信息
edit #编辑某个虚拟机的XML文件
list #列出虚拟机
migrate #将虚拟机迁移到另一台主机
quit #退出非交互式终端
reboot #重新启动一个虚拟机
resume #重新恢复一个虚拟机
save #把一个虚拟机的状态保存到一个文件
dump #把一个虚拟机的内核dump到一个文件中以方便分析
shutdown #关闭一个虚拟机
setmem #改变内存的分配
setmaxmem #改变最大内存限制值
suspend #挂起一个虚拟机
vcpuinfo #虚拟机的cpu信息
version #显示virsh版本
一、什么是虚拟化
虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。
二、虚拟化能做什么
CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
三、虚拟化分类
虚拟化可分为两类,完全虚拟化(full virtualization)和半虚拟化(paravirtualization)。
完全虚拟化(full virtualization):完全虚拟化是一种虚拟化技术用于提供一种虚拟机环境,即一个完整的底层硬件仿真。完全虚拟化要求每个硬件的显著特征被映射到每一个虚拟机上。在虚拟机(VM)和硬件之间之间增加一个软件层–Hypervisor,实现虚拟机管理。工作与完全虚拟化的虚拟机不知道有hypervisor的存在。
半虚拟化(paravirtualization):半虚拟化是一种虚拟化技术,提出了一种虚拟机软件界面相似,但不完全相同的底层硬件。宿主计算机操作系统需要支持para-API,并通过virtual machine monitor (VMM)管理。也就是让虚拟机明确知道自己工作在虚拟环境中。
其中,hypervisor 可以划分为两大类。
类型 1,这种 hypervisor 是直接运行在物理硬件之上的,例如:vmware vsphere, kvm等。
类型 2,这种 hypervisor 运行在另一个操作系统(运行在物理硬件之上)中,例如:VMware workstation, xen(hvm)等。
除此之外,还有以下虚拟化分类:
用户空间虚拟化(容器)拥有独立的文件树和进程树于独立的名字空间中,容器间可通信。可打包如httpd, tomcat
服务于一个文件中,利于快速部署。
docker是容器的一种易于快速部署的方式,kvm+docker是流行的部署方式。
docker的其他实现方式:lxc, openvz, solaris containers, FreeBSD jails
库虚拟化:
WINE,Cywin
应用程序虚拟化:
jvm, pvm
四、KVM的相关术语
KVM (名称来自英语: Kernel-basedVirtual Machine 的缩写,即基于内核的虚拟机),是一种用于Linux内核中
的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。KVM在2007年2月被导入Linux 2.6.20核心中,以
加载核心模块的方式被移植到FreeBSD及illumos上。
KVM必须在在具备硬件支持的Intel VT或AMD-V功能的平台上运行。
KVM安装后,宿主机(HOST)的kernel变为hypervisor。原有操作系统变为domain 0,提供控制台和I/O管理。KVM虚拟机可直接通过原kernel的kvm模块调用宿主机的cpu和
内存,I/O部分则需要先到domain0,再到宿主硬件设备。
运行模式如下:
内核模式:GuestOS执行I/O类操作;
用户模式:代表GuestOS请求I/O类操作;
来宾模式:GuestOS的非I/O类操作;
kvm hypervisor:安装过KVM的kernel;
两类组件:
/dev/kvm:字符设备文件,工作于hypervisor,主要用于创建VM、为VM分配内存、读写VCPU的寄存器、向VCPU注入中断、运行VCPU等等;
qemu进程:工作于用户空间,主要用于实现模拟PC机的IO设备;
QEMU主要提供以下功能:
五、安装KVM
在正式安装之前,我们先来看看这张kmv和各管理工具的关系图。
kvm-libvert.jpg
QUME的主要功能:
处理器模拟器
仿真IO设备
关联模拟的设备至真实设备;
调试器
与模拟器交互的用户接口
qemu:kmv的文本管理工具,包括qemu-kvm、qemu-img
libvirt:是一套免费、开源的支持Linux下主流虚拟化工具的C函数库,libvirtd是运行的守护进程的名称。包括GUI: virt-manager, virt-viewer,CLI: virt-install, virsh
安装步骤:
(1) 确保CPU支持HVM
(2) 装载模块
(3)验证
ls -l /dev/kvm
(4)安装libvirt
yum install libvirt -y
(5)安装其他管理组件
yum install -y virt-manager virt-viewer virt-install
(6)启动libvirtd守护进程
systemctl start libvirtd
验证:ifconfig多了virbr0虚拟网桥(只能是nat模式)
[root@localhost ~]# ifconfig
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:57:1a:76 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
(7)启动virt tui
ps aux
root 14996 13.9 8.7 1197240 87980 ? Ssl 23:41 0:01 /usr/bin/python2 /usr/share/virt-manager/virt-manager
使用virsh测试各命令及创建虚拟机
virsh help KEYWORD
#virsh help list
root@localhost ~]# virsh list –all
Id Name State
—————————————————-
– debian8 shut off
注意为xml格式,可以到处到某处查看或以此为模板创建其他虚拟机
虚拟机以域(domain)为单位创建
create
virsh create [–console] [–paused] [–autodestroy] [–pass-fds ] [–validate]
[–file] <string> file containing an XML domain description
–console attach to console after creation
–paused leave the guest paused after creation
–autodestroy automatically destroy the guest when virsh disconnects
–pass-fds <string> pass file descriptors N,M,… to the guest
–validate validate the XML against the schema
[root@localhost ~]# virsh domid debian8
3
[root@localhost ~]# virsh domuuid debian8
9332c5a4-4abc-4e7f-bec0-faf394950a55
[root@localhost ~]# virsh dominfo debian8
Id: 3
Name: debian8
UUID: 9332c5a4-4abc-4e7f-bec0-faf394950a55
OS Type: hvm
State: running
CPU(s): 2
CPU time: 428.6s
Max memory: 1047552 KiB
Used memory: 1047552 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: selinux
Security DOI: 0
Security label: system_u:system_r:svirt_t:s0:c327,c602 (enforcing)
[root@localhost ~]# virsh console debian8
Connected to domain debian8
Escape character is ^]
使用ctrl+],退出console
[root@localhost ~]# virsh start debian8
Domain debian8 started
reboot
destory
shutdown
undefine
–running 下次恢复,直接启动
管理域的命令:
不能超出预设值,只能调小,可以当前生效,也可以下次生效
[root@localhost ~]# virsh dominfo debian8
Id: 5
Name: debian8
UUID: 9332c5a4-4abc-4e7f-bec0-faf394950a55
OS Type: hvm
State: running
CPU(s): 2
CPU time: 1471.5s
Max memory: 1047552 KiB
Used memory: 804864 KiB #此处为改过的值
Persistent: yes
Autostart: disable
Managed save: no
Security model: selinux
Security DOI: 0
Security label: system_u:system_r:svirt_t:s0:c470,c985 (enforcing)
[root@localhost ~]# free -mh
total used free shared buff/cache available
Mem: 977M 741M 73M 4.2M 162M 64M
Swap: 1.9G 1.1G 827M
运行中的域不能修改最大内存值
[root@localhost ~]# virsh setmaxmem debian8 900m –config
下次启动有效
不能实时改,下次启动有效
[root@localhost ~]# virsh vcpuinfo debian8
VCPU: 0 #vcpu
CPU: 0 #在宿主机cpu位置
State: running
CPU time: 675.5s
CPU Affinity: yyyy
VCPU: 1
CPU: 1
State: running
CPU time: 694.2s
CPU Affinity: yyyy
[root@localhost ~]# virsh domiflist debian8
Interface Type Source Model MAC
——————————————————-
vnet0 network default virtio 52:54:00:82:53:a2
[root@localhost ~]# virsh domifstat debian8 vnet0
vnet0 rx_bytes 197810
vnet0 rx_packets 3755
vnet0 rx_errs 0
vnet0 rx_drop 0
vnet0 tx_bytes 13400
vnet0 tx_packets 111
vnet0 tx_errs 0
vnet0 tx_drop 0
[root@localhost ~]# virsh domblklist debian8
Target Source
————————————————
vda /var/lib/libvirt/images/debian8.qcow2
hda –
[root@localhost ~]# virsh domblkstat debian8
rd_req 21908
rd_bytes 670065746
wr_req 1105
wr_bytes 29772800
flush_operations 229
rd_total_times 97947369758
wr_total_times 60546346501
flush_total_times 1534616225
创建及管理磁盘:
[root@localhost ~]# qemu-img create -f qcow2 -o preallocation=metadata /tmp/test.qcow2 120G 稀疏格式
Formatting ‘/tmp/test.qcow2’, fmt=qcow2 size=128849018880 encryption=off cluster_size=65536 preallocation=‘metadata’ lazy_refcounts=off
[root@localhost ~]# du -lh /tmp/test.qcow2
19M /tmp/test.qcow2
[root@localhost ~]# ll -lh /tmp/test.qcow2
-rw-r–r–. 1 root root 121G Jan 12 13:53 /tmp/test.qcow2
[root@localhost ~]# qemu-img resize /tmp/test.qcow2 150G
Image resized.
[root@localhost ~]# ll -h /tmp/test.qcow2
-rw-r–r–. 1 root root 121G Jan 12 13:57 /tmp/test.qcow2
[root@localhost ~]# du -lh /tmp/test.qcow2
19M /tmp/test.qcow2
[root@localhost ~]# virsh attach-disk debian8 /tmp/mytest.img vdb
Disk attached successfully
[root@localhost ~]# virsh detach-disk debian8 vdb
Disk detached successfully
网卡管理
网桥查看命令
[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 no
virbr0 8000.525400571a76 yes virbr0-nic
vnet0
27.添加域网卡到宿主机桥上
[root@localhost ~]# virsh attach-interface debian8 bridge virbr0 为宿主机nat网桥
Interface attached successfully
[root@localhost ~]# virsh domiflist debian8
Interface Type Source Model MAC
——————————————————-
vnet0 network default virtio 52:54:00:82:53:a2
vnet1 bridge virbr0 rtl8139 52:54:00:ca:04:d3
vnet2 bridge br0 rtl8139 52:54:00:89:3b:1d
[root@localhost ~]# virsh detach-interface debian8 bridge –mac 52:54:00:89:3b:1d
Interface detached successfully
使用qemu命令手动创建虚拟机
qemu-kvm为创建工具