磁盘管理以及文件系统管理

Linux 里面的磁盘命名格式
/dev/sda
sd 表示一种串口设备
sata
usb
scsi
sas
/dev/hda
hd 表示一种并口设备
ide
串并口是输入、输出接线插座的俗称,它位于主板上。 串口与并口的传输方式不一样,串口传输是一位接一位的,象串起的珠子一样,并口是可以并发数据的,可以同时传输多位。 串行接口,简称串口,也就是COM接口,是采用串行通信协议的扩展接口。 并行接口,并行接口简称并口,也就是LPT接口,是采用并行通信协议的扩展接口。 红色圈是串口,黄色圈是并口
在这里插入图片描述
同种设备名的排序 :/dev/sda /dev/sdb
设备的第一个分区:/devsda1

磁盘的分类
机械硬盘
https://baike.baidu.com/item/机械硬盘/1990221?fr=aladdin/
逻辑结构:
磁道:以盘片为圆心,半径大小不同的同心圆组成的环形区域
扇区:磁道上的一段圆弧1扇区512B
柱面:是虚的,类似于桶壁,是由相同额磁道组成的圆柱形环壁 13个柱面=100 M

磁盘容量的计算方式:
	磁盘容量=512byte(一个扇区大小)*扇区数量*柱头的个数*磁头的个数

固态硬盘
https://baike.baidu.com/item/固态硬盘/453510?fr=aladdin/

影响磁盘读写速度的原因:
寻道时间
旋转时间
数据传输时间

磁盘分区
##问什么分区##
分区类型:
MBR 最大支持2TB以内额硬盘 4个主分区
扩展分区:为了突破一块硬盘上只有四个主分区的限制,扩展分区最大一个,占用主分区的编号,不能直接使用。
逻辑分区:在扩展分区上划分逻辑分区,供使用
**分区不是无限分的,对于串口设备,最多15个分区,1-4 编号是主分区或者扩展分区。后面的是逻辑分区
dos
GPT 128个分区
##分区命令##
fdisk:分区是只能分小于2TB的硬盘
fdisk /dev/sdb ---->p--->n--->p---e--->n l---w
mkfs.xfs /dev/sdb
mount /dev/sdb1 /mnt/sdb1
df -h
parted :可以划分2TB以上的硬盘

#################################如果设备名称被误删####################################
#mount /dev/sdb1 mnt/sdb1
mount :/dev/sdb1 不存在
#lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
 sda 8:0 0 20G 0 disk 
 ├─sda1 8:1 0 1G 0 part /boot
 └─sda2 8:2 0 19G 0 part 
 ├─cl-root 253:0 0 17G 0 lvm /
 └─cl-swap 253:1 0 2G 0 lvm [SWAP]
 sdb 8:16 0 10G 0 disk 
 └─sdb1 8:17 0 2G 0 part 
 sr0 11:0 1 4.1G 0 rom /run/media/root/Cen
 # mknod /dev/sdb1 b 8 17 //创建设备文件 b:块设备 8 17 :主设备号,次设备号
 # mount /dev/sdb1 /mnt/sdb1/

fdisk
fdsik -l :列出所有设备的分区表信息
fdisk -l /dev/sdb :列出指定设备的分区信息
分区划分完毕后
查看分区文件是否存在
ls /dev/sd
如果不存在。通知内核重读分区表
partx -a /dev/sdb或者partprobe
内核记录分区表的文件

在这里插入图片描述
格式化 :mkfs.xfs /dev/sdb
挂载:mount /dev/sdb /mnt/sdb
分区删除后可以根据分表找回
例如:删除/dev/sdb1分区 并检查是否删除

[root@localhost mnt]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of
commands
(parted) p
 Model: VMware, VMware Virtual S (scsi)
 Disk /dev/sdb: 10.7GB
 Sector size (logical/physical): 512B/512B
 Partition Table: gpt
 Disk Flags: 
 Number Start End Size File system Name 标志
 1 17.4kB 1000MB 1000MB xfs primary
 2 1000MB 2000MB 999MB primary
 (parted) rm 1 
 (parted) q 
 信息: You may need to update /etc/fstab.
 [root@localhost mnt]# ll /dev/sd
50/131
 sda sda1 sda2 sdb sdb2 
找回分区 前提需要知道分区表 
 [root@localhost mnt]# parted /dev/sdb
 GNU Parted 3.1
 使用 /dev/sdb
 Welcome to GNU Parted! Type 'help' to view a list of
 commands.
 (parted) p 
 Model: VMware, VMware Virtual S (scsi)
 Disk /dev/sdb: 10.7GB
 Sector size (logical/physical): 512B/512B
 Partition Table: gpt
 Disk Flags: 
 Number Start End Size File system Name 标志
 2 1000MB 2000MB 999MB primary
 (parte(parted) rescue 0 1G
 信息: A xfs primary partition was found at 17.4kB ->
 1000MB. Do you want to add it to the partition
 table?
 是/Yes/否/No/放弃/Cancel? Y
 (parted) q
 信息: You may need to update /etc/fstab.
 5.将找回的分区挂载 查找数据是否找回
 [root@localhost mnt]# mount /dev/sdb1 /mnt/sdb1
 [root@localhost mnt]# cd /mnt/sdb1
 [root@localhost sdb1]# ls
 hello.txt
 [root@localhost sdb1]# cat hello.txt 
 hello world
 新添加的硬盘直接使用parted是不能分区的
解决:parted /dev/sdc mklabel gpt //设置分区表类型

文件系统
磁盘上组织文件的方法,成为文件系统。
文件系统是对存储空间的分配和管理,负责文件额存储并对存入的文件进行保护和检索工作的一个系统
数据在磁盘或者分区的存储形式,用来管理文件存储的结构,把整个的硬盘分区按照文件系统回个分为一个个等大小的block块
文件系统分类:
linux:ext2 ext3 ext4 xfs
windos:FAT1 FAT32 NTFS
文件系统结构
SUPER BLOCK :超级块,不同的文件系统不相同,记录文件系统的整体信息,包括inide/block 总量,使用量,剩余量以及文件的格式及相关信息,如果超级块坏了 磁盘也就不能使用了
INODE :i节点也是索引节点,记录文件的属性,但不能记录文件名 ,一个文件记录一个inode,同时i节点记录文件数据所在的inode编号
文件名存在目录中
inode的数量和你能够创建文件的数量有关
如果两个或者两个以上的i节点相同,说明他们是相同的文件
block实际记录文件的内容,一个文件可能占用多个block
查看文件支持的文件系统类型
mkfs. TAB TAB
linux支持的文件系统类型:minix,ext,ext2,xia,msdos,umsdos,vfat,proc,nfs,iso9660,hpfs,sysv,smb,ncpfs
制作文件系统的命令: mkfs .xfs 文件名
-b :指定大小 默认4096
df -i 显示磁盘的inode 信息
df -Th 显示磁盘的文件系统信息
软连接和硬连接
软链接:
相当于windos快捷方式
产生新的inode
可以跨文件系统创建
删除原文件链接文件无效
ln -s 链接源 链接名##绝对路径##
硬链接:
相当于备份 防止误删
不产生新的inode
任意删除一个文件名,文件都不会损坏
不可以对目录做硬链接
不可以跨文件系统
ln 链接源 链接名
挂载
mount
目的:通过挂载点,得打访问设备的入口
语法
mount [-lhV]
mount -a [options]
mount [options] [–source] | [–target]
mount [options]
mount []
选项
-t :指定文件属性
-o:指定挂载属性
-a:依照配置文件/etc/fstab的数据将所有未挂载的分区磁盘都挂载
挂载属性:


 ro 只读文件系统
 rw 可读写
 async 异步写入 
 sync 同步写入
 auto/auto 是否支持开机挂载
 dev/dev 是否支持设备文件
 exec/exec 是否允许分区上拥有可运行二进制文件
 suid/suid 是否允许分区上含有suid/sgid的文件格式
 user/user 是否允许分区让任何使用者运行mount
 remount 重新挂载已挂载的文件系统
 _netdev 如果连的上就开机挂载,如果连不上就不挂载
 
 defaults
 Use default options: rw, suid, dev, exec,
 auto, nouser, and async.

开机挂载
vim /etc/fstab
/dev/sr0 /mnt/cdrom iso9660 defaults 0 0##建议使用uuid##
第一列:设备名或者uuid
第二列:挂载点
第三列:文件系统类型
第四列:文件系统属性
查看所有设备的uuid
blkid
查看指定设备的uuid
blkid /dev/sdb
mount -a
也可以挂载命令写入/etc/rc.d/rc.local
mount /dev/sdb1 /mnt/sdb1
给可执行权限
chmod +x /etc/rc.d/rc.local
交换分区 swap

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
分区后格式化 mkswap
激活
swapon -s
挂载
vim /etc/fstab
在这里插入图片描述
卸载
swapoff /dev/sdb2
删除配置文件中的设置
磁盘配额
限制磁盘资源的使用 叫磁盘配额
因为资源不是无限的
应用场景
1:网络存储空间 网盘
2:邮件服务器
3:公司的文件共享服务器
对象
1:普通用户
2:用户组
不能限制root用户

限制inode-----限制用户创建文件数
限制block-----限制用户可以使用的磁盘空间的大小

soft软限制:超过警告 不影响使用
hard硬限制:不可逾越
grace time:时间限制 有宽限日期 超过软限制是开始倒计时

条件
需要内核支持
在这里插入图片描述

方法
前提是文件系统支持磁盘配额的属性uquota gquota
1:将文件系统挂载文件系统中的目录
mount /dev/sda1 /mnt/sda1
2:查看文件系统是否支持
mount |grep sda1
3:让文件系统支持磁盘配额

umount /mnt/sda1
	mount -o uquota,gquota /dev/sda1  /mnt/sda1
	mount |grep sda1

4:设置开机挂载
vim /etc/fstab
5:创建普通用户并社会密码

useradd quota1
useradd quota2
useradd quota3
echo "1"  |passswd --stdin quota1

6:查看磁盘配额的信息
xfs_quota -x -c 'report -ubih' /mnt/sdb1
-x 专家模式 只有用了-x 后面才可以用-c的指令
-c 后接模式
report 列出当前的quota项目
-i :indode
-b:block
-h:人性化
-u:只显示用户的配额
-g:只显示用户组的配额
-p:项目的配额
limit 设置配额
state 显示状态
timer 设置宽限时间
raid
http://www.hack520.com/169.html
使用raid的原因
1:硬盘的读写性能(读写速度)
2:数据安全(冗余)
分类
1:软raid:用软件实现,为了提高速度,所有操作都是通过操作系统和cpu实现的
2:硬raid:通过硬件来实现
1)主板集成raid:靠主板cpu和内存来实现功能,占用主板的资源,影响机器的性能
2)阵列卡做raid:本身有自己的cpu和内存,自己处理大部分功能,不影响机器性能
硬件raid实在操作系统不存在的情况下创建的,级别在bios中设定
软raid制作
以raid5为例:

1、添加4块磁盘
要求:容量、转速、接口一样的硬盘。

2、创建分区并修改ID

[root@localhost ~]# fdisk /dev/sdb
[root@localhost ~]# fdisk /dev/sdc
[root@localhost ~]# fdisk /dev/sdd
[root@localhost ~]# fdisk /dev/sde

注意:修改ID为fd(支持raid)
Device Boot Start End Blocks Id System
/dev/sdb1 1 652 5237245+ fd Linux Raid autodetect
/dev/sdc1 1 652 4563889+ fd Linux Raid autodetect
/dev/sdd1 1 652 1254356+ fd Linux Raid autodetect
/dev/sde1 1 652 7034359+ fd Linux Raid autodetect

3、创建Raid5

[root@localhost ~]# mdadm --version
[root@localhost ~]# mdadm -V
[root@localhost ~]# cat /proc/devices | grep md
[root@localhost ~]# ls /dev/md* #查看软阵列(software RAID)的设备文件名
[root@localhost ~]# mdadm -C[创建] /dev/md0[Raid5的名称] -l5[RAID的级别] -n3[活跃的设备块数] -x1[热备的设备块数] /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 
[root@localhost ~]# cat /proc/mdstat 
[root@localhost ~]# mdadm –Ds
[root@localhost ~]# mkfs -t ext3 /dev/md0 #格式化设备md0
[root@localhost ~]# mkdir /md0
[root@localhost ~]# mount /dev/md0 /md0/ #挂载使用
[root@localhost ~]#df -hT #查看可用空间
[root@localhost ~]#mdadm -Ds > /etc/mdadm.conf #生成磁盘阵列配置文件

4、修复Raid5磁盘阵列

[root@localhost ~]# mdadm -Ds /dev/md0 #查看指定的设备 :此命令可以查看活跃设备和热备设备。
[root@localhost ~]#mdadm -f /dev/md0 /dev/sdc1 #标识 sdc1设备已坏
[root@localhost ~]#mdadm -Ds /dev/md0 
[root@localhost ~]#mdadm -r /dev/md0 /dev/sdc1 #移除已坏设备sdc1
[root@localhost ~]#mdadm -Ds /dev/md0 
[root@localhost ~]#mdadm -a /dev/md0 /dev/sdc1 #sdc1设备修好以后,添加到md0中,作为热备设备。

默认情况下,系统中只有/dev/md0这个块设备文件。如果还需要其他的raid的话,那么就需要手动创建了。如下:
[root@localhost ~]# mknod /dev/md1[创建md1块设备文件,] b[表示块设备] 9[主设备号,9表示磁盘阵列,主设备号不能修改。] 1[1代表从设备号,从设备号在系统内唯一。]
[root@localhost ~]# vim /etc/rc.local
添加:mknod /dev/md1 b 9 1 # dev/md1文件在系统重启之后就丢失,为了能够在系统启动时自动产生,在rc.local文件里添加mknod /dev/md1 b 9 1命令。]

[root@localhost ~]# ls /dev/md*
[root@localhost ~]# mknod /dev/md1 b 9 1
[root@localhost ~]# mknod /dev/md2 b 9 2
[root@localhost ~]# mknod /dev/md3 b 9 3

[root@localhost ~]# ls /dev/md*

其他:
mdadm使用选项:
–create(或其缩写-C)参数来创建新的陈列并且将一些重要阵列的标识信息作为元数据可以写在每一个底层设备的指定区间
–level(或者其缩写-l)表示阵列的RAID级别
–chunk(或者其缩写-c)表示每个条带单元的大小,以KB为单位,默认为64KB,条带单元的大小配置对不同负载下的阵列读写性能有很大影响
–raid-devices(或者其缩写-n)表示阵列中活跃的设备个数
–spare-devices(或者其缩写-x)表示阵列中热备盘的个数,一旦阵列中的某个磁盘失效,MD内核驱动程序自动用将热备磁盘加入到阵列,然后重构丢失磁盘上的数据到热备磁盘上。

创建一个RAID 0设备:
mdadm --create /dev/md0 --level=0 --chunk=32 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
创建一个raid 1设备:
mdadm --create /dev/md0 --level=1 --chunk=128 --raid-devices=2 --spare-devices=1 /dev/sdb1 /dev/sdc1 /dev/sdd1

创建一个RAID5设备:
mdadm --create /dev/md0 --level=5 --raid-devices=5 /dev/sd[c-g]1 --spare-devices=1 /dev/sdb1
创建一个RAID 10设备:
mdadm -C /dev/md0 -l10 -n6 /dev/sd[b-g] -x1 /dev/sdh

创建一个RAID1+0设备:

mdadm -C /dev/md0 -l1 -n2 /dev/sdb /dev/sdc
mdadm -C /dev/md1 -l1 -n2 /dev/sdd /dev/sde
mdadm -C /dev/md2 -l1 -n2 /dev/sdf /dev/sdg
mdadm -C /dev/md3 -l0 -n3 /dev/md0 /dev/md1 /dev/md2

要停止一个阵列设备 类如显示array is started 要先停止此设备 先卸载
Umount /dev/md0 然后 mdadm –S /dev/md0

清除成员磁盘当中阵列的超级块信息,这一步很重要!
[root@linux02 ~]# mdadm --zero-superblock /dev/sdb[1-3,5]

删除或注释/etc/fstab上的挂载信息
[rootlinux02 ~]# vim /etc/fstab
#UUID=796a27da-d899-4e64-a3bd-b468fb0c4f37 /mnt/raid5 ext4 defaults 0 0

删除或注释/etc/mdadm.conf对应的RAID信息:

[root@linux02 ~]# vim /etc/mdadm.conf
#ARRAY /dev/md0 metadata=1.2 spares=1 name=kashu.localdomain:0 UUID=3895d28e:bdcaed28:136b4cf6:d2a858f5

如果做完上面所有的操作后,发现/dev/下还有md0这个设备文件存在,直接rm -f /dev/md0即可
硬raid
硬RAID全面具备了自己的RAID控制/处理与I/O处理芯片,甚至还有阵列缓冲(Array Buffer),对CPU的占用率以及整体性能中最有优势。
服务器硬件配置情况:4核/ 8G/320G*4+500G
1块500G硬盘用系统,3块同型号品牌320G的硬盘用来做raid,还有1块用来做扩容实验。
操作系统:linux5,64位。
raid卡型号:RocketRaid1740
raid卡驱动安装
http://www.highpoin-tech.cn中support/BIOS&drives下载RocketRaid1740对应操作系统的驱动程序及手册。
安装步骤:
1.将驱动包解压后拷贝到U盘里,并将U盘插到机器上,系统盘也放入光驱内。
2.按DEL和ctrl+H进入设置BIOS,将3块硬盘格式化并创建raid5。
3.系统安装进入到图形界面,直至第一次出现“Next”时,按Ctrl+Alt+F2进入命令行界面。
#mkdir /dd
#mount /dev/sda1 /dd ;将驱动程序挂载到系统中。
#cp -r /dd /tmp/hptdd
#umount /dd
#sh /tmp/hptdd/rhel-install-step1.sh

Driver Installation

Driver installation step 1 complete

4.按Alt+F6回到图形界面,继续安装,直到安装完成。在“重新载入”界面,按Ctrl+Alt+F2,回到命令行界面
#cp -r /tmp/hptdd /mnt/sysimage/tmp/hptdd
#ch`root /mnt/sysimagee
#sh /tmp/hptdd/rhel-install-step2.sh

Driver Installation

Updating 2.6.18-53.el5...

Driver installtion step 2 completed.

#rm -rf /tmp/hptdd

#exit

自此硬raid5创建完成,然后点击“重新载入”重启系统。

#fdisk -l ;查看分区

#mount /dev/sdb /raid5

#df -h ;查看磁盘情况

硬raid WEB管理工具

官网上下载对应的管理工具安装包:WebGui-Linux-v1.4-10-091124.tgz

安装
#rpm -ivh hptsvr-https-1.4-10.x86_64.rpm --nodeps
检查相应的文件是否存在

/usr/bin/hptsvr      -service program

/etc/hptcfg          -service config file,如果没有,则#echo hptiop > /etc/hptcfg

/etc/rc.d/init.d/hptdaemon   -service control script

/usr/share/hpt/webguiroot     -data files

启动:

浏览器中输入http://localhost:7402

默认登录帐号:RAID/hpt

注:初次raid做好后,会自动恢复,每次恢复时间较长,恢复时可正常使用,但性能较低。
creat array:选择raid类型;为raid取名;初始化是否保留原始数据,如果选择Quick init,原来的数据将丢失;设置缓存策略,write back:写入缓存,性能较好,但断电时数据将可能丢失。write through:定入数组总是传递到磁盘,序列有适当的时候仍有可能从缓存中读取。
数据恢复实验:
更换硬盘:
模拟一块坏掉,更换另一块盘,更换上去之后,raid会自动恢复,打开WEB管理工具,首页上即显示出恢复进度情况。
扩容
manage/array中点击maintenance,点击OCE/ORLM并在其前面下拉列表中选择RAID类型raid5。选择所有有硬盘做入阵列中,新硬盘将会添加到原来做好的raid中,恢复时间较长,实验中用了10个小时,这段时间内没有对硬盘进行任何读写操作,不知道哪位有没有缩短恢复时间的方法。
LVM 逻辑卷管理
磁盘空间的动态划分和管理
能够实现分区动态拉伸和收缩
创建过程就是先整合在划分的过程

一:创建过程
1:添加硬盘或者分区,通知内核
2:创建物理卷PV
3:创建卷组VG
4:创建逻辑卷LV
5:创建文件系统
6:挂载使用
parted /dev/sdd mklabel gpt
parted /dev/sdd mkpart primary 1 1
parted /dev/sdd mkpart primary 1G 2
parted /dev/sdd mkpart primary 2G 3
parted /dev/sdd mkpart primary 3G 4
ll /dev/sdd
sdd sdd1 sdd2 sdd3 sdd4 79/131
2)创建物理卷
pvcreate /dev/sdd{1..4}
Physical volume "/dev/sdd1" successfully created.
Physical volume "/dev/sdd2" successfully created.
Physical volume "/dev/sdd3" successfully created.
Physical volume "/dev/sdd4" successfully created.
2.1)查看物理卷

  PV VG Fmt Attr PSize PFree 
  /dev/sda2 cl lvm2 a-- 19.00g 0 
  /dev/sdd1 lvm2 --- 953.00m 953.00m
  /dev/sdd2 lvm2 --- 953.00m 953.00m
  /dev/sdd3 lvm2 --- 954.00m 954.00m
  /dev/sdd4 lvm2 --- 954.00m 954.00m

pvscan

 PV /dev/sda2 VG cl lvm2 [19.00 GiB / 0 free]
  PV /dev/sdd3 lvm2 [954.00 MiB]
  PV /dev/sdd2 lvm2 [953.00 MiB]
  PV /dev/sdd4 lvm2 [954.00 MiB]
  PV /dev/sdd1 lvm2 [953.00 MiB]
  Total: 5 [22.72 GiB] / in use: 1 [19.00 GiB] / in no VG: 4 [3.72 GiB]

pvdisplay

"/dev/sdd3" is a new physical volume of "954.00 MiB"

 --- NEW Physical volume ---
  PV Name /dev/sdd3
  VG Name 
  PV Size 954.00 MiB
  Allocatable NO
  PE Size 0 
  Total PE 0
  Free PE 0
  Allocated PE 0
  PV UUID kRYrRB-0BZm-Z2h1-tQxu-kDUC-FvQF-4YSZ5L
  ...

3)创建卷组
语法:vgcreate [-s 大小] 卷组的名字 物理卷的设备路径
# vgcreate [-s 8M] vg0 /dev/sdd{1..4}
Volume group “vg0” successfully created
-s 指定PE大小
PE(物理扩展单元) 大小(默认是4M)

3.1)

vgs

VG #PV #LV #SN Attr VSize VFree
cl 1 2 0 wz–n- 19.00g 0
vg0 4 0 0 wz–n- 3.72g 3.72g

vgscan

 Reading volume groups from cache.
  Found volume group "vg0" using metadata type lvm2
  Found volume group "cl" using metadata type lvm2

vgdisplay

--- Volume group ---
  VG Name vg0
  System ID 
  Format lvm2
  Metadata Areas 4
  Metadata Sequence No 1
  VG Access read/write
  VG Status resizable
  MAX LV 0
  Cur LV 0
  Open LV 0
  Max PV 0
  Cur PV 4
  Act PV 4
  VG Size 3.72 GiB
  PE Size 8.00 MiB Total PE 476
  Alloc PE / Size 0 / 0 
  Free PE / Size 476 / 3.72 GiB
  VG UUID PWOx9H-9eP0-vkdz-v31T-cHxO-C80x-4BAMfE

4)创建逻辑卷
# lvcreate -n lv0 -L 1500M vg0
Rounding up size to full physical extent 1.47 GiB
Logical volume “lv0” created.

-n 指定lv的名字
-L 指定lv的大小
vg0 取vg0卷组的空间做lv

lvcreate -n lv0 -l 188 vg0

-l 指定使用了多少个PE
LE 逻辑扩展单元

4.1)
#lvs
#lvscan
#lvdisplay

5)创建文件系统
#mkfs.xfs /devg0/lv0
6)挂载

 # mkdir /lv0
  # mount /devg0/lv0 /lv0/
  # vim /etc/fstab 
  /devg0/lv0 /lv0 xfs defaults 0 0

7)测试

  # cat > lvm-test.txt << EOF
  > ---------------
  > Hello JIM
  > hi jim
  > hello world
  > ---------------
  > EOF

扩容

xfs 和ext4 文件系统
扩容的区别
扩容文件系统命令不一样

xfs:xfs_growfs
ext4:resize2
XFS
lv扩容

在线扩容

第1种情况:卷组内有空闲空间,直接从卷组取空间
1)对逻辑卷扩容
lvextend -L +500M /devg0/lv0 +表示在原来的空间
大小上加上多少空间大小

 Size of logical volume vg0/lv0 changed from 1.47 GiB (188 extents) to 1.96 GiB (251 extents).
 Logical volume vg0/lv0 successfully resized.

2)对文件系统扩容
xfs_growfs /devg0/lv0

第2种情况:卷组内没有空间
1)创建新分区

# parted /dev/sdd mkpart primary 4G 5G 
# ll /dev/sdd
sdd sdd1 sdd2 sdd3 sdd4 sdd5 

2)创建物理卷
pvcreate /dev/sdd5
hysical volume “/dev/sdd5” successfully created.

3)加入卷组 vg扩容
vgextend vg0 /dev/sdd5
lume group “vg0” successfully extended

)对逻辑卷扩容

vextend -L 4500M /devg0/lv0 

unding size to boundary between physical extents: 4.40 GiB.
Size of logical volume vg0/lv0 changed from 1.96 GiB (251 extents) to 4.40 GiB (563 extents).
Logical volume vg0/lv0 successfully resized.
5)对文件系统扩容
xfs_growfs /devg0/lv0

ext4
创建lv0逻辑卷
lvcreate -n lv0 -L 2G vg0
制作文件系统
ext4
# mkfs.ext4 /devg0/lv0

挂载
mount /devg0/lv0 /lv0
在逻辑卷中添加数据

cd /lv0
# echo "ext4" >test.txt
# cat test.txt 

ext4
扩容lv
0lvextend -L +1G /devg0/lv0
Size of logical volume vg0/lv0 changed from 2.00 GiB (256 extents) to 3.00 GiB (384 extents).
Logical volume vg0/lv0 successfully resized.

文件系统扩容
resize2fs /devg0/lv0
缩容
XFS不支持缩容
ext4支持缩容
ext4
ext4缩容
lv缩容

 注意:
 1.风险大有可能造成数据的损坏
 2.确保缩减后的空间大小依然能存储原来的所有数据
 3.不要在线缩容
 4.在缩减之前强制检查文件系统

现在要在创建一个逻辑卷lv1,lv1的大小要求为1G,卷组内没有空间,但逻辑卷lv0的空间过大,缩减lv0,给lv1
给lv0缩减
1)先卸载
# umount /lv0

2)强制检查文件系统
# e2fsck -f /devg0/lv0

3)缩减文件系统
# resize2fs /devg0/lv0 1800M
4)缩减逻辑卷
lvreduce -L 1800M /devg0/lv0
5)测试缩减逻辑卷后逻辑卷能否正常使用

mount /devg0/lv0 /lv0
 # cd /lv0
 # cat 
 lost+found/ test.txt 
 # cat test.txt 
 ext4
 # df -h
```
文件系统 容量 已用 可用 已用% 挂载点

/dev/mapper/cl-root 17G 4.3G 13G 26% /
devtmpfs 473M 0 473M 0% /dev
tmpfs 489M 84K 489M 1% /dev[未知表情]m
tmpfs 489M 7.1M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 1014M 155M 860M 16% /boot
tmpfs 98M 16K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapperg0-lv0 1.7G 6.1M 1.6G 1% /lv0

快照

快照的工作原理:
保存数据某一刻的状态。快照刚建立的时候,大小是空的,快照是访问源数据的另一条路径。快照是在数据改变之前将数据原封不动的
保存在快照空间里面。注意变化数据的源数据不能超过快照空间的大小,否则,快照将崩溃。
写时复制
实验:
1.挂载lv0逻辑卷,在逻辑卷内写入数据

ount /devg0/lv0 /lv0
 # cd /lv0
 # ls
 # cp /etc/passwd /etc[未知表情]adow .
 # echo "hello" > lvmsnap-test.txt
 # cat lvmsnap-test.txt
 hello
 # ll
 总用量 12
 -rw-r--r--. 1 root root 6 7月 7 22:34 lvmsnap-test.txt
 -rw-r--r--. 1 root root 2229 7月 7 22:34 passwd
 ----------. 1 root root 1248 7月 7 22:34 shadow

.给/devg0/lv0逻辑卷做快照
# lvcreate -s /devg0/lv0 -L 800M -n lv0.snap

 Using default stripesize 64.00 KiB.
 Logical volume "lv0.snap" created.

`3.改变lv0逻辑卷的数据

 # cp /etc/group .
 # rm passwd 

rm:是否删除普通文件 “passwd”?y

ls

 group lvmsnap-test.txt shadow
 # echo "world" >> lvmsnap-test.txt 
 # cat lvmsnap-test.txt
 hello
 world

4.恢复数据 会删除快照卷 恢复之前要卸载

 # umount /devg0/lv0
 # lvconvert --merge /devg0/lv0.snap 
 Merging of volume vg0/lv0.snap started.
 lv0: Merged: 100.00%

5.挂载lv0逻辑卷查看数据是否恢复到拍快照的那一刻的状态

 # mount /devg0/lv0 /lv0
 # cd /lv0
 # ls

lvmsnap-test.txt passwd shadow
# cat lvmsnap-test.txt

 hello

猜你喜欢

转载自blog.csdn.net/qq_43377292/article/details/85317151