磁盘管理项目需求:
1、在企业服务器上安装新硬盘,对磁盘进行分区、格式化、挂载处理
2、根据企业服务器数据业务的不同,采用不同的raid技术来保证数据的读写速度、数据安全
3、在企业的存储服务器上采用LVM逻辑卷技术来实现容量的动态调整
4、在服务器的运维工作中随机对系统进程进行分析和管理
项目测试:
原理概述:存储管理是系统中必不可少的技术,Linux系统中支持多种存储管理技术。在企业服务器中需要根据业务的不同来分别使用分区、raid、LVM逻辑卷等技术。
测试环境: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