磁盘管理—进步之路

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了磁盘管理—进步之路相关的知识,希望对你有一定的参考价值。

引导目录:

*磁盘分区

    *分区工具

*磁盘格式化

    *文件系统类型

*磁盘修复

    *磁盘修复工具

*分区的挂载

*挂载实例

*RAID

    *主要对RAID0、1、5进行介绍

*LVM(逻辑卷)

    *逻辑卷的创建

    *快照


通过近乎两周的磁盘管理学习,从对磁盘懵懂的认识,到对磁盘真正的了解,可谓收获颇深,快来看看小编学习的心路历程吧。

一、磁盘分区

磁盘的分区有两种类型:

*DOS分区方式

*GPT分区方式

在平常的windows系统之中,我们很熟悉C盘、D盘等各个字母开头的盘区,但是我们可能没有在意过,其实一个磁盘只能分4个区,分为主分区(primary)、扩展分区(extend),而我们平时看到的E、F、G、H..等盘区是在扩展分区上进一步创建的逻辑分区,其实DOS分区方式和MBR分区方式是同一种分区方式,通常我们的Windows分区都是采用的DOS分区方式,必须要有一个主分区,可以没有扩展分区,最都只能有一个扩展分区。通常我们采用“3主+1扩展”模式,扩展中可以在进行划分,分出逻辑分区,扩展分区相当于一个盒子,盒子中装了多个逻辑分区,其实扩展分区最多只能分32个逻辑分区。

而在Linux下可以支持DOS分区方式,也可以支持GPT分区方式,下面是分区方式的介绍:

DOS分区方式:

MBR(512字节)

分区1

分区2

分区3

分区4

MBR区包含了boot loader(446字节)、分区表(64字节)、结束位(2字节)

GPT分区方式:

保护区MBR

EFI、分区表

分区1

分区2

..........

分区128

EFI、分区表

保护区其实只有结束位就可以,不存放正真的东西,主要是为了能使老系统能够识别到这是一个有分区信息的磁盘,不被识别人空分区。在保护MBR后有EFI头部信息,定义了PGT分区的一些信息,和128个分区的信息表。后面紧接着就是128个分区,GPT分区方式最多支持128个分区,而磁盘的最后面是存放着分区表的备份。

分区工具:

针对DOS分区方式有fdisk分区工具,该工具不能对GPT分区进行分区。分区命令格式为:

Fdisk /dev/sdx  直接进入交互式界面:

技术分享

键入m会显示帮助信息,p打印输出当前的分区信息,n开始进行分区,会一步步提示你分区的步骤,小编这里进行简单的演示:

技术分享

一定要记得保存退出,否则之前做的内容都前功尽弃。

针对GPT分区方式,有新的分区工具gdisk,该工具更适用于GPT分区方式,虽然能对DOS分区进行操作,进入后如果是对DOS分区的操作,会提示你这是一个无效的GPT分区,但是会自动把DOS分区转换位GPT分区,所以进行分区的时候一定要选择好分区工具,否则容易出错。

gdisk分区工具与fdisk分区工具的使用方法是一样的。这里就不进行演示了,因为两个工具的使用防辐射是一样的。

还有一个万能的分区工具: parted 该工具不仅可以对DOS的分区进行分区,还可以对GPT分区进行分区,在对一个空白的磁盘进行分区前,需要制定一个分区类型(DOS/GPT),在该命令的交互模式的分区中,是不用手动保存的,直接自动生效。所以在使用parted进行分区的过程中要格外的小心,不要分错了。小面小编进行演示:

技术分享

如果实现已经有了分区类型,就不用再进行mklabel这一步了。

二、磁盘格式化(文件系统

我们对磁盘进行分区之后,并不能直接进行使用,我们需要对分区进行格式化,其实格式化也就是为了指定一个文件系统。在Centos6中默认的文件系统是ext文件系统,在Centos7中默认的文件系统是xfs文件系统。

文件系统类型有:xfs ext2 ext3 ext4 vfat nfs swap .....

Centos上我们主要使用到的文件系统是ext 和xfs两类文件系统,格式化磁盘的工具是:

mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.xfs mkswap mkfs.vfat ...

接下来小编进行实战演示:

格式化为ext文件系统:

mkfs.ext4 /dev/sda

mkfs -t ext4 /dev/sda

上面两种方式都可以对分区进行格式化,所执行的命令都是来自同样的命令,只是表现形式不一样。

没有格式化的分区是不能进行挂载的,所以需要对分区进行格式化才可以正常的使用。

技术分享  

ext文件系统格式化

技术分享 

xfs文件系统格式化

ext文件系统的格式化和对xfs文件系统的格式化是不一样的。这里小编就不对文件系统进行分析了。三、分区文件系统的修复

文件系统的检测核修复:

*常发生于死机或者非正常关机之后

挂载为文件系统标记为“no clean”

*注意:一定不要在挂载状态下修复

文件系统一旦损坏会报出超级快损坏,这个时候查看mount,就会显示该分区上的文件系统显示为no clean的标记。需要特别注意的是,修复的时候一定要在卸载分区的情况下进行。

fsck(File Syetem Check)

可修复的文件系统类型有:

ext2 、ext3、ext4、 xfs...

修复命令为:

fsck.ext2 fsck.ext3 fsck.ext4 fsck.xfs...

Fsck.ext4 /dev/sda

fsck -t FS_Type /dev/sda

选项:

-p :自动修复错误

-r :交互式修复错误

FS_TYPE一定要与分区上存在的文件类型相同

e2fsck:ext系列文件专用的检测修复工具

-y: 自动回答为yes

-f: 强制修复

接下来小编进行实战演示:

 对ext4文件系统的修复

技术分享

修复完之后的数据是不会丢失的,如果修复的过程中没有报错,可以直接进行挂载,文件依旧存在。四、分区的挂

挂载:将额外文件系统与根文件系统某现存的目录建立起

  关联的关系,进而使得此目录作为其他文件访问入口的行为。

卸载:为解除此关联关系的过程。

mount  挂载设备 挂载点

卸载时:可使用设备名,也可以使用挂载点

umount /dev/sdax  

挂载点目录一般为空。如果挂载的目录为非空,则挂载点下原有文件在挂载后将会被临时隐藏。

挂载分区的参数有三个:分区号(/dev/sda1)、卷标名、分区UUID。只有UUID是唯一的,所以采用UUID进行挂载是最可靠的。

如果想要永久挂载,也就是开机能够自动挂载,需要将挂载的信息写入文件,记录挂载信息的文件是/etc/fstab, 该文件规定了开机自动挂载的分区信息

/etc/fstab文件中的格式为如图所示:

 fstab文件的截图

技术分享

第一列是被挂载的设备,可以使用设备名,也可以使用设备的卷标,也可以使用设备的UUID,推荐使用UUID,因为卷标可能会重名,设备名也是可能重名的,而设备的UUID是唯一标识该设备的,所以使用UUID最靠谱,及时设备名变了,而不会影响系统识别挂载的信息。

第二列是挂载点(mount point)

第三列是挂载分区的文件系统类型。

第四列是默认开启的一些工能

defaults:相当于rw, nosuid, dev, exec, auto, nouser, async

如果有没有默认开启的功能,可以直接加在default的后面。

第五列的数字是,转存频率:0 表示不转存,1 表示每天转存,2 表示每隔一天转存。

第六列是自检次序:0 不自检 1 自检,2 、3 。。。 首先自检;一般只有rootfs才用1。

我们可以直接将挂载信息写入到/etc/fstab 文件中,然后执行mount -a 强制系统重新读取/etc/fstab,当对该文件修改过后可以使用该命令对挂载信息重新读取。

查看挂载的信息:

df 查看当前挂载的情况

mount只敲该命令是查看/etc/mtab文件,显示当前已经挂载的所有设备。

技术分享

mount 设备名 挂载点

    -t 指定文件系统类型

    -r 只读挂载

    --remount,ro|rw 也会更新/etc/fatab中的选项,如果与指定的冲突,则remount后指定的优先。

    -n 隐藏挂载信息不显示,但在/proc/mounts中可以查到

    -a 读取/etc/fstab,挂载其中文件中修改了,而系统中没有挂载的设备

    -L ‘LABEL‘ 以卷标指定挂载设备

    -U ‘UUID‘ 以UUID指定要挂载的设备

    -B --bind 目录挂载目录(用处非常多,比较实用)

小实验:

     1、同一个设备挂载到不同的挂载点

  可以同时显示出来,并且两个文件夹中的数据同步,因为挂载的是同一个硬盘。

     2 、一个挂载点挂载不同的设备。

  将显示最新挂载的那一个,旧的挂载点将被隐藏,但不是不存在。当新的挂载点卸载掉的时候,旧的挂载点将会重新生效。

五、RAID(磁盘阵列)

磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方(因此,冗余地)的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。

我们这里只针对RAID0 RAID1 和RAID5 进行说明。

1、RAID0 又名条带卷,多个磁盘进行并排串联,数据分块分别存放到不同的串联的磁盘上,可以同时读写,所以提升了读写能力,但是容错能力降低,无论那一块盘坏掉,那么数据就会丢失。

RAID0 特点:读写能力提升、无容错能力、最少两块盘,总大小为所有磁盘大小之和,不支持热备盘。

技术分享

2、RAID1 又名镜像卷,多个磁盘进行串联,数据在每一块盘上都存放一份,所有,除了第一块盘之外    所有的盘都相当于备份盘。所以容错能力大大提升。

RAID1 特点:读写能力降低,容错能力大大提升,最少两块盘,总大小始终为一块盘的大小,以容量最小的那块磁盘为准,支持热备盘。

技术分享

3、RAID5 RAID 5不单独指定的奇偶盘,而是在所有磁盘上交叉地存取数据及奇偶校验信息。在RAID 5上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量。RAID 5更适合于小数据块和随机读写的数据。对于RAID 5来说,大部分数据传输只对一块磁盘操作,并可进行并行操作。在RAID 5中有“写损失”,即每一次写操作将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。

RAID5特点:读写能力提升,容错能力提升,最少三块盘,总大小为减去一块盘的总大小之和。

      技术分享

创建RAID的命令:

mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}

    -C --create /dev/mdx 创建名为mdx的raid

    -a yes  当没有所指的/dev/mdx设备时, 自动创建该设备

    -l --level n 所要创建的raid等级

    -n n  该raid的数据盘有多少个成员

    -x n  该raid的热备盘有多少个  raid0 不支持-x

    -c 值  指定chunk大小,仅限raid0 raid5

    /dev/sdx....  指定raid的成员盘。

raid的要求是:硬盘的大小要相同,否则,按最小的硬盘计算空间。

raid也是一种真是的硬盘,可以分区,像正常的磁盘一样,可以通过格式化后进行挂载,RAID就相当于一整块的磁盘,可以对RAID进行分区,分区之后,可以进行格式化,格式化之后可以进行正常的挂载使用。分区和格式化方法与普通的磁盘是一样的。

删除RAID

    umount 首先要进行卸载挂载点

    mdadm -D /dev/md2 先查一下,该raid由哪有成员组成

    mdadm -S /dev/md2 禁用该RAID

    mdadm --zero-superblock /dev/sdf4 清空磁盘分区中的raid信息

    mdadm /dev/md0 -f /dev/sdd  模拟将/dev/md0 raid中的sdd坏掉

    mdadm /dev/md0 -r /dev/sdd  将/dev/md0 raid中的sdd 拔掉

    mdadm /dev/md0 -a /dev/sdd  向/dev/md0 增加设备sdd 如数据盘不够,则加为数据盘,如够,加为热备盘

    mdadm -G /dev/md0 -n 6 -a /dev/sdh 将/dev/md0的数据盘设置为6个,并将/dev/sdh加入为数据盘。

    mdadm -A /dev/md1 /dev/sdb /dev/sdc 当没有将md1信息保存至mdadm.conf时,只能手动指定raid成员

    mdadm -D -s > /etc/mdadm.conf  将所有的raid成员信息保存至mdadm.conf文件

    mdadm -D -s /dev/md0 >> /etc/mdadm.conf 仅将md0的信处追加保存至mdadm.conf文件

    mdadm -A /dev/md1  从/etc/mdadm.conf中读取成员信息,并仅激活md1

    mdadm -A -s  从/etc/mdadm.conf中读取成员信息,并激活所有的raid

 

生成配置文件:mdadm –D –s >> /etc/mdadm.conf

    v 停止设备:mdadm –S /dev/md0

    v 激活设备:mdadm –A –s /dev/md0 激活

    v 强制启动:mdadm –R /dev/md0

    v 删除raid信息:mdadm --zero-superblock /dev/sdb1

在创建完RAID后,需要将raid的信息到如到/etc/mdadm.conf,这样在下次开机启动之后,raid的创建信息才不会丢失,查看所有raid的信息的命令是:

 mdadm -D -s  可以在后面指定某一个raid,单独显示某一个raid的信息。

六、LVM管理

LVM(逻辑卷管理器)的重点在于可以弹性的调整filesystem的容量!而并非在于数据的存储效率及安全上面。LVM可以整合多个实体partition在一起,让这些partition看起来就像是一个磁盘一样!而且,可以在未来新增会移除其他的实体partition到这个LVM管理的磁盘当中。

LVM的主要作用就是可以弹性的扩展分区的空间。

下面小编附上LVM的整个逻辑概念图:

 技术分享

技术分享技术分享

从从上面的结构图中,我们可以看出,最底层是有真是的物理磁盘,或者磁盘分区也是可以的。由disk进行创建为pv(物理卷),VG(卷组)有若干个pv组成,pv就相当于一个小的块,VG相当于整个磁盘,由块组成了一整块大磁盘,才vg之上可以动态的分出分区来lv,lv才是最终的逻辑卷。

LVM的整个管理一共有三个步骤:

PV的管理工具:

    pvcreate /dev/md1 /dev/md2 创建物理卷,可指定多个

    pvremove /dev/sda1  删除物理卷,可指定多个

    Pvmove  /dev/sda1 /dev/sda2 将物理卷/dev/sda1上的数据移动到物理卷/dev/sda2上。

    Pvscan 扫描当前的系统中所有的pv

    Pvchange  修改pv的状态。

    -an /dev/sda  将/dev/sda处于非激活状态

    -ay /dev/sda  将/dev/sda开启激活状态

            Pvs 简单罗列pv信息

            Pvdispaly  显示pv的详细信息。

       VG的管理工具:

              vgcreate vgmage26 /dev/md0p1 /dev/md1

    -s 8M 指定PE大小,默认4M

    vgchange -s 8M 更改PE大小

    vgreduce vgmage26 /dev/md1 缩减卷组vgmage26

    vgextend vgmage26 /dev/md1 扩展卷组vgmage26

    vgremove vgmage26 删除卷组mage26

    vgs 简单罗列pv信息

     vgdispaly  显示pv的详细信息。

Lv的管理工具:

           显示逻辑卷 lvs Lvdisplay v

           创建逻辑卷 lvcreate -L #[mMgGtT] -n NAME VolumeGroup

           lvcreate -l 60%VG -n mylv testvg

           lvcreate -l 100%FREE -n yourlv testvg v

           删除逻辑卷 lvremove /dev/VG_NAME/LV_NAME

 

实验1:扩展逻辑卷

1.先检查需要扩展的大小,VG是否有足够可用空间

如果不够则

    pvcreate /dev/md2

    vgextend vgmage26 /dev/md2

2.如足够则扩展逻辑卷大小

    lvextend -L 1G/+1G  /dev/vgmage26/lvmage26_01

    lvextend -l +100%FREE /dev/vgmage26/lvmage26_01

3.扩展文件系统大小

    resize2fs /dev/vgmage26/lvmage26_01

    或  resize2fs /dev/vgmage26/lvmage26_01 500M 只增加到500M的文件系统

如果是xfs文件系统 用xfs_growfs

    xfs_growfs /dev/vg01/lv01

lvextend -L +500M -r /dev/vgmage26/lvmage26_01  可在lvextend 时加-r 直接一步到位,先扩展逻辑卷大小后直接增加文件系统大小

 

实验2、减小逻辑卷大小  仅支持Ext文件系统

    1.umount  /mnt/lvmage26_01

    2.e2fsck -f /dev/vgmage26/lvmage26_01

    3.resize2fs /dev/vgmage26/lvmage26_01 300M

    该命令中的300M,必须放在lv的后面。

    4.lvreduce -L 300M /dev/vgmage26/lvmage26_01

    5.mount

注意:该实验中,如果少了第二步,或者少了第三部,都是可以实现逻辑卷的减小,但是会损坏磁盘中的数据,需要重新格式化。所以按步骤来,最后就不需要再重新格式化了,直接可以挂载,数据还存在。

 

 

实验3:将某块盘从LVM中分离出来

1.先确保数据不在这块PV上

     pvs查看

2.如果在这块PV上,则将数据转移到同卷组的其他PV上

     pvmove /dev/pv1名 /dev/pv2名(可以不指定)

 在数据迁移的时候,业务不会断,可以在被挂载的目录中增加或减少数据。热移动(已实验验证)

3.将pv从Vg中移出

    vgreduce vg名 /dev/pv名

4.删除该盘的pv属性

     pvremove /dev/pv名

 pv中有被vg占用的磁盘的时候,是不能直接并强制移除该pv的,只能将空pv从vg中移除,

     pv已经从vg中移除,可以执行:pvremove /dev/sdbx

     pv还没有从vg中移除,可以:

     pvremove /dev/sdbx  --force --force

     两次--force就可以强制移除了。

 

实验4:将LVM迁移到其他主机

1.将数据移到目标磁盘对应的PV上。(该磁盘不要有其他与该PV无关的分区)

    pvmove /dev/pv1名 /dev/pv2名

    vgreduce vg名 /dev/pv(多余)  移动除要移动的PV以外的其他PV

2.确保要迁移的VG名与目的系统没有同名的VG

    vgrename vgmage26 vg02

    lvrename /dev/vg02/lvmage26_01 /dev/vg02/lv01 (非必须)

3.umount /mnt/lvmage26_01/ 

4.vgchange -an vg02 禁用VG上的所有LV

5.vgexport vg名  导出卷组

    关机(如果支持热插排,则不用关机),拔硬盘,插到目标主机上。

6.pvscan  扫描系统上的pv

  vgscan  扫描系统上的vg

  lvscan  扫描系统上的lv

  vgimport vg名  导入vg

  vgchange -ay vg名   激活vg

7.mount /dev/vg名/lv名 /mnt/   重新挂载lv

 

!*思想总结:

LVM的迁移其实就是把本机中的逻辑卷上的数据迁移到另一台机器上,并且保证逻辑卷还存在

迁移要看你怎么迁移了,如果你想就把本逻辑卷直接迁移走,不想再备份数据或倒腾

取消该逻辑卷的挂载,umount /dev/vgxx/lvxx

查看目的主机上是否有重名的逻辑卷或重名的卷组,若有需要修改一个,否则就会导致有两个重名但UUID不同的卷组,要命的是卷组重名,这个比较烦人,逻辑卷重名只要卷组不同,还是可以区分开的。

如果有重名:vgrename oldvgname  newvgname

如果没有改重名的名字,到目的主机上会有两个重名的卷组,会导致使用中系统无法区分开,这个时候可以在目的主机上执行:vgrename vg-uuid newvgname

使用vg的UUID进行唯一匹配进行改名。可以vgdisplay查看vg的uuid。

在导出之前还有个需要注意的地方,迁移的卷组如果还有其他与移动的硬盘无关的磁盘,这个在迁移到别的主机上的后,会扫描到卷组中有缺失的pv,系统会报错,在对该vg进行操作的时候,会提示错误信息,可以加上-f,强制执行。

比如:vgimport vgname -f

或者可以执行:

    vgreduce --removemissing  将缺失的pv移除,就是将vg上没有识别到的pv清除掉。

需要将vg导出,但导出之前首先要让vg上的lv全部处于非激活状态(inactive):

    vgchange -an vgname (如果不指定vg名,会将所有的卷组全部置为非激活装态)

导出vgexport vgname

关机进行移除。

添加到另一个主机上,使用pvscan lvscan vgscan 进行扫描识别到系统中的pv lv vg。

扫描到之后进行vg导入:vgimport vgname

激活: vgchange -ay vgname

就可以挂载lv 了。

    mount /dev/vgxx/lvxx  /mountdir

 

疑难杂症:

同一主机上重名卷组名:使用卷组的uuid进行改名:

    vgrename uuid newvgname

同一卷组上有其他识别到的pv,使用vgreudce 将卷组上缺失的pv移除

    vgreduce --removemissing --force newjiakevg

 

实验小发现:

如果在敲卷组的时候不能进行自动补齐,有两种可能:

1、卷组上没有创建逻辑卷

2、卷组被致于非激活状态。

3、除了格式化为ext文件系统的逻辑卷可以在centos6和centos7系统之间进行友好的迁移,在centos7中格式化为xfs文件系统的逻辑卷迁移到centos6上之后,不能进行正常的挂载,有报错。centos6中格式化为xfs文件系统的逻辑卷迁移到centos7中,挂载正常。

    

    逻辑卷管理器快照:

快照概念:快照是存放源文件系统中的文件信息,存储的是文件iNode号对应的数据源。

快照定义的是某一时刻系统的状态,如果对系统快照之后,系统中的原有数据减少了的时候,快照会将删除减少的数据,存放到快照文件中,以备恢复快照使用。如果增加的数据,就不会再存放到快照中了。恢复快照的时候,快照文件中没有记录的文件数据就会自动删除。

逻辑卷很脆弱,一旦空间沾满就会崩溃。所以提前规划好快照空间。

由于快照区与原本的lv共用很多PE的区块,因此快照区与被快照的lv必须在同一个vg上,系统恢复的时候的文件数量不能搞与快照区的实际容量。对逻辑卷创建的快照要与该逻辑卷同卷组。

快照是一个特殊的逻辑卷,同创建逻辑卷的方法一样。

lvcreate -L +size -s -p r -n snap-name /dev/vgxx/lv01

            -s:指定该逻辑卷为快照区

            -p:设定该快照逻辑卷只可读

快照也是一个逻辑卷所以可以被挂载,

mount /dev/vgxx/snap-name /dir

恢复快照的时候,必须将快照与被快照的逻辑卷全部卸载,不能占线。

卸载完之后执行:

lvconvert --merge /dev/vgxx/snap-name

快照的删除同样需要保证快照不被挂载,然后执行逻辑卷删除的方法:lvremove /dev/vgxx/snap-names

小编通过实验得出:

当有快照的逻辑卷不支持在线扩展,逻辑卷的在线扩展是在逻辑卷的激活状态下进行的。有快照就不支持在线扩展。只有先删除快照,扩展完后再创建快照(可以提前备份快照)。


本文出自 “Linux运维” 博客,请务必保留此出处http://jk6627.blog.51cto.com/12002684/1959776

以上是关于磁盘管理—进步之路的主要内容,如果未能解决你的问题,请参考以下文章

:磁盘组织与管理 -- 减少磁盘延迟时间的方法磁盘管理磁盘组织与管理小结

Linux磁盘管理系列 — 磁盘配额管理

Linux磁盘管理的Linux管理命令

k8s集群内的节点,可能没你想象的那么健壮!(磁盘管理篇)

AIX磁盘管理 教程

Linux 下磁盘管理--逻辑卷--LV