zoukankan      html  css  js  c++  java
  • Linux系统学习(四)

    RAID技术

    RAID:磁盘阵列

    优点:

    提高磁盘IO能力,磁盘能够并行读写

    提高耐用性,磁盘冗余来实现

    实现方式:

    级别:多块磁盘组成在一起工作的方式不同

    外接式磁盘阵列:通过扩展卡提供适配功能

    内接式磁盘阵列:集成到主板上的RAID控制器

    Software RAID: 通过软件来实现RAID功能

    级别:

    RAID0

    - 读写性能会提高

    - 可用空间: N * MIN

    - 没有冗余特性和容错特性

    - 最少磁盘数量: 2

    RAID1

    - 读性能提升,写性能略有下降

    - 可用空间: 1 * MIN

    - 用容错能力

    - 最少磁盘数量: 2

    RAID4

    - 读性能提升,写性能略有下降

    - 可用空间:N * MIN

    - 有冗余特性(有专门的备份盘)

    - 最少磁盘数量: 2

    RAID5

    - 读写性能都会提高

    - 可用空间: N-1 * MIN

    - 有冗余特性(通过校验数据的方式:1个盘的空间)

    - 最少磁盘数:4

    RAID6

    - 读写性能都会提高

    - 可用空间: N-2 * MIN

    - 有冗余特性(通过校验数据的方式:2个盘的空间)

    - 最少磁盘数:4

    RAID10 : 先做RAID1再做RAID0

    - 读写性能都会提高

    - 可用空间: N * min /2

    - 有冗余特性

    - 最少磁盘数: 4

    RAID01 : 先做RAID0再做RAID1

    - 读写性能会提高

    - 可用空间:N * min /2

    - 有冗余特性

    - 最少磁盘数: 4

    - 实现方式:

    1. RAID:通过软件方式模拟实现

    2. RAID:从物理服务器层面:通过RAID适配器实现RAID

    LVM技术

    LVM 逻辑卷管理: 在物理设备上进行一层抽象,允许生成逻辑存储卷,相比于物理存储管理更加灵活

    LVM将存储虚拟化,不受限于物理设备,屏蔽硬件相关存储参数,不需要卸载文件系统来去调整卷大小

    或者数据迁移等

    优点:灵活/可伸缩的存储池/在线的数据分配/管理命令简洁/卷快照等等

    基本术语:

    物理存储介质: 系统上的/dev/sda

    物理卷: PV  /dev/sda1 /dev/sdb1...

    卷组: VG  由多个PV组成的存储资源池

    逻辑卷: LV  VG中拿存储资源直接使用

    PE: 物理卷被划分成PE的基本单元(每个PE默认为4MB

    LE: 逻辑卷被划分成LE的基本单位(同一个卷组中 LEPE相同的)

    环境准备:

    ├─sdb1            8:17   0    5M  0 part

    ├─sdb2            8:18   0    5M  0 part

    └─sdb3            8:19   0    5M  0 part

    PV管理工具

    pvcreate命令: 创建PV

    使用方式: pvcreate <devices...>

    [root@test ~]# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3

    pvs命令: 显示pv的相关信息

    pvdisplay命令:显示PV的详细信息

    VG管理工具

    vgcreate命令:创建VG

    使用方式: vgcreate <vg_name> <pvs...>

    [root@test ~]# vgcreate vg_test /dev/sdb1 /dev/sdb2

    vgs命令:查看vg相关信息

    vgdisplay命令:查看vg详细信息

    vgextend命令:扩展vg大小

    [root@test ~]# vgextend vg_test /dev/sdb3

    vgreduce命令:缩减vg大小

    vgremove命令:删除vg

    LV管理工具:

    lvcreate命令:创建lv

    使用方式: lvcreate -L #[mMg...] -n [name] <vg_name>

    lvs命令:显示lv相关信息

    lvdisplay命令:显示lv详细信息

    [root@test ~]# lvdisplay /dev/vg_test/lv_test1

    lvsremove命令: 删除lv

    使用方式:

    1. lvremove <vg_name> <lv_name>

    2. lvremove </path/to/lv>  

    path: [root@test ~]# cat /dev/vg_test/lv_test

    [root@test ~]# lvremove vg_test lv_test1

    扩展逻辑卷:

    lvextend -L [+]#[MmGg] <lv_name|path/to/lv>

    resize2fs <lv_name|/path/to/lv>

    缩减逻辑卷:

    umount /path/to/lv

    lvreduce -L [+]#[MmGg] <lv_name|path/to/lv>

    e2fsck -f /path/to/lv

    resize2fs /path/to/lv

    mount

    快照功能:

    lvcreate -s|--snapshot -L|--size Size[m|UNIT] LV

    使用方式:

    lvcreate -L Size[MmGg...] -s -n <Snapshot_name> <lv_name>

    [ -p|--permission rw|r ] 设置快照权限

    计划任务

    Linux计划任务:

    未来某个时间执行一次任务: at batch

    周期性运行某个任务: crond

    at命令  

    [root@test ~]# at --help

    at: invalid option -- '-'

    Usage: at [-V] [-q x] [-f file] [-mMlbv] timespec ...

           at [-V] [-q x] [-f file] [-mMlbv] -t time

           at -c job ...

           atq [-V] [-q x]

           at [ -rd ] job ...

           atrm [-V] job ...

           batch

    用法说明: at [options] [time|batch] [job]

    options:

    -f : 指定执行文件

    times:

    HH:MM [YY-mm-dd]

    moon,midnight...

    tomorrow

    now+#[min,hours,seconds....]

    batch命令:

    让系统自动选择空间时间去执行指定任务

    实例:

    cat 1.sh

    echo "hello"

    at now +1 minutes -f 1.sh # 1分钟后执行1.sh文件里的内容

    atq命令: 可以去查看当前的任务队列

    3 Thu Feb 13 03:16:00 2020 a root

    Linux系统则是由crond服务来控制的;在Linux系统上面非常多的计划任务

    都基本采用crond方式,因此crond服务默认是开机自启的;另外,由于用户可以

    自定义计划任何,所以提供了crontab命令

    Linux下的任务调度分为两类:

    系统任务调度

    用户任何调度

    系统任务调度:系统周期性要执行的工作,比如定期写系统数据到磁盘中

    [root@test ~]# systemctl status crond # 查看crond服务是正常运行的

    [root@test ~]# cat /etc/crontab 就是系统任何调度的配置文件

    SHELL=/bin/bash # 默认系统调度任务采用的shell程序

    PATH=/sbin:/bin:/usr/sbin:/usr/bin # 默认系统调度任务采用的命令路径

    MAILTO=root # 默认本地邮件服务用户

    # Example of job definition:

    # .---------------- minute (0 - 59)

    # |  .------------- hour (0 - 23)

    # |  |  .---------- day of month (1 - 31)

    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

    # |  |  |  |  |

    # *  *  *  *  * user-name  command to be executed

    分钟 小时  星期  执行用户(默认是root用户) 执行任务(命令|脚本)

    举例: 执行用户root  执行任务: echo "hello"

    时间表示法:

    1. 特定值

    给定时间有效取值范围的值

    2. *

    给定时间上有效取值范围的所有值,表示“每....

    实例1root用户在每天晚上9.30执行指定任务

    30 21 * * * root echo "hello"

    3. 离散取值

    #,#,# .....

    实例2root用户在每周一周五晚上8点执行执行任务

    0 20 * * mon,fri root echo "hello"

    4. 连续取值

    实例3zhangsan用户在每个月1-9晚上8点执行任务

    0 20 1-9 * * zhangsan echo "准备还花呗"

    5. 在执行时间范围上,定义步长

    /# : 指定步长

    实例4zhangsan5分钟执行指定任务

    */5 * * * * zhangsan echo "hi"

    * */3 * * * zhangsan echo.sh # 3小时执行一次

    用户任务调度:

    crontab命令定义:每个用户都有专用的crontab文件: /var/spool/crond/Username

    crontab命令:

    [root@test cron]# crontab --help

    crontab: invalid option -- '-'

    crontab: usage error: unrecognized option

    Usage:

     crontab [options] file

     crontab [options]

     crontab -n [hostname]

    常用参数:

    -u user:  指定执行用户,默认是root

    -l: 列出任务列表

    -e: 便器任务

    -r: 移除任务

    -i: 同-r参数,交互式

    实例:

    [root@test cron]# crontab -e # 将计划任务写到指定文件中

    [root@test cron]# cat /var/spool/cron/root

    * * * * * echo "hello"

    计划任务场景:

    日志: 只保留7天内的日志(使用计划任务在每天0点删除7天前的日志即可)

    * * * * * find /var/log/java/*.log -atime 7 -delete | -exec rm -rf {};

    备份: 备份指定数据/mydata/

    10 0 * * * tar -czxf /backup/mydata.zip.tar /mydata/

  • 相关阅读:
    git升级
    redis集群
    redis安装
    escript
    git搭建仓库与服务器
    svnsync
    post_commit.sh
    nvm安装和使用
    quartz 定时器
    Oracle flashback恢复误删的数据或表
  • 原文地址:https://www.cnblogs.com/panfei-ywg/p/12785225.html
Copyright © 2011-2022 走看看