磁盘体系
磁盘分类
磁盘主要指标
容量
转速 rpm round per minute 每分钟多少转 5400/7200/10000/15000 rpm
接口 sata sas scsi pci-e
缓存 缓存无处不在
磁盘的接口类型
SATA(串 serial) 数据,存放不重要数据的
SCSI 稳定,接口不一样
SAS 企业默认的接口
PCI-E 价格高
nvme (m.2)PCI=E 笔记本使用
磁盘的选择
机械与固态硬盘
机械硬盘
SATA:给自己使用的时候,对性能要求不高 大容量线下服务(不涉及到用户的 线下使用/服务) 10K rpm 2T 3T 4T 选择性价比最高的
SAS:服务器标配 线上/线下生产环境使用
15K 300G 600G 10K 7.2K
固态硬盘:
PCI-E SAS SATA
大量的读写 要求很高的性能 数据量小
磁盘的选择
1)线上(用户正在使用的环境 给用户提供服务)的业务,用SAS磁盘。
2)线下(自己人用的环境)的业务,用SATA磁盘,磁带库,使用光盘存放数据。
3)线上高并发、小容量(很多人都想看的图片)的业务,固态硬盘SSD。
4)成本思想:根据数据的访问热度,智能分析分层存储。SATA+SSD
机械与固态对比
机械硬盘:容量大价格低 抗击打能力弱 读写速度稍慢io 数据恢复易 无限
固态硬盘:容量小价格高 抗击打能力高 读写速度很快io 数据恢复难 1-2w次
根据数据的访问热度,智能分析分层存储
一台服务器里面分为冷门数据和热门数据:
热门数据:把用户经常使用的图片 存放在ssd里面 。
冷门数据: 不经常使用的放在 sata 中。
使用SATA作为高并发的数据存储 企业案例
【企业案例】千万不要用SATA磁盘来做在线高并发服务的数据存储或数据库业务,这是有血的教训的。某公司采用SATA做数据库的存储盘,结果导致数据库连续宕机一个月。
解决办法:
重新买5台,把磁盘从SATA(RAID5)换成SAS(RAID10)。6个月内没事。
磁盘内部结构
磁盘-硬盘-disk
磁头--head
盘面数量==磁头数量
作用:用来写入和读取数据的
径向运动 寻道
磁道--track
相当与一个呼啦圈
以磁盘中心(主轴)
环形区域
从外面到里面 最外面是0磁道
扇区--sector
磁盘上面最小的单位
一个扇区512字节
柱面--cylinder
磁盘的读写是按照柱面进行
不同盘面上面相同的磁道组成的圆柱体
不同盘面上的相同的呼啦圈组成的圆柱体
磁盘默认是按照柱面进行读写
磁头之间的切换速度 接近于光速
磁头径向运动-寻道 机械运动 man
单元块--units
表示一个柱面的大小
计算磁盘的容量
500G 硬盘 实际到手容量不足500G ?
厂家: 1000为单位 1KB=1000字节 1MB=1000KB
计算机中:1024为单位
计算的公式
磁盘的大小 = 磁盘中的柱面大小柱面的数量
柱面的大小 = 一个磁道的大小磁头的数量(盘面数)
磁道的大小 = 扇区的数量*每个扇区的大小
查看磁盘的信息
fdisk用于观察硬盘实体使用情况,也可对硬盘分区
fdisk -l
[root@nfsnobody ~]# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
255 磁头 63 扇区 1305 柱面
Units = cylinders of 16065 * 512 = 8225280 bytes
单元块 一个柱面的大小
Sector size (logical/physical): 512 bytes / 512 bytes
1字节为1B
1KB=1024B
1MB=1024KB=1024^2B
1GB=1024MB=1024^3B
1TB=1024GB=1024^4B
算出磁盘大小的条件
linux中如何计算
linux下面进行计算方法:
bc 与bc -l
awk 'BEGIN{pirnt }'
bc命令 bc默认取值整数。 bc -l可以显示小数位
bc 命令可以进行交互式命令,前面经过管道传输后可以进行非交互计算。
[root@nfsnobody ~]# echo 1+2
1+2
[root@nfsnobody ~]# echo 1+2|bc
3
[root@nfsnobody ~]# echo 'scale=5;3/4' |bc
.75000
[root@nfsnobody ~]# echo 10/3|bc -l
3.33333333333333333333
awk 'BEGIN{pirnt }'
awk的方法可以显示小数位
[root@nfsnobody ~]# awk 'BEGIN{print 1/3}'
0.333333
[root@nfsnobody ~]# awk 'BEGIN{print 3/4,1/2,1/3}'
0.75 0.5 0.333333
raid详解
用raid的目的
raid分类对比
RAID5 校验 奇偶校验
类型 | 硬盘数量 | 安全 冗余 | 可用容量 | 性能 | 使用场景 | 举例 |
---|---|---|---|---|---|---|
raid 0 条带 |
最少一块 | 最低 | 所有硬盘之和 | 最快 | 不要求安全只要求速度 | 数据库从库 存储从库 |
raid 1 镜像 |
只能两块 | 100% | 所有硬盘容量的一半 | 写入慢,读取类似一块的速度 | 只追求安全 对于速度没要求 |
系统盘 监控服务器 |
raid 5 | 最少3块 | 最多损坏一块 | 损失一块盘的容量 | 写入性能不好,读取速度可以 | 都有要求但要求都不高;可以作为热备 | 普遍数据库 存储 使用最多的 |
raid 10 | 最少4块 必须是偶数 |
可以损坏一半 | 损失所有硬盘一半的容量 | 读写都很快 | 对于安全和性能都要求很高 | 高并发或高访问量 数据库主库 存储 |
关于系统安全
连接到服务器
1.ip地址
2.用户名密码 root
3.端口号 22
ll /var/log/secure 查看用户登录信息
nmap -p22 10.0.0.1-254 检查22端口号
把文件的md5信息记录起来
把文件的md5信息 存放(警察局)
md5sum校验
mdusum -c
文件名改变 内容不变 md5不变
文件内容改变 文件名不变 md5改变
[root@nfsnobody nfsnobody]# echo nfsnobody > nfsnobody.txt 创建一个文件
[root@nfsnobody nfsnobody]# md5sum nfsnobody.txt 查看文件的md5
3fe396c01f03425cb5e2da8186eb090d nfsnobody.txt
[root@nfsnobody nfsnobody]# md5sum nfsnobody.txt > pol.md5 将文件的md5写入到文件
[root@nfsnobody nfsnobody]# md5sum -c pol.md5 检查
nfsnobody.txt: OK md5一样
[root@nfsnobody nfsnobody]# > nfsnobody.txt 修改下文件内容
[root@nfsnobody nfsnobody]# md5sum -c pol.md5 发生变化
nfsnobody.txt: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match
sha系列
sha系列也是用来设置指纹的 比md5更安全 和md5使用方法一样
[root@nfsnobody ~]# sha
sha1sum sha224sum sha256sum sha384sum sha512sum
[root@nfsnobody ~]# sha512sum nfsnobody.txt
c9a326ffb217c4dc7f72ccf02aba9abf9ec94ca40aa47d848f57741e313a7df52b80f8cca9130acc5930815a1728d93bd781b29d4598eb5cbcaf55ef6e2a7d98 nfsnobody.txt
如何防止系统中木马
linux常见查出病毒方法
1.事先做好指纹,时候进行检查
2.rpm -aV 比较yum安装或rpm安装的软件是否变化
3.查病毒软件:clamav
练习题总结
定时任务
每天晚上12点打包备份/etc/目录
1.打包备份到/backup目录
3.保留每周1的备份
2.删除7天之前的备份
[root@nfsnobody backup]# cat /server/scripts/find.sh
#!/bin/bash
#tar+find
tar zcf /backup/$(date +%F_%w).tar.gz /etc/
find /backup/ -type f -mtime +7 ! -name "*_1.tar.gz"|xargs rm -f
[root@nfsnobody backup]# crontab -l
#tar+find 2018/8/13
#00 00 * * * /bin/sh /server/scripts/find.sh >dev/null 2>&1
批量创建用户
批量添加3个用户stu01,stu02....stu10,并设置123456 (禁止使用for,while等循环)
命令拼接(弄出命令样子,最后交给bash执行)
& 前面正则表达式匹配到的内容
1.目标
useradd stu01;echo 123456|passwd --stdin stu01 要生成这种的
useradd stu02;echo 123456|passwd --stdin stu02
useradd stu03;echo 123456|passwd --stdin stu03
2.生成名字
[root@nfsnobody ~]# echo stu{01..3}|xargs -n1
stu01
stu02
stu03
3.开始进行拼接-sed
[root@nfsnobody ~]# echo stu{01..3}|xargs -n1|sed 's#.*#useradd &#g'
useradd stu01
useradd stu02
useradd stu03
[root@nfsnobody ~]# echo stu{01..3}|xargs -n1|sed 's#.*#useradd &;echo 123456|passwd --stdin &#g'
useradd stu01;echo 123456|passwd --stdin stu01
useradd stu02;echo 123456|passwd --stdin stu02
useradd stu03;echo 123456|passwd --stdin stu03
4.挑选一条进行测试
[root@nfsnobody ~]# useradd stu03;echo 123456|passwd --stdin stu03
Changing password for user stu03.
passwd: all authentication tokens updated successfully.
5.交给bash执行
[root@nfsnobody ~]# echo stu{01..3}|xargs -n1|sed 's#.*#useradd &;echo 123456|passwd --stdin &#g' |bash
Changing password for user stu01.
passwd: all authentication tokens updated successfully.
Changing password for user stu02.
passwd: all authentication tokens updated successfully.
useradd: user 'stu03' already exists
Changing password for user stu03.
passwd: all authentication tokens updated successfully.
命令拼接(弄出命令样子,最后交给bash执行)
批量添加10个用户stu01,stu02....stu10,并设置8位随机密码(禁止使用for,while等循环)
[root@CentOS ~]# echo stu{01..3}|xargs -n1|sed -r 's#.*#useradd & ;echo $[$RANDOM+100000000]|tr "[0-9]" "[a-z]"|passwd --stdin &#g'
useradd stu01 ;echo $[$RANDOM+100000000]|tr "[0-9]" "[a-z]"|passwd --stdin stu01
useradd stu02 ;echo $[$RANDOM+100000000]|tr "[0-9]" "[a-z]"|passwd --stdin stu02
useradd stu03 ;echo $[$RANDOM+100000000]|tr "[0-9]" "[a-z]"|passwd --stdin stu03