参考链接https://www.linuxprobe.com

lsblk检测硬盘使用情况
RAID
技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入到各个物理硬盘中。这样一来,在最理想的状态下,硬盘设备的读写性能会提升数倍,但是若任意一块硬盘发生故障将导致整个系统的数据都受到破坏。通俗来说,RAID 0技术能够有效地提升硬盘数据的吞吐速度,但是不具备数据备份和错误修复能力。如图7-1所示,数据被分别写入到不同的硬盘设备中,即disk1和disk2硬盘设备会分别保存数据资料,最终实现提升读取、写入速度的效果。 RAID
它是把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备份)。当其中某一块硬盘发生故障后,一般会立即自动以热交换的方式来恢复数据的正常使用。
缺点:RAID 1技术虽然十分注重数据的安全性,但是因为是在多块硬盘设备中写入了相同的数据,因此硬盘设备的利用率得以下降,从理论上来说,图7-2所示的硬盘空间的真实可用率只有50%,由三块硬盘设备组成的RAID 1磁盘阵列的可用率只有33%左右,以此类推。而且,由于需要把数据同时写入到两块以上的硬盘设备,这无疑也在一定程度上增大了系统计算功能的负载。 RAID
RAID 5技术虽然在理论上兼顾了三者(读写速度、数据安全性、成本),但实际上更像是对这三者的“相互妥协”。
,RAID5技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。RAID 5磁盘阵列组中数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上,这样的好处是其中任何一设备损坏后不至于出现致命缺陷;图7-3中parity部分存放的就是数据的奇偶校验信息,换句话说,就是RAID 5技术实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据。RAID这样的技术特性“妥协”地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题。 RIAD
鉴于RAID 5技术是因为硬盘设备的成本问题对读写速度和数据的安全性能而有了一定的妥协,但是大部分企业更在乎的是数据本身的价值而非硬盘价格,因此生产环境中主要使用RAID 10技术。
RAID 10就是RAID + RAID 0的结合体 RAID 技术至少要4块硬盘来组建
RAID 10技术需要至少4块硬盘来组建,其中先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性;然后再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。这样从理论上来讲,只要坏的不是同一组中的所有硬盘,那么最多可以损坏50%的硬盘设备而不丢失数据。由于RAID 10技术继承了RAID 0的高读写速度和RAID 1的数据安全性,在不考虑成本的情况下RAID 10的性能都超过了RAID ,因此当前成为广泛使用的一种存储技术 虚拟添加4块硬盘 在关闭系统后操作
mdadm命令用于管理Linux系统中的软件RAID硬盘阵列,格式为“mdadm [模式] <RAID设备名称> [选项] [成员设备名称]”。
mdadm
-a 检测设备名称
-n 指定设备数量
-l 指定RAID级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止RAID磁盘阵列
第6章中讲到,udev是Linux系统内核中用来给硬件命名的服务,其命名规则也非常简单。我们可以通过命名规则猜测到第二个SCSI存储设备的名称会是/dev/sdb,然后依此类推。使用硬盘设备来部署RAID磁盘阵列很像是将几位同学组成一个班级,但总不能将班级命名为/dev/sdbcde吧。尽管这样可以一眼看出它是由哪些元素组成的,但是并不利于我们的记忆和阅读。更何况如果我们是使用10、、100个硬盘来部署RAID磁盘阵列呢? 此时,就需要使用mdadm中的参数了。其中,-C参数代表创建一个RAID阵列卡;-v参数显示创建的过程,同时在后面追加一个设备名称/dev/md0,这样/dev/md0就是创建后的RAID磁盘阵列的名称;-a yes参数代表自动创建设备文件;-n 4参数代表使用4块硬盘来部署这个RAID磁盘阵列;而-l 10参数则代表RAID 10方案;最后再加上4块硬盘设备的名称就搞定了。 mdadm --stop /dev/md0停止服务 [root@linuxprobe ~]# mdadm -Cv /dev/md0 -a yes -n -l /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954624K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
其次,把制作好的RAID磁盘阵列格式化为ext4格式。 [root@linuxprobe ~]# mkfs.ext4 /dev/md0
mke2fs 1.42. (-Dec-)
Filesystem label=
OS type: Linux
Block size= (log=)
Fragment size= (log=)
Stride= blocks, Stripe width= blocks
inodes, blocks
blocks (5.00%) reserved for the super user
First data block=
Maximum filesystem blocks=
block groups
blocks per group, fragments per group
inodes per group
Superblock backups stored on blocks:
, , , , , , , , ,
,
Allocating group tables: done
Writing inode tables: done
Creating journal ( blocks): done
Writing superblocks and filesystem accounting information: done
再次,创建挂载点然后把硬盘设备进行挂载操作。挂载成功后可看到可用空间为40GB。 [root@linuxprobe ~]# mkdir /RAID
[root@linuxprobe ~]# mount /dev/md0 /RAID
[root@linuxprobe ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G .0G 15G % /
devtmpfs 905M 905M % /dev
tmpfs 914M 84K 914M % /dev/shm
tmpfs 914M 8.9M 905M % /run
tmpfs 914M 914M % /sys/fs/cgroup
/dev/sr0 .5G .5G % /media/cdrom
/dev/sda1 497M 119M 379M % /boot
/dev/md0 40G 49M 38G % /RAID
最后,查看/dev/md0磁盘阵列的详细信息,并把挂载信息写入到配置文件中,使其永久生效。 [root@linuxprobe ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue May ::
Raid Level : raid10
Array Size : (39.97 GiB 42.92 GB)
Used Dev Size : (19.98 GiB 21.46 GB)
Raid Devices :
Total Devices :
Persistence : Superblock is persistent
Update Time : Tue May ::
State : clean
Active Devices :
Working Devices :
Failed Devices :
Spare Devices :
Layout : near=
Chunk Size : 512K
Name : localhost.localdomain: (local to host localhost.localdomain)
UUID : cc9a87d4:1e89e175:5383e1e8:a78ec62c
Events :
Number Major Minor RaidDevice State
active sync /dev/sdb
active sync /dev/sdc
active sync /dev/sdd
active sync /dev/sde
[root@linuxprobe ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab 7.1. 损坏磁盘阵列及修复
之所以在生产环境中部署RAID 10磁盘阵列,是为了提高硬盘存储设备的读写速度及数据的安全性,但由于我们的硬盘设备是在虚拟机中模拟出来的,因此对读写速度的改善可能并不直观,因此刘遄老师决定给各位读者讲解一下RAID磁盘阵列损坏后的处理方法,这样大家在步入运维岗位后遇到类似问题时,也可以轻松解决。 在确认有一块物理硬盘设备出现损坏而不能继续正常使用后,应该使用mdadm命令将其移除,然后查看RAID磁盘阵列的状态,可以发现状态已经改变。 咱们在生产环境中部署RAID10磁盘阵列组目的就是为了提高存储设备的IO读写速度及数据的安全性,但因为这次是在本机电脑上模拟出来的硬盘设备所以对于读写速度的改善可能并不直观,因此刘遄老师决定给同学们讲解下RAID磁盘阵列组损坏后的处理方法,这样以后步入了运维岗位后不会因为突发事件而手忙脚乱。首先确认有一块物理硬盘设备出现损坏不能再继续正常使用后,应该使用mdadm命令来予以移除之后查看下RAID磁盘阵列组的状态已经被改变: [root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@linuxprobe ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri May ::
Raid Level : raid10
Array Size : (39.97 GiB 42.92 GB)
Used Dev Size : (19.98 GiB 21.46 GB)
Raid Devices :
Total Devices :
Persistence : Superblock is persistent
Update Time : Fri May ::
State : clean, degraded
Active Devices :
Working Devices :
Failed Devices :
Spare Devices :
Layout : near=
Chunk Size : 512K
Name : linuxprobe.com: (local to host linuxprobe.com)
UUID : f2993bbd:99c1eb63:bd61d4d4:3f06c3b0
Events :
Number Major Minor RaidDevice State
removed
active sync /dev/sdc
active sync /dev/sdd
active sync /dev/sde
- faulty /dev/sdb
在RAID 10级别的磁盘阵列中,当RAID 1磁盘阵列中存在一个故障盘时并不影响RAID 10磁盘阵列的使用。当购买了新的硬盘设备后再使用mdadm命令来予以替换即可,在此期间我们可以在/RAID目录中正常地创建或删除文件。由于我们是在虚拟机中模拟硬盘,所以先重启系统,然后再把新的硬盘添加到RAID磁盘阵列中。
#去掉挂载 重启 然后fdisk -l查看 mdadm -D /dev/md0查看缺少哪个磁盘 添加哪个!
[root@linuxprobe ~]# umount /RAID
[root@linuxprobe ~]# mdadm /dev/md0 -a /dev/sde
[root@linuxprobe ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Jan ::
Raid Level : raid10
Array Size : (39.97 GiB 42.92 GB)
Used Dev Size : (19.98 GiB 21.46 GB)
Raid Devices :
Total Devices :
Persistence : Superblock is persistent
Update Time : Mon Jan ::
State : clean
Active Devices :
Working Devices :
Failed Devices :
Spare Devices :
Layout : near=
Chunk Size : 512K
Name : localhost.localdomain: (local to host localhost.localdomain)
UUID : d3491c05:cfc81ca0:32489f04:716a2cf0
Events :
Number Major Minor RaidDevice State
active sync /dev/sdb
active sync /dev/sdc
active sync /dev/sdd
active sync /dev/sde
[root@linuxprobe ~]# mount -a 7.1. 磁盘阵列+备份盘
RAID 10磁盘阵列中最多允许50%的硬盘设备发生故障,但是存在这样一种极端情况,即同一RAID 1磁盘阵列中的硬盘设备若全部损坏,也会导致数据丢失。换句话说,在RAID 10磁盘阵列中,如果RAID 1中的某一块硬盘出现了故障,而我们正在前往修复的路上,恰巧该RAID1磁盘阵列中的另一块硬盘设备也出现故障,那么数据就被彻底丢失了。刘遄老师可真不是乌鸦嘴,这种RAID 1磁盘阵列中的硬盘设备同时损坏的情况还真被我的学生遇到过。
准备一块足够大的硬盘,这块硬盘平时处于闲置状态,一旦RAID磁盘阵列中有硬盘出现故障后则会马上自动顶替上去。这样很棒吧! 现在创建一个RAID 5磁盘阵列+备份盘。在下面的命令中,参数-n 3代表创建这个RAID 5磁盘阵列所需的硬盘数,参数-l 5代表RAID的级别,而参数-x 1则代表有一块备份盘。当查看/dev/md0(即RAID 5磁盘阵列的名称)磁盘阵列的时候就能看到有一块备份盘在等待中了。 [root@linuxprobe ~]# mdadm -Cv /dev/md0 -n -l -x /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954624K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@linuxprobe ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri May ::
Raid Level : raid5
Array Size : (39.97 GiB 42.92 GB)
Used Dev Size : (19.98 GiB 21.46 GB)
Raid Devices :
Total Devices :
Persistence : Superblock is persistent
Update Time : Fri May ::
State : clean
Active Devices :
Working Devices :
Failed Devices :
Spare Devices :
Layout : left-symmetric
Chunk Size : 512K
Name : linuxprobe.com: (local to host linuxprobe.com)
UUID : 44b1a152:3f1809d3:1d234916:4ac70481
Events :
Number Major Minor RaidDevice State
active sync /dev/sdb
active sync /dev/sdc
active sync /dev/sdd
- spare /dev/sde
现在将部署好的RAID 5磁盘阵列格式化为ext4文件格式,然后挂载到目录上,之后就可以使用了。 [root@linuxprobe ~]# mkfs.ext4 /dev/md0
mke2fs 1.42. (-Dec-)
Filesystem label=
OS type: Linux
Block size= (log=)
Fragment size= (log=)
Stride= blocks, Stripe width= blocks
inodes, blocks
blocks (5.00%) reserved for the super user
First data block=
Maximum filesystem blocks=
block groups
blocks per group, fragments per group
inodes per group
Superblock backups stored on blocks:
, , , , , , , , ,
,
Allocating group tables: done
Writing inode tables: done
Creating journal ( blocks): done
Writing superblocks and filesystem accounting information: done
[root@linuxprobe ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
[root@linuxprobe ~]# mkdir /RAID
[root@linuxprobe ~]# mount -a
最后是见证奇迹的时刻!我们再次把硬盘设备/dev/sdb移出磁盘阵列,然后迅速查看/dev/md0磁盘阵列的状态,就会发现备份盘已经被自动顶替上去并开始了数据同步。RAID中的这种备份盘技术非常实用,可以在保证RAID磁盘阵列数据安全性的基础上进一步提高数据可靠性,所以,如果公司不差钱的话还是再买上一块备份盘以防万一。 [root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@linuxprobe ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri May ::
Raid Level : raid5
Array Size : (39.97 GiB 42.92 GB)
Used Dev Size : (19.98 GiB 21.46 GB)
Raid Devices :
Total Devices :
Persistence : Superblock is persistent
Update Time : Fri May ::
State : active, degraded, recovering
Active Devices :
Working Devices :
Failed Devices :
Spare Devices :
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : % complete
Name : linuxprobe.com: (local to host linuxprobe.com)
UUID : 44b1a152:3f1809d3:1d234916:4ac70481
Events :
Number Major Minor RaidDevice State
spare rebuilding /dev/sde
active sync /dev/sdc
active sync /dev/sdd
- faulty /dev/sdb LVM逻辑卷管理器
当用户想要随着实际需求的变化调整硬盘分区的大小时,会受到硬盘“灵活性”的限制。这时就需要用到另外一项非常普及的硬盘设备资源管理技术了—LVM(逻辑卷管理器)。LVM可以允许用户对硬盘资源进行动态调整。
逻辑卷管理器是Linux系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。
物理卷处于LVM中的最底层,可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列,这都可以。卷组建立在物理卷之上,一个卷组可以包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。逻辑卷是用卷组中空闲的资源建立的,并且逻辑卷在建立后可以动态地扩展或缩小空间。这就是LVM的核心理念 我们可以通过部署LVM来解决上述问题。部署LVM时,需要逐个配置物理卷、卷组和逻辑卷。
常用的LVM部署命令
功能 物理卷管理 卷组管理 逻辑卷管理 简写
扫描 pvscan vgscan lvscan scan
建立 pvcreate vgcreate lvcreate create
显示 ovdisplay vgdisplay lvdisplay display
删除 pvremove vgremove lvremove remove
扩展 vgextend lvextend extend
缩小 vgreduce lvreduce reduce 为了避免多个实验之间相互发生冲突,请大家自行将虚拟机还原到初始状态,并在虚拟机中添加两块新硬盘设备,然后开机,
在虚拟机中添加两块新硬盘设备的目的,是为了更好地演示LVM理念中用户无需关心底层物理硬盘设备的特性。我们先对这两块新硬盘进行创建物理卷的操作,可以将该操作简单理解成让硬盘设备支持LVM技术,或者理解成是把硬盘设备加入到LVM技术可用的硬件资源池中,然后对这两块硬盘进行卷组合并,卷组的名称可以由用户来自定义。接下来,根据需求把合并后的卷组切割出一个约为150MB的逻辑卷设备,最后把这个逻辑卷设备格式化成EXT4文件系统后挂载使用。在下文中,刘遄老师将对每一个步骤再作一些简单的描述。 第1步:让新添加的两块硬盘设备支持LVM技术。 [root@linuxprobe ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
第7章 使用RAID与LVM磁盘阵列技术。第7章 使用RAID与LVM磁盘阵列技术。 图7- 在虚拟机中添加两块新的硬盘设备 第2步:把两块硬盘设备加入到storage卷组中,然后查看卷组的状态。 [root@linuxprobe ~]# vgcreate storage /dev/sdb /dev/sdc
Volume group "storage" successfully created
[root@linuxprobe ~]# vgdisplay
--- Volume group ---
VG Name storage
System ID
Format lvm2
Metadata Areas
Metadata Sequence No
VG Access read/write
VG Status resizable
MAX LV
Cur LV
Open LV
Max PV
Cur PV
Act PV
VG Size 39.99 GiB
PE Size 4.00 MiB
Total PE
Alloc PE / Size / Free PE / Size / 39.99 GiB
VG UUID KUeAMF-qMLh-XjQy-ArUo-LCQI-YF0o-pScxm1
………………省略部分输出信息………………
第3步:切割出一个约为150MB的逻辑卷设备。 这里需要注意切割单位的问题。在对逻辑卷进行切割时有两种计量单位。第一种是以容量为单位,所使用的参数为-L。例如,使用-L 150M生成一个大小为150MB的逻辑卷。另外一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为4MB。例如,使用-l 37可以生成一个大小为37×4MB=148MB的逻辑卷。 [root@linuxprobe ~]# lvcreate -n vo -l storage
Logical volume "vo" created
[root@linuxprobe ~]# lvdisplay
--- Logical volume ---
LV Path /dev/storage/vo
LV Name vo
VG Name storage
LV UUID D09HYI-BHBl-iXGr-X2n4-HEzo-FAQH-HRcM2I
LV Write Access read/write
LV Creation host, time localhost.localdomain, -- :: -
LV Status available
# open
LV Size 148.00 MiB
Current LE
Segments
Allocation inherit
Read ahead sectors auto
- currently set to
Block device :
………………省略部分输出信息………………
第4步:把生成好的逻辑卷进行格式化,然后挂载使用。 Linux系统会把LVM中的逻辑卷设备存放在/dev设备目录中(实际上是做了一个符号链接),同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组名称/逻辑卷名称)。 [root@linuxprobe ~]# mkfs.ext4 /dev/storage/vo
mke2fs 1.42. (-Dec-)
Filesystem label=
OS type: Linux
Block size= (log=)
Fragment size= (log=)
Stride= blocks, Stripe width= blocks
inodes, blocks
blocks (5.00%) reserved for the super user
First data block=
Maximum filesystem blocks=
block groups
blocks per group, fragments per group
inodes per group
Superblock backups stored on blocks:
, , , ,
Allocating group tables: done
Writing inode tables: done
Creating journal ( blocks): done
Writing superblocks and filesystem accounting information: done
[root@linuxprobe ~]# mkdir /linuxprobe
[root@linuxprobe ~]# mount /dev/storage/vo /linuxprobe
第5步:查看挂载状态,并写入到配置文件,使其永久生效。 [root@linuxprobe ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G .0G 15G % /
devtmpfs 905M 905M % /dev
tmpfs 914M 140K 914M % /dev/shm
tmpfs 914M 8.8M 905M % /run
tmpfs 914M 914M % /sys/fs/cgroup
/dev/sr0 .5G .5G % /media/cdrom
/dev/sda1 497M 119M 379M % /boot
/dev/mapper/storage-vo 145M 7.6M 138M % /linuxprobe
[root@linuxprobe ~]# echo "/dev/storage/vo /linuxprobe ext4 defaults 0 0" >> /etc/fstab
7.2. 扩容逻辑卷
在前面的实验中,卷组是由两块硬盘设备共同组成的。用户在使用存储设备时感知不到设备底层的架构和布局,更不用关心底层是由多少块硬盘组成的,只要卷组中有足够的资源,就可以一直为逻辑卷扩容。扩展前请一定要记得卸载设备和挂载点的关联。 [root@linuxprobe ~]# umount /linuxprobe
第1步:把上一个实验中的逻辑卷vo扩展至290MB。 [root@linuxprobe ~]# lvextend -L 290M /dev/storage/vo
Rounding size to boundary between physical extents: 292.00 MiB
Extending logical volume vo to 292.00 MiB
Logical volume vo successfully resized
第2步:检查硬盘完整性,并重置硬盘容量。 [root@linuxprobe ~]# e2fsck -f /dev/storage/vo
e2fsck 1.42. (-Dec-)
Pass : Checking inodes, blocks, and sizes
Pass : Checking directory structure
Pass : Checking directory connectivity
Pass : Checking reference counts
Pass : Checking group summary information
/dev/storage/vo: / files (0.0% non-contiguous), / blocks
[root@linuxprobe ~]# resize2fs /dev/storage/vo
resize2fs 1.42. (-Dec-)
Resizing the filesystem on /dev/storage/vo to (1k) blocks.
The filesystem on /dev/storage/vo is now blocks long.
第3步:重新挂载硬盘设备并查看挂载状态。 [root@linuxprobe ~]# mount -a
[root@linuxprobe ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G .0G 15G % /
devtmpfs 985M 985M % /dev
tmpfs 994M 80K 994M % /dev/shm
tmpfs 994M 8.8M 986M % /run
tmpfs 994M 994M % /sys/fs/cgroup
/dev/sr0 .5G .5G % /media/cdrom
/dev/sda1 497M 119M 379M % /boot
/dev/mapper/storage-vo 279M 2.1M 259M % /linuxprobe
7.2. 缩小逻辑卷
相较于扩容逻辑卷,在对逻辑卷进行缩容操作时,其丢失数据的风险更大。所以在生产环境中执行相应操作时,一定要提前备份好数据。另外Linux系统规定,在对LVM逻辑卷进行缩容操作之前,要先检查文件系统的完整性(当然这也是为了保证我们的数据安全)。在执行缩容操作前记得先把文件系统卸载掉。 [root@linuxprobe ~]# umount /linuxprobe
第1步:检查文件系统的完整性。 [root@linuxprobe ~]# e2fsck -f /dev/storage/vo
e2fsck 1.42. (-Dec-)
Pass : Checking inodes, blocks, and sizes
Pass : Checking directory structure
Pass : Checking directory connectivity
Pass : Checking reference counts
Pass : Checking group summary information
/dev/storage/vo: / files (0.0% non-contiguous), / blocks
第2步:把逻辑卷vo的容量减小到120MB。 [root@linuxprobe ~]# resize2fs /dev/storage/vo 120M
resize2fs 1.42. (-Dec-)
Resizing the filesystem on /dev/storage/vo to (1k) blocks.
The filesystem on /dev/storage/vo is now blocks long.
[root@linuxprobe ~]# lvreduce -L 120M /dev/storage/vo
WARNING: Reducing active logical volume to 120.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vo? [y/n]: y
Reducing logical volume vo to 120.00 MiB
Logical volume vo successfully resized
第3步:重新挂载文件系统并查看系统状态。 [root@linuxprobe ~]# mount -a
[root@linuxprobe ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G .0G 15G % /
devtmpfs 985M 985M % /dev
tmpfs 994M 80K 994M % /dev/shm
tmpfs 994M 8.8M 986M % /run
tmpfs 994M 994M % /sys/fs/cgroup
/dev/sr0 .5G .5G % /media/cdrom
/dev/sda1 497M 119M 379M % /boot
/dev/mapper/storage-vo 113M 1.6M 103M % /linuxprobe
7.2. 逻辑卷快照
LVM还具备有“快照卷”功能,该功能类似于虚拟机软件的还原时间点功能。例如,可以对某一个逻辑卷设备做一次快照,如果日后发现数据被改错了,就可以利用之前做好的快照卷进行覆盖还原。LVM的快照卷功能有两个特点: 快照卷的容量必须等同于逻辑卷的容量; 快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。 首先查看卷组的信息。 [root@linuxprobe ~]# vgdisplay
--- Volume group ---
VG Name storage
System ID
Format lvm2
Metadata Areas
Metadata Sequence No
VG Access read/write
VG Status resizable
MAX LV
Cur LV
Open LV
Max PV
Cur PV
Act PV
VG Size 39.99 GiB
PE Size 4.00 MiB
Total PE
Alloc PE / Size / 120.00 MiB Free PE / Size / 39.88 GiB
VG UUID CTaHAK-0TQv-Abdb-R83O-RU6V-YYkx-8o2R0e
………………省略部分输出信息………………
通过卷组的输出信息可以清晰看到,卷组中已经使用了120MB的容量,空闲容量还有39.88GB。接下来用重定向往逻辑卷设备所挂载的目录中写入一个文件。 [root@linuxprobe ~]# echo "Welcome to Linuxprobe.com" > /linuxprobe/readme.txt
[root@linuxprobe ~]# ls -l /linuxprobe
total
drwx------. root root Feb : lost+found
-rw-r--r--. root root Feb : readme.txt
第1步:使用-s参数生成一个快照卷,使用-L参数指定切割的大小。另外,还需要在命令后面写上是针对哪个逻辑卷执行的快照操作。 [root@linuxprobe ~]# lvcreate -L 120M -s -n SNAP /dev/storage/vo
Logical volume "SNAP" created
[root@linuxprobe ~]# lvdisplay
--- Logical volume ---
LV Path /dev/storage/SNAP
LV Name SNAP
VG Name storage
LV UUID BC7WKg-fHoK-Pc7J-yhSd-vD7d-lUnl-TihKlt
LV Write Access read/write
LV Creation host, time localhost.localdomain, -- :: -
LV snapshot status active destination for vo
LV Status available
# open
LV Size 120.00 MiB
Current LE
COW-table size 120.00 MiB
COW-table LE
Allocated to snapshot 0.01%
Snapshot chunk size 4.00 KiB
Segments
Allocation inherit
Read ahead sectors auto
- currently set to
Block device :
………………省略部分输出信息………………
第2步:在逻辑卷所挂载的目录中创建一个100MB的垃圾文件,然后再查看快照卷的状态。可以发现存储空间占的用量上升了。 [root@linuxprobe ~]# dd if=/dev/zero of=/linuxprobe/files count= bs=100M
+ records in
+ records out
bytes ( MB) copied, 3.35432 s, 31.3 MB/s
[root@linuxprobe ~]# lvdisplay
--- Logical volume ---
LV Path /dev/storage/SNAP
LV Name SNAP
VG Name storage
LV UUID BC7WKg-fHoK-Pc7J-yhSd-vD7d-lUnl-TihKlt
LV Write Access read/write
LV Creation host, time localhost.localdomain, -- :: -
LV snapshot status active destination for vo
LV Status available
# open
LV Size 120.00 MiB
Current LE
COW-table size 120.00 MiB
COW-table LE
Allocated to snapshot 83.71%
Snapshot chunk size 4.00 KiB
Segments
Allocation inherit
Read ahead sectors auto
- currently set to
Block device :
第3步:为了校验SNAP快照卷的效果,需要对逻辑卷进行快照还原操作。在此之前记得先卸载掉逻辑卷设备与目录的挂载。 [root@linuxprobe ~]# umount /linuxprobe
[root@linuxprobe ~]# lvconvert --merge /dev/storage/SNAP
Merging of volume SNAP started.
vo: Merged: 21.4%
vo: Merged: 100.0%
Merge of snapshot into logical volume vo has finished.
Logical volume "SNAP" successfully removed
第4步:快照卷会被自动删除掉,并且刚刚在逻辑卷设备被执行快照操作后再创建出来的100MB的垃圾文件也被清除了。 [root@linuxprobe ~]# mount -a
[root@linuxprobe ~]# ls /linuxprobe/
lost+found readme.txt 7.2. 删除逻辑卷 卸掉挂载umount /etc/fstab 依次删除(逻辑卷、卷组、物理卷设备)
当生产环境中想要重新部署LVM或者不再需要使用LVM时,则需要执行LVM的删除操作。为此,需要提前备份好重要的数据信息,然后依次删除逻辑卷、卷组、物理卷设备,这个顺序不可颠倒。 第1步:取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数。 [root@linuxprobe ~]# umount /linuxprobe
[root@linuxprobe ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Feb ::
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(), findfs(), mount() and/or blkid() for more info
#
/dev/mapper/rhel-root / xfs defaults
UUID=50591e35-d47a-4aeb-a0ca-1b4e8336d9b1 /boot xfs defaults
/dev/mapper/rhel-swap swap swap defaults
/dev/cdrom /media/cdrom iso9660 defaults
/dev/storage/vo /linuxprobe ext4 defaults
第2步:删除逻辑卷设备,需要输入y来确认操作。 [root@linuxprobe ~]# lvremove /dev/storage/vo
Do you really want to remove active logical volume vo? [y/n]: y
Logical volume "vo" successfully removed
第3步:删除卷组,此处只写卷组名称即可,不需要设备的绝对路径。 [root@linuxprobe ~]# vgremove storage
Volume group "storage" successfully removed
第4步:删除物理卷设备。 [root@linuxprobe ~]# pvremove /dev/sdb /dev/sdc
Labels on physical volume "/dev/sdb" successfully wiped
Labels on physical volume "/dev/sdc" successfully wiped
在上述操作执行完毕之后,再执行lvdisplay、vgdisplay、pvdisplay命令来查看LVM的信息时就不会再看到信息了(前提是上述步骤的操作是正确的)。 .RAID技术主要为了解决 数据冗余和读写速度问题
.RAID0 读写快 不安全 RAID5安全
.RAID10 方案外加一块备份盘,最多可以允许3块同时损坏
.LVM底层是物理卷,然后通过物理卷组成的娟阻
.LVM对逻辑卷的扩容和缩容的异同点:相同:先取消逻辑卷与目录的挂载关联,扩容操作是先扩容后检查文件的完整性,缩容是为了保证数据的安全,因此先检查文件系统的完整性再缩容
.LVM快照只能使用一次,使用后自动删除
.LVM的删除顺序是 取消逻辑卷与目录的挂载关联,移除逻辑卷、卷组、物理卷

Linux就该这么学 20181005(第七章磁盘管理)的更多相关文章

  1. Linux就该这么学 20181004(第六章磁盘管理)

    参考链接https://www.linuxprobe.com/ /boot 开机锁需要文件-内核.开机菜单以及所需配置文件 /dev 以文件形式存放的任何设备与接口 /etc 配置文件 /home 用 ...

  2. 《linux就该这么学》第七节课:文件的各种权限以及linux分区命名规则

    笔记 (借鉴请改动) 5.3:文件特殊权限 SUID  临时拥有文件所有者的权限(基本上只是执行权限) SGID  临时拥有文件所有组的权限,在目录中创建文件自动继承该目录的用户组. SBIT  粘滞 ...

  3. 《Linux内核设计与实现》第七章读书笔记

    第七章.中断和中断处理 7.1中断 中断使得硬件得以发出通知给处理器.中断随时可以产生,内核随时可能因为新来到的中断而被打断. 不同的设备对应的中断不同,而每个中断都通过一个唯一的数字标志.操作系统给 ...

  4. Linux内核分析 读书笔记 (第七章)

    第七章 链接 1.链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储器并执行. 2.链接可以执行于编译时,也就是在源代码被翻译成机器代码时:也可以执行于 ...

  5. 简学Python第七章__class面向对象高级用法与反射

    Python第七章__class面向对象高级用法与反射 欢迎加入Linux_Python学习群  群号:478616847 目录: Python中关于oop的常用术语 类的特殊方法 元类 反射 一.P ...

  6. 狂神说Linux笔记:Vim和账号、用户组、磁盘管理

    什么是Vim编辑器 Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. 简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但 ...

  7. Linux就该这么学 20181005(第九章SSH远程对话)

    参考链接https://www.linuxprobe.com/ nmtui开启网卡设置 ONBOOT=yes systemctl restart network nmcli connection sh ...

  8. Linux就该这么学 20181005(第八章防火墙)

    参考链接https://www.linuxprobe.com/ vim /etc/sysconfig/network-scripts/ifcfg-ens32 网络配置0 nmtui 网络配置1 nm- ...

  9. 《Linux就该这么学》第七天课程

    昨天晚上我找了刘老师决定了报考红帽RHCSA,RHCE认证,我不指望这个认证能给我带来工作上的某些福利,毕竟出去闯靠的是实力外加运气 我只是希望通过这个认证来激励自己! 下面是分享的一些干货! 原创地 ...

随机推荐

  1. Flask-上传文件和访问上传的文件

     1.1.上传文件和访问上传的文件 upload_file_demo.py from flask import Flask,request,render_template import os from ...

  2. ROS集成开发环境RoboWare Studio安装教程

    前言:很多人说vim是最快的,所以我选择用roboware. ROS 自带的编辑器vim增加插件,效果如下: RoboWare Studio,效果如下: 下面开始安装. 一.安装 去官网 http:/ ...

  3. git服务器搭建-gitosis

    需求 硬件需求:一台Ubuntu或者debian电脑(虚拟机),能通过网络访问到. 软件需求:git-core, gitosis, openssh-server, openssh-client, Ap ...

  4. Spark RDD概念学习系列之Pair RDD的分区控制

    不多说,直接上干货! Pair RDD的分区控制 Pair RDD的分区控制 (1) Spark 中所有的键值对RDD 都可以进行分区控制---自定义分区 (2)自定义分区的好处:  1) 避免数据倾 ...

  5. ZBrush通过绘制层得到子物体

    本文将为大家介绍在ZBrush® 软件中第三种创建子物体的方法,即使用绘制层得到子物体. 1.在Light Box(灯光盒子)默认的3D工具中选择SuperAverageMan_low人体模型,在视图 ...

  6. dp入门—数塔

    在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?  已经告诉你了,这是个DP的题 ...

  7. day03 Python3的安装

    目录 Python的安装 Python下载 Python3安装 环境变量 添加环境变量 在CMD中运行Python Python的安装 Python可在多个操作系统(Windows,Linux,Mac ...

  8. D. Destruction of a Tree_dfs序_性质分析_思维题

    题意: 给定一棵树,每次可以拆掉一个树上度数为偶数的点,拆掉该点后,与该点所连的所有边都会被删掉.问,是否有一种删点顺序可以删掉所有的点.如果有,则输出任意一组解. 数据范围:线性做法 O(n)O(n ...

  9. tcpsock for Golang

    前记:本文所述的 tcpsock 库托管在 Github. Golang 中的 net 标准库已对 TCP 网络编程作了简洁(却很不简单)的封装,基本上,可直接通过引用其提供的相关接口开发简易的网络应 ...

  10. pytorch 8 CNN 卷积神经网络

    # library # standard library import os # third-party library import torch import torch.nn as nn impo ...