这片文章会一直写下去,当篇幅过大时会截断继续
克隆的虚拟机网卡配置的问题
参考文章:http://www.jb51.net/article/111941.htm
一. 问题描述
虚拟机克隆后,由于网卡信息不一致的问题,导致不能上网或者执行“sercice network restart”命令失败
二. 原因分析
由于克隆后的系统,系统只是修改了虚拟机的名字和MAC等,并在/etc/udev/rules.d/70-persistent-net.rules文件中增加了一行名为eth1的设备名
三. 解决方法
修改文件/etc/udev/rules.d/70-persistent-net.rules和/etc/sysconfig/network-scripts/ifcfg-eth0,使得两个文件中的设备名和MAC地址相对应
(参看文章写的很详细就不上图了)
手动生成70-persistent-net.rules
项目中使用的ubantu系统,本来使用的是网线连接,但是在搬到客户那边去后使用光纤,为了不更改服务器间的配置,此时需要更改网卡配置名称,将光纤设备名改为之前的eth0,而这个系统版本默认没有70-persistent-net.rules文件:
- export MATCHADDR="00:f1:f3:1a:f0:05" 光纤网卡的mac地址,一定要小写
- export INTERFACE=eth0 eth0网卡名称
- /lib/udev/write_net_rules 此时会生成70-persistent-net.rules文件,内容如下
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?", ATTR{address}=="00:f1:f3:1a:f0:05", KERNEL=="eth", NAME="eth0"
重复上面的步骤可在70-persistent-net.rules文件追加网卡的信息
Linux下内存的Buffer和Cache
参考文章:http://www.cnblogs.com/JohnABC/p/5799781.html
内存的监控
[root@jinbo ~]# free -m
total used free shared buffers cached
Mem: 980 164 816 0 10 41
-/+ buffers/cache: 112 868
Swap: 1983 0 1983
我们使用total1、used1、free1、used2、free2 等名称来代表上面统计数据的各值,1、2 分别代表第一行和第二行的数据。
total1:表示物理内存总量。
used1:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free1:未被分配的内存。
shared1:共享内存,一般系统不会用到,这里也不讨论。
buffers1:系统分配但未被使用的buffers 数量。
cached1:系统分配但未被使用的cache 数量。
used2:实际使用的buffers 与cache 总量,也是实际使用的内存总量。
free2:未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。
关系等式:
used1 = buffers1 + cached1 + used2 free2 = buffers1 + cached1 + free1
上面提到free命令输出的内存状态,可以通过两个角度来查看:一个是从内核的角度来看,一个是从应用层的角度来看的
buffers和cached的异同
在Linux 操作系统中,当应用程序需要读取文件中的数据时,操作系统先分配一些内存,将数据从磁盘读入到这些内存中,然后再将数据分发给应用程序;当需要往文件中写 数据时,操作系统先分配内存接收用户数据,然后再将数据从内存写到磁盘上。然而,如果有大量数据需要从磁盘读取到内存或者由内存写入磁盘时,系统的读写性 能就变得非常低下,因为无论是从磁盘读数据,还是写数据到磁盘,都是一个很消耗时间和资源的过程,在这种情况下,Linux引入了buffers和 cached机制。
buffers与cached都是内存操作,用来保存系统曾经打开过的文件以及文件属性信息,这样当操作系统需要读取某些文件时,会首先在buffers 与cached内存区查找,如果找到,直接读出传送给应用程序,如果没有找到需要数据,才从磁盘读取,这就是操作系统的缓存机制,通过缓存,大大提高了操 作系统的性能。但buffers与cached缓冲的内容却是不同的。
buffers是用来缓冲块设备做的,它只记录文件系统的元数据(metadata)以及 tracking in-flight pages,而cached是用来给文件做缓冲。更通俗一点说:buffers主要用来存放目录里面有什么内容,文件的属性以及权限等等。而cached直接用来记忆我们打开过的文件和程序。
执行 find /* -name *.conf ,看看buffers的值是否变化,然后重复执行find命令,看看两次显示速度有何不同。
dd命令
dd与cp的区别
参考文章:http://blog.csdn.net/erazy0/article/details/6087554
dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
dd命令使用
1. [linux 下dd命令直接清除分区表(不用再fdisk一个一个的删除啦)
分区表是硬盘的分区信息,要删除一个硬盘的所有分区表很麻烦的,需要fdisk一个一个的删除,其实dd命令可直接清除分区信息,当然,这也是给root用户留下的作死方法之一。
dd 命令主要参数如下
if= in file 输入文件,linux下文件的概念应用范围相当广,通常是普通光盘镜像文件或者块设备
of= out file 输出文件,通常是普通光盘镜像文件或者块设备
bs= buffer size 缓存区大小,你可以认为dd命令读取一块输入文件到buffer(缓存区),然后将缓存区的内容吸入到输出文件。通常可将bs=1M或者bs=1KB之类的。
count= 读取输入文件的最多次数。默认情况下,dd命令直接把输入文件已知读取到文件末尾,这个参数可以控制读取的大小。
skip= 跳过文件开头的大小。默认错排能个文件开头开始读取。
例子:
将U盘当前状态保存下来成为一个文件。
dd if=/dev/sdb of=/backup/ISO/Upan/save.iso
清空U盘的分区信息(慎重使用)
dd if=/dev/zero of=/dev/sdb bs=512K count=1
小测试:
##CentOS最小化安装默认没有partprobe命令
#yum -y install parted
#dd if=/dev/sda of=/tmp/sda_mbr bs=512 count=1 #备份sda的分区表
#dd if=/tmp/sda_mbr of=/dev/sdc #将sda的分区信息写入sdc的mbr中
#partprobe #使内核重读分区表信息,partprobe /dev/sdc
#lsblk
最好使用fdisk -l来看
2.使用dd命令快速生成大文件和测试硬盘的IO性能
http://m.blog.csdn.net/bug1314/article/details/43152225
3. dd命令使用详解
http://www.360doc.com/content/14/1010/22/4171006_415914841.shtml
补充:新建磁盘分区作为swap分区
#swapoff -a #swapon -a,停止或打开所有的swap分区
##使用fdisk命令:新建分区,在fdisk中用“t”命令将新添的分区id改为82(Linux swap类型)
#mkswap /dev/sdc1 #格式化swap分区
#swapon /dev/sdc1 #启动新的swap分区
#free -m
##编辑/etc/fstab
fuser命令
参考文档:https://www.cnblogs.com/lizhilin/p/5111004.html
fuser功能
fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息.
fuser显示使用指定文件或者文件系统的进程ID.默认情况下每个文件名后面跟一个字母表示访问类型。 访问类型如下:
c 代表当前目录
e 将此文件作为程序的可执行对象使用
f 打开的文件。默认不显示。
F 打开的文件,用于写操作。默认不显示。
r 根目录。
m 映射文件或者共享库。
s 将此文件作为共享库(或其他可装载对象)使用
当指定的文件没有被访问,或者出现错误的时候,fuser会返回非零。
常用选项
-m name 指定一个挂载文件系统上的文件或者被挂载的块设备(名称name)。
-v 详细模式。输出似ps命令的输出,包含PID,USER,COMMAND等许多域,如果是内核访问的那么PID为kernel.
-k 杀掉访问文件的进程。如果没有指定-signal就会发送SIGKILL信号。结合 –signal
-u 在每个PID后面添加进程拥有者的用户名称。
假设无法卸载的设备为/dev/sdb1
1)运行下面命令看一下哪个用户哪个进程占用着此设备
fuser -m -v /dev/sdb1
2)运行下面命令杀掉占用此设备的进程
fuser -m -v -k /dev/sdb1
或者fuser -m -v -k -i /dev/sdb1(每杀掉一下进程会让你确认)
3)再umount
查看那些程序使用tcp的80端口:
$fuser -n tcp 80
或$fuser -v -n tcp 80
或$fuser -v 80/tcp
制作本地和局域网软件源
系统环境:ubuntu 14.04.5
1.apt-get 安装的软件会存在/var/cache/apt/archives目录下
2.dpkg-scanpackages生成包的依赖信息,apt-get install dpkg-dev
制作本地软件源
一般是这种情况:同样系统的两台服务器其中一台装了这个软件,而另一台却没有装,这时我们可以这样;
复制到U盘中
将下载好的包( /var/cache/apt/archives目录下的所有文件)复制到U盘中,准备转移。如果你不想拷贝多余的包文件,你可以提前将 /var/cache/apt/archives 目录清空后再下载需要的包。
在另一服务器上创建软件源目录/var/debs,将U盘中下载好的包文件全部复制到/var/debs目录下
略
生成包的索引文件
apt-get install dpkg-dev
dpkg-scanpackages /var/debs /dev/null | gzip > /var/debs/Packages.gz
在 /etc/apt/sources.list 中添加本地目录
将sources.list 原来的内容都注释掉。在最后添加
deb file:/var debs/
更新索引
apt-get update
现在可以安装包了。运行sudo apt-get install <包名> 就会像以前一样安装好了指定的包了。
制作局域网软件源
在有源的节点上搭建ftp服务器
apt-get install vsftpd
默认的话vsftp是不允许匿名登录的,修改vim /etc/vsftpd.conf文件
anonymous_enable=YES ///默认为no 修改为yes就是允许匿名用户登录
匿名用户登录的默认目录是:/srv/ftp
把下载的包移到/srv/ftp下。
制作源的索引
root@demolr01n02:/srv/ftp# dpkg-scanpackages ./ | gzip >/srv/ftp/Packages.gz
修改完重启服务 service vsftpd restart
在局域网的机器上配置/etc/apt/source.list
修改之前就得把原来的source.list先备份一下
#vi /etc/apt/sources.list
deb ftp://192.168.0.199/ /
#apt-get update #更新索引
参考文档:https://www.cnblogs.com/gzxbkk/p/7809296.html