目录

磁盘管理

一、存储介绍

二、存储概览    

三、磁盘分区

四、交换分区

五、开机挂载

六、磁盘矩阵RAID

七、文件链接

八、LVM逻辑卷

九、文件系统


磁盘管理

一、存储介绍

    1.
    ①NAS(Network Attached Storage) (阅读了解)
            网络附加存储——是一个网络上的文件系统  
    NFS
    ②SAN(Storage Area Network) 
            存储区域网络——是一个网络上的磁盘
    ③DAS(Direct-attached Storage) 
            直连存储
    ④分布式存储 hdfs 、ceph 、GFS、Switf....
    ⑤云存储
    

 2.
    ①、理解生产环境存储扩容讲解
    根据各种存储方案的不同讲解不同的存储扩容方式
    ②、生产环境数据备份的意义
    (1)自然灾害,如水灾、火灾、雷击、地震等不可抗力造成计算    机系统和存储数据的破坏或丢失;
    (2)计算机设备故障,其中包括存储介质的老化、失效;
    (3)系统管理员及维护人员的误操作;
    (4)病毒感染造成的数据破坏和网络上的“黑客”攻击;

二、存储概览
    

机械硬盘HDD:又称之为磁盘
    盘片:磁盘上面有一摞盘片
    磁道:盘片上一圈一圈的是磁道
    扇区:磁道被划分之后是扇区,以前默认是512B(字节),现在基本上是4k 
    柱面:半径相同的盘片组成一个柱子一样的体,叫做柱面。
    硬盘的转速:1400r/min 7200r/min 10000r/min 15000r/min

    固态硬盘SSD:没有盘片,里面都是芯片和电子,目前的在dell r730的服务器上有应用
    SSD的优势:
            SSD是摒弃传统磁介质,采用电子存储介质进行数据存储和读取的一种技术,突破了传统机械硬盘的性能瓶颈,拥有极高的存储性能,被认为是存储技术发展的未来新星。固态硬盘的全集成电路化、无任何机械运动部件的革命性设计,从根本上解决了在移动办公环境下,对于数据读 写稳定性的需求。全集成电路化设计可以让固态硬盘做成任何形状。
            第一,SSD不需要机械结构,完全的半导体化,不存在数据查找时间、延迟时间和磁盘寻道时间,数据存取速度快。
            第二,SSD全部采用闪存芯片,经久耐用,防震抗摔,即使发生与硬物碰撞,数据丢失的可能性也能够降到最小。
            第三,得益于无机械部件及FLASH闪存芯片,SSD没有任何噪音,功耗低。
            第四,质量轻,比常规1.8英寸硬盘重量轻20-30克,使得便携设备搭载多块SSD成为可能。同时因其完全半导体化, 无结构限制,可根据实际情况设计成各种不同接口、形状的特殊电子硬盘。

    2.从插拔方式
    热插拔
    非热插拔

    3.硬盘设备命名
    物理硬盘: /dev/sd[a-z] 
    KVM虚拟化: /dev/vd[a-z] (半虚拟化驱动) 
    /dev/sd[a-z] (全虚拟化驱动)
    
    4.从存储连接方式
    本地存储 例如DellR730本地磁盘
    外部存储 U盘,移动硬盘等
    网络存储 以太网络(iscsi, glusterFS,ceph)

    5.从分区方式区分
    MBR分区表 :
            MBR是主引导记录(Master Boot Record)的英文缩写
    GPT分区表 :
            GPT是GUID磁碟分割表(GUID Partition Table)的缩写,含义“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。

    区别:
                1、MBR分区表最多只能识别2TB左右的空间,大于2TB的容量将无法识别从而导致硬盘空间浪费;GPT分区表则能够识别2TB以上的硬盘空间。
                2、MBR分区表最多只能支持4个主分区或三个主分区+1个扩展分区(逻辑分区不限制);GPT分区表在Windows系统下可以支持128个主分区。
                3、在MBR中,分区表的大小是固定的;在GPT分区表头中可自定义分区数量的最大值,也就是说GPT分区表的大小不是固定的。

三、磁盘分区

fdisk:

fdisk一般用来分MBR分区[DOS分区表]

# fdisk  /dev/sdb
 Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.
 Be careful before using the write command.
 你的修改都只暂存在内存中,可以应用到磁盘,谨慎使用保存命令Device does not contain a recognized partition table          //未发现任何分区表
 Building a new DOS disklabel with disk identifier 0xc4072440. [默认创建DOS MBR分区表]Command (m for help): m
 Command action
    a   toggle a bootable flag
    b   edit bsd disklabel
    c   toggle the dos compatibility flag
    d   delete a partition   //删除一个分区
    g   create a new empty GPT partition table  //创建一个新的空GPT分区表
    G   create an IRIX (SGI) partition table
    l   list known partition types   //列出已知的分区类型
    m   print this menu              //打印帮助信息
    n   add a new partition          //新建分区表
    o   create a new empty DOS partition table  //创建一个新的空MBR分区表
    p   print the partition table    //打印已有分分区表
    q   quit without saving changes  //不保存退出
    s   create a new empty Sun disklabel  
    t   change a partition's system id
    u   change display/entry units
    v   verify the partition table
    w   write table to disk and exit   //保存分区信息并退出
    x   extra functionality (experts only)Command (m for help): n   //创建新的分区
 Partition type:
    p   primary (0 primary, 0 extended, 4 free)
    e   extended
 Select (default p):       //选择分区类型,使用默认类型p
 Using default response p
 Partition number (1-4, default 1):    //分区编号,使用默认编号1
 First sector (2048-41943039, default 2048):   //分区起始位置,使用默认起始位置
 Using default value 2048
 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G  //分区结束位置,使用大小自动转换为分区结束
 Partition 1 of type Linux and of size 5 GiB is set Command (m for help): p  //打印分区
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk label type: dos
 Disk identifier: 0xc4072440   Device Boot      Start         End      Blocks   Id  System
 /dev/sdb1            2048    10487807     5242880   83  Linux Command (m for help): n
 Partition type:
    p   primary (1 primary, 0 extended, 3 free)
    e   extended
 Select (default p): 
 Using default response p
 Partition number (2-4, default 2): 
 First sector (10487808-41943039, default 10487808): 
 Using default value 10487808
 Last sector, +sectors or +size{K,M,G} (10487808-41943039, default 41943039): 
 Using default value 41943039
 Partition 2 of type Linux and of size 15 GiB is set Command (m for help): w  //保存分区信息
 The partition table has been altered!Calling ioctl() to re-read partition table.
 Syncing disks. # lsblk
 NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sdb               8:16   0   20G  0 disk 
 ├─sdb1            8:17   0    5G  0 part 
 └─sdb2            8:18   0   15G  0 part ----------------------------
 ============================
 方案二:
 三个主分区,两个逻辑分区
 4G         4G三个主分区,一个扩展分区[分区两个逻辑分区]
//分配三个主分区
 Command (m for help): n
 Partition type:
    p   primary (0 primary, 0 extended, 4 free)
    e   extended
 Select (default p): 
 Using default response p
 Partition number (1-4, default 1): 
 First sector (2048-41943039, default 2048): 
 Using default value 2048
 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +4G   
 Partition 1 of type Linux and of size 4 GiB is setCommand (m for help): n
 Partition type:
    p   primary (1 primary, 0 extended, 3 free)
    e   extended
 Select (default p): 
 Using default response p
 Partition number (2-4, default 2): 
 First sector (8390656-41943039, default 8390656): 
 Using default value 8390656
 Last sector, +sectors or +size{K,M,G} (8390656-41943039, default 41943039): +4G
 Partition 2 of type Linux and of size 4 GiB is setCommand (m for help): n
 Partition type:
    p   primary (2 primary, 0 extended, 2 free)
    e   extended
 Select (default p): 
 Using default response p
 Partition number (3,4, default 3): 
 First sector (16779264-41943039, default 16779264): 
 Using default value 16779264
 Last sector, +sectors or +size{K,M,G} (16779264-41943039, default 41943039): +4G
 Partition 3 of type Linux and of size 4 GiB is set//创建扩展分区,扩展分区要使用全部空间,防止空间浪费
 Command (m for help): n
 Partition type:
    p   primary (3 primary, 0 extended, 1 free)
    e   extended
 Select (default e): 
 Using default response e
 Selected partition 4
 First sector (25167872-41943039, default 25167872): 
 Using default value 25167872
 Last sector, +sectors or +size{K,M,G} (25167872-41943039, default 41943039): 
 Using default value 41943039
 Partition 4 of type Extended and of size 8 GiB is set//从扩展分区分出两个逻辑分区
 Command (m for help): n
 All primary partitions are in use
 Adding logical partition 5
 First sector (25169920-41943039, default 25169920): 
 Using default value 25169920
 Last sector, +sectors or +size{K,M,G} (25169920-41943039, default 41943039): +4G
 Partition 5 of type Linux and of size 4 GiB is set Command (m for help): n
 All primary partitions are in use
 Adding logical partition 6
 First sector (33560576-41943039, default 33560576): 
 Using default value 33560576
 Last sector, +sectors or +size{K,M,G} (33560576-41943039, default 41943039): //注意最后一块空间在分配的时候,结束位置直接使用默认值,因为分区表已经占用了部分空间
 Using default value 41943039
 Partition 6 of type Linux and of size 4 GiB is setCommand (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk label type: dos
 Disk identifier: 0xc4072440   Device Boot      Start         End      Blocks   Id  System
 /dev/sdb1            2048     8390655     4194304   83  Linux
 /dev/sdb2         8390656    16779263     4194304   83  Linux
 /dev/sdb3        16779264    25167871     4194304   83  Linux
 /dev/sdb4        25167872    41943039     8387584    5  Extended
 /dev/sdb5        25169920    33558527     4194304   83  Linux
 /dev/sdb6        33560576    41943039     4191232   83  LinuxCommand (m for help): w
 The partition table has been altered!Calling ioctl() to re-read partition table.
 Syncing disks. # lsblk
 NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sdb               8:16   0   20G  0 disk 
 ├─sdb1            8:17   0    4G  0 part 
 ├─sdb2            8:18   0    4G  0 part 
 ├─sdb3            8:19   0    4G  0 part 
 ├─sdb4            8:20   0    1K  0 part 
 ├─sdb5            8:21   0    4G  0 part 
 └─sdb6            8:22   0    4G  0 part

gdisk:

安装gdisk

# yum -y install gdisk
# gdisk /dev/sdb
Command (? for help): n  //创建新的分区
 Partition number (1-128, default 1):   //分区编号
 First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:   //起始位置
 Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +1G  //结束位置
 Current type is 'Linux filesystem'
 Hex code or GUID (L to show codes, Enter = 8300):   //分区类型
 Changed type of partition to 'Linux filesystem'Command (? for help): n   
 Partition number (2-128, default 2): 
 First sector (34-41943006, default = 2099200) or {+-}size{KMGTP}: 
 Last sector (2099200-41943006, default = 41943006) or {+-}size{KMGTP}: +1G
 Current type is 'Linux filesystem'
 Hex code or GUID (L to show codes, Enter = 8300): 
 Changed type of partition to 'Linux filesystem'Command (? for help): n
 Partition number (3-128, default 3): 
 First sector (34-41943006, default = 4196352) or {+-}size{KMGTP}: 
 Last sector (4196352-41943006, default = 41943006) or {+-}size{KMGTP}: +1G
 Current type is 'Linux filesystem'
 Hex code or GUID (L to show codes, Enter = 8300): 
 Changed type of partition to 'Linux filesystem'Command (? for help): n
 Partition number (4-128, default 4): 
 First sector (34-41943006, default = 6293504) or {+-}size{KMGTP}: 
 Last sector (6293504-41943006, default = 41943006) or {+-}size{KMGTP}: +1G
 Current type is 'Linux filesystem'
 Hex code or GUID (L to show codes, Enter = 8300): 
 Changed type of partition to 'Linux filesystem'Command (? for help): n
 Partition number (5-128, default 5): 
 First sector (34-41943006, default = 8390656) or {+-}size{KMGTP}: 
 Last sector (8390656-41943006, default = 41943006) or {+-}size{KMGTP}: +1G
 Current type is 'Linux filesystem'
 Hex code or GUID (L to show codes, Enter = 8300): 
 Changed type of partition to 'Linux filesystem'Command (? for help): n
 Partition number (6-128, default 6): 
 First sector (34-41943006, default = 10487808) or {+-}size{KMGTP}: 
 Last sector (10487808-41943006, default = 41943006) or {+-}size{KMGTP}: 
 Current type is 'Linux filesystem'
 Hex code or GUID (L to show codes, Enter = 8300): 
 Changed type of partition to 'Linux filesystem'Command (? for help): w   //保存退出
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
 PARTITIONS!!Do you want to proceed? (Y/N): Y   //确认写入到磁盘
 OK; writing new GUID partition table (GPT) to /dev/sdb.
 The operation has completed successfully.# lsblk
 NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sdb               8:16   0   20G  0 disk 
 ├─sdb1            8:17   0    1G  0 part 
 ├─sdb2            8:18   0    1G  0 part 
 ├─sdb3            8:19   0    1G  0 part 
 ├─sdb4            8:20   0    1G  0 part 
 ├─sdb5            8:21   0    1G  0 part 
 └─sdb6            8:22   0   15G  0 part


 

四、交换分区

    作用: swap
    '提升' 内存的容量,防止OOM(Out Of Memory)内存溢出
    用的是硬盘空间  当作内存来用  当物理内存不够用的时候 使用    swap分区,防止物理内存耗尽 

    swap分区大小设置规则:
    内存小于4GB时,推荐不少于2GB的swap空间;
    内存4GB~16GB,推荐不少于4GB的swap空间;
    内存16GB~64GB,推荐不少于8GB的swap空间;
    内存64GB~256GB,推荐不少于16GB的swap空间

    查看当前的交换分区:
    [root@lcr ~]# free -m
    [root@lcr ~]# swapon -s  

    制作swap分区:
    先用fdisk做一个分区
    格式化
    [root@lcr ~]#mkswap /dev/sda5 

    激活swap分区
    [root@lcr ~]#swapon /dev/sda5

    关闭swap分区
    [root@lcr ~]# swapoff /dev/sda5

五、开机挂载

    [root@lcr ~]#vim /etc/fstab
    第1列:挂载设备(3种写法)
    (1)/dev/sda5
    (2)10.11.59.110:/abc
    (3)UUID=设备的uuid  rhel6 rhel7的默认写法
    第2列:挂载点
    第3列:文件系统类型
    第4列:文件系统属性
    第5列:是否对文件系统进行(磁带)备份
    0 不备份
    1 1天一次
    2 2天一次
    第6列:是否检查文件系统
    0 不检查
    1 先检查
    2 后检查

    /dev/sdb1  /opt/lcr xfs defaults 0 0
    /dev/sdb2 /opt/lcr2 ext2 defaults 0 0
    UUID=7363c072-d11b-4a5a-babe-2caefd6127ee /swap swap defaults 0 0

    扩展:

    /etc/rc.d/rc.local 开机启动(在开机的时候自动执行这个文件里面的内容(命令))
    vim /etc/rc.d/rc.local
        touch lcr.txt

    chmod a+x /etc/rc.d/rc.local

reboot:验证这个配置文件的作用

六、磁盘矩阵RAID

    常用(raid0 raid1 raid5 )其他raid6 raid10
    1.介绍
    RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。
    2.功能
    (1)通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间,提高了数据存取速度。
    (2)通过对一个阵列中的几块磁盘同时读取,减少了磁盘的机械寻道时间,提高数据存取速度。
    (3)通过镜像或者存储奇偶校验信息的方式,实现了对数据的冗余保护
    2.1 RAID0
    优点:
    (1)充分利用I/O总线性能使其带宽翻倍,读/写速度翻倍。
    (2)充分利用磁盘空间,利用率为100%。
    缺点:
    (1)不提供数据冗余。
    (2)无数据检验,不能保证数据的正确性。
    (3)存在单点故障。 
    应用场景:
    (1)对数据完整性要求不高的场景,如:日志存储,个人娱乐
    (2)要求读写效率高,安全性能要求不高,如图像工作站 
    2.2 RAID1
    优点:
    (1)提供数据冗余,数据双倍存储。
    (2)提供良好的读性能 
    缺点:
    (1)无数据校验
    (2)磁盘利用率低,成本高
    应用场景:
    存放重要数据,如数据存储领域
    2.3 RAID5
    优点:
    (1)读写性能高
    (2)有校验机制
    (3)磁盘空间利用率高
    缺点:
    (1)磁盘越多安全性能越差
    应用场景:
    数据安全性高,如数据金融、库、存储等

七、文件链接

    软连接:①两个的inode号会不同
        ②如果把源文件删掉链接文件就会失效
        ③可以跨硬盘链接
    硬链接:①inode号不变
        ②源文件的删除对链接文件没影响
        ③不是同一硬盘分区不能链接

    总结:
    1.软链接产生新的inode号,硬链接不产生新的inode号
    2.源文件删除后,软链接文件不可以用,硬链接文件可用
    3.软链接可以跨分区,硬链接不可以跨分区
    4.不支持目录做硬链接
    
    看磁盘分区UUID
    ll /dev/disk/by-uuid
    blkid +/dev/sd*

八、LVM逻辑卷

    基本概念:
    1、 物理卷-----PV(Physical Volume)
            物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘。
    2、 卷组--------VG(Volumne Group) 
            卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
    3、 逻辑卷-----LV(Logical Volume) 
            逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷要以属于同一个卷组,也可以属于不同的多个卷组。
    4、 物理区域--PE(Physical Extent) 
            物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小可根据实际情况在建立物理卷时指定。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致。
    5、 逻辑区域―LE(Logical Extent) 
            逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。

    创建逻辑卷 (磁盘的分区,单个磁盘)
    0. 准备物理磁盘
    可以是: /dev/sdb /dev/sdc1
    [root@lcr ~]# ll /dev/vd{c,d,e}
    brw-rw----. 1 root disk 253, 32 Jun 6 17:38 /dev/vdc
    brw-rw----. 1 root disk 253, 48 Jun 6 17:38 /dev/vdd
    brw-rw----. 1 root disk 253, 64 Jun 6 17:38 /dev/vde
    1. pv(创建物理卷)
    [root@lcr ~]# pvcreate /dev/vdd
    Physical volume "/dev/vdd" successfully created
    [root@lcr ~]# pvscan
    PV /dev/vdd lvm2 [2.00 GiB]
    Total: 1 [2.00 GiB] / in use: 0 [0 ] / in no VG: 1 [2.00 GiB]
    [root@lcr ~]# pvs
    PV VG Fmt Attr PSize PFree
    /dev/vdd lvm2 a-- 2.00g 2.00g
    2. vg (创建卷组)
    [root@lcr ~]# vgcreate vg1 /dev/vdd
    Volume group "vg1" successfully created
    [root@lcr ~]# vgs
    VG #PV #LV #SN Attr VSize VFree
    vg1 1 0 0 wz--n- 2.00g 2.00g
    [root@lcr ~]# vgscan
    Reading all physical volumes. This may take a while...
    Found volume group "vg1" using metadata type lvm2
    [root@lcr ~]# vgdisplay
    --- Volume group ---
    VG Name vg1
    System ID
    Format lvm2
    Metadata Areas 1
    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 1
    Act PV 1
    VG Size 2.00 GiB
    PE Size 4.00 MiB
    Total PE 511
    Alloc PE / Size 0 / 0
    Free PE / Size 511 / 2.00 GiB
    VG UUID 7E4tlj-l0a2-ph52-OytH-eaq7-58K6-2S4n8V
    3. lv (创建逻辑卷)
    [root@lcr ~]# lvcreate -l 10 -n lv1 vg1
    [root@lcr ~]# lvcreate -L 200M -n lv2 vg1
    [root@lcr ~]# lvscan
    ACTIVE '/dev/vg1/lv1' [640.00 MiB] inherit
    ACTIVE '/dev/vg1/lv2' [256.00 MiB] inherit
    4. 创建文件系统并挂载
    [root@lcr ~]# mkfs.xfs /dev/vg1/lv1
    [root@lcr ~]# mkfs.ext4 /dev/vg1/lv2
    [root@lcr ~]# mkdir /mnt/lv1 /mnt/lv2
    [root@lcr ~]# vim /etc/fstab
    /dev/vg1/lv1 /mnt/lv1 xfs defaults 0 0
    /dev/vg1/lv2 /mnt/lv2 ext4 defaults 0 0
    [root@lcr ~]# mount -o rw 设备路径 挂载点
    [root@lcr ~]# df
    Filesystem 1K-blocks Used Available Use% Mounted on
    /dev/mapper/vg1-lv1 651948 32928 619020 6% /mnt/lv1
    /dev/mapper/vg1-lv2 245671 2062 226406 1% /mnt/lv2
    扩展:
    注意:
        1.扩容的过程lv  文件系统
    如果lv正在被使用,当我们给lv扩容完成后,需要给文件系统扩容
    如果lv没有被使用,无需操作
        2.lv扩容
        vg有可用空间
        vg没有可用空间,有可用的pv
        vg没有可用空间,没有有用的pv
    
    1.vg有空间,直接从vg给lv扩容

    2.vg没有空间,看pv,如果有剩余的pv那么直接将pv添加到卷组,如果pv没有,需要添加磁盘,将磁盘加入到pv,在将pv加入到卷组,然后在给lv扩容

    lv扩容成功后使用lvs等一系列查看lv的命令去查看是否扩容成功.

    文件系统扩容
    xfs: xfs_growfs /dev/vg1/lv1 10G----40G
    ext: resize2fs /dev/vg1/lv1 

    ==扩大VG vgextend==
    pvcreate /dev/vde
    vgextend vg1 /dev/vde
    vgs
    vgextend -L 800M /dev/vg1/lv1
    增加到800M
    [root@lcr ~]# lvextend -l +15 /dev/vg1/lv1 
    在原有的基础上去增加15存储单元
    //-L是增加到多少容量  -l是增加多少个LE——LE是LV的最小存储单元
    

    命令:
    删除lv : lvremove
    [root@lcr lcr]# lvremove /dev/vg1/lv2
    删除vg: vgremove
    [root@lcr lcr]# vgremove vg1
    删除pv: pvremove
    [root@lcr lcr]# pvremove /dev/sdb

    lvextend
    vgextend
    pvcreate

    查看:
    pvdisplay
    lvdisplay
    vgdisplay
    pvs lvs vgs
    pvscan lvscan vgscan

    改名:
    vgrename
    lvrename

    减少逻辑卷的大小:lvreduce
    减少卷组的大小:vgreduce

    扩展:
    扩容文件系统:
    ext家族:
          resize2fs /dev/lv1

    xfs:
         xfs_growfs /dev/lv1

九、文件系统

    1.常见文件系统类型
本地文件系统(不能远程用)
fat32 ntfs ext3 ext4 xfs
网络文件系统
nfs  cifs gludterfs hdfs ceph(分布式文件系统)

        superblock:记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式等;
        inode:记录文件的属性(文件的元数据metadata),一个文件占用一个inode,同时记录此文件数据所在的block number;
        block:实际存储文件的內容,若文件太大时,会占用多个block。
        Superblock 沒有Superblock ,就沒有filesystem
        inode table: 存储文件的元数据
• 文件的权限(read/write/excute);
• 文件的属主/属组(owner/group);
• 文件的大小;
• 记录文件内容所在的block number (pointer);
    data block:存储文件的实际数据

查看文件系统的信息:
[root@lcr dev]# dumpe2fs /dev/vg1/lv2

重点:*xfs文件系统修复

    xfs_repair
主要用来修复xfs文件系统出现的损坏错误,一些选项含义如下:
        -L 强制日志文件(log)清空。日志文件中包含了一些元数据的修改,加上这个选项会强制清空log。这个选项会可能导致用户文件丢失。
       -n xfs的文件系统进行检查    xfs_repair -n   ==  xfs_check
    xfs_check 以及 xfs_repair -n都可以对xfs文件系统进行检查,但是xfs_check需要很长的时间。
xfs_repair结束后,所有不能到达的inode节点被放进lost+found文件夹
        
使用xfs_repair对文件系统进行修复        

使用xfs_repair之前,要先卸载该文件系统,然后使用xfs_metadump保存元数据信息
[root@lcr ~]# xfs_metadump -o /dev/sdb1 /save/sdb1.metadump
        这步只是对元数据进行了保存,保存在了/save/sdb1.metadump这个文件,没有对数据进行备份,因为如果要备份数据本身的话,需要和数据一样大小的空间,显然这里没有这个空间。        

检查:
[root@lcr ~]# xfs_repair -n /dev/sdb1
会进行一系列的检查。完成之后,进行下面的修复
修复:
[root@lcr ~]# xfs_repair  /dev/sdb1

出现下面的错误:
ERROR: The filesystem has valuable metadata changes in a log which needs to be replayed.  Mount the filesystem to replay the log, and unmount it before re-running xfs_repair.  If you are unable to mount the filesystem, then use the -L option to destroy the log and attempt a repair. Note that destroying the log may cause corruption -- please attempt a mount of the filesystem before doing this.
这个时候,因为之前已经无法挂载了,所以也就不能进行replay的操作了,因此只能进行使用-L选项了。
[root@lcr ~]# xfs_repair -L /dev/sdb1
会进行log的清空,然后一系列的检查,得到下面的结果:
...
Phase 4 - check for duplicate blocks...
        - setting up duplicate extent list...
        - check for inodes claiming duplicate blocks...
        - agno = 0
        - agno = 4
        - agno = 1
        - agno = 8
        - agno = 9
        - agno = 10
        - agno = 11
        - agno = 12
        ...
Phase 5 - rebuild AG headers and trees...
        - reset superblock...
Phase 6 - check inode connectivity...
        - resetting contents of realtime bitmap and summary inodes
        - traversing filesystem ...
        - traversal finished ...
        - moving disconnected inodes to lost+found ...

再执行修复
[root@lcr ~]# xfs_repair /dev/sdb1
执行完后结果,有省略:
Phase 1 - find and verify superblock...
Phase 2 - using internal log
        - zero log...
        - scan filesystem freespace and inode maps...
        - found root inode chunk
Phase 3 - for each AG...
        - scan and clear agi unlinked lists...
        - process known inodes and perform inode discovery...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - agno = 4
        - agno = 5
        ...
        - process newly discovered inodes...
Phase 4 - check for duplicate blocks...
        - setting up duplicate extent list...
        - check for inodes claiming duplicate blocks...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - agno = 4
        - agno = 5
        - agno = 7
        - agno = 8
        ...
Phase 5 - rebuild AG headers and trees...
        - reset superblock...
Phase 6 - check inode connectivity...
        - resetting contents of realtime bitmap and summary inodes
        - traversing filesystem ...
        - traversal finished ...
        - moving disconnected inodes to lost+found ...
Phase 7 - verify and correct link counts...
done
条件时间允许的话,可以再进行个检查,但是考虑到时间太久,这里就不执行最后的检查了。xfs_check耗时较长。
[root@lcr ~]# xfs_check /dev/sdb1
这个时候,进去看原来的/data文件夹的数据,已经出来了。因此可以进行挂载了。