引言
[扩展应用]
[发布网络YUM源]
[vim编辑技巧]
[源码编译安装]
[KVM构建及管理]
[virsh控制工具]
[镜像管理]
[虚拟机快建技巧]
第三部分 系统管理进阶
1.目录结构
[1]认识 Linux 的目录层次: – man hier
• 常见一级目录的用途
/boot 存放系统引导必需的文件,包括内核、启动配置
/bin、/sbin 存放各种命令程序
/dev 存放硬盘、键盘、鼠标、光驱等各种设备文件
/etc 存放 Linux 系统及各种程序的配置文件
/root、/home/用户名 分别是管理员 root、普通用户的默认家目录
/var 存放日志文件、邮箱目录等经常变化的文件
/proc 存放内存中的映射数据,不占用磁盘
/tmp 存放系统运行过程中使用的一些临时文件
[2]权限的数值表示
• 权限的数值化
– 基本权限:r = 4,w = 2,x = 1
– 附加权限:SUID = 4,SGID = 2,Sticky Bit = 1
[root@svr7 ~]# chmod 750 /nsd01
[3]历史命令
• 管理/调用曾经执行过的命令
– history:查看历史命令列表
– history -c:清空历史命令
– !n:执行命令历史中的第 n 条命令
– !str:执行最近一次以 str 开头的历史命令
• 调整历史命令的数量
[root@svr7 ~]# vim /etc/profile
HISTSIZE=1000 //默认记录 1000 条
[root@svr7 ~]# history #显示历史命令列表
[root@svr7 ~]# history -c #清空所有的历史命令
[root@svr7 ~]# cat -n /etc/redhat-release
[root@svr7 ~]# !cat #执行临时命令中最近以 cat 开头的命令
[4]实用小命令工具
• du,统计文件的占用空间
– du [选项]... [目录或文件]...
– -s:只统计每个参数所占用的总空间大小
– -h:提供易读容量单位(K、M 等)
[root@svr7 ~]# du -sh /root
[root@svr7 ~]# du -sh /root/ /etc/ /boot/
[root@svr7 ~]# du -sh /
• date,查看/调整系统日期时间
– date +%F、date +%R
– date +"%Y-%m-%d %H:%M:%S"
– date -s "yyyy-mm-dd HH:MM:SS"
[root@svr7 ~]# date +%F #显示 年-月-日
[root@svr7 ~]# date +%Y #显示 年
[root@svr7 ~]# date +%m #显示 月
[root@svr7 ~]# date +%d #显示 日期 15
[root@svr7 ~]# date +%H #显示 时
[root@svr7 ~]# date +%M #显示 分
[root@svr7 ~]# date +%S #显示 秒
2.制作快捷方式
制作连接(链接)文件
制作软连接 格式: ln -s /路径/源文件 /路径/快捷方式名 #必须时绝对路径
]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
]# ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/net0
]# ls /etc/net0
软连接特点:
若原始文件或目录被删除,连接文件将失效
软连接可存放在不同分区/文件系统
硬连接特点:
若原始文件被删除,连接文件仍可用
硬连接与原始文件必须在同一分区/文件系统
[root@svr7 ~]# ln -s /opt/A /opt/B #制作软连接
[root@svr7 ~]# man 5 passwd #5 代表配置文件类型帮助信息
3.zip 归档工具,跨平台的压缩格式
• 归档+压缩操作
– zip [-r] 备份文件.zip 被归档的文档...
[root@svr7 ~]# yum -y install zip
[root@svr7 ~]# zip -r /opt/file.zip /root/ /etc/passwd
[root@svr7 ~]# ls /opt
• 释放归档+解压操作
– unzip 备份文件.zip [-d 目标文件夹]
[root@svr7 ~]# yum -y install unzip
[root@svr7 ~]# unzip /opt/nsd.zip -d /mnt/
[root@svr7 ~]# ls /mnt/
4.自定义 Yum 源
[root@svr7 ~]# yum -y install createrepo #安装createrepo软件
[root@svr7 ~]# createrepo /tools/other/ #创建repodata目录(只要有datarepo目录即可做yum源)
[root@svr7 ~]# ls /tools/other/
[root@svr7 ~]# ls /tools/other/repodata
书写客户端配置文件
[root@svr7 ~]# vim /etc/yum.repos.d/local.repo
[local_repo]
name=CentOS-$releasever - Base
baseurl="ftp://192.168.4.254/centos-1804"
enabled=1
gpgcheck=0
[myrpm]
name=other rpm
root@192.168.4.7:/root/baseurl=file:///tools/other #指定为本机为 Yum 服务端
enabled=1
gpgcheck=0
[root@svr7 ~]# yum repolist
5.vim 编辑技巧
命令模式操作
[root@svr7 ~]# cp /etc/passwd /opt/a.txt
[root@svr7 ~]# vim /opt/a.txt
光标跳转
Home 键 或 ^、数字 0 跳转到行首
End 键 或“$”键 跳转到行尾
PgUp 键、PgDn 键 向上翻页、向下翻页
1G 或 gg 跳转到文件的首行
G 跳转到文件的末尾行
复制/粘贴/删除
复制 yy、3yy 复制光标处的一行、3 行
粘贴 p、P 粘贴到光标处之后、之前
x 或 Delete 键 删除光标处的单个字符
dd、#dd 删除光标处的一行、#行
d^ 从光标处之前删除至行首
d$或 D(大写) 从光标处删除到行尾
C(大写) 从光标处删除到行尾,进入插入模式
查找/撤销/保存
/word 向后查找字符串“word”
n、N 跳至后/前一个结果
u 撤销最近的一次操作
U(大写) 撤销对当前行的所有修改
Ctrl + r 取消前一次撤销操作
ZZ(大写) 保存修改并退出
末行模式操作
:r /etc/filesystems 读入其他文件内容
[root@svr7 ~]# echo 123456 > /opt/2.txt
[root@svr7 ~]# echo hahaxixi > /opt/3.txt
[root@svr7 ~]# vim /opt/3.txt
:r /opt/2.txt #读入/opt/2.txt 到当前文件
:r /etc/passwd #读入/etc/passwd 到当前文件
字符串替换
:s/root/admin 替换当前行第一个“root”
:s/root/admin/g 替换当前行所有的“root”
:1,10 s/root/admin/g 替换第 1-10 行所有的“root”
:% s/root/admin/g 替换文件内所有的“root
[root@svr7 ~]# cat /etc/passwd > /opt/a.txt
[root@svr7 ~]# vim /opt/a.txt
开关参数的控制
:set nu 或 nonu 显示/不显示行号
:set ai 或 noai 启用/关闭自动缩进
6.源码编译安装
RPM 包: rpm -ivh yum -y install
源码包----gcc make---->可以执行的程序-------->运行安装
• 主要优点
– 获得软件的最新版,及时修复 bug
– 软件功能可按需选择/定制,有更多软件可供选择
– 源码包适用各种平台
步骤一:安装 gcc 与 make 开发工具
[root@svr7 ~]# yum -y install gcc
[root@svr7 ~]# yum -y install make
步骤二:进行 tar 解包
]# tar -xf /tools/inotify-tools-3.13.tar.gz -C /
]# cd /inotify-tools-3.13/
步骤三:运行 configure 脚本
作用 1:检测是否安装 gcc
作用 2:可以选择软件的功能,也可以指定软件安装的路径
--prefix=指定安装的位置
]# cd /inotify-tools-3.13/
]# ./configure --prefix=/opt/myrpm
步骤四:make 编译生成可以执行的程序
]# cd /inotify-tools-3.13/
]# make
步骤五:make install 将可以执行的程序运行安装
]# cd /inotify-tools-3.13/
]# make install
7.手动图形安装虚拟机名为 nsd01
虚拟化概述
• virtualization 资源管理
– x 个物理资源 --> y 个逻辑资源
46– 实现程度:完全、部分、硬件辅助(CPU)
CPU 支持虚拟化所有的指令集(vmx)
[student@room9pc01 ~]$ lscpu | grep vmx #检测CPU是否支持虚拟化
• 虚拟化主要厂商及产品
VMware VMware Workstation、vSphere
Microsoft VirtualPC、Hyper-V
RedHat KVM、RHEV
Citrix Xen
Oracle Oracle VM VirtualBox
8.虚拟机 nsd01 进行配置
1.配置永久主机名:kvm.tedu.cn
[root@localhost ~]# echo kvm.tedu.cn > /etc/hostname #从定义主机名称
[root@localhost ~]# hostname kvm.tedu.cn
2.配置永久 IP 地址:192.168.4.30/24
[root@localhost ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses
192.168.4.30/24 connection.autoconnect yes #配置IP地址
[root@localhost ~]# nmcli connection up eth0 #激活eth0网卡
[root@localhost ~]# ifconfig
3.修改防火墙默认区域与 SELinux
[root@kvm ~]# firewall-cmd --set-default-zone=trusted #防火墙设置为允许
[root@kvm ~]# setenforce 0 #设置SELInux为宽松模式
[root@kvm ~]# getenforce
[root@kvm ~]# vim /etc/selinux/config #配置文件修改SELinux为宽松模式
SELINUX=permissive
4.构建 Yum 仓库
]# cd /etc/yum.repos.d/
]# mkdir repo
]# mv *.repo repo
]# vim dvd.repo
[dvd]
name=centos7
baseurl=ftp://192.168.4.254/centos-1804
enabled=1
gpgcheck=0
]# yum repolist
]# yum -y install xeyes
9.安装虚拟化服务器平台
• 主要软件包
– qemu-kvm :为 kvm 提供底层仿真支持
– libvirt-daemon :libvirtd 守护进程,管理虚拟机
– libvirt-client :用户端软件,提供客户端管理命令
– libvirt-daemon-driver-qemu :libvirtd 连接 qemu 的驱动
– virt-manager :图形管理工具
]# yum -y install qemu-kvm
]# yum -y install libvirt-daemon
]# yum -y install libvirt-client
]# yum -y install libvirt-daemon-driver-qemu
]# yum -y install virt-manager
虚拟化服务: libvirtd
[root@kvm /]# systemctl status libvirtd #查看服务的状态
10.通过命令管理虚拟机
virsh 命令工具介绍
• 提供管理各虚拟机的命令接口
– 支持交互模式,查看/创建/停止/关闭 .. .. – 格式:virsh 控制指令 [虚拟机名称] [参数] • 查看 KVM 节点(服务器)信息
]$ virsh nodeinfo
• 列出虚拟机
]$ virsh list [--all] #重点
• 列出虚拟网络
]$ virsh net-list [--all] • 查看指定虚拟机的信息
]$ virsh dominfo 虚拟机名称 #重点
]$ virsh autostart nsd01 #设置虚拟机开机自启动
]$ virsh autostart --disable nsd01 #禁止虚拟机开机自启动
• 开关机操作
]$ virsh start 或 reboot 或 shutdown 虚拟机名称 #重点
• 强制关闭指定的虚拟机
]$ virsh destroy 虚拟机名称 #重点
11.一台 KVM 虚拟机的组成
– xml 配置文件(虚拟机描述文件):定义虚拟机的名称、UUID、CPU、内
存、虚拟磁盘、网卡等各种参数设置
[student@room9pc01 ~]$ ls /etc/libvirt/qemu/ – 磁盘镜像文件:保存虚拟机的操作系统及文档数据, 镜像路径取决于 xml 配置文件中的定义
[student@room9pc01 ~]$ ls /var/lib/libvirt/images/
查看虚拟机 xml 文件内容
[student@room9pc01 /]$ virsh dumpxml nsd01
虚拟机名称
虚拟机的 UUID 唯一标识
虚拟机磁盘文件路径
<source file='/var/lib/libvirt/images/nsd01.qcow2'/>
虚拟机网卡信息
<interface type='network'>
<mac address='52:54:00:d4:fe:59'/>
[student@room9pc01 /]$ virsh dumpxml nsd01 | less
12.在命令行手动制作一台虚拟机
[1].磁盘镜像文件
]$ cd /var/lib/libvirt/images/
]$ du -sh .node_base.qcow2
]$ cp .node_base.qcow2 nsd02.qcow2
]$ du -sh nsd02.qcow2
[2].建立新的 xml 配置文件, uuidgen 可以生成随机的 UUID 值
]$ cd /etc/libvirt/qemu/
]$ virsh dumpxml nsd01 > /etc/libvirt/qemu/nsd02.xml
]$ vim /etc/libvirt/qemu/nsd02.xml
1)虚拟机名称 <name>nsd02</name>
2)虚拟机的 UUID 唯一标识 删除整行内容 UUID
3)虚拟机磁盘文件路径 <source file='/var/lib/libvirt/images/nsd02.qcow2'/>
4)虚拟机网卡信息
<mac address='52:54:00:d4:fe:59'/> 删除整行内容
[3].导入虚拟机配置信息
]$ virsh define /etc/libvirt/qemu/nsd02.xml
]$ virsh list --all
]$ virsh start nsd02
命令行删除虚拟机
]$ virsh list --all
]$ virsh destroy nsd02 #强制关闭虚拟机
域 nsd02 被删除
]$ virsh list --all
]$ virsh undefine nsd02 #删除虚拟机 xml 配置文件
域 nsd02 已经被取消定义
]$ virsh list --all
]$ rm -rf /var/lib/libvirt/images/nsd02.qcow2 #手动删除
[1].建立新的磁盘文件
]$ cp /var/lib/libvirt/images/.node_base.qcow2 /tmp/nsd03.qcow2
]$ du -sh /tmp/nsd03.qcow2
[2].建立 xml 配置文件
]$ virsh dumpxml nsd01 > /home/student/nsd03.xml
]$ ls /home/student/nsd03.xml
]$ vim /home/student/nsd03.xml
1)虚拟机名称 <name>nsd03</name>
2)虚拟机的 UUID 唯一标识 删除整行内容 UUID
3)虚拟机磁盘文件路径 <source file='/tmp/nsd03.qcow2'/>
4)虚拟机网卡信息
<mac address='52:54:00:d4:fe:59'/> 删除整行内容
[3].导入虚拟机配置信息
]$ ls /etc/libvirt/qemu
]$ virsh define /home/student/nsd03.xml #导入虚拟机信息
]$ ls /etc/libvirt/qemu
]$ virsh start nsd03
]$ virsh list
15.三合一:导出 修改 导入
• 对虚拟机的配置进行调整
– 编辑:virsh edit 虚拟机名
1.建立磁盘文件
]$ cp /var/lib/libvirt/images/.node_base.qcow2 /var/lib/libvirt/images/nsd04.qcow2
]$ du -sh /var/lib/libvirt/images/nsd04.qcow2
2.建立 xml 配置文件
[student@room9pc01 /]$ virsh edit nsd01 #编辑虚拟主机配置
1)虚拟机名称 <name>nsd04</name>
2)虚拟机的 UUID 唯一标识 删除整行内容 UUID
3)虚拟机磁盘文件路径 <source file='/var/libvirt/images/nsd04.qcow2'/>
4)虚拟机网卡信息
<mac address='52:54:00:d4:fe:59'/> 删除整行内容
[student@room9pc01 /]$ virsh list --all
常用镜像盘类型
• 虚拟机的磁盘镜像文件格式
特点\类型 RAW QCOW2
KVM 默认 否 是
I/O 效率 高 较高
占用空间 大 小
压缩 不支持 支持
后端盘复用 不支持 支持
快照 不支持 支持
查看磁盘镜像文件信息
]$ qemu-img info /var/lib/libvirt/images/nsd04.qcow2
virtual size: 2.0G (2147483648 bytes) #虚拟大小
disk size: 633M #实际占用空间
COW 技术原理
• Copy On Write,写时复制
– 直接映射原始盘的数据内容
– 当原始盘的旧数据有修改时,在修改之前自动将旧数据存入前端盘
– 对前端盘的修改不回写到原始盘
– 原始盘的数据不能做修改
快速创建 qcow 前端盘
• qemu-img 通过 -b 选项复用指定原始盘
– qemu-img create -f qcow2 -b 原始盘 前端盘 大小
1.命令手动创建虚拟机磁盘文件
]$ cd /var/lib/libvirt/images/
]$ qemu-img create -f qcow2 -b .node_base.qcow2 nsd05.qcow2 5G #通过原始盘产生前端盘
]$ qemu-img info nsd05.qcow2 #查看虚拟磁盘文件信息
virtual size: 5.0G (5368709120 bytes) #虚拟大小
disk size: 196K #实际占用空间大小
backing file: .node_base.qcow2 #原始盘
2.建立 xml 文件
]$ virsh dumpxml nsd01 > /tmp/nsd05.xml #导出虚拟机信息
]$ vim /tmp/nsd05.xml #修改 虚拟机名 UUID 磁盘路径 网卡 MAC
]$ virsh define /tmp/nsd05.xml
离线访问虚拟机
• 使用 guestmount 工具
– 支持离线挂载 raw、qcow2 格式虚拟机磁盘
– 可以在虚拟机关机的情况下,直接修改磁盘中的文档
– 方便对虚拟机定制、修复、脚本维护
]$ virsh destroy nsd01
]$ guestmount -a /var/lib/libvirt/images/nsd01.qcow2 -i /mnt/