前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux 存储设备

linux 存储设备

原创
作者头像
用户8006012
发布2022-10-25 18:16:13
12.2K0
发布2022-10-25 18:16:13
举报
文章被收录于专栏:DATABASEDATABASE

存储结构与管理硬盘

一、添加硬盘设备

代码语言:javascript
复制
一、添加硬盘设备
添加硬盘设备的操作思路:首先需要在虚拟机中模拟添加入一块新的硬盘存储设备,然后再进行分区、格式化、挂载等操作,最后通过检查系统的挂载状态并真实地使用硬盘来验证硬盘设备是否成功添加。
fdisk命令用于新建、修改及删除磁盘的分区表信息

分区 
[root@rhel ~]# fdisk /dev/sdb  
依次输入  p    n   p   1   +1024G   回车  p   w  
Linux系统会自动把这个硬盘主分区抽象成/dev/sdb1设备文件
[root@rhel ~]# parentprobe
[root@rhel ~]# parentprobe
[root@rhel ~]# file /dev/sdb1

格式化 
[root@rhel ~]# mkfs.xfs /dev/sdb1

挂载使用
创建挂载点目录  /backup
[root@rhel ~]# mkdir /backup
[root@rhel ~]# mount /dev/sdb1 /backup
[root@rhel ~]# df -h
查看你目录占用空间大小
[root@rhel ~]# du -sh /*                           ---*/

二、挂载硬件设备

代码语言:javascript
复制
二、挂载硬件设备
一般的硬盘设备都是以“/dev/sd”
UUID是一串用于标识每块独立硬盘的字符串,具有唯一性及稳定性,特别适合用来挂载网络设备

挂载硬件设备步骤
1. [root@rhel ~]# mount -a   挂载所有在/etc/fstab中定义的文件系统
2  [root@rhel ~]# blkid      使用blkid命令来查询设备UUID
   [root@rhel ~]# mount UUID=f54f59eb-e5f5-4a3c-9693-7533c57d1a8a /backup
3. 开机自动挂载 /dev/sdb
[root@rhel ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Jul 21 05:03:40 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root                     /        xfs     defaults    0 0
UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot    xfs     defaults    0 0
/dev/mapper/rhel-swap                     swap     swap    defaults    0 0
/dev/sdb                                 /backup   xfs     defaults    0 0

[root@rhel ~]# mount -a
[root@rhel ~]# df -h


umount命令用于卸载设备或文件系统
[root@rhel ~]# unmount /dev/sdb


lsblk命令用于查看已挂载的磁盘的空间使用情况
[root@rhel ~]# 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
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
sr0            11:0    1  4.2G  0 rom

三、RAID 磁盘阵列

代码语言:javascript
复制
RAID 磁盘阵列

mdadm命令中的常用参数及作用如表7-2所示。

表7-2                                            mdadm命令的常用参数和作用

参数	作用
-a	检测设备名称
-n	指定设备数量
-l	指定RAID级别
-C	创建
-v	显示过程
-f	模拟设备损坏
-r	移除设备
-Q	查看摘要信息
-D	查看详细信息
-S	停止RAID磁盘阵列

mdadm命令用于创建、调整、监控和管理RAID设备,英文全称为“multiple devices admin”,语法格式为“mdadm参数 硬盘名称”。
其中,-C参数代表创建一个RAID阵列卡;-v参数显示创建的过程,同时在后面追加一个设备名称/dev/md0,这样/dev/md0就是创建后的RAID磁盘阵列的名称;-n 4参数代表使用4块硬盘来部署这个RAID磁盘阵列;而-l 10参数则代表RAID 10方案;最后再加上4块硬盘设备的名称就搞定了

查看添加的硬盘  
[root@rhel ~]# 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
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
sdb             8:16   0   20G  0 disk
sdc             8:32   0   20G  0 disk
sdd             8:48   0   20G  0 disk
sde             8:64   0   20G  0 disk
sr0            11:0    1  4.2G  0 rom


[root@rhel ~]# ls -l /dev/sd*
brw-rw----. 1 root disk 8,  0 Oct 25 15:23 /dev/sda
brw-rw----. 1 root disk 8,  1 Oct 25 15:23 /dev/sda1
brw-rw----. 1 root disk 8,  2 Oct 25 15:23 /dev/sda2
brw-rw----. 1 root disk 8, 16 Oct 25 15:23 /dev/sdb
brw-rw----. 1 root disk 8, 32 Oct 25 15:23 /dev/sdc
brw-rw----. 1 root disk 8, 48 Oct 25 15:23 /dev/sdd
brw-rw----. 1 root disk 8, 64 Oct 25 15:23 /dev/sde


创建 RAID10
[root@rhel ~]# mdadm -Cv /dev/md0 -n 4 -l 10 /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 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

查看 
[root@rhel ~]# mdadm -Q /dev/md0
/dev/md0: 39.97GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.

RAID磁盘阵列格式化为xfs格式:

[root@rhel ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0               isize=512    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5120, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0


挂载 
[root@rhel ~]# mkdir /RAID10
[root@rhel ~]# mount /dev/md0 /RAID10

[root@rhel ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               974M     0  974M   0% /dev
tmpfs                  991M     0  991M   0% /dev/shm
tmpfs                  991M   11M  980M   2% /run
tmpfs                  991M     0  991M   0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  4.2G   13G  25% /
/dev/sda1             1014M  170M  845M  17% /boot
tmpfs                  199M   12K  199M   1% /run/user/42
tmpfs                  199M     0  199M   0% /run/user/0
/dev/md0                40G   33M   40G   1% /RAID10

查看/dev/md0磁盘阵列设备的详细信息,确认RAID级别(Raid Level)、阵列大小(Array Size)和总硬盘数(Total Devices)都是否正确
[root@rhel ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Oct 25 15:39:34 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue Oct 25 15:47:34 2022
             State : clean
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : rhel:0  (local to host rhel)
              UUID : c7dddb65:4ceab00d:38b741da:4b84f7ef
            Events : 19

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde

添加RAID磁盘阵列自启挂载

[root@rhel ~]# echo "/dev/md0 /RAID xfs defaults 0 0" >> /etc/fstab

[root@rhel ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Oct 23 09:20:06 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=f54f59eb-e5f5-4a3c-9693-7533c57d1a8a /boot                   xfs     defaults        0 0
/dev/mapper/rhel-swap   swap                    swap    defaults        0 0
/dev/md0 /RAID xfs defaults 0 0

四、损坏磁盘阵列及修复

代码语言:javascript
复制
损坏磁盘阵列及修复

确认有一块物理硬盘设备出现损坏而不能再继续正常使用后,应该使用mdadm命令将其移除,然后查看RAID磁盘阵列的状
[root@rhel ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@linuxprobe ~]# mdadm -D /dev/md0

[root@rhel ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Oct 25 15:39:34 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue Oct 25 16:03:31 2022
             State : clean, degraded
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : rhel:0  (local to host rhel)
              UUID : c7dddb65:4ceab00d:38b741da:4b84f7ef
            Events : 21

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde

       0       8       16        -      faulty   /dev/sdb

-f参数是让硬盘模拟损坏的效果。为了能够彻底地将故障盘移除,还要再执行一步操作
[root@rhel ~]# mdadm /dev/md0 -r /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md0

新硬盘就绪后 重新添加 
[root@rhel ~]# mdadm /dev/md0 -a /dev/sdb

[root@rhel ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Oct 25 15:39:34 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue Oct 25 16:09:18 2022
             State : clean, degraded, recovering
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 30% complete

              Name : rhel:0  (local to host rhel)
              UUID : c7dddb65:4ceab00d:38b741da:4b84f7ef
            Events : 32

    Number   Major   Minor   RaidDevice State
       4       8       16        0      spare rebuilding   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde

代码语言:javascript
复制
创建RAID5 + 备份盘
部署RAID 5磁盘阵列时,至少需要用到3块硬盘,还需要再加一块备份硬盘(也叫热备盘),所以总计需要在虚拟机中模拟4块硬盘设备
创建一个RAID 5磁盘阵列+备份盘。在下面的命令中,参数-n 3代表创建这个RAID 5磁盘阵列所需的硬盘数,参数-l 5代表RAID的级别,而参数-x 1则代表有一块备份盘。当查看/dev/md0(即RAID 5磁盘阵列的名称)磁盘阵列的时候,就能看到有一块备份盘在等待中了。
[root@rhel ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
[root@rhel ~]# mdadm -D /dev/md0

格式化xfs
[root@rhel ~]# mkfs.xfs /dev/md0
创建挂载点目录
[root@rhel ~]# mkdir /RAID5
开机自动挂载
[root@rhel ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
[root@rhel ~]# mount -a
[root@rhel ~]# df -h

移除设备 /dev/sdb
[root@rhel ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
备份盘自动同步
[root@rhel ~]# mdadm -D /dev/md0



删除磁盘阵列 RAID5 +备份盘 
需要将所有的磁盘都设置成停用状态:
[root@rhel ~]# umount /RAID
[root@rhel ~]# mdadm /dev/md0 -f /dev/sdc
[root@rhel ~]# mdadm /dev/md0 -f /dev/sdc
[root@rhel ~]# mdadm /dev/md0 -f /dev/sde
[root@rhel ~]#

逐一移除
[root@rhel ~]# mdadm /dev/md0 -r /dev/sdb
[root@rhel ~]# mdadm /dev/md0 -r /dev/sdc
[root@rhel ~]# mdadm /dev/md0 -r /dev/sdd
[root@rhel ~]# mdadm /dev/md0 -r /dev/sde
查看磁盘组状态
mdadm -D /dev/md0
停用整个磁盘阵列
mdadm --stop /dev/md0
ls /dev/md0

注意: 或使用此命令 移除  mdadm --remove /dev/md0


LVM 逻辑卷管理器

部署逻辑卷 部署时,需要逐个配置物理卷、卷组和逻辑卷,常用的部署命令如表7-3所示。

一、部署逻辑卷

代码语言:javascript
复制
表7-3                                                   常用的LVM部署命令

功能/命令	物理卷管理	卷组管理	    逻辑卷管理
扫描	    pvscan	    vgscan	    lvscan
建立	    pvcreate	vgcreate	lvcreate
显示	    pvdisplay	vgdisplay	lvdisplay
删除	    pvremove	vgremove	lvremove
扩展		vgextend	lvextend
缩小		vgreduce	lvreduce

第1步:让新添加的两块硬盘设备支持LVM技术。

代码语言:javascript
复制
[root@rhel ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc

[root@rhel ~]# pvcreate /dev/sdb /dev/sdc
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.

第2步:把两块硬盘设备加入到storage卷组中,然后查看卷组的状态。

代码语言:javascript
复制
[root@rhel ~]# vgcreate storage /dev/sdb /dev/sdc

第3步:再切割出一个约为150MB的逻辑卷设备。

代码语言:javascript
复制
[root@rhel ~]# lvcreate -n vo -l 37 storage

第4步:把生成好的逻辑卷进行格式化,然后挂载使用。

代码语言:javascript
复制
[root@rhel ~]# mkfs.ext4 /dev/storage/vo

如果使用了逻辑卷管理器,则不建议用XFS文件系统,因为XFS文件系统自身就可以使用xfs_growfs命令进行磁盘扩容。这虽然不比LVM灵活,但起码也够用

代码语言:javascript
复制
[root@rhel ~]# mkdir /LVM
[root@rhel ~]# mount /dev/storage/vo /LVM

第5步:查看挂载状态,并写入配置文件,使其永久生效。

代码语言:javascript
复制
[root@rhel ~]# df -h
[root@rhel ~]# echo "/dev/storage/vo /LVM ext4 defaults 0 0" >> /etc/fstab
[root@rhel ~]# cat /etc/fstab

二、扩容逻辑卷

扩容前请一定要记得卸载设备和挂载点的关联。

代码语言:javascript
复制
[root@rhel ~]# umount /LVM

第1步:把上一个实验中的逻辑卷vo扩展至290MB。

代码语言:javascript
复制
[root@rhel ~]# lvextend -L 290M /dev/storage/vo

第2步:检查硬盘的完整性,确认目录结构、内容和文件内容没有丢失。一般情况下没有报错,均为正常情况。

代码语言:javascript
复制
[root@rhel ~]# e2fsck -f /dev/storage/vo

第3步:重置设备在系统中的容量。刚刚是对LV(逻辑卷)设备进行了扩容操作,但系统内核还没有同步到这部分新修改的信息,需要手动进行同步。

代码语言:javascript
复制
[root@rhel ~]# resize2fs /dev/storage/vo

第4步:重新挂载硬盘设备并查看挂载状态。

代码语言:javascript
复制
[root@rhel ~]# mount -a
[root@rhel ~]# df -h

三、缩小逻辑卷

执行缩容操作前记得先把文件系统卸载掉。

第1步:检查文件系统的完整性。

代码语言:javascript
复制
e2fsck -f /dev/storage/vo

第2步:通知系统内核将逻辑卷vo的容量减小到120MB。

代码语言:javascript
复制
resize2fs /dev/storage/vo 120M

第3步:将LV逻辑卷的容量修改为120M。

代码语言:javascript
复制
lvreduce -L 120M /dev/storage/vo

第4步:重新挂载文件系统并查看系统状态。

代码语言:javascript
复制
[root@rhel ~]# mount -a      或         [root@rhel ~]# mount /dev/storage/vo /LVM

[root@rhel ~]# df -h

四、快照逻辑卷

五、删除逻辑卷

当生产环境中想要重新部署LVM或者不再需要使用LVM时,则需要执行LVM的删除操作。为此,需要提前备份好重要的数据信息,然后依次删除逻辑卷、卷组、物理卷设备,这个顺序不可颠倒。

第1步:取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数。

代码语言:javascript
复制
umount /LVM
vim /etc/fstab

第2步:删除逻辑卷设备,需要输入y来确认操作。

代码语言:javascript
复制
[root@rhel ~]# lvremove /dev/storage/vo
Do you really want to remove active logical volume storage/vo? [y/n]: y
  Logical volume "vo" successfully removed

第3步:删除卷组,此处只写卷组名称即可,不需要设备的绝对路径。

代码语言:javascript
复制
[root@rhel ~]# vgremove storage
  Volume group "storage" successfully removed

第4步:删除物理卷设备。

代码语言:javascript
复制
[root@rhel ~]# pvremove /dev/sdb /dev/sdc

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 存储结构与管理硬盘
    • 一、添加硬盘设备
      • 二、挂载硬件设备
        • 三、RAID 磁盘阵列
          • 四、损坏磁盘阵列及修复
          • LVM 逻辑卷管理器
            • 一、部署逻辑卷
              • 二、扩容逻辑卷
                • 三、缩小逻辑卷
                  • 四、快照逻辑卷
                    • 五、删除逻辑卷
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档