存储管理-------------------菡萏香销翠叶残,西风愁起绿波间
存储管理
## 一、磁盘在系统中的命名
1.1、分区主要是分为三类:
主分区<---扩展分区<---逻辑分区
1.逻辑分区属于扩展分区,扩展分区属于主分区
2.主分区又叫引导分区,是可以安装系统的分区
## 1.2、目前常见的磁盘分区格式有两种,MBR分区和GPT分区:
MBR的意思是'主引导记录',最大支持2TB容量。容量上有极大的瓶颈
GPT意思是 GUID 分区表,2TB以上的,是一个逐渐取代MBR的新标准,由 UEFI 辅助形成的,将来 UEFI 用于取代老旧的 BIOS ,而 GPT 取代老旧的 MBR
1.3、磁盘分区工具
fdisk 工具用于 MRB 格式
gdisk 工具用于 GPT 格式
二、MBR分区
2.1、fdisk工具
2.1.1、命令及参数
命令:
# fdisk /dev/sdb
fdisk + 磁盘路径
# partprobe
修改分区信息后,使用partprobe更新后进行查询
# 参数:
n # 创建新的分区
d #删除分区
w #保存分区退出
p #创建主分区
e #创建扩展分区
q #不保存退出
a #切换分区启动标记
b #编辑sdb磁盘标签
c #切换dos兼容模式
l #显示分区类型
m #显示帮助菜单
o #创建新的空白分区表
p #查看分区表的信息
s #创建新的sun磁盘标签
t #修改分区ID,可以通过l查看id
u #修改容量单位,磁柱和扇区
v #检验分区表
x #拓展功能
2.1.2、fdisk工具创建分区
fdisk 工具适用于磁盘小于2TB,分区类型为MRB,主分区4或者主分区3+扩展分区1(逻辑分区1.2...)p为主分区,e为扩展分区,分区后保存后才能生效
1.fdisk /dev/sdb #执行命令开始分区
2.Command (m for help): n #创建新的分区
3.Partition type: p #选择主分区
4.First sector : #此处空格,让系统自己执行开始位置
5.Last sector: #输入分区大小(+1G,+1M...)
6.Command (m for help): w #保存退出
7.partprobe #刷新
8.ls /dev/sdb #查看 或者在fdisk内p查询
ps:扩展分区可不用输入大小,直接两个空格,将剩余的所有容量都分给扩展区
查看设备详情,以及分区的情况
lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 10G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 1G 0 part [SWAP]
└─sda3 8:3 0 8.5G 0 part /
三、GPT分区
1.gdisk /dev/sdc #执行命令开始分区
2.Command (? for help): n # n选项创建新分区
3.Partition number (1-128, default 1):
#最多128个分区,默认为1
4.First sector: #设置开始位置,按回车,让系统指定开始位置
5.Last sector: # +1G +1M(固定格式)
6.Hex code or GUID (L to show codes, Enter = 8300): #选择文件系统,默认8300(Linux filesystem)就可以
创建成功
7.Command (? for help): p #查看创建信息
8.Command (? for help): w #保存退出
9.Do you want to proceed? (Y/N): y # 输入y保存
查看设备详情,以及分区的情况
命令: lsblk
lsblk #查看所有硬盘情况
lsblk /dev/sdb #查看指定硬盘情况
# 命令: fdisk -l /dev/sdb
# 命令: gdisk -l /dev/sdc
查看某一块硬盘下面分了哪些分区
四、格式化制作文件系统与挂载
4.1、制作文件系统
磁盘必须格式化制作文件系统,然后才能挂载使用!!!
4.1.1、一整块硬盘制作文件系统
命令: mkfs.
mkfs.xfs /dev/sdb #/dev/sdb整体就是一个分区
不推荐!
4.1.2、分区后制作文件系统
命令: mkfs.
mkfs.xfs /dev/sdb1
mkfs.xfs /dev/sdb2
mkfs.xfs -f /dev/sdb1 #加上-f强制格式化
ps :CentOS 7系统选择xfs格式作为默认文件系统,而不再使用以前的ext,让然支持ext4,xfs专为大数据产生,每个单个文件系统最大支持8tb,单个文件可以支持16tb,不仅数据量大,而且扩展性高。还可以xfsdump,xfsrestore来备份和恢复
4.2、挂载与卸载
4.2.1、临时挂载
以下是临时挂载
# 命令: mount
mount /dev/sdb1 /opt/ #挂载
# umount /dev/sdb1 #卸载
umount -l /dev/sdb1 #强制卸载
umount -l /opt/ 同样适用
4.2.2、开启开机自动挂载
方式1:编辑文件/etc/fstab
1.vim /etc/fstab #该文件添加挂载格式,永久挂载
2./dev/sdb1 /test xfs defaults 0 0 #固定格式,也可使用UUID
3.保存退出后重启系统生效
补充磁盘挂载
命令: mount
参数:
-t #指定文件系统
-a #挂载/etc/fstab中所有的配置
五、制作swap分区
5.1、所需命令及参数
命令: free
-m #按照M单位来显示大小
命令: swapon #激活swap
-s #总共有多少swap分区在开启
命令: swapoff #关闭某个swap分区
-a #将所有swap分区关闭
命令:makeswap #格式化为swap
5.2、制作swap分区
fdisk /dev/sdb #增加新的分区
makeswap /dev/sdb1 # 格式为swap
5.3、激活swap分区
swapon /dev/sdb1 #激活swap分区
5.4、关闭swap分区
命令: swapoff #关闭某个swap分区
-a #将所有swap分区关闭
swapoff /dev/sdb1
swapoff -a
5.5、开机自动挂载新增的wap分区
1.vim /etc/fstab #编辑永久挂载文件
2./dev/sdb2 swap swap defaults 0 0 #固定格式。也可以使用UUID
3.保存退出重启生效
5.6、永久挂载出现的问题
如果/etc/fstab文件和/etc/rc.local文件编辑了开机自启动挂载,如果挂载后的硬盘被删除掉了,机器会不能启动。所以自动挂载的时候一定要检查清楚,不能挂错。
解决方法:
1.进入单用户模式
2.编辑/etc/fstab文件和/etc/rc.local文件
3.将开机自启动的参数删除掉,重新启动就可以了
六、Dell R740服务器配置RAID5+1
https://link.zhihu.com/?target=https%3A//www.cnblogs.com/linhaifeng/articles/13921161.html
七、修复服务器文件系统
在Linux系统中,为了增加系统性能,通常系统会将一些数据写先放在内存中,并不会直接将数据写入硬盘,这是因为内存速度要比硬盘快若干倍。但是有个问题,万一公司服务器突然断电或者其他未知原因,再次启动后,会造成文件系统错误:“emergency mode”
welcome to emergency mode!after logging in ,type “journalctl -xb” to view system logs,“systemctl reboot” to reboot ,“systemctl default” to try again to boot into default mode。
give root password for maintenance
或者类似
执行任何命令都会有以下(或相似)错误
Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)
7.1、查看日志
查看运行日志,可以提示出损坏的文件系统
journalctl -xb
7.2、修复方式
7.2.1、修复方式1
命令: xfs_repair
参数:
-n #只检查不修复
-L #强制修复
文件损坏修复逻辑:
1.先尝试 xfs_repair 修复
2.如果不行, xfs_repair -L 强制修复,但是数据会全部丢失。# 数据丢失,所以此时修复的意义在于可用,至于数据,你需要自己有备份意识
7.3、ext文件系统修复方式
fsck -f -y /dev/sda1
-y 对所有问题都回答 "yes"
-f 即使文件系统标记为 clean 也强制进行检查
八、xfs文件系统备份与恢复
8.1、备份和恢复顺序
1.数据备份
先备份全量备份-->再备份增量备份
2.数据恢复
先恢复全量备份-->再恢复增量备份
8.2、备份前准备
8.2.1、需要软件包
软件包名称: xfsdump
命令:
1.xfs_repair
备份级别:
0 #全量备份
1 #增量备份
ps:增量备份是和第一次的备份(level 0)进行比较,仅备份有差异的文件
参数:
-l #指定level,有0-9等级,默认为0,完整备份
-f #
-M #记录每次备份的描述
-L #标签名
-f #
-I: #大写的“i”从/var/lib/xfsdump/inventory 列出目前备份的信息状态。
8.2.2、xfsdump使用限制
1.必须用root权限
2.只能备份已挂载的文件系统
3.只能分贝XFS文件系统
4.只能用xfsrestore解释
5.透过文件系统的UUID来分辨备份档,因此不能备份相同的UUID的文件系统
8.2.3、备份
1.全量备份
xfsdump -l 0 -L sdb_bak -M sdb_bak -f /sdb_bak_all /opt
#命令规则:
命令(xfsdump)+备份等级( -l 0 )+标签( -L sdb_bak )+ 描述信息( -M ) + 备份路径和命名+备份元数据 ( -f /sdb_bak_all /opt )
2.增量备份
xfsdump -l 1 -L sdb_bak_add1 -M sdb_bak_add1 -f /sdb_bak_add1 /opt
#命令规则:
命令(xfsdump)+备份等级( -l 1 )+标签( -L sdb_bak_add1 )+ 描述信息( -M ) + 备份路径和命名+备份源数据 ( -f /sdb_bak_add1 /opt )
ps:多个增量备份程序一样
8.3、数据恢复
命令1: xfs_restore 恢复数据
参数:
-f #指定路径
格式:
xfsrestore -f /sdb_bak_all /opt
命令+备份包+数据恢复路径
ps:恢复数据必须从全量备份开始,第一份增量备份,第二份增量备份...按照顺序执行
九、 LVM
9.1、什么是LVM
逻辑卷管理 LVM 是硬盘的一个系统工具,无论在Linux或者其他类似的系统,都是非常好用。传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM 可以创建和管理 '逻辑'卷,而不是直接使用物理硬盘。可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到 LVM 以直接扩展已经存在的逻辑卷。 LVM 并不需要重启就可以让内核知道分区存在。
通过 LVM 技术,可以屏蔽掉磁盘分区的底层差异,在逻辑上给文件系统提供了一个卷的概念,然后在这些卷上建立相应的文件系统。下面是 LVM 中主要涉及的一些概念。
1.物理卷(PV):(physical volume),把常规的磁盘设备通过Pvcreate命令对其进行初始化,形成了物理卷,其实就是硬盘或者分区
2.卷组(VG):(volume group),把多个物理卷组成一个逻辑的整体,这样卷组的大小就是多个硬盘之和。或者理解就是由一个或多个PV组成的整体
3.逻辑卷(LV):(logical volume),从卷组中划分需要的空间大小出来。用户仅需对其格式化然后即可挂载使用。从VG中切割出的空间用于创建文件系统。
4.基本单元(PE):(phycical extend),分配的逻辑大小的最小单元,默认为4MB的基本块。(假设分配100MB逻辑空间,则需要创建25个PE)
9.2、为什么要用 LVM
我们在对磁盘分区的大小进行规划时,往往不能确定每个分区使用的空间大小,只能凭经验分配一个大小,而我们通常使用的fdisk、gdisk等工具对磁盘分区后,每个分区的大小就固定死了,这么做的问题是:
1.如果分区设置过大,就白白浪费了空间
2.如果分区设置过小,就会导致空间不够用的情况。
3.小的话可以重新划分磁盘的分区,或者通过软链接的方式临时解决,但是给管理带来了麻烦
9.2.1、 LVM优缺点总结
优点:
1、可以在系统运行的状态下动态的扩展文件系统的大小
2、文件系统可以跨多个磁盘,因此文件系统大小不会受物理磁盘的限制。
3、可以增加新的磁盘到LVM的存储池中。
4、可以镜像的方式冗余重要的数据到多个物理磁盘。
5、可以方便的到处整个卷组到另外一台机器。
缺点:
1、因为加入了额外的操作,存取性能受到影响。
2、当卷组中的一个磁盘损坏时,整个卷组都会收到影响
解释:LVM如果有一个磁盘损坏,整个LVM都坏了,LVM只有动态扩展作用
解决方案:底层用RAID + 上层LVM=既有冗余又有动态扩展
# 在从卷组中移除一个磁盘的时候必须使用reducevg命令(该命令要求root权限,并且不允许在快照卷组中使用)
9.3、 LVM的基本使用
9.3.1、必备安装包
yum install -y lvm2
9.3.2、必备命令
pvcreate 制作pv
pvs 查看PV
pvscan 总结查看
vgcreate 制作vg
vgextend vg扩容
vgs 查看vg
lvcreate 制作lv
-L #逻辑卷大小
-n #lv名字
lvs #查看lv
lvextend #扩容
-L #指定大小,200M为LV大小,+200M是在原有基础上增加
lvreduce #缩容
9.3.3、 制作PV
命令: pvcreate pvs pvscan
可以对分区做、也可以对整块盘做
pvcreate /dev/sdb1 #对分区做
pvcreate /dev/sdc #对整块盘做
9.3.4、制作vg
命令:vgcreate vgs
可以将多个pv一起加入到vg中
vgcreate vg1 /dev/sdb1 /dev/sdc
命令 + 命名 + pv1 pv2
9.3.5、创建逻辑卷LVM
命令: lvcreate lvs
参数:
-L 逻辑卷大小
-n 逻辑卷名字
lvcreate -L 200M -n lv1_form_vg1 vg1
命令 + 逻辑卷大小 + 命名 + 从哪个vg拿
9.3.6、格式于挂载
格式化
mkfs.xfs /dev/lv1_form_vg1
# 挂载
mount /dev/vg1/lv1_form_vg1 /test
df查看
9.4、在线动态扩容
命令:
lvextend 扩容lv
vgextend 扩容vg
xfs_growfs 更新文件系统
# 参数: -L
注意:-L 100M 与 -L +100M不是一个意思,或者代表在原有的基础上扩容
1.新增一块盘或者一个分区
2.新增一个pv,然后格式化
3.新增的pv扩容到vg里
4.扩容到lv里面
lvextend -L +100M /dev/vg1/lv1_form_vg1
xfs_groefs /dev/vg1/lv1_form_vg1
9.5、在线动态缩容于删除
命令: lvreduce
lvreduce -L 200M /dev/vg1/lv1_form_vg1
lvreduce -L [大小] [lv路径]
9.5.1、删除
1.删除lv之前先卸载挂载点
# umount /test
# lvremove /dev/vg1/lv1_from_vg1
2.删除vg
# vgremove vg1
3.删除pv
# pvremove /dev/sdb1
删pv:只能删掉那些不属于任何vg的pv
9.6、快照
LVM 机制还提供了对 LV 做快照的功能,也就是说可以给文件系统做一个备份,这也是设计 LVM 快照的主要目的。LVM 的快照功能采用写时复制技术(Copy-On-Write,COW),这比传统的备份技术的效率要高很多。创建快照时不用停止服务,就可以对数据进行备份。说明:LVM 还支持 thin 类型的快照,但是本文中的快照都是指 COW 类型的快照。
LVM 采用的写时复制,是指当 LVM 快照创建的时候,仅创建到实际数据的 inode 的硬链接(hark-link)而已。只要实际的数据没有改变,快照就只包含指向数据的 inode 的指针,而非数据本身。快照会跟踪原始卷中块的改变,一旦你更改了快照对应的文件或目录,这个时候原始卷上将要改变的数据会在改变之前拷贝到快照预留的空间。
lvm快照的原理:
创建快照实际上也是创建了一个逻辑卷,只不过该卷的属性与普通逻辑卷的属性有些不一样。我们可以通过上图来理解快照数据卷(图中的实线框表示快照区域,虚线框表示文件系统):
# 左图为最初创建的快照数据卷状况,LVM 会预留一个区域 (比如左图的左侧三个 PE 区块) 作为数据存放处。 此时快照数据卷内并没有任何数据,而快照数据卷与源数据卷共享所有的 PE 数据, 因此你会看到快照数据卷的内容与源数据卷中的内容是一模一样的。 等到系统运行一阵子后,假设 A 区域的数据被更新了(上面右图所示),则更新前系统会将该区域的数据移动到快照数据卷中, 所以在右图的快照数据卷中被占用了一块 PE 成为 A,而其他 B 到 I 的区块则还是与源数据卷共享!
强调:
由於快照区与原本的 LV 共享很多 PE 区块,因此快照区与被快照的 LV 必须要在同一个 VG 上头,下面两点非常重要:
# 1、VG中需要预留存放快照本身的空间,不能全部被占满。
# 2、快照所在的 VG 必须与被备份的 LV 相同,否则创建快照会失败。
总结:
快照的本质就是一个特殊的lv,创建快照后,如果源数据卷中的文件被更新了,会将老数据赋给快照的空间,这就要求快照的空间也是够用的
示例1:利用快照恢复单个文件
1、准备好初始数据
df
文件系统 1K-块 已用 可用 已用% 挂载点
。。。。。。
/dev/mapper/vg1-lv1_from_vg1 98980 5348 93632 6% /test1
# echo "hello egon" > /test1/1.txt
2、查看vg1容量是否充足
lv1_from_vg1 属于卷组vg1,而vg1有足够的容量来分配给快照卷
# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 2 0 wz--n- 20.99g <20.70g
3、在vg1卷组里创建一个lv1_from_vg1的逻辑卷
lvcreate -L 1G -s -n lv1_from_vg1_snap /dev/vg1/lv1_from_vg1
4、查看
lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1_from_vg1 vg1 owi-aos--- 100.00m
lv1_from_vg1_snap vg1 swi-a-s--- 104.00m lv1_from_vg1 0.01
5、修改文件/test/1.txt
echo " say ladygaga" >> /test1/1.txt
cat /test1/1.txt
hello
say ladygaga
6、恢复数据
挂载快照,注意:快照在挂载的时候由于和原来的lvm是同一个UUID,而XFS是不允许相同UUID的文件系统挂载,所以需要加选项 -o nouuid
# mount -o nouuid /dev/vg1/lv1_from_vg1_snap /opt/
# cat /opt/1.txt
hello
# cp /opt/1.txt /test1/1.txt
cp:是否覆盖"/test1/1.txt"? y
# cat /test1/1.txt
hello
示例2:如果要恢复的文件个数过多,可以直接合并
mount /dev/vg1/lv1_from_vg1 /test1/
echo hello egon > /test1/1.txt
lvcreate -L 1G -s -n lv1_from_vg1_snap /dev/vg1/lv1_from_vg1
echo aaaa >> /test1/1.txtecho aaaa >> /test1/1.txt
echo aaaa >> /test1/1.txt
echo aaaa >> /test1/1.txt
echo aaaa >> /test1/1.txt
echo aaaa >> /test1/1.txt
mount -o nouuid /dev/vg1/lv1_from_vg1_snap /opt/
cat /opt/1.txt
hello
# cat /test1/1.txt
hello
aaaa
aaaa
aaaa
aaaa
aaaa
先卸载数据源与快照,再进行合并,快照会自动删除,一次性的

浙公网安备 33010602011771号