RAID

RAID存储系统是一种数据存储虚拟化技术,它将多个物理磁盘驱动器组合成一个或多个逻辑单元,以提供数据冗余和/或提高性能。

1. RAID 0 无奇偶校验与冗余(磁盘容错)的条带存储(带区卷/条带卷)

由两块或两块以上的硬盘组成
每块硬盘提供的空间大小必须一致
在所有动态磁盘中读写速度最快
磁盘损坏几率最大

2. RAID 1 镜像卷每块硬盘提供的空间大小必须一致

磁盘利用率最低(50%利用率)
拥有一定的磁盘容错功能
在所有动态磁盘中写入速度最慢
安全性最高

3. RAID 10 镜像与条带存储

是 RAID1 与 RAID0 的结合体
先进行镜像(RAID1),再进行条带存放(RAID0)
具有 RAID1 的安全性
具有 RAID0 的读写速度

4. RAID 01(条带存储与镜像)

是 RAID1 与 RAID0 的组合体
先进行条带存放(RAID0),再进行镜像(RADI1)

5. RAID10 与 RAID01 的区别

(1)数据读取的区别:
    RAID10:允许损坏不同组的两块硬盘,可以正常读取
    RAID01:允许损坏同组的两块硬盘,可以正常读取

(2)数据修复的区别:
	RAID10:同组的用一块硬盘复制,节约系统资源
	RAID01:一块损坏,需要多块硬盘参与修复

6. RAID5

由三块或三块以上的硬盘组成
每块硬盘提供的空间大小必须一致
拥有磁盘容错功能
磁盘利用率为 n-1/n

7. 预备磁盘功能(spare disk)

预备磁盘就是一块或多块本身不在磁盘阵列内的磁盘。当磁盘阵列中有磁盘损坏时,会被主动拉进磁盘阵列中,并将坏掉的那块磁盘移出磁盘列阵,然后立即重建数据系统。

LVM

一、概述

lvm是linux下对磁盘分区进行管理的一种工具,适合管理大存储设备,并允许用户动态扩容文件系统。

Linux磁盘高级操作_逻辑卷

物理卷(PV)是lvm最底层的概念,是lvm的逻辑存储块,物理卷与磁盘分区是逻辑对应的关系。多个LVM物理卷可以合并或拆分,从而实现容量扩容和缩减。

卷组(VG)卷组是LVM逻辑上的设备、有物理卷组合而成、卷组的大小取决于物理卷的容量及个数。

逻辑卷(LV)逻辑卷可以理解成LVM中的分区。LV建立在VG之上,可以指定从VG中提取多少容量来创建逻辑卷,然后对LV进行格式化并挂载.

PEPV中可以分配的最小存储单元为PE,大小可以指定,默认4MB

LELV中可以分配的最小存储单元称为LE。在同一个卷组中,LE和PE大小相同且一 一对应

二、功能命令

功能

pv管理命令

VG管理命令

LV管理命令

scan扫描

pvscan

vgscan

lvscan

create创建

pvcreate

vgcreate

lvcreate

display显示

pvdisplay

vgdisplay

lvdisplay

remove移除

pvremove

vgremove

lvremove

extend扩展

vgextend

lvresize

reduce减少

vgreduce

lvreduce

常用查看操作命令

查看卷名

查看简单卷信息

扫描相关的所有对应的卷

详细对应卷信息的查看

物理卷

pvs

pvscan

pvdisplay

卷组

vgs

vgscan

vgdisplay

逻辑卷

lvs

lvscan

lvdisplay

三、操作方法

创建
1.创建pv物理卷
[root@localhost ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
2.创建vg卷组
[root@localhost ~]# vgcreate myvg /dev/sdb1
  Volume group "myvg" successfully created
3.创建lv逻辑卷

选项-L指定逻辑卷大小。-n指定逻辑卷名称、所属卷组名称

[root@localhost ~]# lvcreate -L 1G -n rs myvg
  Logical volume "rs" created.
扫描
1.扫描物理卷
[root@localhost ~]# pvscan
  PV /dev/sdb1   VG myvg            lvm2 [<2.00 GiB / 1020.00 MiB free]
  PV /dev/sda2   VG centos          lvm2 [<19.50 GiB / 0    free]
  Total: 2 [21.49 GiB] / in use: 2 [21.49 GiB] / in no VG: 0 [0   ]
2.扫描卷组
[root@localhost ~]# vgscan 
  Reading volume groups from cache.
  Found volume group "myvg" using metadata type lvm2
  Found volume group "centos" using metadata type lvm2
3.扫描逻辑卷
[root@localhost ~]# lvscan
  ACTIVE            '/dev/myvg/rs' [1.00 GiB] inherit
  ACTIVE            '/dev/centos/swap' [1.00 GiB] inherit
  ACTIVE            '/dev/centos/root' [<18.50 GiB] inherit
显示
1.显示物理卷详细信息
[root@localhost ~]# pvdisplay /dev/sdb1
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               myvg
  PV Size               2.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              511
  Free PE               255
  Allocated PE          256
  PV UUID               p3fERZ-62cr-w8Wg-rkki-ERcC-4qoO-mO8sE0
2.显示卷组myvg详细信息
[root@localhost ~]# vgdisplay myvg 
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <2.00 GiB
  PE Size               4.00 MiB
  Total PE              511
  Alloc PE / Size       256 / 1.00 GiB
  Free  PE / Size       255 / 1020.00 MiB
  VG UUID               rA6hfY-a5CV-woOu-RzCH-yIeh-mHpO-2kPD9f
3.显示逻辑卷详细信息
[root@localhost ~]# lvdisplay /dev/myvg/rs 
  --- Logical volume ---
  LV Path                /dev/myvg/rs
  LV Name                rs
  VG Name                myvg
  LV UUID                rAVHET-vdkf-xJI2-rbjJ-m3QN-MbVz-XTS5Jc
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2024-05-18 18:03:09 +0800
  LV Status              available
  # open                 0
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
扩展
1.扩展卷组
#新建物理卷
[root@localhost ~]# pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created.
  
[root@localhost ~]# vgextend myvg /dev/sdb2
  Volume group "myvg" successfully extended
2.扩展逻辑卷

选项-L指定逻辑卷大小

[root@localhost ~]# lvresize -L +1G /dev/myvg/rs 
  Size of logical volume myvg/rs changed from 2.00 GiB (512 extents) to 3.00 GiB (768 extents).
  Logical volume myvg/rs successfully resized.
减少
1.减少卷组
[root@localhost ~]# vgreduce myvg /dev/sdb2
  Physical volume "/dev/sdb2" still in use
2.减少逻辑卷
[root@localhost ~]# lvreduce -L -1G /dev/myvg/rs 
  WARNING: Reducing active logical volume to 2.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/rs? [y/n]: y
  Size of logical volume myvg/rs changed from 3.00 GiB (768 extents) to 2.00 GiB (512 extents).
  Logical volume myvg/rs successfully resized.
移除
1.移除逻辑卷
[root@localhost ~]# lvremove /dev/myvg/rs 
Do you really want to remove active logical
2.移除卷组
[root@localhost ~]# vgremove myvg 
  Volume group "myvg" successfully removed
3.移除物理卷
[root@localhost ~]# pvremove /dev/sdb2
  Labels on physical volume "/dev/sdb2" successfully wiped.

四、使用工具完成LVM划分

1.安装SSM工具

SSM:检查关于可用硬驱和LVM卷的信息。

[root@localhost ~]# yum -y install system-storage-manager
2.列出设备信息
[root@localhost ~]# ssm list dev
------------------------------------------------------------
Device        Free      Used      Total  Pool    Mount point
------------------------------------------------------------
/dev/sda                       20.00 GB                     
/dev/sda1                     512.00 MB          /boot      
/dev/sda2  0.00 KB  19.50 GB   19.50 GB  centos             
/dev/sdb                       20.00 GB                     
/dev/sdb1                       2.00 GB          /mnt       
/dev/sdb2                       2.00 GB                     
/dev/sdc                       20.00 GB                     
------------------------------------------------------------
3.列出存储池信息
[root@localhost ~]# ssm list pool
--------------------------------------------------
Pool    Type  Devices     Free      Used     Total  
--------------------------------------------------
centos  lvm   1        0.00 KB  19.50 GB  19.50 GB  
--------------------------------------------------
4.自动把设备变成PV,创建VG,LV,格式化文件系统,自动挂载
[root@localhost ~]# ssm create -s 1G -n mail-lv --fstype xfs -p mail /dev/sdb2 /mail-lv
-s:lv大小  -n:lv名称  --fstype lv文件系统类型  -p:卷组名  设备  挂载点
[root@localhost ~]# df -h /mail-lv/
文件系统                   容量  已用  可用 已用% 挂载点
/dev/mapper/mail-mail--lv 1014M   33M  982M    4% /mail-lv

磁盘配额

1. 为什么要有Quota磁盘配额(起因)

由于Linux是多任务多用户的操作系统,所以多个用户使用同一块硬盘的情况时有发生

2. Quota能做什么(作用)

限制用户和组的容量限制和文件限量限制(block和inode)

限制block就等于限制了用户可以使用的磁盘容量。

限制inode就等于限制了用户能创建的文件数量。

限制某一目录的最大磁盘配额(directiory project):

3. Quota磁盘配额(开启条件)

盘配额是针对分区进行的设置

内核必须支持quota:在cent5.x以后都已经默认支持quota功能

[root@localhost yang]# grep CONFIG_QUOTA /boot/config-3.10.0-957.el7.x86_64 
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
CONFIG_QUOTACTL_COMPAT=y

查看quota命令是否安装

[root@localhost yang]# rpm -qa |grep quota
quota-4.01-17.el7.x86_64
quota-nls-4.01-17.el7.noarch

quota只对一般身份用户有效(例如root就不能设置quota)

4. 磁盘配额的基本概念(概念)

软限制(soft)用户在低于软限制的时候可以正常使用磁盘,如果超过软限制之后且低于硬限制的时候,每次用户登录系统时系统会发出警告信息,并且超出部分会有宽限天数,宽限天数到期后锁住用户磁盘使用权限。

硬限制(hard)表示用户的用量绝对不会超过这个限制值,如果超过硬限制则会所著该用户对磁盘的使用权限。

宽限天数宽限时间只有用在用户的磁盘用量介于软限制和硬限制之间时会出现。由于达到硬限制的时候用户的磁盘使用权会被锁住。宽限天数默认为7天。

5.磁盘配额实验(如何使用)

5.1 临时开启磁盘配额
#临时开启磁盘配额
   17  mount -o usrquota,grpquota /dev/sdb1 /mnt/
   24  mount | grep "/dev/sdb1"
   25  df -h
   26  df -h /dev/sdb1
5.2 永久开启磁盘配额
#永久开启磁盘配额
[root@localhost ~]# blkid | grep "sdb1"
/dev/sdb1: UUID="089d5a72-161d-49bc-ba0a-2df9f1ac0a2a" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="08ddce5e-a2b8-4ced-a7f8-60905650d62d" 
[root@localhost ~]# vim /etc/fstab
UUID=089d5a72-161d-49bc-ba0a-2df9f1ac0a2a /mnt  xfs defaults,usrquota,grpquota 0 0
5.3 编辑磁盘配额命令(xfs_quota -x -c “命令”)
xfs_quota -x -c "命令"
	-x:启用专家模式允许对磁盘配额进行编辑
	-c:quota可以在交互模式和命令模式两种方法下执行,添加-c命令可以让quota顺序执行-c选项后的命令
		print:输出所有具有xfs设备标识
		df:和df命令相同,可以添加-b、-i等
		report:输出当前的磁盘配额信息,需要结合ugrbi等选项
		state:目前支持磁盘配额的文件系统信息
5.4 输出所有具有xfs设备标识
[root@localhost ~]# xfs_quota -x -c "print"
Filesystem          Pathname
/                   /dev/mapper/centos-root
/boot               /dev/sda1
/mnt                /dev/sdb1 (uquota, gquota, pquota)
5.5 查看block和inode
[root@localhost ~]# xfs_quota -x -c "df -i"
Filesystem              Inodes      IUsed      IFree IUse% Pathname
/dev/mapper/centos-root
                       9697280     127816    9569464    1% /
/dev/sda1               262144        340     261804    0% /boot
/dev/sdb1              1048576          6    1048570    0% /mnt

[root@localhost ~]# xfs_quota -x -c "df -b"
Filesystem           1K-blocks       Used  Available  Use% Pathname
/dev/mapper/centos-root
                      19384320    3670612   15713708   19% /
/dev/sda1               520868     162892     357976   31% /boot
/dev/sdb1              2086912      33004    2053908    2% /mnt
5.6 查看当前支持磁盘配额的文件系统
[root@localhost ~]# xfs_quota -x -c "state"
User quota state on /mnt (/dev/sdb1)
  Accounting: ON    #是否记录
  Enforcement: ON   #是否开启
  Inode: #67 (1 blocks, 1 extents)   用户
Group quota state on /mnt (/dev/sdb1)
  Accounting: ON
  Enforcement: ON
  Inode: #68 (1 blocks, 1 extents)   用户组
Project quota state on /mnt (/dev/sdb1)
  Accounting: ON
  Enforcement: ON
  Inode: #68 (1 blocks, 1 extents)   目录
Blocks grace time: [7 days]
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]  #宽限天数
5.7 输出当前用户、用户组、目录磁盘限制信息
[root@localhost ~]# xfs_quota -x -c "report -ugpbih" /mnt/

#不加-x选项不能够成功执行命令。
#report后面的选项分别是 
u:用户  g:组  b:block块  p:目录  i:inode号  h:以常见单位大小显示
5.8 设置限制用户磁盘文件数量和容量
#限制用户容量
[root@localhost ~]# xfs_quota -x -c "limit -u bsoft=20M bhard=40M yang" /mnt/

#使用dd命令验证用户容量
[yang@localhost mnt]$ dd if=/dev/zero of=/mnt/a.txt bs=4M count=20
dd: 写入"/mnt/a.txt" 出错: 超出磁盘限额
记录了11+0 的读入
记录了10+0 的写出
41943040字节(42 MB)已复制,0.0417043 秒,1.0 GB/秒

#限制用户文件数量
[root@localhost ~]# xfs_quota -x -c "limit -u isoft=4 ihard=10 yang" /mnt/
#使用mkdir在yang用户验证文件数量
[yang@localhost mnt]$ mkdir {1..20}.txt
mkdir: 无法创建目录"11.txt": 超出磁盘限额
mkdir: 无法创建目录"12.txt": 超出磁盘限额
mkdir: 无法创建目录"13.txt": 超出磁盘限额
mkdir: 无法创建目录"14.txt": 超出磁盘限额
5.9 设置限制用户组磁盘文件数量和容量
#限制用户组容量和文件数量
[root@localhost ~]# xfs_quota -x -c "limit -g  bsoft=20M bhard=40M yang" /mnt/

#验证容量限制
[xxhf@localhost mnt]$ dd if=/dev/zero of=/mnt/a.txt bs=40M count=2
dd: 写入"/mnt/a.txt" 出错: 超出磁盘限额
记录了2+0 的读入
记录了1+0 的写出
41943040字节(42 MB)已复制,0.0961088 秒,436 MB/秒

#限制文件数量
[root@localhost ~]# xfs_quota -x -c "limit -g  isoft=20M ihard=40M yang" /mnt/
5.10 设置限制目录磁盘文件数量和容量
[root@localhost ~]# echo "10:/mnt" >> /etc/projects 
[root@localhost ~]# echo "mymu:10" >> /etc/projid
[root@localhost ~]# xfs_quota -x -c "print" /mnt/
Filesystem          Pathname
/mnt                /dev/sdb1 (uquota, gquota, pquota)
/mnt                /dev/sdb1 (project 10, mymu)

#限制目录容量
[root@localhost ~]# xfs_quota -x -c "limit -p bsoft=20M bhard=40M mymu" /mnt/

#限制文件数量
[root@localhost ~]# xfs_quota -x -c "limit -p isoft=2 ihard=4 mymu" /mnt/
5.11 修改用户、用户组、目录宽限天数
[root@localhost ~]# xfs_quota -x -c "timer -u -bir 15days" /mnt/
#timer命令的选项
# -u 设置用户配额 -g设置用户组配额 -p设置目录配额 -r实时块限制

#表示对宽限时间已经修改为15天
[root@localhost ~]# xfs_quota -x -c "state" /mnt/
Blocks grace time: [15 days]
Inodes grace time: [15 days]
Realtime Blocks grace time: [15 days]
5.12 查看当前SELinux状态
getenforce	#查看当前SELinux
在命令结果中:
	Enforcing	#SELinux正常运行。
	Permissive #当前selinux只记录不限制。
[root@localhost ~]# setenforce #改变当前SELinux运行状态。临时生效。
usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]

数据备份

一、哪些数据需要备份

1.linux系统重要数据

root目录、home目录下、etc目录下

2.安装服务的数据

例如apache和mysql

根据自己实际情况进行数据备份

二、备份策略

1.完全备份

把所有需要备份数据全部备份

优点:数据恢复方便

缺点:需要备份的数据量较大、备份时间较长、不可能实现每天备份

2.增量备份

先进行一次完全备份,服务器运行一段时间后,比较当前系统和完全备份数据之间的差别,只备份有差别的数据。

在经过一段时间之后,进行第二次增量备份,第二次增量备份时,当前系统是和第一次增量备份的数据进行比较,也只是备份有差别的数据。第三次增量备份是和第二次增量备份的数据进行比较。

3.差异备份

差异备份也要先进行完全备份,和增量备份不同的是,每次差异备份都是和原始的完全备份不同的数据,总的说每次差异备份的参照物是原始的完全备份,不是上一次的差异备份。

三、备份方法

命令格式:dd if=“输入文件” of=“输出文件” bs=“数据块” count=“数量”

参数:       if:定义输入数据的文件,也可以是输入设备
			of:定义输出数据的文件,也可以是输出设备
			bs:指定数据块的大小,也就是定义一次性读取或写入多少字节,默认数据块大小是512字节
			count:指定bs的数量
操作练习
[root@localhost ~]# dd if=/etc/httpd/conf/httpd.conf of=/tmp/httpd.bark
记录了22+1 的读入
记录了22+1 的写出
11753字节(12 kB)已复制,0.00111368 秒,10.6 MB/秒
#将磁盘备份到tmp目录下
[root@localhost ~]# dd if=/dev/sda1 of=/tmp/boot.bak
记录了1048576+0 的读入
记录了1048576+0 的写出
536870912字节(537 MB)已复制,2.0753 秒,259 MB/秒
[root@localhost ~]# ll -h /tmp/boot.bak 
-rw-r--r--. 1 root root 512M 5月  16 19:46 /tmp/boot.bak
#将tmp的数据恢复到sda1磁盘下
[root@localhost ~]# dd if=/tmp/boot.bak of=/dev/sda1
记录了1048576+0 的读入
记录了1048576+0 的写出
536870912字节(537 MB)已复制,2.59553 秒,207 MB/秒
[root@localhost ~]# 
注意:虽然dd功能命令很强大,但是也有缺点,复制的时间较长(根据服务器性能)

命令格式:scp 起始目录 目标用户名@IP地址:/目录

#上传到192.168.11.132
[root@localhost ~]# scp wangxunce.txt root@192.168.11.132:/root/
root@192.168.11.132's password: 
wangxunce.txt                              100%    0     0.0KB/s   00:00    
[root@192.168.11.132 ~]# ls
anaconda-ks.cfg  wangxunce.txt

xfsdump -f 备份文件存放位置 被备份路径或设备文件

#交互式备份
[root@localhost test]# xfsdump -f /opt/dum_sdb1 /dev/sdb1
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control

 ============================= dump label dialog ==============================

please enter label for this dump session (timeout in 300 sec)
 -> dump_sdb1   #指定备份标签
session label entered: "dump_sdb1"

 --------------------------------- end dialog ---------------------------------

xfsdump: level 0 dump of localhost.localdomain:/test
xfsdump: dump date: Fri May 17 04:13:30 2024
xfsdump: session id: 3a2e2971-03b7-4bff-9325-c6f939da0437
xfsdump: session label: "dump_sdb1"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 25856 bytes
xfsdump: /var/lib/xfsdump/inventory created

 ============================= media label dialog =============================

please enter label for media in drive 0 (timeout in 300 sec)
 -> sdb1  #指定设备标签
media label entered: "sdb1"

 --------------------------------- end dialog ---------------------------------

xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 25552 bytes
xfsdump: dump size (non-dir files) : 2592 bytes
xfsdump: dump complete: 21 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /opt/dum_sdb1 OK (success)
xfsdump: Dump Status: SUCCESS
[root@localhost test]#
#非交互式备份
[root@localhost ~]# xfsdump -f /opt/dum_2 /test -L dump_2 -M sdb1
......
xfsdump: dump complete: 0 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /opt/dum_2 OK (success)
xfsdump: Dump Status: SUCCESS
-L:每次备份的session标签
-M:媒体标签,这里写对那个设备进行备份
-s:文件路径 只对指定的文件进行备份,-s指定的时候写的是相对路径

[root@localhost ~]# xfsdump -f /opt/dum_linux -s linux /test -L dump_linux -M sdb1
.............
xfsdump: Dump Status: SUCCESS