首页 > 代码库 > Linux课程第八天学习笔记

Linux课程第八天学习笔记

####################3.日志分析工具journal####################
systemd-journald            ##进程名称

####################
[root@localhost ~]# cd /root/Desktop/
[root@localhost Desktop]# ps aux |grep journald
root       365  0.2  0.2  41164  2608 ?        Ss   21:29   0:00 /usr/lib/systemd/systemd-journald
root      2953  0.0  0.0 112644   948 pts/1    S+   21:36   0:00 grep --color=auto journald
进程名称为"systemd-journald"
####################

journalctl                ##直接执行,浏览系统日志(忽略重启前的日志信息)
journalctl -n 3                ##显示最新3条
journalctl -p err            ##显示报错
journalctl -f                ##监控日志,类似于"tail -f /var/log/messages"
journalctl --since --until        ##--since "[YYYY-MM-DD] [hh:mm:ss]" 从什么时间到什么时间的日志
journalctl -o verbose            ##显示日志能够使用的详细进程参数
journalctl _SYSTEMD_UNIT=sshd.service    ##显示服务名称为"sshd.service"的信息
journalctl _PID=1182            ##显示进程pid为"1182"的信息
journalctl _UID=0            ##显示进程uid为"0"的信息
journalctl _GID=0            ##显示进程gid为"0"的信息
journalctl _HOSTNAME=localhost        ##显示进程所在主机为"localhost"的信息
journalctl _COMM=sshd            ##显示命令名称为"sshd"的信息

####################
[root@localhost Desktop]# journalctl -n 5
-- Logs begin at Wed 2016-10-19 22:03:05 EDT, end at Wed 2016-10-19 22:05:40 EDT
Oct 19 22:05:40 localhost sshd[1670]: Received signal 15; terminating.
Oct 19 22:05:40 localhost systemd[1]: Starting OpenSSH server daemon...
Oct 19 22:05:40 localhost systemd[1]: Started OpenSSH server daemon.
Oct 19 22:05:40 localhost sshd[1678]: Server listening on 0.0.0.0 port 22.
Oct 19 22:05:40 localhost sshd[1678]: Server listening on :: port 22.
ines 1-6/6 (END)
[root@localhost Desktop]# journalctl -p err
-- Logs begin at Wed 2016-10-19 22:03:05 EDT, end at Wed 2016-10-19 22:05:40 EDT
Oct 19 22:03:05 localhost kernel: Failed to access perfctr msr (MSR c1 is 0)
Oct 19 22:03:06 localhost rpcbind[169]: rpcbind terminating on signal. Restart w
Oct 19 22:03:10 localhost smartd[505]: Problem creating device name scan list
Oct 19 22:03:10 localhost smartd[505]: In the system‘s table of devices NO devic
Oct 19 22:03:16 localhost systemd[1]: Failed to start LSB: Starts the Spacewalk
Oct 19 22:03:16 localhost systemd[1]: Failed to start /etc/rc.d/rc.local Compati
Oct 19 22:03:17 localhost libvirtd[1221]: libvirt version: 1.1.1, package: 29.el
Oct 19 22:03:17 localhost libvirtd[1221]: Module /usr/lib64/libvirt/connection-d
lines 1-9/9 (END)
[root@localhost Desktop]# journalctl -f            ##列出最新10条记录,并持续监控
-- Logs begin at Wed 2016-10-19 22:03:05 EDT. --
Oct 19 22:11:10 localhost sshd[2758]: Server listening on :: port 22.
Oct 19 22:11:44 localhost systemd[1]: Stopping System Logging Service...
Oct 19 22:11:44 localhost systemd[1]: Starting System Logging Service...
Oct 19 22:11:44 localhost systemd[1]: Started System Logging Service.
Oct 19 22:12:04 localhost systemd[1]: Stopping OpenSSH server daemon...
Oct 19 22:12:04 localhost sshd[2758]: Received signal 15; terminating.
Oct 19 22:12:04 localhost systemd[1]: Starting OpenSSH server daemon...
Oct 19 22:12:04 localhost systemd[1]: Started OpenSSH server daemon.
Oct 19 22:12:04 localhost sshd[2804]: Server listening on 0.0.0.0 port 22.
Oct 19 22:12:04 localhost sshd[2804]: Server listening on :: port 22.
>>>>>持续监控>>>>>
[root@localhost Desktop]# journalctl --since "2016-10-19 22:12:00" --until "2016-10-19 22:13:00"
-- Logs begin at Wed 2016-10-19 22:03:05 EDT, end at Wed 2016-10-19 22:20:01 EDT
Oct 19 22:12:04 localhost systemd[1]: Stopping OpenSSH server daemon...
Oct 19 22:12:04 localhost sshd[2758]: Received signal 15; terminating.
Oct 19 22:12:04 localhost systemd[1]: Starting OpenSSH server daemon...
Oct 19 22:12:04 localhost systemd[1]: Started OpenSSH server daemon.
Oct 19 22:12:04 localhost sshd[2804]: Server listening on 0.0.0.0 port 22.
Oct 19 22:12:04 localhost sshd[2804]: Server listening on :: port 22.
lines 1-7/7 (END)
[root@localhost Desktop]# ps aux |grep sshd
root      1379  0.0  0.4 135680  4884 ?        Ss   22:03   0:00 sshd: root@pts/0
root      3025  0.0  0.3  82956  3532 ?        Ss   22:29   0:00 /usr/sbin/sshd -D
root      3112  0.0  0.0 112644   944 pts/0    S+   22:35   0:00 grep --color=auto sshd
[root@localhost Desktop]# systemctl status sshd.service
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: active (running) since Wed 2016-10-19 22:29:12 EDT; 6min ago
  Process: 3024 ExecStartPre=/usr/sbin/sshd-keygen (code=exited, status=0/SUCCESS)
 Main PID: 3025 (sshd)
   CGroup: /system.slice/sshd.service
           └─3025 /usr/sbin/sshd -D

Oct 19 22:29:12 localhost systemd[1]: Starting OpenSSH server daemon...
Oct 19 22:29:12 localhost systemd[1]: Started OpenSSH server daemon.
Oct 19 22:29:12 localhost sshd[3025]: Server listening on 0.0.0.0 port 22.
Oct 19 22:29:12 localhost sshd[3025]: Server listening on :: port 22.
[root@localhost Desktop]# journalctl -o verbose
------------------------------------------------------------
/3025
按"n"向下查找,可以查找到与"3025"相关的内容
比如:
    MESSAGE=Server listening on :: port 22.
    SYSLOG_PID=3025
    _PID=3025
    _SOURCE_REALTIME_TIMESTAMP=1476930552046485
按"q"退出
------------------------------------------------------------
[root@localhost Desktop]# journalctl _PID=3025 _COMM=sshd _HOSTNAME=localhost
-- Logs begin at Wed 2016-10-19 22:03:05 EDT, end at Wed 2016-10-19 22:50:01 EDT
Oct 19 22:29:12 localhost sshd[3025]: Server listening on 0.0.0.0 port 22.
Oct 19 22:29:12 localhost sshd[3025]: Server listening on :: port 22.
lines 1-3/3 (END)
####################

对systemd-journald管理
##默认情况下此程序会忽略重启前的日志信息,如不忽略:
mkdir /var/log/journal
chown root:systemd-journal /var/log/journal
chmod 2755 /var/log/journal
killall -1 systemd-journal        ##进程初始化
ls /var/log/journal/4513ad59a3b442ffa4b7ea88343fa55f
system.journal user-1000.journal

####################
com和command的区别:
[root@localhost Desktop]# ps ax -o comm,command | grep journal
systemd-journal /usr/lib/systemd/systemd-journald
grep            grep --color=auto journald
comm = systemd-journal
command = /usr/lib/systemd/systemd-journald

[root@localhost Desktop]# mkdir /var/log/journal
[root@localhost Desktop]# ls -ld /var/log/journal
drwxr-xr-x. 2 root root 6 Oct 17 05:39 /var/log/journal
[root@localhost Desktop]# cat /etc/group | grep journal
systemd-journal:x:190:
[root@localhost Desktop]# chown root:systemd-journal /var/log/journal
[root@localhost Desktop]# chmod 2755 /var/log/journal
[root@localhost Desktop]# ls -ld /var/log/journal
drwxr-sr-x. 2 root systemd-journal 6 Oct 17 05:39 /var/log/journal
[root@localhost Desktop]# killall -1 systemd-journald
[root@localhost Desktop]# date
Mon Oct 17 05:42:57 EDT 2016
[root@localhost Desktop]# ll /var/log/journal
total 0
drwxr-sr-x. 2 root systemd-journal 27 Oct 17 05:42 946cb0e817ea4adb916183df8c4fc817
[root@localhost Desktop]# ls /var/log/journal/946cb0e817ea4adb916183df8c4fc817/
system.journal
[root@localhost Desktop]# reboot
==========等待虚拟机重启==========
[root@localhost Desktop]# journalctl
-- Logs begin at Mon 2016-10-17 05:42:50 EDT, end at Mon 2016-10-17 05:49:16 EDT
Oct 17 05:42:50 localhost systemd-journal[31294]: Permanent journal is using 8.0
Oct 17 05:42:50 localhost systemd-journal[31294]: Journal started
Oct 17 05:42:50 localhost systemd[1]: Starting Trigger Flushing of Journal to Pe
Oct 17 05:42:50 localhost systemd[1]: systemd-journald.service: main process exi
Oct 17 05:42:50 localhost systemd[1]: Unit systemd-journald.service entered fail
Oct 17 05:42:50 localhost systemd[1]: Started Trigger Flushing of Journal to Per
Oct 17 05:47:01 localhost anacron[2279]: Job `cron.weekly‘ started
Oct 17 05:47:01 localhost anacron[2279]: Job `cron.weekly‘ terminated
Oct 17 05:47:27 localhost systemd[1]: Stopping Session 4 of user root.
Oct 17 05:47:27 localhost systemd[1]: Stopping Session 3 of user root.
Oct 17 05:47:27 localhost systemd[1]: Stopping Session 1 of user root.
......
##日志从05:42:50开始记录,这个时间是重启前的时间
[root@localhost Desktop]# ls /var/log/journal/946cb0e817ea4adb916183df8c4fc817/
system.journal  user-42.journal
####################

###############################
#######    15.系统虚拟机管理    #######
###############################

####################
使用虚拟化软件必须在BIOS里面打开虚拟化功能
有的主机BIOS里面不开放虚拟化,也没有完全虚拟化功能

qemu-kvm    ##虚拟化硬件
qemu-img    ##虚拟化存储

Linux自带的虚拟化软件叫KVM

virt-manager    ##打开虚拟系统管理器
####################

####################
man virt-install
/EXAMPLES
按"n"向下查找,找到如下说明:
       Run a Live CD image under Xen fullyvirt, in diskless environment

         # virt-install \
              --hvm \
              --name demo \
              --memory 500 \
              --disks none \
              --livecd \
              --graphics vnc \
              --cdrom /root/fedora7live.iso            ##需要的信息
####################

####################1.安装####################
vim vmcreate
----------------------------------------------------------------------
#!/bin/bash                    ##命令运行环境的指定
virt-install \                    ##安装虚拟机
> --name $1 \                    ##虚拟机名称指定,$1表示脚本后的第一串字符
> --ram 1000 \                    ##内存
> --file /var/lib/libvirt/images/$1.img \    ##硬盘文件
> --file-size 8 \                ##硬盘文件大小
> --cdrom /home/kiosk/Desktop/rhel-server-7.1-x86_64-dvd.iso &        ##安装源指定
----------------------------------------------------------------------
"#!"这个是固定格式
"\"表示换行
"$1"表示脚本后面跟的第一个参数
"&"打入后台

chmod u+x vmcreate
mv vmcreate /usr/local/bin/
vmcreate hello        ##"hello"是虚拟机名称,注意:切换到root用户下执行

实验发现:
使用命令创建的虚拟机存储的格式是img
使用virt-manager创建的虚拟机存储的格式是qcow2

####################2.管理####################
virt-manager            ##开启图形管理工具
virt-view vmname        ##显示虚拟机,vmname表示虚拟机名称
virsh list            ##列出正在运行的vm
virsh list --all        ##列出所有vm
virsh start vmname        ##运行指定vm
virsh shutdown vmname        ##正常指定关闭vm,可以被忽略(比如开机后没有登陆,就不能shutdown)
virsh destroy vmname        ##强行结束指定vm,不能被忽略
virsh create vmname.xml        ##临时恢复指定vm,vmname表示前端管理文件
virsh define vmname.xml        ##永久恢复vm
virsh undefine vmname        ##删除vm的前端管理,不会删除存储

####################
rhel7.1.xml    ##虚拟机前端管理
rhel7.1.img    ##虚拟机存储

[root@foundation50 Desktop]# ll /etc/libvirt/qemu/
total 24
-rw-------. 1 root root 2488 Oct 17 16:56 desktop.xml
drwx------. 3 root root   40 Sep 11 09:13 networks
-rw-------. 1 root root 4259 Oct 20 15:05 rhel6.5.xml
-rw-------. 1 root root 4263 Oct 20 13:06 rhel7.1.xml
-rw-------. 1 root root 2536 Oct 17 16:55 server.xml
[root@foundation50 Desktop]# cp -p /etc/libvirt/qemu/rhel7.1.xml /mnt/    ##"-p"复制权限
[root@foundation50 Desktop]# ll /mnt
total 28
-rw-r--r--. 1 root root 18928 Sep 17 14:21 foundation-config-7.0-1.r26059.x86_64.rpm
-rw-------. 1 root root  4263 Oct 20 13:06 rhel7.1.xml
[root@foundation50 Desktop]# ls /var/lib/libvirt/images/    ##"/var"下存放的是系统数据
rh124-desktop-vda.ovl    rh124-desktop-vdb.qcow2  rh124-server-vda.qcow2  rh124-server.xml
rh124-desktop-vda.qcow2  rh124-desktop.xml        rh124-server-vdb.ovl    rhel6.5.qcow2
rh124-desktop-vdb.ovl    rh124-server-vda.ovl     rh124-server-vdb.qcow2  rhel7.1.img
[root@foundation50 Desktop]# mv /var/lib/libvirt/images/rhel7.1.img /mnt/
[root@foundation50 Desktop]# ls /mnt/
foundation-config-7.0-1.r26059.x86_64.rpm  rhel7.1.img  rhel7.1.xml
[root@foundation50 Desktop]# virt-manager
手动删除虚拟机"rhel7.1"的前端管理。由于"rhel7.1.img"已经被移走,Storage已经不存在
现在开始恢复:
[root@foundation50 Desktop]# vim /mnt/rhel7.1.xml
------------------------------------------------------------
 41       <source file=‘/var/lib/libvirt/images/rhel7.1.img‘/>
------------------------------------------------------------
[root@foundation50 Desktop]# mv /mnt/rhel7.1.img /var/lib/libvirt/images/
[root@foundation50 Desktop]# ls /var/lib/libvirt/images/
rh124-desktop-vda.ovl    rh124-desktop-vdb.qcow2  rh124-server-vda.qcow2  rh124-server.xml
rh124-desktop-vda.qcow2  rh124-desktop.xml        rh124-server-vdb.ovl    rhel6.5.qcow2
rh124-desktop-vdb.ovl    rh124-server-vda.ovl     rh124-server-vdb.qcow2  rhel7.1.img
[root@foundation50 Desktop]# virsh create /mnt/rhel7.1.xml
Domain rhel7.1 created from /mnt/rhel7.1.xml

[root@foundation50 Desktop]# ls /etc/libvirt/qemu/
desktop.xml  networks  rhel6.5.xml  server.xml            ##只是临时开启,并没有恢复前端管理
[root@foundation50 Desktop]# virsh define /mnt/rhel7.1.xml
Domain rhel7.1 defined from /mnt/rhel7.1.xml

[root@foundation50 Desktop]# ls /etc/libvirt/qemu/
desktop.xml  networks  rhel6.5.xml  rhel7.1.xml  server.xml    ##前端管理已经恢复
[root@foundation50 Desktop]# virsh undefine rhel7.1
Domain rhel7.1 has been undefined

[root@foundation50 Desktop]# ls /etc/libvirt/qemu/
desktop.xml  networks  rhel6.5.xml  server.xml            ##前端管理再次被删除

如果找不到文件的路径,可以使用以下命令进行查找:
[root@foundation50 Desktop]# find / -name rhel7.1.xml
/etc/libvirt/qemu/rhel7.1.xml
[root@foundation50 Desktop]# find / -name rhel7.1.img
/var/lib/libvirt/images/rhel7.1.img
####################

如果前端管理被删除,光剩下Storage,就只能在管理器里指定硬盘来恢复
步骤如下:
Create a new virtual machine
-->Import existing disk image-->Forward
-->Provide the existing storage path-->(略)......

####################3.虚拟机快照####################
qemu-img create -f qcow2 -b vm1.qcow2 node1.qcow2    ##创建快照"node1.qcow2"
注意:创建的是快照,而不是复制一个Storage出来

####################
[root@foundation50 Desktop]# cd /var/lib/libvirt/images/
[root@foundation50 images]# ls
rh124-desktop-vda.ovl    rh124-desktop.xml       rh124-server-vdb.qcow2
rh124-desktop-vda.qcow2  rh124-server-vda.ovl    rh124-server.xml
rh124-desktop-vdb.ovl    rh124-server-vda.qcow2  rhel6.5.qcow2
rh124-desktop-vdb.qcow2  rh124-server-vdb.ovl    rhel7.1.img
[root@foundation50 images]# file rhel7.1.img
rhel7.1.img: QEMU QCOW Image (v3), 8589934592 bytes        ##格式"QCOW"即"qcow2"
[root@foundation50 images]# qemu-img create -f qcow2 -b rhel7.1.img westos.img
Formatting ‘westos.img‘, fmt=qcow2 size=8589934592 backing_file=‘rhel7.1.img‘ encryption=off cluster_size=65536 lazy_refcounts=off
[root@foundation50 images]# ll rhel7.1.img
-rw-------. 1 root root 8591507456 Oct 20 17:43 rhel7.1.img
[root@foundation50 images]# du -sh rhel7.1.img
3.3G    rhel7.1.img
[root@foundation50 images]# ll westos.img
-rw-r--r--. 1 root root 197120 Oct 21 09:30 westos.img
[root@foundation50 images]# du -sh westos.img
196K    westos.img                        ##快照仅196K
[root@foundation50 Desktop]# virt-manager
在管理器里指定硬盘加载"westos.img"进行开机启动
[root@foundation50 images]# du -sh westos.img
4.2M    westos.img
[root@foundation50 images]# du -sh westos.img
8.2M    westos.img
[root@foundation50 images]# du -sh westos.img
17M    westos.img                        ##随着开机的进行,快照越来越大
假如虚拟机出现故障,比如执行如下操作:
rm -fr /etc/
重启后,发现虚拟机启不起来
不需要操作前端管理
直接删除"westos.img",重新创建快照
[root@foundation50 images]# rm -fr westos.img
[root@foundation50 images]# qemu-img create -f qcow2 -b rhel7.1.img westos.img
Formatting ‘westos.img‘, fmt=qcow2 size=8589934592 backing_file=‘rhel7.1.img‘ encryption=off cluster_size=65536 lazy_refcounts=off

实验发现:
[root@foundation50 images]# qemu-img create -f qcow2 -b westos.img linux.img
Formatting ‘linux.img‘, fmt=qcow2 size=8589934592 backing_file=‘westos.img‘ encryption=off cluster_size=65536 lazy_refcounts=off
[root@foundation50 images]# qemu-img create -f qcow2 -b linux.img linux1.img
Formatting ‘linux1.img‘, fmt=qcow2 size=8589934592 backing_file=‘linux.img‘ encryption=off cluster_size=65536 lazy_refcounts=off
[root@foundation50 images]# qemu-img create -f qcow2 -b linux1.img linux2.img
Formatting ‘linux2.img‘, fmt=qcow2 size=8589934592 backing_file=‘linux1.img‘ encryption=off cluster_size=65536 lazy_refcounts=off
快照可以创建快照,并且被快照创建出来的快照也可以加载启动
但是当前一个快照被删除时,后一个快照就会失效
比如:
[root@foundation50 images]# rm -fr linux1.img
linux2将不能被加载启动

编辑脚本:
vim vmctl
----------------------------------------------------------------------
#!/bin/bash
echo poweroff $1 ...
virsh destroy $1 &> /dev/null
echo del $1.xml ...
virsh undefine $1 &> /dev/null
echo create disk ...
qemu-img create -f qcow2 -b /var/lib/libvirt/images/$1.qcow2 /var/lib/libvirt/images/$2.qcow2 &> /dev/null
echo create $2 vm ...
virt-install \
--name $2 \
--ram 1000 \
--disk /var/lib/libvirt/images/$2.qcow2 \
--import &> /dev/null &
echo created $2 successful !!!
----------------------------------------------------------------------
执行脚本"vmctl":
[root@foundation50 杂]# sh vmctl rhel6.5 test
poweroff rhel6.5 ...
del rhel6.5.xml ...
create disk ...
create test vm ...
created test successful !!!
"-x"表示跟踪脚本的执行:
[root@foundation50 杂]# sh -x vmctl rhel6.5 test
+ echo poweroff rhel6.5 ...
poweroff rhel6.5 ...
+ virsh destroy rhel6.5
+ echo del rhel6.5.xml ...
del rhel6.5.xml ...
+ virsh undefine rhel6.5
+ echo create disk ...
create disk ...
+ qemu-img create -f qcow2 -b /var/lib/libvirt/images/rhel6.5.qcow2 /var/lib/libvirt/images/test.qcow2
+ echo create test vm ...
create test vm ...
+ echo created test successful ‘!!!‘
created test successful !!!
+ virt-install --name test --ram 1000 --disk /var/lib/libvirt/images/test.qcow2 --import
####################

本文出自 “施超Linux学习笔记” 博客,谢绝转载!

Linux课程第八天学习笔记