将rpm包制作成本地yum安装方式进行依赖安装

日常系统安装rpm,在没有网络且本地镜像没有包的情况下安装是很头疼的一件事,有得rpm包不仅是自身那一个包,他还要依赖于很多其他的包,因此安装就是很费劲很麻烦的事情,这样我们可以在自己本地现下载,然后将所用的包括需要使用的rpm,与其他依赖一起进行安装。
1.下载所需要的包
将rpm下载至本地格式为:
yum install --downloadonly --downloaddir=下载的目录名  rpm包名
其中--downloadonly:仅下载的意思
例:
[root@localhost ~]# yum install --downloadonly --downloaddir=/root/yum/Packages  gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-devel numactl-devel sysstat unixODBC unixODBC-devel pcre-develcd
2.创建自己的yum
安装createrepo制作本地yum的工具
[root@localhost ~]# yum -y install createrepo
[root@localhost yum]# ls
Packages
[root@localhost yum]# createrepo ./ 创建本地的yum
Spawning worker 0 with 30 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

#执行完成后发现有生成repodata目录
[root@localhost yum]# ll
总用量 8
drwxr-xr-x 2 root root 4096 4月   2 21:40 Packages
drwxr-xr-x 2 root root 4096 4月   2 21:42 repodata
[root@localhost yum]# cd repodata/
[root@localhost repodata]# ls
2e776079c9688b5b25ce39976392c1f522e4eb0a135d9d759ff4975583302402-other.xml.gz
48103ebfa5b33d8f4d35b78242cebbbc53cc5a7c63e61e2cadc8391b6c08c846-primary.sqlite.bz2
8f27acc719e269ef8f8fba05e6b8124438e06730af66e1043b39aef6c07fa624-filelists.xml.gz
96f7c794f560975631925daf05e1a1f09a90d65f8902a01080655972ee0733f6-filelists.sqlite.bz2
beaeddc565a92cdf1948a9fabbf884bfbe8dcc4f010907712043454a552f4e26-other.sqlite.bz2
de97a7aab0273d45e9fe6e20d08d5afeda1880c556be3768e5430dbe58158931-primary.xml.gz
repomd.xml
3.配置本地yum仓库
其中以repo后缀的名称随意命名
[root@localhost ~]# vi /etc/yum.repos.d/centos.repo
[local]     #仓库的名字,随意创建
name=local      #仓库名字的解释说明
baseurl=file:///root/yum    #仓库的路径
enable=1        #启用此yum仓库
gpgcheck=0  #是否开启公钥校验
4.清空yum源、更新yum源、查看已加载新yum源
[root@localhost ~]# yum clean all
已加载插件:fastestmirror
正在清理软件源: local
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[root@localhost ~]# yum makecache
已加载插件:fastestmirror
local                                                                                                                                 | 2.9 kB  00:00:00     
(1/3): local/filelists_db                                                                                                             |  18 kB  00:00:00     
(2/3): local/other_db                                                                                                                 |  15 kB  00:00:00     
(3/3): local/primary_db                                                                                                                 |  22 kB  00:00:00     
Determining fastest mirrors
元数据缓存已建立
[root@localhost ~]# yum repolist all
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
源标识                                                                     源名称                                                                     状态
local                                                                      local                                                                     启用: 30
repolist: 30
5.安装验证
[root@localhost ~]# yum -y install  gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-devel numactl-devel sysstat unixODBC unixODBC-devel pcre-devel
已加载插件:fastestmirror
local                                                                                                                                 | 2.9 kB  00:00:00     
local/primary_db                                                                                                                      |  22 kB  00:00:00     
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 binutils.x86_64.0.2.25.1-31.base.el7 将被 升级
---> 软件包 binutils.x86_64.0.2.27-44.base.el7_9.1 将被 更新
---> 软件包 compat-libstdc++-33.x86_64.0.3.2.3-72.el7 将被 安装
---> 软件包 elfutils-libelf-devel.x86_64.0.0.176-5.el7 将被 安装
--> 正在处理依赖关系 elfutils-libelf(x86-64) = 0.176-5.el7,它被软件包 elfutils-libelf-devel-0.176-5.el7.x86_64 需要
--> 正在处理依赖关系 pkgconfig(zlib),它被软件包 elfutils-libelf-devel-0.176-5.el7.x86_64 需要
...
作为依赖被升级:
 cpp.x86_64 0:4.8.5-44.el7           elfutils.x86_64 0:0.176-5.el7              elfutils-libelf.x86_64 0:0.176-5.el7  elfutils-libs.x86_64 0:0.176-5.el7    
gcc-gfortran.x86_64 0:4.8.5-44.el7  libgcc.x86_64 0:4.8.5-44.el7                libgfortran.x86_64 0:4.8.5-44.el7     libgomp.x86_64 0:4.8.5-44.el7         
  libquadmath.x86_64 0:4.8.5-44.el7   libquadmath-devel.x86_64 0:4.8.5- 44.el7  libstdc++.x86_64 0:4.8.5-44.el7       libstdc++-devel.x86_64 0:4.8.5-44.el7 
 numactl-libs.x86_64 0:2.0.12-5.el7  zlib.x86_64 0:1.2.7-19.el7_9            

完毕!

至此本地yum就创建完成了,希望对你有帮助!


李泽信 发布于 2022-8-17 23:25

openssh rpm软件包制作

openssh rpm软件包制作

#备份
[root@localhost ~]# cp /etc/pam.d/sshd /etc/pam.d/sshd-bak
[root@localhost ~]# cp -r /etc/pam.d/system-auth /etc/pam.d/system-auth-bak
[root@localhost ~]# cp -r /etc/ssh/sshd_config /etc/ssh/sshd_config-bak
[root@localhost ~]# cp -r /etc/ssh/ssh_config /etc/ssh/ssh_config-bak
#创建制作路径
[root@localhost ~]# mkdir -p /root/rpmbuild/{SOURCES,SPECS}
[root@localhost ~]# cd /root/rpmbuild/SOURCES
#下载制作包
[root@localhost SOURCES]# wget https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz/8f2e41f3f7eaa8543a2440454637f3c3/x11-ssh-askpass-1.2.4.1.tar.gz
[root@localhost SOURCES]# wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz
#安装所需依赖
[root@localhost ~]# yum install rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel xmkmf libXt-devel gtk2-devel make -y
#解压,指定解压出文件
[root@localhost SOURCES]# tar xf openssh-9.0p1.tar.gz openssh-9.0p1/contrib/redhat/openssh.spec
#复制官方提供的spec文件,rpm-build需要根据这个文件来制作rpm包
[root@localhost SOURCES]# cp openssh-9.0p1/contrib/redhat/openssh.spec ../SPECS/
#备份文件
[root@localhost SOURCES]# cp /root/rpmbuild/SPECS/openssh.spec /root/rpmbuild/SPECS/openssh.spec_bak
#关掉no_gnome_askpass no_x11_askpass这两个参数
[root@localhost SOURCES]# sed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" /root/rpmbuild/SPECS/openssh.spec
[root@localhost SOURCES]# sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" /root/rpmbuild/SPECS/openssh.spec
#避免制作过程遇见以下错误,建议先注释
[root@localhost SOURCES]# cd /root/rpmbuild/SPECS/
[root@localhost SPECS]# vim openssh.spec
#BuildRequires: openssl-devel < 1.1     #大约在103行左右,将这行注释
#开始制作
[root@localhost SPECS]# rpmbuild -ba openssh.spec
...
检查未打包文件:/usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/openssh-9.0p1-1.el7.centos.x86_64
写道:/root/rpmbuild/SRPMS/openssh-9.0p1-1.el7.centos.src.rpm
写道:/root/rpmbuild/RPMS/x86_64/openssh-9.0p1-1.el7.centos.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/openssh-clients-9.0p1-1.el7.centos.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/openssh-server-9.0p1-1.el7.centos.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/openssh-askpass-9.0p1-1.el7.centos.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/openssh-askpass-gnome-9.0p1-1.el7.centos.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/openssh-debuginfo-9.0p1-1.el7.centos.x86_64.rpm
执行(%clean): /bin/sh -e /var/tmp/rpm-tmp.n0ooAt
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd openssh-9.0p1
+ rm -rf /root/rpmbuild/BUILDROOT/openssh-9.0p1-1.el7.centos.x86_64
+ exit 0
[root@localhost x86_64]# pwd
/root/rpmbuild/RPMS/x86_64
[root@localhost x86_64]# ll
总用量 5004
-rw-r--r-- 1 root root  665932 8月   9 14:44 openssh-9.0p1-1.el7.centos.x86_64.rpm
-rw-r--r-- 1 root root   44492 8月   9 14:44 openssh-askpass-9.0p1-1.el7.centos.x86_64.rpm
-rw-r--r-- 1 root root   25760 8月   9 14:44 openssh-askpass-gnome-9.0p1-1.el7.centos.x86_64.rpm
-rw-r--r-- 1 root root  655372 8月   9 14:44 openssh-clients-9.0p1-1.el7.centos.x86_64.rpm
-rw-r--r-- 1 root root 3252592 8月   9 14:44 openssh-debuginfo-9.0p1-1.el7.centos.x86_64.rpm
-rw-r--r-- 1 root root  465284 8月   9 14:44 openssh-server-9.0p1-1.el7.centos.x86_64.rpm

#拿出需要的
openssh-9.0p1-1.el7.centos.x86_64.rpm
openssh-clients-9.0p1-1.el7.centos.x86_64.rpm
openssh-server-9.0p1-1.el7.centos.x86_64.rpm

安装后需要修改

#删除/etc/ssh/ssh*key,或者直接重启生成这些文件,或者手动生成
[root@localhost ~]# rm -f /etc/ssh/ssh*key
[root@localhost ~]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
[root@localhost ~]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
[root@localhost ~]# ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
[root@localhost ~]# ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
#允许root直接登录
[root@localhost ~]# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
[root@localhost ~]# systemctl restart sshd
  • 遇见问题

1.如果重启后发现账号密码都对但是就是无法登录的请还原/etc/pam.d/sshd文件

[root@localhost ~]# mv /etc/pam.d/sshd /etc/pam.d/sshd-bak2
[root@localhost ~]# mv /etc/pam.d/sshd-bak /etc/pam.d/sshd

2.重启失败

#更新key秘钥对权限
[root@localhost ~]# chmod 400 ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key
[root@localhost ~]# systemctl restart sshd

李泽信 发布于 2022-8-9 15:07

计划任务

  • 概念:实现进程调度管理,在特定的时间(时间点)完成特定的任务(命令);

  • 作用:周期性备份、定期更新系统、完成某一个特定的任务;

  • 一次计划任务:

    • 流程
      启动atd服务-->at(时间:例:at 00:17 2017-11-1)-->任务(命令)-->ctrl+d(提交)-->atq(查看)-->atrm 任务编号(删除)
  • 周期性计划任务:

    • 了解crond:周期性执行命令,由crontabs软件提供系统计划任务内容;crond提供程序或用户自定义计划任务。
    • 计划任务的格式:分 时 日 月 周 要执行的命令 ##用户可以不指定,默认为root用户
    • .时间的表示:所有时间为正常标准,特殊的表示以下:
      • *:表示任意时间,可用在除分钟外的其他时间
      • -:表示连续的时间
      • /:表示时间的频率,如*/3表示每隔3
      • ,:表示不连续的时间,如1,3,5
    • 设置周期性计划任务的方式:
      crontab -e -u 用户 -->时间 命令-->:wq --> crontab -l -->crontab -r (删除用户的所有计划任务)
      echo‘时间 命令’>>/var/spool/cron/用户名 --> crontab -l (查看)

李泽信 发布于 2022-7-18 21:44

进程管理

一、进程

程序是保存在硬盘中的可执行代码或数据的静态集合;
进程是cpu及内存中处于动态执行状态的计算机程序;
进程由程序运行后产生,需要消耗cpu和内存,分为父子进程,子进程向父进程申请或提交;
线程:包含在进程中的一个实体,与所在的进程共用计算机资源;
单线程:串行化处理;
多线程:并行化处理;

二、进程的管理:增(启动)、删(杀死或关闭)、查(显示进程)

  • 查:查找进程 ps/top/pgrep/pstree

    • 语法:ps aux ##静态查看进程

      RSS:物理内存,不包括swap,单位kb
      VSZ:虚拟内存
      STAT:进程状态:R运行、S休眠、Z僵尸、s父进程、<高优先级、N低优先级、+前台进程

    • 语法:top ##动态显示进程的列表,相当于windows下的任务管理器

      k--输入PID--9代表强制杀死--15代表正常杀死(windows关机时 有未关闭的程序时的提醒)
      大写P按cpu使用情况进行将进程排序、shift < 或 shift > 进行翻页、q退出




    • 清除内存的缓存命令:echo 3 >/proc/sys/vm/drop_caches
    • pgrep命令 :按条件查看进程;
      语法:pgrep -l 关键字 ##查看包含关键字的进程
      pgrep -l -u 用户名 ##查看该用户的进程
    • pstree命令:树形显示进程列表,显示包含其子进程;
      语法:
      pstree -aup ##查看当前系统的进程树
      pstree -ap 用户名 ##查看某用户的进程树
  • 增:启动进程

    • 启动方式:
      手动启动:手动执行命令进行开启进程;
      调度启动:根据任务计划定时自动启动进程;
    • 进程类型:
      前台进程:在界面运行,必须等待结束后才能继续执行命令;
      后台进程:不在操作界面运行。
    • 前后台进程的管理:
      • 启动前台进程:
      • 启动后台进程:
        运行命令加上 &,将现在运行的进程放到后台运行;例:cat /dev/zero >/dev/null &
      • 挂起前台进程到后台:
        ctrl z ##将正在运行的前台进程调到后台并暂停;
      • 查看后台进程:
        jobs -l
      • 恢复后台进程到前台:
        fg 后台进程编号(并非pid) ##将后台暂停的进程调到前台继续运行
  • 删:停止进程 kill/killall/pkill

    • ctrl c ##终止前台正在运行的进程
    • kill -9 PID ##强制终止单个进程
    • killall -9 进程名 ##强制终止此进程名称的所有有关进程
    • pkill -9 -u 用户名 ##针对此用户的所有进程强制终止

李泽信 发布于 2022-7-18 21:27

恢复误删除文件

  • 恢复的工具:extundelete(无法恢复空文件)
  • 恢复的原理:
    在数据被误删除后,第一时间要做的就是卸载被删除数据所在的分区;
    如果是根分区的数据遭到误删,就需要将系统进入单用户模式,并且将根分区以只读模式挂载。这样做的原因很简单,因为将文件删除后,仅仅是将文件的inode节点中的扇区link指针-1,实际文件还储存在磁盘上,如果磁盘继续以读写模式挂载,这些已删除的文件的数据块就可能被操作系统在创建新文件时重新分配出去,在这些数据库被新的数据覆盖后,这些数据就真的丢失了,恢复工具也无力回天。所以!以只读模式挂载磁盘可以尽量降低数据库中数据被覆盖的风险,以提高恢复数据成功的比例。
  • 案例:
    [root@localhost ~]# fdisk /dev/sdb              ##分区为sdb1
    [root@localhost ~]# partx -a /dev/sdb
    [root@localhost ~]# mkfs -t ext4 /dev/sdb1
    [root@localhost ~]# mkdir /benet
    [root@localhost ~]# mount /dev/sdb1 /benet
    [root@localhost ~]# df -hT
    [root@localhost ~]# touch /benet/1.file
    [root@localhost ~]# cp /etc/fstab /benet
    [root@localhost ~]# cp /etc/inittab /benet
    [root@localhost ~]# echo "haha" >>/benet/haha.txt
    [root@localhost ~]# ls /benet
    1.file   fstab   inittab   haha.txt
    [root@localhost ~]# rm -rf /benet/*
    [root@localhost ~]# ls /benet
    [root@localhost ~]# umount /benet

    [root@localhost ~]# yum -y install *2fs*    
    [root@localhost ~]# tar jxvf extundelete-0.2.4.tar.bz2
    [root@localhost ~]# cd extundelete-0.2.4
    [root@localhost extundelete-0.2.4]#./configure
    [root@localhost extundelete-0.2.4]# make
    [root@localhost extundelete-0.2.4]# make install
    [root@localhost extundelete-0.2.4]# cd
    [root@localhost ~]# extundelete /dev/sdb1 --inode 2             ##查看可以恢复的文件
    [root@localhost ~]# extundelete /dev/sdb1 --restore-all         ##恢复所有文件
    [root@localhost ~]# ls RECOVERED_FILES/                     ##验证恢复的文件
    1.file  fstab  haha  inittab

    extundelete命令其他语法:
    extundelete /dev/sdb1 --restore-file 文件名                ##恢复单个文件,只指定文件名,不指定文件的任何路径
    extundelete /dev/sdb1 --restore-directory 目录名           ##恢复目录

李泽信 发布于 2022-7-18 21:15

raid管理

一、raid磁盘阵列概述

概述:

raid(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。
raid就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。raid可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。

二、raid工作模式

  • raid0(分条)

    可以把多块硬盘连成一个容量更大的硬盘群,可以提高磁盘的性能和吞吐量。
    RAID 0没有冗余或错误修复能力,成本低,要求至少两个磁盘,一般只是在那些对数据安全性要求不高的情况下才被使用。

容错性: 冗余类型:
热备盘: 读性能:
随机写性能: 连续写性能:
需要的磁盘数: 1+N(N不能为0) 可用容量: N*(多个磁盘的容量总和)

典型应用 : 对数据安全性要求不高,但对读写性能要求极高,如图形工作站等应用

  • raid1(镜像)

    把一个磁盘的数据镜像到另一个磁盘上,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,
    具有很高的数据冗余能力,但磁盘利用率为50%,故成本最高,多用在保存关键性的重要数据的场合。
    raid 1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上。

容错性: 冗余类型: 镜像
热备盘: 读性能: 低(与单块磁盘一样)
随机写性能: 连续写性能:
需要的磁盘数: 2*N(N代表磁盘数量) 可用容量: 50%

典型应用 :对数据安全性可靠性要求高,但是读写效率低,用于服务器或数据库存储等;

  • raid5(奇偶校验)

    raid 5可以理解为是raid 0和raid 1的折中方案。
    raid 5可以为系统提供数据安全保障,但保障程度要比raid1低而磁盘空间利用率要比Mirror高。
    raid 5具有和raid 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。
    同时由于多个数据对应一个奇偶校验信息,raid 5的磁盘空间利用率要比raid 1高,存储成本相对较低。

容错性: 冗余类型: 奇偶校验信息存储
热备盘: 读性能: 高(与raid0相近)
随机写性能: 较低 连续写性能: 较低
需要的磁盘数: 大于等于3 可用容量: n-1

典型应用 :随机数据传输要求安全性高,如金融、数据库、存储等。

  • raid1+0(分条+镜像)

    raid 10是一个raid 0与Raid1的组合体,所以它继承了raid0的快速和raid1的安全。
    raid 1在这里就是一个冗余的备份阵列,而raid 0则负责数据的读写阵列。
    情况是从主通路分出两路,做Striping操作,即把数据分割,而这分出来的每一路则再分两路,做Mirroring操作,即互做镜像。

容错性: 冗余类型: 镜像
热备盘: 读性能: 高(与raid0相近)
随机写性能: 较低 连续写性能: 较低
需要的磁盘数: N*2 可用容量: n/2

典型应用 :集成了RAID0和RAID1的优点;

总结:

三、制作raid

  • 硬raid制作

    • 戴尔R410服务器配置硬raid1: http://m.ouyaoxiazai.com/article/20/702.html
    • IBM X3650服务器配置硬raid: http://blog.itpub.net/27771627/viewspace-1246405/
    • 戴尔R740服务器配置硬raid

      • 开机按f2进入system setup界面选择Device Settings
      • 选择第1个进入raid卡配置
      • 选择第1个 Configuration Management,进入raid卡管理
        - 选择第1个 Configuration Management,进入raid卡管理
      • 选择第二个 Create Virtual Disk,创建raid
      • 创建双盘600G raid1

      • 点击OK
      • 鼠标下拉在Default Intialization 选择fast后,点击Create virtual Disk创建
      • 选中Confirm后,点击yes
      • 点击OK,完成raid1创建
      • raid 0步骤一致
      • 查看raid配置情况,可esc进入raid卡管理中选中第三个查看
      • 最后点击右上角exit,退出f2,配置完成
  • 软raid0制作:在本地虚拟机演示

    • 添加三块硬盘sdb和sdc并进行分区,分为sdb1、sdc1,各5G,将其文件系统类型ID改为fd;
    • 重读分区表;
    • 安装软件包parted和mdadm工具;
    • mdadm命令创建raid 0;

      mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdc1
      选项:
      -C 指定Raid卷位置
      -l 执行Raid等级
      -n 指定分区数量

    • 查看raid卷初始化进度,完成后/dev/md0卷的详细信息;
      cat /proc/mdstat
      mdadm --detail /dev/md0
    • 格式化/dev/md0卷;
    • 重启服务器,使其重新加载raid关系;
    • 挂载使用;
      vi /etc/fstab
      /dev/md/localhost:0 /data1/ ext4 defaults 0 0
    • df -hT验证磁盘使用情况;
  • 软raid1制作:

    • 分区为sdb2、sdc2,各5G,将其文件系统类型ID改为fd;
    • 重读分区表;
    • mdadm命令创建raid 1;
      mdadm -C /dev/md1 -l 1 -n 2 /dev/sdb2 /dev/sdc2
    • 查看/dev/md1卷的详细信息;
      cat /proc/mdstat
      mdadm --detail /dev/md1
    • 格式化/dev/md1卷;
    • 重启服务器,使其重新加载raid关系;
    • 挂载使用;
      vi /etc/fstab
      /dev/md/localhost:1 /data2/ ext4 defaults 0 0
    • df -hT验证磁盘使用情况;
  • 软raid5制作:

    • 分区为sdb3、sdc3、sdd1,各5G,将其文件系统类型ID改为fd;
    • 重读分区表;
    • mdadm命令创建raid 5;
      mdadm -C /dev/md2 -l 5 -n 3 /dev/sdb3 /dev/sdc3 /dev/sdd1
    • 查看/dev/md2卷的详细信息;
      cat /proc/mdstat
      mdadm --detail /dev/md1
    • 格式化/dev/md2卷;
    • 重启服务器,使其重新加载raid关系;
    • 挂载使用;
      vi /etc/fstab
      /dev/md/localhost:2 /data3/ ext4 defaults 0 0
    • df -hT验证磁盘使用情况;
  • 为raid1添加热备盘
    注意
    新增加的硬盘的容量大小需要大于等于原有硬盘;
    如果原有阵列缺少工作磁盘(如raid1只有一块在工作,raid5只有2块在工作),这时新增加的磁盘直接变为工作磁盘,如果原有阵列工作正常,则新增加的磁盘为热备磁盘;
    步骤

    • 分区为sdd2,大小为5G,并将文件系统类型改为fd,并且重读分区表;
    • 将/dev/sdd2添加到RAID1,作为热备盘;
      mdadm /dev/md/localhost:1 --add /dev/sdd2
    • 查看raid1卷的详细信息;
      cat /proc/mdstat
      mdadm -D /dev/md/localhost:1
    • 将raid1卷中的活跃卷/dev/sdb2模拟故障;
      mdadm /dev/md/localhost:1 --fail /dev/sdb2
    • 查看raid1卷的详细信息;
      mdadm -D /dev/md/localhost:1
    • 将故障卷在RAID1中进行移除;
      mdadm /dev/md/localhost:1 -r /dev/sdb2
    • 查看raid1卷的详细信息;
      mdadm -D /dev/md/localhost:1
  • 为raid进行动态扩容:
    注解

    • raid0的存储方式为散列存储,无法进行扩容;
    • 如若为raid1进行扩容,需要进行添加比当前工作硬盘容量大的硬盘,然后逐一替换掉原有工作硬盘,命令如下:
      mdadm /dev/md/localhost:1 --add /dev/sdb3 ##添加热备盘
      mdadm --grow /dev/md/localhost:1 --raid-devices=3 ##将默认两块工作硬盘数量调整到三块,热备盘自动变为工作磁盘
      mdadm -D /dev/md/localhost:1 ##查看复制状态
      mdadm /dev/md/localhost:1 --fail /dev/sdb2 ##模拟磁盘分区故障
      mdadm /dev/md/localhost:1 -r /dev/sdb2 ##删除原有小的工作磁盘
      mdadm -G /dev/md/localhost:1 --size=20G ##重新加载扩容后的大小
      resize2fs /dev/md/localhost:1 ##重新读取大小
    • 如若为raid5进行扩容,则直接添加硬盘即可,命令如下;
      mdadm /dev/md/localhost:1 --add /dev/sdb3
      mdadm --grow /dev/md/localhost:1 --raid-devices=4
      mdadm -D /dev/md/localhost:1
      resize2fs /dev/md/localhost:1 ##重新加载磁盘大小
  • 制作raid1+0

    • 分区为sdb4、sdc4、sdd3、sdd4各4G,将其文件系统类型ID改为fd;
    • 重读分区表;
    • mdadm命令创建第一个raid 1;
      mdadm -C /dev/md3 -l 1 -n 2 /dev/sdb4 /dev/sdc4
    • 查看/dev/md3卷的详细信息;
      cat /proc/mdstat
      mdadm --detail /dev/md3
    • mdadm命令创建第二个raid1;
      mdadm -C /dev/md4 -l 1 -n 2 /dev/sdd3 /dev/sdd4
    • 查看/dev/md4卷的详细信息;
      cat /proc/mdstat
      mdadm --detail /dev/md4
    • 格式化两个raid 1卷;
      mkfs -t ext4 /dev/md3
      mkfs -t ext4 /dev/md4
    • 重启服务器,使其重新加载raid关系;
    • 将上述两个raid1卷制作成为一个raid0;
      mdadm -C /dev/md5 -l 0 -n 2 /dev/md/localhost:3 /dev/md/localhost:4
    • 查看/dev/md5卷的详细信息;
      cat /proc/mdstat
      mdadm --detail /dev/md5
    • 格式化新创建的raid0卷/dev/md5;
      mkfs -t ext4 /dev/md5
    • 重启服务器,使其重新加载raid关系;
    • 挂载使用;
      vi /etc/fstab
      /dev/md/localhost:5 /data4/ ext4 defaults 0 0
    • df -hT验证磁盘使用情况;

李泽信 发布于 2022-7-18 19:52

个人资料

搜索

日历

时间进度

    今日剩余 59.6%
    本周剩余 37.1%
    本月剩余 22.0%
    本年剩余 52.2%

访问统计