交换分区swap的创建与查看
增加交换分区的大小
- mkswap /dev/sdd1
- swapon /dev/sdd1
- swapoff /dev/sdd1
使用文件制作交换分区
- dd if=/dev/zero bs=4M count=1024 of=/swapfile
- chmod 600 /swapfile
- mkswap /swapfile
- swapon /swapfile
以上的操作写入到内存之中,如果我们要在下次开机默认开启,需要进行修改/etc/fstab
在其中插入
/swapfile swap swap defaules 0
后面的两个0意味 备份 和自检 默认写0就好
RAID(磁盘阵列)的使用
RAID的常见级别及定义
- RAID 0 striping 条带方式,提高单盘吞吐率
- 将一个数据拆成两份,分别写入到两块磁盘里
- RAID 1 mirroring 镜像方式,提高可靠性
- 将一个数据自动做了一个备份,
- RAID 5 有奇偶校验
- 至少有三块硬盘,
- RAID 10 时RAID 1和RAID 0的结合
- 至少4块硬盘
- RAID 0 striping 条带方式,提高单盘吞吐率
软件RAID的使用
- 首先需要安装一个软件mdadm
- 首先需要创建三个分区,最好是相同的大小,如果三个硬盘的大小不一样,会默认使用最小的容量
- 例如:sdb1和sdc1和sdd1
- mdadm -C /dev/md0 -a yes -l1 -n2 /dev/sdb1 /dev/sdc1
- -a yes表示 不进行提示
- -l 表示 raid的级别
- -n 指定几个硬盘
- 后面就是跟得硬盘也可以写成:/dev/sd[b,c]1
- 然后可以使用mdadm -D /dev/md0进行查看
- echo DEVICE /dev/sd[b,c]1 >> /etc/mdadm.conf
- mdam -Evs >> /etc/mdadm.conf
- 经过这两次 的写入信息之后,下次开机的时候就会自动
- mkfs.xfs /dev/md0 之后我们就可以进行使用了
- 关闭raid
- mdadm –stop /dev/md0
- 然后还要对原来组成的分区进行破坏
- dd if=/dev/zero of=/dev/sdb1 bs=1M count=1
- dd if=/dev/zero of=/dev/sdc1 bs=1M count=1
逻辑卷LVM的用途与创建
逻辑卷管理
逻辑卷和文件系统
- 在raid中 其实md0 也是一个逻辑卷
- 在物理硬盘的一个上层
为LInux创建逻辑卷
- 首先要添加新的硬盘
- pvcreate /dev/sd[b,c,d]1 //创建物理卷
- 使用pvs进行查看物理卷
- vgcreate vg1 /dev/sdb1 /dev/sdc1 //将后面的两块硬盘加入到vg1这个卷组
- 使用vgs来查看卷组
- lvcreate -L 100M -n lv1 vg1 //创建逻辑卷
- 使用lvs来查看创建的逻辑卷
- mkdir /mnt/test
- mkfs.xfs /dev/vg1/lv1
- mount /dev/vg1/lv1 /mnt/test
动态扩容逻辑卷
- vgextend centos /dev/sdd1 //扩充卷组
- 然后可以使用pvs vgs lvs来产看
- lv extend -L +50G /dev/centos/root //给逻辑卷增加50G
- xfs_growfs /dev/centos/root //文件系统的扩充
系统综合状态查看命令
sar
- sar -u 1 10 //查看cpu 每隔1秒 采样十次
- sar -r 1 10 //查看内存读写情况
- sar -b 1 10 //查看 io的情况
- sar -d 1 10 //查看每块磁盘的读写
- sar -q 1 10 //查看进程的情况
yum install iftop
- iftop -p //默认只监听eth0
什么是shell
- Shell是命令解释器,用来解释命令对系统的操作
- Shell有很多:cat /etc/shells
- centos的shell是bash 基于bshell,集合了其他shell的优点
Linux的启动过程
BIOS - MBR- Bootloader(grub)-kernel-systemd-系统初始化-shell
mbr
- 使用dd来导出主引导记录
- dd if=/dev/sda of=mbr.bin bs=446 count=1
- dd if=/dev/sda of=mbr.bin bs=512 count=1 //包含磁盘的分区表
- 55 aa的意思是证明引导扇区是正确的
- hexdump -C mbr2.bin | more
grub
- cd /boot/grub2
- 使用:grub2-editenv list //查看默认引导的内核
- uname -r查看当前的内核
- 如果是init0来引导,会在/etc/rc.d下有大量的配置文件
- 如果是systemd在/etc/systemd/system会有默认的启动级别,根据这个启动级别,会来到usr/lib/systemd/system
Shell脚本的格式
1 | !/bin/bash |
标准的shell脚本要包含那些元素
- sha-Bang
- 命令
- #开头的注释
- 执行命令
- bash 1.sh
- ·可以不用赋予权限
- 产生一个子进程来运行
- ./1.sh
- 需要进行赋予权限
- 脚本内部执行了,结束后回到当前
- source ./1.sh
- 使用当前的进程来运行
- 如果使用cd的话当前的目录会发生变化
- . 1.sh
- 与source相似
- bash 1.sh
内建命令和外部命令的区别
- 内建命令不需要创建子进程
- 内建命令对当前shell生效
- source和. 不产生子经常
管道与重定向
管道与管道符
- 管道和信号一样,也是进程通信的方式之一
- 匿名管道(管道符)是shell编程经常用到的通信工具
- 管道符号 “|”,将前一个命令执行的结果传递给后面的命令
- 会为第一条第二条命令创建两个子进程
子进程与子shell
重定向符号
一个进程默认会打开标准输出,标准输入,错误输出三个文件描述符
输入重定向符号”<”
- wc -l可以统计行数
- wc -l < /etc/passwd //利用文件代替了用户的输入
- read var //输入内容给var这个变量
- echo $var 就可以进行查看
- read var2 < a.txt
输出重定向符号”>” “>>” “2>” “&>”
- 一个>会将文件进行清空
- 两个>将内容追加在后面
- 2>如果命令执行产生了错误,会将错误输出
- nacmd 2> a.txt
- &>无论正确还是错误 全部输出
输入和输出重定向组合使用
#!/bin/bash cat > /root/a.sh <<EOF echo "hello bash" EOF