大赛落榜,高考班的死记硬背又适应不来,敢问路在何方?
光纤链路聚合使用哪种聚合方式比较好?
原题如下:
在SW3-1、 SW3-2之间的链路假设采用光纤链路互连,两端采用光纤收发器转换成RJ45接口,要求在两者间启用端口汇聚技术,聚合的方式根据题目推断选择合适的方式;
这个问题是我在一份外校老师发我的赛题上看到的,当时懵了一会,询问后得知:应使用静态方式聚合
。
至于原因嘛,目前还不晓得~
OSPF网络中必须有area 0吗?
这要看OSPF网络是单区域还是多区域的啦!
如果是多区域的OSPF则必须要有area 0,因为不同区域间需要通过area 0来交换路由信息。
而如果是单区域OSPF网络则area 0就不是必须的啦,因为不涉及到区域间的路由交换,也就不需要area 0这个“中转站”了。
所以,你可以将单区域OSPF配置成area 10、area 11、area 12等等的,都可以!
OSPF路由协议中重发布直连网段与使用network宣告直连网段的区别
很多朋友为了省事,喜欢使用redistribute connected命令直接将直连路由引入到ospf中,虽然这样很方便,但其产生的弊端也显而易见。
通过network宣告的网段是属于1、2、3类LSA,但通过redistribute connected引入的路由则属于外部路由,其是4、5类LSA。这样引入的路由在传输时是距离矢量路由,而通过network宣告进OSPF的路由则是链路状态路由。这在多点双向重发布时就会产生环路和次优路径,需要配合策略路由来消除,得不偿失。
samba配置文件smb.conf详解
前言
Samba的主配置文件叫smb.conf,默认在/etc/samba/目录下。
smb.conf含有多个段,每个段由段名开始,直到下个段名。每个段名放在方括号中间。每段的参数的格式是:名称=指。配置文件中一行一个段名和参数,段名和参数名不分大小写。
除了[global]段外,所有的段都可以看作是一个共享资源。段名是该共享资源的名字,段里的参数是该共享资源的属性。
Samba安装好后,使用testparm命令可以测试smb.conf配置是否正确。使用testparm –v命令可以详细的列出smb.conf支持的配置参数。
全局参数
==================Global Settings ===================
[global]
config file = /usr/local/samba/lib/smb.conf.%m
说明:config file可以让你使用另一个配置文件来覆盖缺省的配置文件。如果文件 不存在,则该项无效。这个参数很有用,可以使得samba配置更灵活,可以让一台samba服务器模拟多台不同配置的服务器。比如,你想让PC1(主机名)这台电脑在访问Samba Server时使用它自己的配置文件,那么先在/etc/samba/host/下为PC1配置一个名为smb.conf.pc1的文件,然后在smb.conf中加入:config file = /etc/samba/host/smb.conf.%m。这样当PC1请求连接Samba Server时,smb.conf.%m就被替换成smb.conf.pc1。这样,对于PC1来说,它所使用的Samba服务就是由smb.conf.pc1定义的,而其他机器访问Samba Server则还是应用smb.conf。
workgroup = WORKGROUP
说明:设定 Samba Server 所要加入的工作组或者域。
server string = Samba Server Version %v
说明:设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。
netbios name = smbserver
说明:设置Samba Server的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了。
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
说明:设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。
hosts allow = 127. 192.168.1. 192.168.10.1
说明:表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。hosts deny 与hosts allow 刚好相反。
例如:hosts allow=172.17.2.EXCEPT172.17.2.50
表示容许来自172.17.2..的主机连接,但排除172.17.2.50
hosts allow=172.17.2.0/255.255.0.0
表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接
hosts allow=M1,M2
表示容许来自M1和M2两台计算机连接
hosts allow=@xq
表示容许来自XQ网域的所有计算机连接
max connections = 0
说明:max connections用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。
deadtime = 0
说明:deadtime用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0代表Samba Server不自动切断任何连接。
time server = yes/no
说明:time server用来设置让nmdb成为windows客户端的时间服务器。
log file = /var/log/samba/log.%m
说明:设置Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问Samba Server的机器都单独记录一个日志文件。如果pc1、pc2访问过Samba Server,就会在/var/log/samba目录下留下log.pc1和log.pc2两个日志文件。
max log size = 50
说明:设置Samba Server日志文件的最大容量,单位为kB,0代表不限制。
security = user
说明:设置用户访问Samba Server的验证方式,一共有四种验证方式。
- share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。
- user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
- server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
- domain:域安全级别,使用主域控制器(PDC)来完成认证。
passdb backend = tdbsam
说明:passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写。
1.smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户(真实
用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。
2.tdbsam:该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的参数很多,我列出几个主要的。
pdbedit –a username:新建Samba账户。 pdbedit –x username:删除Samba账户。 pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。 pdbedit –Lv:列出Samba用户列表的详细信息。 pdbedit –c “[D]” –u username:暂停该Samba用户的账号。 pdbedit –c “[]” –u username:恢复该Samba用户的账号。
3.ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”
encrypt passwords = yes/no
说明:是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。不过配置文件默认已开启。
smb passwd file = /etc/samba/smbpasswd
说明:用来定义samba用户的密码文件。smbpasswd文件如果没有那就要手工新建。
username map = /etc/samba/smbusers
说明:用来定义用户名映射,比如可以将root换成administrator、admin等。不过要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,更贴近windows用户的习惯。
guest account = nobody
说明:用来设置guest用户名。
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
说明:用来设置服务器和客户端之间会话的Socket选项,可以优化传输速度。
domain master = yes/no
说明:设置Samba服务器是否要成为网域主浏览器,网域主浏览器可以管理跨子网域的浏览服务。
local master = yes/no
说明:local master用来指定Samba Server是否试图成为本地网域主浏览器。如果设为no,则永远不会成为本地网域主浏览器。但是即使设置为yes,也不等于该Samba Server就能成为主浏览器,还需要参加选举。
preferred master = yes/no
说明:设置Samba Server一开机就强迫进行主浏览器选举,可以提高Samba Server成为本地网域主浏览器的机会。如果该参数指定为yes时,最好把domain master也指定为yes。使用该参数时要注意:如果在本Samba Server所在的子网有其他的机器(不论是windows NT还是其他Samba Server)也指定为首要主浏览器时,那么这些机器将会因为争夺主浏览器而在网络上大发广播,影响网络性能。
如果同一个区域内有多台Samba Server,将上面三个参数设定在一台即可。
os level = 200
说明:设置samba服务器的os level。该参数决定Samba Server是否有机会成为本地网域的主浏览器。os level从0到255,winNT的os level是32,win95/98的os level是1。Windows 2000的os level是64。如果设置为0,则意味着Samba Server将失去浏览选择。如果想让Samba Server成为PDC,那么将它的os level值设大些。
domain logons = yes/no
说明:设置Samba Server是否要做为本地域控制器。主域控制器和备份域控制器都需要开启此项。
logon . = %u.bat
说明:当使用者用windows客户端登陆,那么Samba将提供一个登陆档。如果设置成%u.bat,那么就要为每个用户提供一个登陆档。如果人比较多,那就比较麻烦。可以设置成一个具体的文件名,比如start.bat,那么用户登陆后都会去执行start.bat,而不用为每个用户设定一个登陆档了。这个文件要放置在[netlogon]的path设置的目录路径下。
wins support = yes/no
说明:设置samba服务器是否提供wins服务。
wins server = wins服务器IP地址
说明:设置Samba Server是否使用别的wins服务器提供wins服务。
wins proxy = yes/no
说明:设置Samba Server是否开启wins代理服务。
dns proxy = yes/no
说明:设置Samba Server是否开启dns代理服务。
load printers = yes/no
说明:设置是否在启动Samba时就共享打印机。
printcap name = cups
说明:设置共享打印机的配置文件。
printing = cups
说明:设置Samba共享打印机的类型。现在支持的打印系统有:bsd, sysv, plp, lprng, aix, hpux, qnx
共享参数
================== Share Definitions ==================
[共享名]
comment = 任意字符串
说明:comment是对该共享的描述,可以是任意字符串。
path = 共享目录路径
说明:path用来指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的Netbios名,用宏表示主要用于[homes]共享域。例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目录,这样path就可以写成:path = /home/share/%u; 。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以这样写:path = /home/share/%m 。
browseable = yes/no
说明:browseable用来指定该共享是否可以浏览。
writable = yes/no
说明:writable用来指定该共享路径是否可写。
available = yes/no
说明:available用来指定该共享资源是否可用。
admin users = 该共享的管理者
说明:admin users用来指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效。
例如:admin users =bobyuan,jane(多个用户中间用逗号隔开)。
valid users = 允许访问该共享的用户
说明:valid users用来指定允许访问该共享资源的用户。
例如:valid users = bobyuan,@bob,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@+组名”表示。)
invalid users = 禁止访问该共享的用户
说明:invalid users用来指定不允许访问该共享资源的用户。
例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)
write list = 允许写入该共享的用户
说明:write list用来指定可以在该共享下写入文件的用户。
例如:write list = bobyuan,@bob
public = yes/no
说明:public用来指定该共享是否允许guest账户访问。
guest ok = yes/no
说明:意义同“public”。
几个特殊共享:
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
; valid users = MYDOMAIN%S
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = yes
writable = no
share modes = no
[Profiles]
path = /var/lib/samba/profiles
browseable = no
guest ok = yes
本文转载自:http://yuanbin.blog.51cto.com/363003/115761,在此向原作者致敬。
PPP认证时产生地址为对端的32位直连路由的解决方法
问题描述
在串口启用PPP认证后,会在路由表中多出一条地址为对端的32位直连路由,这在双点双向重发布中将产生路由环路,十分烦人!
类似下面这样:
C 202.90.1.0/30 is directly connected, Serial0/1 C 202.90.1.2/32 is directly connected, Serial0/1 //此条为PPP认证产生的路由,202.90.1.2为对端串口的地址
解决方法
在两边的串口上敲以下命令就好啦!
Router_config_s0/1#no peer neighbor-route //禁止创建到对端的主机路由
四叶草-十万分之一的希望
Apache配置对站点目录的认证
前言:
有的时候需要对站点中的某个目录进行保护,只有输入指定的账号密码才可以浏览。这当然可以通过动态网站设计语言来实现,但通过对Apache本身的配置来实现似乎要更方便一些。
配置方法:
一、Apache配置编辑及站点创建
创建一个站点配置文件。
[root@localhost auth]# vim /etc/httpd/conf.d/vhost1.conf
内容如下:
<Directory "/tmp/html/auth/"> // 要启用认证的目录 AuthName "请认证身份" // 服务器返回的认证对话框的标题 AuthType Basic // 认证类型 AuthUserFile /tmp/html/auth/.htpasswd // 密码配置文件路径 require valid-user // 允许通过认证的所有用户访问,如果改为某一用户名则只允许此用户访问 </Directory> <VirtualHost *:80> // 创建一个简单的虚拟主机用于测试 DocumentRoot /tmp/html/ </VirtualHost>
创建站点运行目录及要开启认证的站点子目录。
[root@hostname ~]# mkdir -p /tmp/html{,/auth}
查看此时的站点目录结构。
[root@hostname ~]# tree /tmp/html/ /tmp/html/ └── auth
在站点子目录下创建首页文件。
[root@hostname ~]# echo 'Hello,world!' > /tmp/html/auth/index.html
二、生成用户密码配置文件
创建新文件,并向其中添加一个用户认证信息。
[root@hostname ~]# htpasswd -cb /tmp/html/auth/.htpasswd user1 123456 //-c参数用于创建新文件,若文件已存在则无需使用-c参数,-b参数用于指定在命令行中直接键入密码,而不是用交互模式。user1为用户名,123456为密码。 Adding password for user user1 //提示成功添加了user1的用户密码
增加一个新的认证用户。
[root@hostname ~]# htpasswd -b /tmp/html/auth/.htpasswd user2 123456 Adding password for user user2 //成功添加
修改用户的密码。
[root@hostname ~]# htpasswd -mb /tmp/html/auth/.htpasswd user1 654321 Updating password for user user1 //密码更新成功
删除认证用户。
[root@hostname ~]# htpasswd -D /tmp/html/auth/.htpasswd user2 Deleting password for user user1 //删除成功
测试:
使用浏览器访问http://URL/auth(URL是你网站的域名或IP)就会看到要求认证的对话框啦!
这里我为了方便,使用的是Linux下的Links浏览器进行测试的。
正确输入账号密码后,即可看到网页内容。
CentOS 6中创建及管理LVM逻辑卷
LVM简介:
LVM是逻辑管理卷的简写,其可以将多块物理磁盘的分区组成一个大的卷组(可以把他想象成是一个大的资源池),再在卷组上划分出逻辑卷并在其上建立文件系统最终供用户使用。
LVM的好处是可以动态的增加逻辑卷的大小,这样就不用面临随着业务发展,原本的分区空间不足的尴尬啦!
下面是LVM的结构图,最下面是物理磁盘分区,其上是物理卷(一个物理磁盘分区对应一个物理卷),再往上是我称之为“资源池”的卷组,这个“资源池”的容量是由组成其的物理卷的总容量决定的,而最上面则是可以被当成“普通分区”来使用的逻辑卷,逻辑卷可以划分很多个(默认一个卷组可以划分256个逻辑卷),只要其加起来的容量不超过“资源池”的容量就好!
创建LVM:
一、安装LVM软件包
通常情况下,CentOS中都有自带LVM软件包,但为了以防万一,我还是把安装命令贴出来吧~
[root@localhost ~]# yum install -y lvm
二、创建物理磁盘的分区
记得要先添加一块空磁盘呐,本实验中我添加了一块8GB大小的SCSI磁盘。
查看新添加的磁盘。
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 4.2G 0 rom /media/cdrom sda 8:0 0 8G 0 disk ├─sda1 8:1 0 500M 0 part /boot └─sda2 8:2 0 7.5G 0 part ├─VolGroup-lv_root (dm-0) 253:0 0 6.7G 0 lvm / └─VolGroup-lv_swap (dm-1) 253:1 0 816M 0 lvm [SWAP] sdb 8:16 0 8G 0 disk
如果新加的磁盘不能被系统立即识别请参考此篇文章。
https://www.ibadboy.net/archives/1895.html
使用fdisk工具对新加磁盘进行分区。
[root@localhost ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x028d3c84. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n //新建磁盘分区 Command action e extended p primary partition (1-4) p //新建为主分区 Partition number (1-4): 1 //设置分区编号 First cylinder (1-1044, default 1): s //设置起始扇区 Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044):522 //设置结束扇区,这里我结束扇区设置为总扇区数的一半,相当于把分区容量设置为总容量的一半 Command (m for help): n //新建第二块磁盘分区 Command action e extended p primary partition (1-4) p //新建为主分区 Partition number (1-4): 2 //设置分区编号 First cylinder (523-1044, default 523): //设置起始扇区 Using default value 523 Last cylinder, +cylinders or +size{K,M,G} (523-1044, default 1044): //设置结束扇区 Using default value 1044 Command (m for help): t //更改分区的标识 Partition number (1-4): 1 //选择编号为1的分区进行操作 Hex code (type L to list codes): 8e //将分区标识更改为“Linux LVM”,其对应的代码是8e,这里可以输入list来查看所有标识对应的代码 Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): t //更改分区的标识 Partition number (1-4): 2 //选择编号为2的分区进行操作 Hex code (type L to list codes): 8e //将分区标识更改为“Linux LVM” Changed system type of partition 2 to 8e (Linux LVM) Command (m for help): p //查看刚刚新建的分区 Disk /dev/sdb: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x028d3c84 Device Boot Start End Blocks Id System /dev/sdb1 1 522 4192933+ 8e Linux LVM /dev/sdb2 523 1044 4192965 8e Linux LVM Command (m for help): w //保存并退出fdisk工具 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
三、创建物理卷
使用新创建的/dev/sdb1和/dev/sdb2这两个分区分别组建物理卷。
[root@localhost ~]# pvcreate /dev/sdb[12] Physical volume "/dev/sdb1" successfully created //提示说物理卷创建成功 Physical volume "/dev/sdb2" successfully created
查看物理卷。
[root@localhost ~]# pvdisplay "/dev/sdb1" is a new physical volume of "4.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 //物理卷名称 VG Name //所属的卷组名称,这里还未加入任何卷组 PV Size 4.00 GiB //物理卷大小 Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID pTps5V-4vKA-em0G-XR8Y-ltJu-4CeL-KEOMn3 "/dev/sdb2" is a new physical volume of "4.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb2 //物理卷名称 VG Name //所属的卷组名称 PV Size 4.00 GiB //物理卷大小 Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID uzW0YS-fl5a-4Qae-6vcG-iXce-a8iB-QYMvf4
四、创建卷组
将刚刚新建的物理卷/dev/sdb1和/dev/sdb2组成一个卷组——vg1
[root@localhost ~]# vgcreate vg1 /dev/sdb[12] Volume group "vg1" successfully created //提示说卷组创建成功卷
查看卷组
[root@localhost ~]# vgdisplay --- Volume group --- VG Name vg1 //卷组名称 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write //卷组的访问权限 VG Status resizable //卷组状态 MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 7.99 GiB //卷组容量 PE Size 4.00 MiB Total PE 2046 Alloc PE / Size 0 / 0 Free PE / Size 2046 / 7.99 GiB VG UUID dY8zDo-vD43-DQB8-CpRs-Shla-kWfJ-OuDjhp
五、划分逻辑卷
从总容量为8G(其实不足8G)的卷组vg1中划分四个逻辑卷,分别为lv1、lv2、lv3、lv4,每个大小为2000MB。
[root@localhost ~]# lvcreate -L 2000MB -n lv1 vg1 //-L参数后面接逻辑卷大小,单位可以是KB、MB、GB。 Logical volume "lv1" created [root@localhost ~]# lvcreate -L 2000MB -n lv2 vg1 Logical volume "lv2" created [root@localhost ~]# lvcreate -L 2000MB -n lv3 vg1 Logical volume "lv3" created [root@localhost ~]# lvcreate -L 2000MB -n lv4 vg1 Logical volume "lv4" created
查看逻辑卷,因为这里的输出信息比较多,我只截取lv1这个逻辑卷的信息做简要说明。
[root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/vg1/lv1 //逻辑卷路径 LV Name lv1 //逻辑卷名称 VG Name vg1 //逻辑卷所属的卷组的名称 LV UUID qhypYJ-jPOW-KDDy-NXtO-aWQO-ryHI-Tf04hS LV Write Access read/write LV Creation host, time localhost.localdomain, 2017-10-11 13:13:54 +0800 LV Status available # open 0 LV Size 1.95 GiB //逻辑卷容量 Current LE 500 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2
至此,逻辑卷已创建完成,但此时还不能立即使用,还需要在逻辑卷上新建文件系统。
这里为了不让文章显得啰嗦,我只在逻辑卷lv1上创建文件系统。
[root@localhost ~]# mkfs.ext4 /dev/vg1/lv1 mke2fs 1.41.12 (17-May-2010) 文件系统标签= 操作系统:Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 128000 inodes, 512000 blocks 25600 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=524288000 16 block groups 32768 blocks per group, 32768 fragments per group 8000 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 正在写入inode表: 完成 Creating journal (8192 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 This filesystem will be automatically checked every 31 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
挂载逻辑卷。
[root@localhost ~]# mount /dev/vg1/lv1 /mnt [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 6.7G 816M 5.5G 13% / tmpfs 246M 0 246M 0% /dev/shm /dev/sda1 485M 33M 427M 8% /boot /dev/sr0 4.2G 4.2G 0 100% /media/cdrom /dev/mapper/vg1-lv1 2.0G 35M 1.8G 2% /mnt
管理LVM:
卷组的扩容
这里我新增加一块8G的空SCSI磁盘,并在其基础上创建一个8G的物理卷。
将刚刚新建的8G大小的物理卷加入到vg1卷组中,实现对vg1卷组的扩容。
[root@localhost ~]# vgextend vg1 /dev/sdc1 dev_is_mpath: failed to get device for 8:33 No physical volume label read from /dev/sdc1 Physical volume /dev/sdc1 not found Physical volume "/dev/sdc1" successfully created Volume group "vg1" successfully extended
查看卷组信息,注意看卷组容量。
[root@localhost ~]# vgdisplay --- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 14 VG Access read/write VG Status resizable MAX LV 0 Cur LV 4 Open LV 0 Max PV 0 Cur PV 3 Act PV 3 VG Size 15.99 GiB //卷组的总容量已增加 PE Size 4.00 MiB Total PE 4093 Alloc PE / Size 2000 / 7.81 GiB Free PE / Size 2093 / 8.18 GiB VG UUID dY8zDo-vD43-DQB8-CpRs-Shla-kWfJ-OuDjhp
逻辑卷的扩容
这里对已经挂载在/mnt目录上的lv1逻辑卷进行扩容,将其大小变为10GB。
[root@localhost ~]# lvextend -L 10GB -n /dev/vg1/lv1 Extending logical volume lv1 to 10.00 GiB Logical volume lv1 successfully resized
重设逻辑卷大小,只有正在使用的逻辑卷才需要重设大小。
[root@localhost ~]# resize2fs /dev/vg1/lv1 resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/vg1/lv1 is mounted on /mnt; on-line resizing required old desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/vg1/lv1 to 2621440 (4k) blocks. The filesystem on /dev/vg1/lv1 is now 2621440 blocks long.
查看此时lv1的容量,已实现动态扩容。
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 6.7G 816M 5.5G 13% / tmpfs 246M 0 246M 0% /dev/shm /dev/sda1 485M 33M 427M 8% /boot /dev/sr0 4.2G 4.2G 0 100% /media/cdrom /dev/mapper/vg1-lv1 9.9G 37M 9.4G 1% /mnt
Linux下查看串口信息
使用管道命令过滤系统开机时的启动信息来得出当前系统中已存在的串口,可以看到,我的系统中存在ttyS2这个串口。
[root@localhost ~]# dmesg | grep tty console [tty0] enabled //这个tty0我暂时没搞懂他是什么,但他肯定不是一个物理串口 serial8250: ttyS2 at I/O 0x3e8 (irq = 4) is a 16550A 00:04: ttyS2 at I/O 0x3e8 (irq = 4) is a 16550A
Linux下卸载被进程占用的分区
有的时候在卸载目录时会看到类似下面的错误提示。
[root@localhost ~]# umount /mnt umount: /mnt: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
这段信息是告诉你,设备正在被使用,无法卸载。此时,想卸载掉这块分区唯一的方法就是杀死占用他的进程。
先找出是谁在占用这块分区,可以看到这里占用他的是进程号为1341的进程,后面的c代表的是进程的权限,不予理会。
[root@localhost ~]# fuser /mnt /mnt: 1341c
使用kill -9
杀死该进程后即可成功卸载磁盘
[root@localhost ~]# kill -9 1341 [root@localhost ~]# umount /mnt [root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup-lv_root 19166504 3280692 14912196 19% / tmpfs 243140 0 243140 0% /dev/shm /dev/sda1 495844 33455 436789 8% /boot
CentOS 6下不重启系统就识别新增加的SCSI磁盘的方法
执行以下命令重新扫描SCSI磁盘,若重新扫描后依然没有看到新增加的磁盘,则将路径中的host0改为host1、host2、host3、host4…直到看到新的磁盘为止(我做这个实验的时候试到host2才扫描到)。
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
查看硬盘是否被扫描到,可以看到这里多了一块”sdb”就是我新增加的SCSI磁盘。
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 500M 0 part /boot └─sda2 8:2 0 19.5G 0 part ├─VolGroup-lv_root (dm-0) 253:0 0 18.6G 0 lvm / └─VolGroup-lv_swap (dm-1) 253:1 0 960M 0 lvm sr0 11:0 1 4.2G 0 rom /media/cdrom sdb 8:16 0 20G 0
disk
Linux在不重启系统的情况下重新挂载根目录下的分区
当修改了/etc/fstab
中的分区挂载参数后需要卸载分区并重新挂载,这对于普通分区还好说,但是对于挂载在根目录下的分区呢?如果冒然卸载掉会导致系统无法运行。那,除了重启系统之外还有什么方法可以使修改的分区自动挂载参数立即生效呢?
这里可以使用mount
命令的remove
选项来实现重新挂载分区的功能~
[root@localhost ~]# mount -o remove /
Linux下创建及调整swap分区
swap分区简介:
Linux下的swap分区类似于Windows下的虚拟内存,都是当物理内存不够用时临时充当“内存”角色的一块磁盘空间。
Linux下增加及新建swap分区有两种方法,一种是基于硬盘分区的方式,另一种是基于文件的方式。
1、基于磁盘分区的swap
要增加基于分区的swap分区,首先得保证你有一块空余的磁盘空间可供分区,这里因为我是在虚拟机环境下实验,所以直接新增一块8G的硬盘用于分区。
下面是操作过程,每一步都有注释。
[root@localhost ~]# fdisk /dev/sdb //使用fdisk分区工具为新增加的磁盘分区 WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n //新建一个分区 Command action e extended p primary partition (1-4) p //新建为主分区 Partition number (1-4): 1 //分区编号为1 First cylinder (1-1044, default 1): 1 /分区起始扇区为1 Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): //这里我直接按回车了,使用全部可用磁盘空间 Using default value 1044 Command (m for help): t //更改分区类型,默认类型为“Linux”,要将其更改为“Linux swap” Selected partition 1 //如果存在多个分区,则这里会要求选择要操作的分区的编号,因为本实验中只有一个分区,所有直接默认是1 Hex code (type L to list codes): 82 //82就是“Linux swap”分区类型的编号,这里可以输入“list”查看所有分区类型对应的编号 Changed system type of partition 1 to 82 (Linux swap / Solaris) Command (m for help): p //查看刚刚划分的swap类型的分区 Disk /dev/sdb: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xa8cc39af Device Boot Start End Blocks Id System /dev/sdb1 1 1044 8385898+ 82 Linux swap / Solaris Command (m for help): w //保存对磁盘分区做的更改 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
将刚刚创建的分区格式化为swap文件系统。
[root@localhost ~]# mkswap /dev/sdb1 Setting up swapspace version 1, size = 8385892 KiB no label, UUID=4b5f9371-3df6-47d5-bc40-15e6f7bb3db8
查看当前系统中启用的swap分区的大小。
[root@localhost ~]# free total used free shared buffers cached Mem: 502216 84088 418128 0 6892 31096 -/+ buffers/cache: 46100 456116 Swap: 835576 0 835576
启用新增加的swap分区之后再次查看系统中已生效的swap分区大小,可以发现,其完美增加了8个G~。
[root@localhost ~]# swapon /dev/sdb1 [root@localhost ~]# free total used free shared buffers cached Mem: 502216 90048 412168 0 6944 31088 -/+ buffers/cache: 52016 450200 Swap: 9221464 0 9221464
2、基于文件的swap
先使用dd命令生成一个2GB大小的文件。
[root@localhost ~]# dd if=/dev/zero of=/var/swap bs=1M count=2048 记录了2048+0 的读入 记录了2048+0 的写出 2147483648字节(2.1 GB)已复制,6.25394 秒,343 MB/秒</pre> 在这个文件上新建swap文件系统。 <pre>[root@localhost ~]# mkswap /var/swap mkswap: /var/swap: warning: don't erase bootbits sectors on whole disk. Use -f to force. Setting up swapspace version 1, size = 2097148 KiB no label, UUID=344232eb-9654-4167-873b-bdda9d2b01e6
查看当前系统中生效的swap分区的大小。
[root@localhost ~]# free total used free shared buffers cached Mem: 502216 495380 6836 0 1056 438852 -/+ buffers/cache: 55472 446744 Swap: 9221464 8532 9212932
启用新建的swap分区,并查看系统中生效的swap分区的大小,可以发现,增加了2G。
[root@localhost ~]# swapon /var/swap [root@localhost ~]# free total used free shared buffers cached Mem: 502216 496256 5960 0 1152 437816 -/+ buffers/cache: 57288 444928 Swap: 11318608 8440 11310168
开机自动挂载swap分区:
将要开机挂载的swap分区加入到/etc/fstab
文件中。
[root@localhost ~]# vim /etc/fstab
以下是修改后的文件内容,最后两行就是刚刚新建的swap分区,第三行是系统原本的swap分区。
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1 UUID=143f17a3-2d07-44b9-a577-f1609d3fb0c0 /boot ext4 defaults 1 2 /dev/mapper/VolGroup-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/sdb1 swap swap defaults 0 0 /var/swap swap swap defaults 0 0
停用swap分区:
先查看系统中已生效的swap分区的大小。
[root@localhost ~]# free total used free shared buffers cached Mem: 502216 494008 8208 0 3700 431888 -/+ buffers/cache: 58420 443796 Swap: 11318608 7472 11311136
停用掉系统中原本的swap分区,并查看系统中生效的swap分区的大小,可以发现少了800MB左右的空间。
[root@localhost ~]# swapoff /dev/VolGroup/lv_swap [root@localhost ~]# free total used free shared buffers cached Mem: 502216 495748 6468 0 3872 428504 -/+ buffers/cache: 63372 438844 Swap: 10483032 88 10482944
Python小程序-写一个计算一元二次方程的程序函数
题目要求:
请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程:ax^2 + bx + c = 0的两个解。
程序代码:
这只是一个函数,如果你不调用它的话,是不会产生任何输出的。
import math def quadratic(a, b, c): if not (isinstance(a,(int,float)) and isinstance(b,(int,float)) and isinstance(c,(int,float))): return '请输入数字' else: d = -c + (b/2) ** 2 if d < 0: return '无解' else: x1 = round((math.sqrt(d) - (b/2)) / a , 2) x2 = round((-math.sqrt(d) - (b/2)) / a , 2) return x1,x2
小结:
求数字的平方根可以使用math.sqrt()
函数,需引入math
模块。