简介
今天整理文件整理出了好多年前学习linux的笔记 就整理下发布在博客上怕文件形式会误删。
linux入门基础对于新手而言不推荐看书!!不推荐看书!!(大牛跳过)先看视频看linuxcast的视频讲的不错下方链接即可下载 等视频看完再去跟着书的目录学一遍或者学一章内容跟着书走一章配合着来这个根据个人情况而定 如果感觉书难度大就果断抛弃书看视频!看视频!学完入门课程再看这本书 从头到尾敲(聪明的略过) 在学习过程中多加几个linuxQQ群 实在有不会不解的经过多次百度无果之后再提问 一定要学会提问这个也很重要 要不你就会被T。
链接:https://pan.baidu.com/s/1LIkzNYnj6DGj-Xb3wT2hdw 提取码:pao6
推荐入门书:《Linux操作系统(RHEL7/CentOS7)》张同光
入门之后已经学会了linux的基本操作了想进入进阶阶段的同学可以继续学习还是推linuxcast的课程
这些课程不像入门课程那样知识是一环套一换的所以根据自己情况随意安排看,至于书推荐鸟哥Linux私房菜服务假设篇 看完一个模块看一模块的书这样配合着食用效果更好!
看完了所有的视频 鸟哥的私房菜服务器架设篇章 也学完了 再回过头来把鸟哥的linux基础篇章敲一遍学习 这款因为书比较厚讲的比较细所以好好啃!技术提升一大截!
链接:https://pan.baidu.com/s/1aC3B2uNULsTsYCPFSzR9fQ 提取码:j7jo
推荐进阶书:《鸟哥的Linux私房菜服务器架设篇 》 第四版《鸟哥的Linux私房菜基础篇章 》 第四版
完成上述内容linux算是可以了如果还想继续学习推荐几本书 通过上面的学习你也会有一个明确的学习方向
《Linux服务器安全攻防 [Linux Server Securlty:Hack and Defend]》
《Linux防火墙(第4版)》
LINUX启动流程
Linux启动流程
BIOS
MBR:Boot Code
执行引导程序-GRUB
加载内核
执行init
runlevel
BIOS
bios基本输入输出系统,一般保存在主板的bios芯片中
计算机启动的时候第一个运行的就是bios,bios负责检查硬件并且查找可启动设备
可启动设别在bios设置中定义,如USB、CDROM、HD
MBR
bios找到可移动设备执行后执行其引导代码
引导代码为MBR的前446字节
GRUB
Grub是现在linux使用的主流引导 程序
可以用来引导现在几乎所有的操作xit
Grub的相关文件保存着/boot/grub目录中
Grub配置文件为/boot/grub/grub.conf
KERNEL
MBR的引导代码负责找到并加载LINUX
LINUX内核保存在/boot/vmlinuz-2.6.18-194.el5
一般还会加载内核模块打包文件:/boot/initrd-2.6.18-194.el5.img
linux为保持kernel的精简将一些不常用的驱动、功能编译成模块,在需要的时候动态加载,而这些模块被打包保存为一个initramfs文件
命令dmesg可以查看本次启动时内核输出的信息
top——查看进程
INIT
init是linux系统中的第一个进程
调用/etc/rc.sysinit负责对系统进行初始化,挂在文件系统 ,并且根据运行几倍启动相应服务
可以通过/etc/inittab配置文件修改默认运行级别
每个级别对应的启动服务保存在/etc/rc.d/rc[123456].d中
单用户修改ROOT密码
为内核传递参数“1”或“single”可系统进入单用户模式
的那用户模式下不启动任何服务
但用户模式直接以root用户登录,并且不需要密码
可以使用passwd修改root密码
GRUB加密
grub-md5-crypt grubMD5加密密码
通过grub.conf中的启动配置中加入如下参数即可对grub进行加密
password --md5 $1$LH4VD$twz0aQivKKt55QVNfXw0n.
加密后的密码可以通过grub-md5-crypt生成
vi /etc/grub.conf
Linux目录结构
/ 根目录
/root root超级用户家目录
/home 普通用户的家目录
/dev 硬件设备
/boot 启动文件
/media 空目录,挂在光盘
/mnt 空目录,仅供测试
/etc 配置文件
/var 日志文件
/tmp 临时文件夹
/bin 所有用户都可以执行的程序
/sbin root用户可以执行的程序
/usr 建议软件安装目录
/lost+fount 系统异常产生错误,错误碎片会存放
/sbin 可执行二进制文件
/usr 可执行二进制文件
/proc 此目录的数据都在内存中 所以不占用磁盘空间
Linux用户接口与文本编辑器
history ——历史命令
参数:
-c清空历史命令列表
Linux快捷键
ctrl+l——清屏
ctrl+z——退出
ctrl+c——强制中断
ctrl+u——清除当前输入的命令
ctrl+S——暂停屏幕输出
ctrl+Q——恢复屏幕输出
Alt+F4——关闭当前窗口
vim/vm
参数:
h——光标向左移动一格
l——光标向右移动一格
j——光标向下移动一格
k——光标向上移动一格
a——在光标之后插入内容
A——在光标当前行的末尾插入内容
i——在光标前插入内容
o——在光标行的下面新增一行
O——在光标所在的行上面新增一行
w [文件路径] ——保存当前文件
q ——结束vim程序
q! ——强制结束vim程序,修改文件不会储存
wq或x ——保存当前文件并退出
e ——将在原窗口打开新的文件
e! ——放弃所有更改,重新编辑
w! ——强行保存
linux网络配置管理
Linux网络配置
命令ifconfig用来查看接口信息
ifconfig -a 查看所有接口
ifconfig eth0 查看特定接口
命令ifup、ifdown用来启用、禁用一个借口
ifup eth0 ——启动eth0网卡
ifdown eth0——关闭eth0网卡
网络相关配置文件
网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
DNS配置文件
/etc/resolv.conf
主机名配置文件
/etc/sysconfig/network
静态主机名配置文件
/etc/hosts
网络测试命令
测试网络连通性
ping 192.168.1.1
ping www.baidu.com
测试DNS解析
host www.baidu.com
dig www.baidu.com
显示路由表
ip route
追踪到达目标地址的网络路径
traceroute www.baidu.com
使用mtr进行网络质量测试(结合了traceroute和ping)
mtr www.baidu.com
linux-RPM
RPM
rpm软件包常用命令规范:
RPM基础命令
安装软件:rpm -i xxx.rpm
卸载软件:rpm -e xxx
升级形式安装:rpm -U xxx.rpm
http:或ftp:协议安装
rpm -ivh http://www.hehe.com/xxx.rpm
可以加入以下参数:
-v 显示详细信息
-h 显示进度条
RPM查询
rpm会保存软件相关的很多信息,可以通过以下命令查询
rpm -qa——列出所有安装的rpm软件
rpm -qf xiaohua——查询目标文件属于哪个rpm包
rpm -ql xiaohua——查询指定已安装rpm软件的信息
rpm -qlp xiaohua.rpm 查询rpm文件信息
rpm -qlp xiaohua.rpm 查询rpm包含文件
系统管理-用户管理
系统管理——用户管理
linux中存在三种用户:root用户、系统用户、普通用户
useradd password userdel usermod chage
useradd [选项] [用户账户]——创建账户命令
参数:
-d 指定用户登陆时起始目录
-e 指定账户的有效期限
-f 指定在密码过期后多少天关闭该账户
-g 指定用户所属的组群
-G 指定用户所属的附加组群
-U 接触锁定
-r 建立系统账户
例
useradd huakt #创建用户
useradd -e 15/05/17 xiaohua #添加xiaohua用户,并给xiaohua用户设置有效期
useradd -r xiaole #创建系统用户为xiaole
useradd -d /home/hehe hehe #创建用户并且指定home目录
useradd -g root 2333 #创建2333组并指定所属的root组
创建xiaohua用户并指定他的起始目录为xiaohua,并加入组root 设置有效日期为15/5/17日 并且密码过期30天后关闭该账户。
useradd -d /home/xiaohua -g root -e 15/5/17 -f 30 xiaohua
passwd [选项] 用户账户——修改密码命令
参数:
-d 删除账户的密码(只有具备超级用户权限才可使用)
-u 解开账户锁定状态(只有具备超级用户权限才可使用)
-l 锁定已有命名的账户名称
-x 密码最大使用时间
例
passwd xiaohua #修改用户xiaohua的密码
passwd -l xiaohua #锁定xiaohua帐号
passwd -u xiaohua #解除xiaohua账户的锁定
passwd -d xiaohua #删除xiaohua帐户密码
userdel [选项] 用户账户——删除账户命令
userdel不能删除正在线上的账户
参数:
-r 删除用户目录以及目录中所有文件
例
userdel xiaohua #删除xiaohua用户
userdel -r xiaohua #删除xiaohua用户并删除xiaohua用户家目录
usermod [选项] 用户账户——修改账户命令
参数:
-d 改变用户主目录
-e 设置用户的过期时间(-年-月-日)
-g 改变用户的主属组
-G 设置用户属于那些组
-u 改变用户的UID
-l 改变用户的登录名
-L 锁住密码,使密码不可用
-U 为用户密码解锁
例
usermod -d /home/xiaohei xiaohua #修改xiaohua家目录为/home/xiaohei
usermod -e 15/5/17 xiaohua #给xiaohua过期时间
usermod -G root xiaohua #将xiaohua用户加入root组中
usermod -l xiaohei xiaohua #修改xiaohua用户名为xiaohei
usermod -U xiaohua #锁住xiaohua用户的密码,使xiaohua密码不可用
usermod -U xiaohua #解锁xiaohua用户,使xiaohua密码可用
chage [选项] ——更改密码过期命令
参数:
-m 密码可更改的最小天数
-M 密码保持最大天数
-E 账户的到期的日期,0表示立即过期,-1表示永不过期
-d 强制密码最后修改日期,一般用户立即登录修改的值为0
-l 列出用户以及密码的有效期
-W 用户密码到期前提前收到警告信息的天数
例
chage -l xiaohua #查看xioahua用户密码的设定情况
chage -M 90 xiaohua #设置xiaohua密码有效期为90天
chage -d 0 xiaohua #强制xiaohua用户登录时修改口令
强制用户下次登录时修改密码,密码最低有效期是0密码有效期90天,密码过期的前15天发出警告信息
chage -d 0 -m 0 -M 90 -W 15 xiaohua
[用户名:密码:UID:GID:用户描述:用户主目录:用户登录Shell]
/etc/passwd - 使 用 者 帐 号 资 讯
/etc/shadow - 使 用 者 帐 号 资 讯 加 密
/etc/group - 群 组 资 讯
/etc/default/useradd - 定 义 资 讯
/etc/login.defs - 系 统 广 义 设 定
/etc/skel - 内 含 定 义 档 的 目 录
系统管理-组管理
系统管理——组管理
组管理:groupadd、groupdel、groupmod、gpasswd、newgrp
groupadd [组名]——创建组命令
例
groupadd xiaohua #创建xiaohua组
groupdel [组名]——删除组命令
例
xiaohua #删除xiaohua组
groupmod
gpasswd [选项] [组名]
参数:
-a 添加用户到组
-d从组中删除用户
-A指定管理员
例
gpasswd -A xiaohua xiaohua1 #将xiaohua设为xiaohua1组的管理员
gpasswd -a xiaohua xiaohua1 #将用户xiaohua加入到xiaohua1组中
gpasswd -d xiaohua xiaohua1 #将xiaohua从xiaohua1组中移除
newgrp [组名称]——切换组命令
newgrp root #登录到root组
系统管理-用户查询
系统管理——用户查询
用户查询:who、w、id、whoami、last、lastlog
/var/run/utmp 正在本系统中的用户信息
/var/log/wtmp 登录本系统的用户信息
who ——查询utmp文件并报告当前登录的每个用户
w ——查询utmp文件并显示系统中每个用户和他所运行的进程信息
id ——显示用户id信息
whoami ——显示当前终端上的用户名
last ——往回搜索wtmp来显示自从文件第一次创建以来登录过的用户
lastlog ——显示上次登录的系统用户数
例
lastlog -b 5 #显示5天前的登录信息
lastlog -t 5 #显示5天后的登录信息
lastlog -u xiaohua #查询xiaohua用户的登录信息
su
su - xiaohua #变更为xiaohua账户
系统管理-进程管理
系统管理——进程管理
PS(Process status——进程 状态)
a 显示所有包括终端的进程
u 显示所有者信息
x 显示不包括连接终端的进程(如守护进程)
-f 显示所有进程
---------------------------
pstree(process status tree——进程 状态 树)
-a 显示每个进程的完整命令、包括路径、参数
-p 显示进程号
pstree 参数 进程PID
pstree 9269
-----------------------------
top ——显示进程的相关信息
-p 显示指定的进程信息
-b 以批处理模式显示程序信息
-----------------
kill ——终止进程命令
-9——强制中止
-1——给所有进程号大于1的进程发送信号
-a——终止所有进程
-u——指定用户
kill 信号代码
kill %1中止后台进程
---------------------
ps -le 或ps -aux查看所有用户执行的进程详细信息
ps -uU root 查看系统指定用户执行的进程
ps -le |grep init 查看指定信息
-------
pstree(process status tree——进程 状态 树)
-a 显示每个进程的完整命令、包括路径、参数
-p 显示进程号
--------------------
kill 3576——关闭3576进程
kill -9 进程号 ——强制关闭
kill -1 进程号 ——重启进程
killall httpd ——关闭跟httpd名的所有进程
xkill——关闭图形化程序
pkill httpd——关闭httpd进程
pgrep httpd ——查看httpd进程的PID
nice和renice
nice——启动时修改优先级
指定程序的运行优先级
格式:nice -n command
例如:nice -5 service httpd start
renice——启动后修改优先级
改变一个正在运行的进程的优先级
格式:renice n pid
例如:renice -5 777
优先级取之范围为(-20 - 19)
------------------------
nohup
使进程在用户退出邓丽盈后仍旧继续执行,nobup命令将执行后的数据信息和错误信息默认储存到文件nobup.out中
格式:
nobup program &
进程的挂起和恢复
进程的中止(挂起)和终止
挂起(Ctrl+Z)
终止(Ctrl+C)
进程的恢复
恢复到前台继续运行(fg)
恢复到后台继续运行(bg)
查看被挂起的进程(jobs)
终止后台程序kill %1
top
作用:进程状态显示和进程控制,每5秒中自动刷新一次(动态显示)
常用选项:
d:指定刷新的时间间隔
c:显示整个命令行而不仅仅显示命令名
u:查看指定用户进程
k:终止执行中的进程
h或?:获得帮助
r:重新设置进程优先级
s:改变刷新的时间间隔
W:将当前设置写入/.toprc文件中
系统管理——计划任务
系统管理——计划任务
一次性计划任务
at命令
服务脚本名称:/etc/init.d/atd
设置格式:at HH:MM yyyy-mm-dd
at 14:55 2015-5-10
ctrl+D保存任务
at -l或atq——查看任务未执行的计划任务
at -d或atrm——删除队列中的任务
相对计时方法
at now+3 minutes
at now+3 hours
at now+3 days
at配置文件
作用:限制哪些用户可以使用at命令
/etc/at.allow ——允许用户
/etc/at.deny ——禁止用户
周期性计划任务
crontab命令
脚本名称:/etc/init.d/crond
主要设置文件
全局配置文件:/etc/crontab
系统默认的设置:/etc/cron.*
用户定义的设置:/var/spool/cron/用户名
管理cron计划任务
编辑计划任务:crontab -e -u 用户名
查看计划任务:crontab -l -u 用户名
删除计划任务:crontab -r -u 用户名
分钟:0——59
小时:0——23
日期:1——31
月份:1——12
星期:0——7 0或7代表星期日
“*”标识该范围的任意时间
“,”标识间隔的多个不连续时间点
“-”标识一个连续的时间范围
“/”指定间隔的时间频率
0 17 * * 1-5 周一到周五每天17:00
30 8 * * 1,3,5 每周一、三、五的8点30分
0 8-18 * * * 8点到18点之间每隔2小时
0 * /3 * * 每隔3天
案例
每天早上7:50自动开启sshd服务,22点50时关闭
50 7 * * * /sbin/service sshd start
50 22 * * * /etc/init.d/sshd stop
每隔5天清空一次FTP服务器公共目录/var/ftp/pub
* * /5 * * /bin/rm -rf /var/ftp/pub/*
每周六的7:30时,重新启动httpd服务
30 7 * * 6 /etc/init.d httpd restart
每周一、三、五的17:30时,打包备份/etc/httpd目录
30 17 * * 1,3,5 /bin/tar jcf httpd2011.tar.gz /etc/httpd
磁盘分区
df ——查看分区使用情况
df -h 人性化显示
du -——查看文件,目录大小:
du -s 查看目录大小
du -h 人性化显示
du -sh /etc 查看etc大小
检测修复文件系统:
fsck e2fsck
fsck -y
e2fsck -p
判断文件类型
file
file /etc/xiaohua
使用光驱:
挂载光驱
mount /dev/cdrom /mnt/cdrom
df
cd /mnt/cdrom
ls /mnt/cdrom
卸载光驱
umount /mnt/cdrom
eject
dmesg|grep sdb——查看当前挂载成功的硬盘
fdisk -l /dev/sdb ——查看硬盘信息
硬盘分区
fdisk /dev/sdb ——进入/dev/sdb磁盘
m——帮助
p——显示分区表
n——添加新分区
t——改变分区文件系统类型
d——删除分区
w——保存并推出
q——不保存退出
重启创建文件系统
mkfs 格式化mkfs.ext3
mkfs.ext3 /dev/sdb1——格式化sdb1分区
mount/dev/sdb1 /web——将sdb1分区挂载到web目录
------------------
挂载分区-在这里输入磁盘分区信息重启后默认加载
/etc/fstab
LABEL=/ / ext3 defaults 1 1
物理分区名/卷标
/dev/sdb1——物理分区名
LABEL=/——卷标
挂载点
/
文件系统
ext3
缺省设置
defaults
是否在引导时候检测
1——检测
0——不检测
检测顺序
0
1
2
------------------------------------------------
卷标设置
e2label /dev/sdb1——查看/dev/sdb1的卷标
e2label /dev/sdb1 xiaohua ——给/dev/sdb1设置名为xiaohua的卷标
LVM逻辑卷
传统磁盘管理的问题
当分区大小不够用时无法扩展其他大小,只能通过添加硬盘、创建新的分区来扩展空间,但是新添加进来的硬盘是作为独立文件系统存在的,原有的文件系统并未得到扩充,,上层应用很多时候只能访问一个文件系统,只能让现有磁盘下线,换上新的磁盘之后,再将原始数据导入。
LVM
LVM逻辑卷管理通过 将底层物理硬盘封装起来,以逻辑卷的形式表现给上层系统,
逻辑卷的大小可以动态调整,而且不会有丢失现有数据。新加入的硬盘也不会改变现有上层逻辑卷。作为一种动态磁盘管理机制,逻辑卷技术大大提高了磁盘的灵活性。
LVM
PE(physical Extend)默认4M
PV(physical volume) 物理卷
VG(volume group)——装PE -卷组
LV(logical volume) --------逻辑卷
LVM
1.物理磁盘被格式化为PV,空间被划分为一个个PE
2.不同的PV加入同一个VG,不同PV的PE全部进入VG的PE池内
3.LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘
4.LV现在就直接可以格式化后挂着使用
5.LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据。
create——创建
remove——删除
extend——延长
reduce——减少
创建LVM:
将物理磁盘设备初始化为物理卷
pvcreate/dev/sdb /dev/sdc
创建卷组,并将PV加入卷组中
vgcreate xiaohua /dev/sdb /dev/sdc
基于卷组创建逻辑卷
lvcreate -n mylv -L 5G xiaohua
为创建好的逻辑卷创建文件系统
mkfs.ext4 /dev/xiaohua/mylv
将格式化好的逻辑卷挂载使用
mount /dev/xiaohua/mylv /mnt
查看LVM:
可以通过以下命令查看LVM相关信息
查看物理卷信息:
pvdisplay(详细)
pvs
查看卷组信息
vgdisplay(详细)
vgs
查看逻辑卷信息:
lvdisplay(详细)
lvs
删除LVM:
删除LV
lvremove /dev/xiaohua/mylv
删除VG
vgremove xiaohua
删除物理卷
pvremove /dev/sdb
拉伸一个逻辑卷:
逻辑卷额拉伸操作可以在线执行,不需要卸载逻辑卷
1.保证VG中有足够的空闲空间
vgdisplay
2.扩充逻辑卷
lvextend -L +1G /dev/xiaohua/mylv
3.查看扩充后LV大小
lvdisplay
4.更新文件系统
resize2fs /dev/xiaohua/mylv
5.查看更新后文件系统
df -h
拉伸一个卷组:
1.将要添加到VG的硬盘格式化为PV
pvcreate /dev/sdd
2.将新的PV添加到指定卷组中
vgextend xiaohua /dev/sdd
3.查看扩充后VG大小
vgdisplay
缩小一个逻辑卷:
逻辑卷的缩小操作必须离线执行,要卸载逻辑卷
1.卸载已经挂载的逻辑卷
umount /dev/xiaohua/mylv
2.缩小文件系统
需要运行'e2fsck -f
resize2fs /dev/xiaohua/mylv 1G——
3.缩小LV
lvreduce -L -1G /dev/iaohua/mylv——缩小为1GB大小
4.查看缩小后的LV
lvdisplay
5.挂载
mount /dev/xiaohua/mylv /mnt
缩小卷组:
1.将一个PV从指定卷组中移出
vgreduce xiaohua /dev/sdb
2.查看缩小VG
vgdisplay
删除
pvremove /dev/sdb
RIAD
传统磁盘的劣势
影响计算机性能的组件一般包括:CPU、主板总线IO、内存IO、硬件IO、网卡IO。现代处理器性能已经很高了,但是计算机整体IO性能较弱,严重影响了计算机性能现代的计算机总线、内存的速度可以达到5G每秒、甚至更高、但是硬盘IO往往较低。
RAID
RAID(Redundant Arrays of Independent Disks)中文意思是独立冗余磁盘阵列。冗余磁盘阵列技术诞生于1987年
现代硬盘的缺陷:IO性能极弱、稳定性极差
RAID廉价磁盘冗余阵列技术是通过多磁盘并行运行来提高计算机的存储IO性能
RAID分为很多种类,成为RIAD级别,现在RIAD共有7类,通常的有以下四类
-RAID 0 读写性能
-RAID 1 读写性能、冗余性
-RAID 5 读写性能、冗余性(1块硬盘)
-RAID 6 读写性能、冗余性(2块硬盘)
RAID 0
RAID0最少使用2块硬盘,在读写时,将数据分开读写到多块硬盘的方式来提高读写
性能
空间利用率:所有硬盘空间之和
性能:所有硬盘速度之和
冗余能力:无
RAID 1
RAID 1使用最少2块硬盘,在读写时,将数据分开读写到多块硬盘的方式来提高读写性能。
空间利用率:所有磁盘中最小的那块
性能:读性能为所有硬盘之和,写性能会有所减弱
冗余能力:只要有一块硬盘正常,数据就正常
RAID 5
RAID最少使用3块硬盘,RAID5与RAID0类似,读写数据的视乎会将数据分布式的读写在所有的硬盘上,但是在写数据的时候对对数据进行奇偶校验运算,将校验信息同时保存在硬盘上,校验信息可以进行数据恢复使用。
空间利用率:1-1/n
性能:读性能接近RAID0,写性能较RAID0弱一些
冗余能力:可接受一块硬盘损坏
RAID 6
RAID最少使用4快硬盘,RAID6与RAID5类似,读写数据的时候会将数据分布式的读写在所有硬盘上,并保存奇偶校验信息,但是会比RAID5多保存一份校验信息,所以冗余性较RIAD5有所提升。
空间利用率:1-2/n
性能:读性能接近:RAID5,写性能比RAID5还要弱一点
冗余能力:可接受2块硬盘损坏
RAID实现
RAID的实现方式有两种
软件RAID
通过系统功能或RAID软件实现RAID、没有独立硬件和接口,要占用一定系统资源(CPU、硬盘接口速度),并且受操纵系统稳定性影响硬件RAID通过独立的RAID硬件卡实现,有些主板集成RAID硬件、有些需要购买独立的RAID硬件卡,硬件RIAD实现不需要占用其他硬件资源,稳定性和速度都比软件RAID要强
硬件RAID
通过独立的RAID硬件卡实现,有些主板集成RAID硬件、有些需要购买独立的RAID硬件卡,硬件RIAD实现不需要占用其他硬件资源,稳定性和速度都比软件RAID要强
=======================================================
软件RAID
MDADM
每种操作系统都有软件RAID的实现
在Linux中软件RAID通过mdadm这个程序实现
mdadm支持的RAID级别有:RAID0、RAID1、RAID5、RAID6
mdadm可以基于多块硬盘、分区或逻辑卷创建软件RAID
创建好的RAID对应/dev.mdn,n为第几个RAID,如果第一个创建的RAID为/dev/md0,
第二个为/dev/md1
RAID的信息保存在/proc/mdstat文件中,或通过mdadm命令查看
创建软件RAID
我们可以通过mdadm命令创建软件RAID
创建RAID 0:
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb /dev/sdc
-C创建一个新的RAID
-a自动创建对应设备
-l指定要创建的RAID级别
-n指定硬盘数量
创建好RAID之后,我们需要创建一个配置文件
mdadm -D --scan > /etc/mdadm.conf
创建文件系统之后挂在使用了
mkfs.ext4 /dev/md0
mount/dev/md0 /mnt
重启后自动挂载
vi /etc/fstab
查看RAID信息
mdadm -D /dev/md0
/proc中的文件也包含RAID相关信息
cat /proc/mdstat
控制RAID
我们可以通过以下命令关闭一个RAID,关闭前先卸载:
mdadm -S /dev/md0
通过以下命令可以指定RAID启动:
mdadm -R /dev/md0
清理磁盘历史数据
mdadm --zero-superblock /dev/sdb
模拟故障
实验环境下,我们可以通过以下命令模拟一个磁盘的故障
mdadm /dev/md0 -f /dev/sdb
之后,我们可以将故障盘移除
mdadm /dev/md0 -r /dev/sdb
换上新的硬盘后,我们将新硬盘添加到RIAD中
mdadm /dev/md0 -a /dev/sdb
linux日志
日志
日志是系统用来记录系统运行时候的一些相关信息的纯文本文件
日志的目的是为了保存相关程序的运行状态、错误信息等,为了系统进行分析、保存历史记录以及在出现错误的时候发现分析错误使用
Linux系统一般会保存以下类型的日志:
-内核信息
-服务信息
-应用程序信息
cd /var/log/
rsyslog
linux系统中用来实现日志功能的服务称之为rsyslog,在CentOS 5及更早的班恩中使用的是Syslog rsyslog是syslog的增强版本
rsyslog一般默认都会安装,并且被设置为自动启动,可以通过以下命令控制rsyslog服务:
service rsyslog start/stop/restart
rsyslog的配置文件为:
/etc/rsyslog.conf
日志消息一般爆粗在:
/var/log
我们通常使用tail -f log file方式来实现监控日志文件
检查syslog是否正常运行
service syslog status
secure——登陆 权限 安全机制相关日志信息
boot.log——系统启动信息
dmesg——内核日志信息
Facility
日志来源
kern 内核消息
user 用户级消息
mail 邮件系统消息
daermon 系统服务消息/
auth 认证系统消息
syslog 日志系统自身消息
lpr 打印系统消息
authpriv 权限系统消息
cron 定时任务消息
news 新闻系统消息
uucp uucp系统消息
loacl0-local7
--------------------------------------
priority/serverity level
优先/程度 水平
日志分级
除了日志来源以外,对于同一来源产生的日志消息,还进行了优先级划分,优先级划分以下几种:
-Emergency 系统已经不可用
-Alert 必须立即进行处理
-Critical 严重错误
-Erro 错误
-Warning 警告
-Notice 正常信息,但是较为重要
-Informational 正常信息
-Debug debug信息
----------------------------------------
rsyslog配置
rsyslog配置文件中的日志配置规则如下
facility.priority log_location
如:
mail.*
*.info;mail.none;authpriv.none;cron.none
日志位置
-/var/log/maillog //加“-”效率高 将数据先写入缓存等机器空闲时再写入硬盘 但断电后日志文件容易消失,适用用大数据文件日志 比如mail
/var/log/messages //效率不高但安全性高 将数据直接写入硬盘
如果要将日志发送至一个统一的日志服务器,则可以按如下配置:
*.* @192.168.1.1 (使用UDP协议发送)不可靠 效率高
*.* @@192.168.1.1 (使用TCP协议发送)可靠 效率低
linux NFS服务
NFS
NFS(Network File System)是Linux系统之间(类Unix系统之间) 使用最为广泛的文件共享协议,不同于ftp或http;需要将文件下载后使用,NFS方式的共享是可以直接使用而不需要下载的。
NFS服务将某个文件共享出来,客户端就可以直接通过网络挂载该共享文件夹,挂载后直接使用,就如同使用本机的文件一样,不需要下载
NFS的效率比FTP或HTTP要高很多,但是往往仅适用于局域网内共享,互联网共享绝大多数还是使用FTP或HTTP方式
NFS有三个主流版本:NFSv2、NFSv3和NFSv4
CentOS6/RHEL6默认的NFS共享服务支持所有三个版本的客户端连接
NFS协议
NFSv2、NFSv3默认需要rpc服务、所以计算机的rpc服务必须启动
service portmap start OR service rpcbind start//启动rpcbind服务
chkconfig rpcbind on //设置开机自动启动rpcbind服务
NFSv4不再需要rpc支持,并且是防火墙友好的
NFSv2、NFSv3既可以使用TCP协议进行传输、也可以使用UDP协议,UDP协议效率高,但是不保证传输可靠性,不建议使用。NFSv4使用TCP协议进行传输。
NFS服务默认安装,通过以下命令可以启动
service nfs start //启动nfs服务
chkconfig nfs on //将nfs服务加入开机自启
NFS、防火墙
默认NFS需要5个端口,其中4个事动态的,以及rpc服务的端口,动态端口无法通过防火墙,如果需要通过防火墙,则需要配置NFS使用指定的静态端口:
配置NFS的配置文件/etc/sysconfig/nfs,添加静态端口设置
MOUNT_PORT="4001" -挂载使用端口
STATD_PORT="4002" -状态使用端口
LOCKD_TCPPORT="4003" -TCP锁使用端口
LOCKD_UDPPORT="4004" -UTP锁使用端口
防火墙需要配置允许以上端口,以及NFS协议的2049端口,RPC的111端口允许通过才能正常使用NFS。
/etc/sysconfig/nfs /设置端口目录
----------------
NFS共享
NFS服务的共享配置文件为/etc/exports
每一个共享占用一行,格式如下
共享目录 允许的客户机(选项)
例
/huakt-nfs 192.168.1.0/24(ro,async)
/huakt-nfs 192.168.1.2(rw,async)
/huakt-nfs *.huakt,com
配置好共享后,可以使用以下命令启动共享:
service nfs start OR exportfs -r
可以通过以下命令查看当前共享
exportfs -v
showmount -e IP
async——同步
-----------------------------
客户端挂在NFS共享
客户端可以通过mount命令挂载NFS共享,命令格式如下:
mount -t nfs 192.168.1.100://huakt-nfs /mnt
也可以将配置写入/etc/fstab中,在启动时自动挂在
192.168.1.100:/huakt-nfs /mnt nfs defaults 0 0
挂载时可以使用-o指定挂在选项,常用选项如下:
-ro 只读挂载
-rw 读写挂载
-vers=4 指定使用NFSv4方式挂载
客户端卸载NFS共享
客户端可以通过mount命令挂载NFS共享,命令格式如下:
mount -t nfs 192.168.1.100:/huakt-nfs /mnt
挂载时可以使用-o指定挂在选项常用选项如下:
-ro 只读挂载
-rw 读写挂载
-vers=4 指定使用NFSv4方式挂载
---------------------------
NFS共享选项
默认选项如下:
默认选项如下:
-ro 只读共享
-sync 所有操作返回前已经写入磁盘
-wdelay 延迟写操作,等待更多的写操作一起执行
-root_squash 防止远程root用户使用root权限对共享进行访问
常用选项
-rw 读写共享
-async 操作可以延迟写入硬盘,立即相应,可提供速度
-no_wdelay 关闭写延迟,需要0与sync选项同时使用
-no_root_squash 关闭root_squash
unknown keywork rwx
linux-SMB服务
SMB
SMB(Server Message Block)协议是windows中使用的文件共享协议,我们在Linux系统或者其他类uniix系统中(BSD、Mac、Unix)可以通过samba服务来实现SMB功能
samba服务是SMB的一个开源实现,主要功能如下:
-通过SMB协议进行文件共享
-通过SMB协议进行打印共享
-加入一个win2000/2003/2008域环境
-通过windows域环境进行认证操作
SMB协议又称之为CIFS(Common Internet File System)协议
-----------------------
samba
通过以下命令安装samba
yum install -y samba
samba拥有三个服务,分别是:
-smbd //提供文件及打印共享功能,使用139、445端口
-----以下不常用---------
-nmbd //提供NetBLOS支持,使用137端口
-winbindd //提供针对win2000/2003/2008的用户及组信息的解析
功能
-------------------------
一般作为共享使用samba,则只需要smbd服务
winbindd服务需要单独安装
yum install -y samba-winbind
--------------------------------
客户端
windows客户端直接使用以下方式连接即可:
\\192.168.1.1\huakt
Linux或类Unix系统图形界面使用以下方式连接
smb://192.168.1.1/huakt
linux使用CLI下可以使用smbclient命令链接
smbclient //192.168.1.1/huakt -u hehe
也可以通过mount命令挂载smb共享
mount -t cifs //192.168/1/100/huakt /mnt -o username=root,passwdord='xiaohua'
----------------
samba服务
smaba服务可以作为独立服务器使用,也可以加入windows的域环境使用
作为独立服务器使用时,samba使用Linux用户作为其用户,但是需要到哪都创建文件
当加入windows域环境使用时,一般使用windows域用户
samba两种安全模式
-user-level //默认安全模式,使用用户名、密码进行认证
-share-level //只需要密码即可访问共享,但与部分windows客户端有兼容性问题,不推荐使用
samba服务主配置文件
/etc/samba/smb.conf
配置分为三个部分:
-[global] 定义全局性配置
-[homes] 定义对用户家目录的共享配置
-[printers] 定义打印机共享配置
-------------------------
Global配置
smaba常用gloabal配置如下
配置工作组信息
workgroup= root
server string = This is。。。
配置安全模式
security=user
支持的安全模式
user
share
domain
ads
server
smbpasswd -a xiaohua
service smb restart
smbclient //IP/user -U user
--------------------------
samba两种安全模式
User-Level默认安全模式 使用用户名、密码进行认证
Share-level 只需要密码即可访问共享,但与部分windows客户端有兼容问题 不推荐!
===================
创建独立共享
[共享文件夹名]
comment=这里写注释信息
path=/xiaohua
valid user=xiaohua xhds
public=no //是否共享
browsable=yes //是否可读
writable=yes //是否可写
create mask=0765
write list=+staff //组
创建匿名共享
修改samba安全级别为share
security=share
testparm检查配置文件是否正确
查看一个指定服务器共享
smbclient -L IP
---------------------
用户名不是root,,,访问者的名字是否被允许。
linux-FTP服务
文件共享、FTP
FTP
FTP(File transfer Protocol)是一个相当古老并且应用极为广泛的互联网协议,FTP为我们提供了一个可靠的方式在网络上进行文件共享。
FTP是CS架构的服务,拥有一个服务端和客户端,FTP使用TCP协议作为底层传输协议,提供了数据传输的可靠性,FTP的标准端口为20、21,20为数据端口,21为指令接口。
FTP模式
FTP客户端与服务端的链接有两种模式:
主动模式
客户端用的端口是大于1023端口的
由服务端进行建立
不常用
被动模式
有客户端进行建立
常用
----------------------------------
vsftpd
在Linux中,应用最广泛的FTP服务层序叫做vsftpd(Very Secure FTP Daemon),vsftpd为我们提供了一个快速的、稳定了并且相当安全的FTP服务。
使用以下命令安装vsftpd
yum install -y vsftpd
vsftpd相关配置文件及目录如下
/etc/vsftpd/vsftpd -主配置文件
/etc/vsftpd/ftpusers -黑名单
/etc/vsftpd/user_list -控制名单(由配置文件控制是白名单还是黑名单)
/var/ftp -ftp共享目录
/var/ftp/xferlog -ftp日志文件
--------------------
yum install -y vsftpd //安装VSFTPD服务
--------------------
FTP用户
vsftpd使用用户作为管理单位,想要访问某个ftp共享文件,必须以特定用户身份登陆,我们可以配置以下几种类型的用户:
-正常用户(系统用户)
-匿名用户(anonymous)
-虚拟用户(ftp-only)
默认情况下,vsftpd在安装的时候会创建一个ftp用户,这个用户就是作为匿名用户使用的,ftp用户的家目录指向/var/ftp/,任何没有访问限制
文件都可以通过匿名共享。
每一个系统中的用户都可以 通过ftp方式访问自己的家目录
FTP基本命令
使用get命令可以从FTO服务器上下载一个文件
iftp 192.168.1.1
cd pub
get xiaohua.tar.gz —— 下载文件
使用put命令可以将一个文件上传到服务器上
iftp -u hehe 192.168.1.1
cd Downloads
put xiaohua.tar.gz —— 上传文件
只要登陆使用的用户对某个文件具有写权限,就可以进行上传操作
-----------------------------------
DropBox
假设HUAKT想要每名员工每周上传一个工作报告,决定通过ftp服务器实现,但是又不想每个员工能够看其他员工的工作报告,这时,就可以通过dropbox实现。
dropbox是绝大多数共享都会常用到的一个机制,具有dropbox功能的目录只能上传,但是无法看到上传的文件。
我们可以简单的通过权限机制来实现
1创建一个dropbox目录
mkdir dropbox
2将dropbox目录权限设置为2733
ehmod 2733 dropbox
2733代表匿名用具具有写(r)和浏览(x)权限,但是没有读权限
--------------------------------------------
匿名用户上传
修改配置文件为
anonymous_enable=YES -开启匿名用户(默认)
anon_upload_enable=YES -打开匿名用户上传功能
anon_mkdir_write_enable=YES -打开匿名用户创建文件夹功能
赋予权限
chmod 777 /var/ftp/pub
注意:不可将匿名用户的家目录设置为777权限,稚嫩那个设置子目录,否则vsftpd将禁止访问匿名用户的家目录
linux-DNS服务
域名
IP地址往往难以记忆,所以我们一般使用域名进行管理
www.huakt.com
严格的域名最后还有一个个“.”,但一般省略不写
域名分为三个部分,用“.”分割
-类型 表示此域名的类型(com,net,org,deu,gov等)
-域名 域名称
-主机名 该域中的某台主机名称
www. huakt. com
—— —— ——
主机名 域名 类型
DNS
每个域名代表一个IP,而DNS就是用来在IP与域名之间进行转换的服务
www.huakt.com——192.168.1.1
--------------
DNS客户端
我们日常使用的支持网络的计算机一般都是作为一个DNS客户端使用,应用程序、服务、进程等等通过操作系统底层的功能发起对DNS服务器的查询,对指定域名进行解析
linux中一般使用系统底层提供的gethostbyname()功能进行域名解析.
解析可以基于以下几种方式
-文件(/etc/hosts、/etc/networks)
-DNS
-NIS
可以通过配置文件/etc/nsswitch.conf控制查询顺序
hosts:files dns
--------------
DNS专用查询命令
命令host可用于进行dns查询:
host www.huakt.com
命令dig用户进行dns查询,输出较为详细的信息:
dig www.huakt.com
命令host、dig都不会使用/etc/nsswitch的配置,只会通过/etc/resolv.conf进行DNS查询
---------------
DMS查询
根域名服务器(.)root DNS Server
|
*域名服务器(com net cn org cn gov)top level server
|
权威服务器(huakt)authoritative server
|
资源记录(www mail ftp)resource record
dig +trace www.huakt.com
-----------------
DNS查询类型
递归查询(iterative query)
查询www.huakt.com
客户端(cilent)——>本地DNS服务器_——>"."根域名服务器——>com服务器——>huakt服务器——>本地DNS服务器——>客户端
迭代查询(Recursive Query)
--------------
资源记录
在DNS服务器上,DNS的信息通过一个叫做资源记录(RR)的格式进行保存,RR不仅仅能够保存域名到IP地址对应信息,还能够保存很多其他信息
资源记录(RR,Resource record)常用的属性有:
-NAME
-CLASS
-TYPE
-RDATA
如:
NAME CLASS TYPE RDATA
www IN A 192.168.1.1
mail IN A 192.168.1.2
server1 IN CNAME www //别名
IN MX 10 mail.huakt.com
-----------------------
资源记录类型
DNS资源记录可以记录很多类型的资源,不仅仅是IP地址,常见的资源子路类型如下:
资源记录类型(Type) 表示内容
A IPv4地址
AAAA IPv6地址
MX 邮件记录
CNAME 别名
PTR 指针(逆向解析)
SRV 服务资源
-----------------------
DNS服务器类型
主DNS服务器(Primary DNS Server)(Master)
一个域的主服务器保存该域的zone配置文件,该域所有的配置、更改都在该服务器上进行。
铺助DNS服务器Seconday DNS Server(Slave)
从服务器一般作为冗余负载使用,一个域的服务器从该域主服务器抓取zone配置文件,从服务器不进行信息修改,所有的修改主服务器同步。
高速缓存服务器(Caching only Server)
DNS缓存服务器不存在任何zone文件,仅仅依靠缓存为客户端提供服务,通常用于负载均衡及加速访问使用
---------------------------
ZONE
在DNS服务器中,一般一个域通过一个zone文件保存该域的相关信息,zone文件的格式是标准化的,一个典型的zone配置内容如下
$TTL ID
@ IN SOA @ rname.invalid(
0 ;serial
1D ;refresh
1H ;retry
1W ;expire
3H);minimum
NS @
MX 10 mail.huakt.com
www IN A 192.168.1.1
mail IN A 192.168.1.2
------------------------------
高级查询
我们可以通过dig命令查询其他类型的资源记录
dig -t mx huakt.com //查询这个域的邮件服务器
dig -x www.huakt.com//逆向解析查询
dig -t soa linuxcast.net//查询域名soa信息
--------------------------
DNS服务器-BIND基础配置
现在使用那个最广泛的DNS服务器软件是BIND,最早是由伯克利大学的一名大学生编写,现在最新的版本是9,由ISC(Internet Systems Consortium)编写和维护
BIND支持先今绝大多数的操作系统(Linux、UNIX、MAc、Windows)
BIND服务的名称称之为named
我们可以通过以下命令安装BIND:
yum install -y bind bind-chroot bind-utils
DNS默认使用UDP、TCP协议,使用端口号为53(domain),953(mdc)
--------------------------------
BIND配置文件
BIND配置文件保存在两个主要位置
/etc/named.conf -BIND服务主配置文件
/var/named/ -zone文件
如果安装了bind-chroot,BIND会被封装到一个伪根目录内,配置文件的位置为:
/var/named/chroot/etc/named.conf -BIND服务主配置文件
/var/named/chroot/var/named -zone文件
-----------------
伪根
chroot是通过将相关文件封装在一个伪根目录内,已达到安全防护的目的,一旦该程序被攻破,将只能访问伪根目录内的内容,而不是真实的根目录
-------------------------------------
BIND配置文件
不同于其他服务,BIND在安装后不会有预置的配置文件,但是在BIND的文档文件夹内(usr/share/doc/bind-9.3.6),BIND为我们提供了配置文件的模板,我们可以直接拷过来.
cp -rv /usr/share/doc/bind-9.3.6/sample/etc/* /var/named/chroot/etc
cp -rv /usr/share/doc/bind-9.3.6/sample/var/* /var/named/chroot/var
-----------------------------------------
域主服务器
一个域的主服务器(master)是这个域的信息的权威服务器,所有这个域的信息都是由域的主服务器控制,配置一个域的主服务器需要以下几个步骤。
1.在Bind的主配置文件中添加该域的定义
2.在/var/named/chroot/var/named中创建该域的zone文件
3.编辑zone文件,添加需要的信息
4.启动bind服务活使bind刷新配置
5.使用host或dig命令检测域信息是否正常
---------------------------
配置域主服务器
在bind的主配置文件中添加域huakt.com的定义;
配置文件位置:
/var/named/chroot/etc/named.conf
在主配置文件中添加一行域的zone定义
zone“huakt.com”{
type master; //主服务器
file “huakt.com.zone”;//指定zone文件文件名
}
为定义域添加zone配置文件
zone文件位置
/var/named/chroot/var/named/huakt.com.zone
zone文件内容
zone文件内容比较负责,手工输入极容易输错,所以一般使用默认的named.localhost配置文件作为模板
cp named.localhost huakt.com.zone
添加一个资源记录(RR):
www IN A 192.168.1.1
--------------------------------
启动Bind服务或刷新配置:
service named start
service named reload
将本机的DNS指向本机:
/etc/resolv.conf
nameserver 127.0.0.1
使用命令host或dig验证dns配置
host www.huakt.com
dig www.huakt.com
--------------------
错误排查
DNS配置因为语法规则较为晦涩,所以极为容易出现配置错误,bind为我们提供了两个语法检查工具:
命令named-checkconf可以查看bind主配置文件的错误
named-checkconf /var/named/chroot/etc/named.conf
命令named-checkzone可以用来查看zone配置文件的错误
named-checkzone huakt.com huakt.com.zone
------------主配置文件格式---------------------
options
{
directory "/var/named";
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 {::1;};
};
zone "huakt.com"{
type master;
file "huakt.com.zone";
};
=========================
铺助服务器也叫从服务器
一个域的从服务器(slave)通常是为了备份及负载均衡使用,所有这个域的信息都是由域的主服务器控制,域slave服务器启动时会从域的主服务器(master)上抓取指定的zone配置文件,域slave服务器的配置如下:
1.在bind的主配置文件中添加该域的定义
2.启动bind服务或使bind刷新配置
3.查看域的zone文件是否正常抓取到/var/named/slaves目录中
4.使用host或dig命令检测域信息是否正常
slave——master
---
.1.2 ,1.22
-----------------
配置域从服务器
在bind的主配置文件中添加域huakt.com的配置信息:
配置文件位置
/var/named/chroot/etc/named.conf
在主配置文件中添加域zone定义
options
{
directory "/var/named"; // the default
listen-on port { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
};
zone “huakt.com”{
type slave;
masters{ 192.168.1.1;};//主服务器IP地址
file “slaves/huakt.com.zone”;
};
重启bind服务或刷新配置
service named start
service named reload
查看zone文件是否正常抓取下来
/var/named/chroot/var/named/slaves/huakt.com.zone
将本机的DNS配置指向本机
/etc/resolv.conf
nameserver 127.0.0.1
使用命令host或dig验证DNS配置
host www.huakt.com
dig www.huakt.com
-----------------------------------------------
配置缓存服务器
一个 DNS服务器可以即不是够格域的master服务器,也不是某个域的slave服务器,一个服务器可以不包含任何域的配置信息,它将接受到的dns查询进行递归解析,将解析结果返回给查询客户端,并将查询结果缓存下来,这样的dns服务器称之为caching name server
通常在一个局域网中配置缓存服务器是为了加速网络的访问
也可以为缓存服务器配置一个上游dns服务器地址,缓存服务器可以给客户提供一个上游的DNS服务器,我们可以通过以下设置完成:
forwarders { 218.22.33.4; };
也可以通过以下选项让服务器转发所有dns查询到forwarders服务器:
转发DNS
forward only;