磁盘管理项目需求:

1、在企业服务器上安装新硬盘,对磁盘进行分区、格式化、挂载处理

2、根据企业服务器数据业务的不同,采用不同的raid技术来保证数据的读写速度、数据安全

3、在企业的存储服务器上采用LVM逻辑卷技术来实现容量的动态调整

4、在服务器的运维工作中随机对系统进程进行分析和管理

 

 项目测试:

 

原理概述:存储管理是系统中必不可少的技术,Linux系统中支持多种存储管理技术。在企业服务器中需要根据业务的不同来分别使用分区、raidLVM逻辑卷等技术。

 

测试环境:Linux系统、ssh远程管理


根据上述所需应掌握以下技术:



磁盘管理之硬盘分区方式:

硬盘分区(disk partition):
GPT分区管理:parted命令
GPT:是GUID(Globally Unique Identifier) Partition Table全局唯一标识分区表的缩写。GPT分区表中只有主分区这个管理概念。允许创建128个主分区。GPT分区表可以用来管理总容量大于2TB以上的硬盘。硬盘的UUID号可用blkid命令来查。

GUID:全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。GUID标识符由随机产生的字母、数字混合组成
parted -s /dev/sdb mklabel gpt                          定义分区表标签
parted -s /dev/sdb mkpart  primary 1M 1.5G    创建第一个分区为1.5G
parted -s /dev/sdb mkpart  primary '1.5G -1'  创建第二个分区为剩下的所有分区
mkfs.ext4 /dev/sdb1                                           格式化一号分区
mkfs.xfs  /dev/sdb2                                            格式化二号分区
mkdir -pv /mnt/sdb{1,2}                                    创建挂载目录
mount /dev/sdb1 /mnt/sdb1                             分区一挂载到/mnt/sdb1目录中
mount /dev/sdb2 /mnt/sdb2                             分区二挂载到/mnt/sdb2目录中
touch /mnt/sdb1/{a.txt,b.mp3}                           写入数据

卸载分区的文件系统:umount   /mnt/sdb1   /mnt/sdb2
删除分区表(修改分区表格式标签即可):parted  -s  /dev/sdb  mklabel  msdos

---------------

MBR分区表管理:
MBR:是主引导记录(main  boot record)的缩写。
MBR:是保存在硬盘的0磁道0柱面1扇区的位置,占用512字节(因为1个扇区默认的大小是512字节)。其中bootloader引导程序占用446字节,DPT(disk partition table)分区表占用64字节,magic占用2字节。

MBR的分区表特点:
0.只能管理总容量在2TB以内的硬盘。
1.最多只允许分4个主分区,因为DPT分区表总容量是64字节,每个分区占用16字节,即64/16=4。
2.如果想分的个以上的分区,可采用分一个主分区(primary)和一个扩展分区(extend),然后在扩展分区中创建逻辑(logical)分区来实现。
3.主分区的编号为1~4,第1个逻辑分区的编号默认为5。
4.只能在主分区和逻辑分区上格式化创建文件系统。并且只能在主分区和逻辑分区上写入文件。
创建分区: cfdisk   /dev/sdb
格式化分区:mkfs.ext4   /dev/sdb1
           mkfs.xfs    /dev/sdb5
           mkfs.xfs    /dev/sdb6
创建挂载点目录:mkdir  -pv  /mnt/{data,mysql,web}
手动挂载:mount  /dev/sdb1   /mnt/data
         mount  /dev/sdb5   /mnt/mysql
 mount  /dev/sdb6   /mnt/web
写入数据:touch  /mnt/data/{a1.txt,b1.mp3}  
         mkdir  -pv  /mnt/mysql/{haha,hehe}
 cp  -v  /etc/host*   /mnt/web/
递归显示文件名列表:ls  -R  /mnt/{data,mysql,web}

-----------------
fdisk分区:
功能:对硬盘进行分区的查、增、删、改等操作。
用法:fdisk  [选项]  磁盘设备
选项:-l  显示分区表信息

fdisk  /dev/sdb         对/dev/sdb 进行分区
fdisk的常用快捷键:
m:显示命令帮助
p 显示分区表信息(print)
n 新建一个分区(new)
d 删除一个分区(delete)
w 保存并退出(write)
q 不保存退出(quit)
l 显示(list)分区的文件系统类型标签代号
t 修改分区的文件系统类型(type)标签
a 激活(active),即给分区添加bootable允许引导的标记(通常用于boot引导程序的分区)

分区后格式化,再挂载


       RAID
raid: 是冗余磁盘阵列的缩写,简称磁盘阵列。
Raid功能:提供了容量组合、高读写性能、同步备份等功能。

RAID 0 :  条带化                                  硬盘数量 >=2  允许坏盘数0块    高读写性能 容量组合
RAID 1 :  镜像化                                  硬盘数量 =2     1块冗余(可坏)    同步备份,安全性高
RAID 5 :  分布式奇偶效验的条带化        硬盘数量>=3   1块冗余             高>读写性能 数据安全
RAID 6 :  双组分布式奇偶效验的条带化 硬盘数量>=4   2块冗余              高读写性能 数据安全
RAID10:  镜像化+条带化              硬盘数量>2的偶数    可坏一半            容量组合+同步备份

Linux系统中软raid管理工具软件:mdadm
mdadm命令选项:
-C  即create,创建raid设备
-l  即level,指定raid等级号,等级可以是0、1、5、6、10等
-n  即number,指定raid中的磁盘设备数量
-x  即spare空格,指定raid设备中的热备(备胎、替补)磁盘数量
-D  即detail详细,显示raid设备的详细信息
-s  即scan扫描,扫描出系统中所有的raid设备
-v  即verbose,显示执行过程
-S  即stop,停用指定的raid设备
-A  即active,激活(启用)指定的raid设备
-a  即add,在指定的raid设备组中添加新的成员
-f  即faulty错误的,指定raid设备组中有故障的磁盘
-r  即remove移除,在指定的raid设备组中删除有故障的磁盘

显示磁盘设备列表:lsblk
显示raid设备列表:mdadm  -Dsv
创建名称为md5的raid 5设备:mdadm  -C  md5  -l  5   -n  3   -x  1   /dev/sd{b..e}
显示名称为md5的raid 5设备的详细信息:mdadm  -D   /dev/md/md5
显示raid设备列表:mdadm  -Dsv
生成raid配置文件:mdadm  -Dsv  >  /etc/mdadm.conf

附加操作:
显示磁盘设备列表:lsblk
停用md5这个raid设备:mdadm  -S  /dev/md/md5
启用md5这个raid设备:mdadm  -A  /dev/md/md5
警告:要想在停用raid设备之后再启用,必须保证mdadm.conf配置文件存在。

-------------

       LVM逻辑卷管理

LVM概念:
LVM的主要功能:容量组合,动态调整容量大小。
LVM是将多块硬盘从逻辑上组合成一个大容量的存储空间(即VG卷组),最终要划分成小的LV逻辑卷来使用这些空间。
LVM的管理流程:先给硬盘分区(也可以不分区),再创建PV物理卷(volnume),再创建VG卷组,再创建LV逻辑卷,再mkfs格式化LV,再mount手动或fstab自动挂载LV,再写入数据。

创建lvm
pvcreate  /dev/sdb  /dev/sdc      ----------       创建pv物理卷
vgcreate  myvg  /dev/sdb  /dev/sdc ------       创建myvg的卷组 ,并把/dev/sdb /dev/sdc拉入myvg卷组
lvcreate  -L  3G  -n  mylv  myvg       -------       创建容量为3G,名为mylv的lv逻辑卷
(查看pv状态,vg状态,lv状态: pvs   vgs   lvs)
扫描并显示系统中的所有LV设备: lvscan
mkfs.ext4  /dev/myvg/mylv       -----------       格式化
mkdir  /mnt/data                ----------------       创建挂载目录
mount  /dev/myvg/mylv    ----------------       手动挂载

--------------
lvm扩容

将/dev/sdd /dev/sde加入myvg卷组中,并将mylv容量调整成7G
pvcreate  /dev/sdd  /dev/sde     -----------       创建pv物理卷
vgextend  myvg  /dev/sdd  /dev/sdc    ----       在myvg这个卷组中添加 /dev/sdd  /dev/sde
lvextend  -L  7G  /dev/myvg/mylv    -------       把mylv容量调整为7G

df  -h 查看磁盘容量信息
resize2fs  /dev/myvg/mylv   同步文件中的系统容量信息

---------------
lvm缩容

df  -h                    -----------------       显示磁盘空间使用状态
umount  /mnt/data         ----------      卸载挂载点所对应的设备
e2fsck  -f  /dev/myvg/mylv -------      扫描检查磁盘设备
resize2fs  /dev/myvg/mylv  1G   --      调整文件系统的容量为1G
lvresize  -L  1G  /dev/myvg/mylv         lv容量缩减

VG卷组的缩容
vgs   pvs             -------------------      分别查看vg和pv的状态
pvmove  /dev/sdb  /dev/sdd  -----      迁移sdb磁盘的数据到sdd硬盘中去
vgreduce   myvg  /dev/sd{b,c,e}  --      在myvg卷组中移除sdb sdc sde三个成员


----------------

  lvm快照恢复:

LVM快照的工作原理:LVM的快照卷也是一个LV逻辑卷,快照卷跟源逻辑卷共享数据,当用户修改源逻辑卷中的文件时,LVM后台程序会自动将修改之前的文件复制一份到快照卷中

创建mylv-snap快照卷 : lvcreate -L 500M -s -n myvg-snap /dev/myvg/mylv
创建挂载点目录:mkdir  -pv  /mnt/mylv-snap
手动挂载:mount  /dev/myvg/mylv-snap  /mnt/mylv-snap

恢复快照:
                思路:先卸载源逻辑卷--〉恢复快照--〉挂载逻辑卷
                卸载:umount  /dev/myvg/mylv   /dev/myvg/mylv-snap
                恢复快照:lvconvert  --merge  /dev/myvg/mylv-snap
                挂载:mount  /dev/myvg/mylv   /mnt/mydata
                显示挂载点目录中的文件内容:cat  /mnt/mydata/hosts


---------------

   quota磁盘限额

           quota的磁盘配额可以限制用户的硬盘可用空间或最大创建文件数量,并且还有软/硬限制的区别:
           soft软限制  -----------  当达到软限制时会提示用户,但允许用户在规定期限内继续使用。
           hard硬限制  ----------  当达到硬限制时会提示用户,且强制终止用户的操作。
           block块  -------------   限制用户能使用的容量。
           inode索引号  ---------  限制用户能创建的文件数量。

lsblk                     ----------------------------------              显示块设备
parted  -s  /dev/sdf   mklabel  msdos     -------------       设置分区表格式标签为msdos(即MBR分区表)
parted  -s  /dev/sdf   mkpart  primary  '1  -1 '   ------     创建主分区,使用所有容量
mkfs.ext4   /dev/sdf1       -----------------------------          格式化sdf1分区为ext4文件系统
mkdir  -pv  /f1                 -----------------------------          创建挂载点目录
mount  -o  usrquota,grpquota  /dev/sdf1   /f1 -------      手动挂载sdf1设备,并使用磁盘配额功能
setenforce  0        --------------------------------------            临时关闭Selinux安全功能
getenforce                  ----------------------------------        查selinux的工作状态
quotacheck  -cvug   /f1      ----------------------------       生成quota主配置文件
ls   /f1      --------------------------------------------         显示/f1目录的文件名列表
quotaon  -v  /f1  -------------------------         激活quota功能,如果未激活,后期切换到用户后,用quota查状态会出没有权限
useradd  -Db  /f1    ----------------------------------        修改useradd创建用户时的用户家目录的基目录为/f1
useradd   fa       --------------------------------------        创建fa用户
repquota  -av    --------------------------------------        显示quota配额状态信息报表
edquota  -u  fa  --------------------------------------        给fa用户设置文件数量配额,软限制为15个文件,硬限制为18个文件。

su  -  fa               -------------------------------------        切换到fa用户
quota    ----------------------------------------------         显示当前用户的quota配额使用状态信息
touch  {1..5}    ---------------------------------------          会提示quota  exceeded配额超出,即超出了软限制。
touch  {6..10}   --------------------------------------          会提示超出磁盘限额,无法创建。即超出了硬限制。
exit    退出当前用户

edquota命令补充:
将fa用户的配额方案复制给fb用户:edquota   -p  fa  zk


--------------


       swap交换分区:
虚拟内存:将硬盘的一部分空间当作内存来使用。用来缓解物理内存不足的问题

使用swap构建分区:
应用场景:
硬盘已经没有剩余空间来创建swap分区时,在硬盘上创建一个swap文件来充当swap分区。


使用swap分区


应用场景:
1.硬盘已经没有剩余空间来创建swap分区时,在硬盘上创建一个swap文件来充当swap分区。
dd  if=/dev/zero  of=/tmp/swap  bs=1M  count=128  (使用dd命令来创建一个128M的文件到/tmp目录中)
mkswap  /tmp/swap         使用mkswap将/tmp/swap文件格式化成swap
free                               查看当前swap值
swapon  /tmp/swap          启用/tmp/swap
free                               验证swap是否多了128M

swapoff  /tmp/swap          关闭/tmp/swap文件
2.如果硬盘有空闲空间来创建swap分区时,可以在硬盘上创建一个swap分区并启用swap。
目标:在sdb硬盘上创建一个500M的swap分区,并启用这个Swap分区。

perted  -s  /dev/sdb  mklabel  msdos               设置分区表类型为msdos(即MBR)
parted  -s  /dev/sdb  mkpart  primary  1  500M    创建1个500M的主分区
mkswap  /dev/sdb1                                     使用mkswap将/dev/sde1文件格式化为swap格式
free                                                          查看当前swap值
swapon  /dev/sdb1                                      使用swapon来启用/dev/sde1
free

swapoff  /dev/sdb1                                      使用swapoff关闭/dev/sde1