• Linux磁盘管理及Lvm


    1. 硬盘接口

    IDE:

    SATA:常用;

    SCSI:主要用于高端服务器,linux默认;

    SAS

    2. 硬盘种类

    SATA硬盘:串口硬盘,有较强的纠错能力;

    SCSI 硬盘:默认硬盘;

    SAS 硬盘

    3. 分区符

    3.1   MBR:Master Boot Record,硬盘主引导记录

    主引导扇区总共512字节,

    组成:

           1)主引导程序,boot loader,占446字节;

           2)硬盘分区表,DPT,Disk Partition table,占64字节;

       3)分区有效标志,55AA,magic number,占2字节。

    3.2  分区

      分区编号:主分区1-4;逻辑分区5…..;

      主分区用来启动操作系统,存放操作系统的启动或操作系统,/boot分区最好放在主分区;

    逻辑分区必须建立在扩展分区之上,扩展分区是不能使用的,它只作为逻辑分区的容器存在;

    真正存放数据的是主分区和逻辑分区,逻辑分区存放着大量数据;

    主分区+扩展分区最多只能有4个;扩展分区可以是0个、1个,最多1个;逻辑分区可以是0个,多个。

      使用fdisk对磁盘进行操作、分区、格式化。

    3.3 分区命名方式

    查看硬盘:ls /dev/sd*,若没有,用partprobe刷新一下

    分区命名方式:/dev/sd[a-z]n

    其中:

      a-z表示设备序号,如sda表示第一块scsi硬盘,sdb表示第二块scsi硬盘;

      n表示每块磁盘上划分的磁盘编号。

     

    实验:

    新建一个磁盘,用查看磁盘命令查看一下新建的磁盘

     

    4.文件系统与数据资料

      文件系统:合理规划硬盘;在硬盘中执行文件建立、写入、读取、修改、转存、与控制。必须格式化文件系统才能规划数据。

    常用文件系统:

      Ext3:日志文件系统,可以在系统异常宕机时避免文件系统丢失,自动修复数据的不一致与错误;硬盘容量较大时修复时间较长。

      Ext4:Ext3改进版,支持的存储容量高达1EB,能够有无限多的子目录,能够批量分配block块提高读写效率。

      XFS:高性能日志文件系统,默认文件系统,宕机后能够快速恢复,可恢复可能破坏的文件,储存容量极高,为18EB,读写效率极高。

    5. fdisk管理分区

    fdisk是linux发行版本中最常用的分区工具;

    格式:fdisk [选项] device

     

    m

    查看全部可用的参数

    t

    改变某个分区的类型

    n

    添加新分区

    p

    查看分区信息

    d

    删除某个分区信息

    w

    保存并退出

    l

    列出所有可用的分区类型

    q

    不保存直接退出

    实验: 新建分区。

    直接用fdisk命令更改分区

     

    键入n,新建分区

     

    默认设置直至指定磁盘大小为5G(前面加+号)

     

    键入p,查看分区信息

     

    w,保存退出,再查看新建分区

     

    sbd1直接不可用,必须给它创建文件系统

    格式: mkfs.xfs /dev/sdb1  (默认文件格式为xfs)

     

    文件系统创建完毕,但现在还不能使用,需要将该分区挂载(mount)。创建一个目录,将sdb1挂载到该目录下,查看磁盘信息。然后再cd到/zxj,就可以在/zxj下写东西了。

    格式: mount 分区 路径(挂载点)

     

    卸载用命令umount,该命令由root执行,格式:umount 挂载点

     

    磁盘被挂载,但写入其内的内容并没有被删除,重新挂载后又可追回。

     

    实验:扩展分区,逻辑分区。

    卸载原分区或新建分区(扩展分区为e)

     

    逻辑分区建立在扩展分区上,在此指定扩展分区大小为10G(前面一定要有+号)

    键入p查看分区

     

    w保存,用partprobe刷新,查看分区

     

    在扩展分区上建立逻辑分区

     

    可以看到在扩展分区新建选项出现了逻辑分区,逻辑分区分区号从5开始:

    新建逻辑分区,指定大小为3G(不能超过扩展分区大小)

     

    w保存,查看分区

     

    指定文件系统(格式化)

     

    挂载/zxj,然后将逻辑分区sdb5挂载到/zxj下,查看有sdb5分区,就可以给sdb5写内容了

     

    但挂载到zxj下的分区在系统重启后会掉,所以将磁盘命令写到文件下面,如

     

    格式:分区 挂载点 文件类型 默认值 不备份(第一个0) 不自检(第二个0)

     

    保存退出。

    现在来检测分区的自动挂载,先将分区挂载,再使用mount -a自动检测/etc/fstab 下的所有未挂载的分区进行挂载

     

    但写到文件/etc/fstab下系统重启起不来,写到文件/etc/rc.local下执行命令

     

    保存退出后给予指定的执行权限

     

    重启之后可以看到分区自动挂载上了

    6. 添加交换分区

    内存不够时使用交换分区,但交换分区的读写速度要比物理分区的慢,一般不用。

    交换分区的大小一般为真实物理内存的1.5-2倍,交换分区既可以做主分区,又可以做逻辑分区,以大小为2G的交换分区做实验,新建交换分区保存并退出。

     

    指定文件系统:mkswap 分区

     

    挂载swap

    Swapon

     

    卸载swapoff

    格式 :swapoff 选项

    选项有:

    卸载掉刚才的sdb3分区

     

    将swap交换分区完全挂掉,加选项-a

     

    swap写在/etc/fstab或/etc/rc.local下开机自启。

    7.LVM逻辑卷管理器

    7.1  

    管理器是linux为了解决硬盘设备在创建分区后不易修改分区大小的缺陷而对硬盘分区进行管理的一种机制,LVM是在线动态扩容,在硬盘分区和文件系统之间添加一个逻辑层,抽象一个卷组,将多块硬盘进行卷组合并,实现对硬盘分区的动态调整,LVM的技术构架:

     

    7.2 LVM 常用术语

       介质(The physical media):LVM存储介质可以是磁盘分区,整个磁盘,RAID阵列或SAN磁盘,设备必须初始化为LVM物理卷,才能与LVM结合使用;

      PV(physical volume)  :物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数,创建物理卷它可以用硬盘分区,也可以用硬盘本身;

      卷组VG(Volume Group)  :一个LVM卷组由一个或多个物理卷组成。

      逻辑卷LV(logical volume)  :LV建立在VG之上,可以在LV之上建立文件系统。

      PE(physical extents)  :PV物理卷中可以分配的最小存储单元,PE的大小是可以指定的,默认为4MB。

      LE(logical extent)  : lV逻辑卷中可以分配的最小存储单元,在同一个卷组中,LE的大小和PE是相同的,并且一一对应

    7.3 部署逻辑卷

    常用LVM部署命令:

    功能/命令

    物理卷管理

    卷组管理

    逻辑卷管理

    扫描

    pvscan

    vgsan

    lvscan

    建立

    pvcreate

    vgcreate

    lvcreate

    显示

    pvdisplay

    vgdisplay

    lvdisplay

    删除

    pvremove

    vgremove

    lvremove

    扩展

    vgextend

    lvextend

    缩小

    vgreduce

    lvreduce

    步骤:

    先添加两块磁盘用作实验,重启系统后查看磁盘

     

    让两块硬盘支持LVM技术,将两磁盘创建为物理卷

     

    创建卷组 :vgcreate 卷组名 路径

     

    查看卷组信息

      

    创建逻辑卷:需要注意切割单位的问题。在对逻辑卷进行切割时有两种计量单位,第一种是以容量为单位,所使用的参数为-L。例如,使用 -L 50M生成一个大小为150MB的逻辑卷。另外一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为4MB。例如,使用-l 37可以生成一个大小为37×4MB=148MB的逻辑卷。-n 表示指定逻辑卷名。

    [root@wrl zxj]# lvcreate -n lv_zxj  -L 100M vg_zxj
    logical volume "lv_zxj" created.

    -n lv_zxj:指定逻辑卷名;vg_zxj:逻辑卷是从卷组vg_zxj分割出100M大小。

    逻辑卷格式化文件系统:

    /dev/vg_zxj/lv_zxj:逻辑卷在卷组下

     

    挂载使用:将逻辑卷组挂载到新建的/zxj目录下,并查看卷组

     

    写在/etc/fstab或/etc/rc.local下开机自启。

    [zxj@localhost ~]$ su
    Password:
    [root@localhost zxj]# ls /dev/sd*                               #查看磁盘
    /dev/sda   /dev/sda2  /dev/sdb  /dev/sdd
    /dev/sda1  /dev/sda3  /dev/sdc  /dev/sde
    [root@localhost zxj]# pvcreate /dev/sd{b,c}                     #创建物理卷
      Physical volume "/dev/sdb" successfully created.
      Physical volume "/dev/sdc" successfully created.
    [root@localhost zxj]# vgcreate vg_zxj /dev/sd{b,c}              #创建卷组
      Volume group "vg_zxj" successfully created
    [root@localhost zxj]# vgdisplay vg_zxj                          #查看卷组
    --- Volume group ---
      VG Name               vg_zxj
      System iD            
      Format                lvm2
      Metadata areas        2
      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                2
      act PV                2
      VG Size               39.99 GiB
      PE Size               4.00 MiB
      Total PE              10238
      alloc PE / Size       0 / 0  
      Free  PE / Size       10238 / 39.99 GiB
      VG UUiD               owjXWk-QJ3q-dEjQ-gfaX-5Oin-1dOY-zeiVaR
    [root@localhost zxj]# lvcreate -n lv_zxj -L 500M vg_zxj          #创建逻辑卷
      logical volume "lv_zxj" created.
    [root@localhost zxj]# mkfs.xfs /dev/vg_zxj/lv_zxj                #格式化文件系统
    meta-data=/dev/vg_zxj/lv_zxj     isize=512    agcount=4, agsize=32000 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=128000, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=855, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    [root@localhost zxj]# mkdir /zxj                                 #新建挂载点
    [root@localhost zxj]# mount /dev/vg_zxj/lv_zxj /zxj              #挂载逻辑卷
    [root@localhost zxj]# df -h
    /dev/mapper/vg_zxj-lv_zxj  497M   26M  472M   6% /zxj
    [root@localhost zxj]# echo "dev/vg_zxj/lv_zxj xfs defaults 0 0 ">> /etc/fstab
    #写到文件下,开机自动挂载 [root@localhost zxj]# echo
    "mount /dev/vg_zxj/lv_zxj /zxj">> /etc/rc.local #写到文件下,开机自动挂载

    8. linux扩容逻辑卷Ext4格式 

    步骤:

    创建ext4格式逻辑卷:
    [root@localhost zxj]# lvcreate -l 500M -n ext4_zxj vg_zxj         #逻辑卷大小为500M
      logical volume "ext4_zxj" created.
    [root@localhost zxj]#0 mkfs.ext4 /dev/vg_zxj/ext4_zxj             #格式化文件系统为ext4
    [root@localhost zxj]# mkdir /zxj2
    [root@localhost zxj]# mount /dev/vg_zxj/ext4_zxj /zxj2            #挂载
    [root@localhost zxj]# df -h
    /dev/mapper/vg_zxj-ext4_zxj  477M  2.3M  445M   1% /zxj2
    
    卸载: [root@localhost zxj]# umount
    /zxj2 扩容: [root@localhost zxj]# lvextend -l 700M /dev/vg_zxj/ext4_zxj #外层扩容 Size of logical volume vg_zxj/ext4_zxj changed from 500.00 MiB (125 extents) to 700.00 MiB (175 extents). logical volume vg_zxj/ext4_zxj successfully resized. [root@localhost zxj]# resize2fs -f /dev/vg_zxj/ext4_zxj #内层缩容 resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vg_zxj/ext4_zxj to 716800 (1k) blocks. The filesystem on /dev/vg_zxj/ext4_zxj is now 716800 blocks long. [root@localhost zxj]# e2fsck -f /dev/vg_zxj/ext4_zxj #查看磁盘完整性 e2fsck 1.42.9 (28-Dec-2013) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/vg_zxj/ext4_zxj: 11/178816 files (0.0% non-contiguous), 33345/716800 blocks [root@localhost zxj]# mount /dev/vg_zxj/ext4_zxj /zxj2 #挂载 3[root@localhost zxj]# df -h #查看 /dev/mapper/vg_zxj-ext4_zxj 670M 2.5M 629M 1% /zxj2 #扩容到700M


    9. linux
    缩小逻辑卷 

    [root@localhost zxj]# umount /zxj2                             #保证数据安全,卸载
    [root@localhost zxj]# e2fsck -f /dev/vg_zxj/ext4_zxj           #查看系统柜完整性
    [root@localhost zxj]# resize2fs /dev/vg_zxj/ext4_zxj 200M      #内层大小重置
    resize2fs 1.42.9 (28-Dec-2013)
    Resizing the filesystem on /dev/vg_zxj/ext4_zxj to 204800 (1k) blocks.
    The filesystem on /dev/vg_zxj/ext4_zxj is now 204800 blocks long.
    [root@localhost zxj]# lvreduce -l 200M /dev/vg_zxj/ext4_zxj    #逻辑卷外层缩容
    WaRNiNG: Reducing active logical volume to 200.00 MiB.
      THiS MaY DESTROY YOUR DaTa (filesystem etc.)
    Do you really want to reduce vg_zxj/ext4_zxj? [y/n]: y
      Size of logical volume vg_zxj/ext4_zxj changed from 700.00 MiB (175 extents) to 200.00 MiB (50 extents).
      logical volume vg_zxj/ext4_zxj successfully resized.
    [root@localhost zxj]# mount /dev/vg_zxj/ext4_zxj /zxj2         #挂载
    [root@localhost zxj]# df -h
    /dev/mapper/vg_zxj-ext4_zxj  186M  1.6M  171M   1% /zxj2       #缩容到200M

    10 linux扩容逻辑卷xfs格式

      xfs格式只能扩容,不能减小;

      xfs格式无需卸载,支持在线扩容。

    步骤:

    [root@localhost zxj]# pvcreate /dev/sd{b,c}                  #创建物理卷
      Physical volume "/dev/sdb" successfully created.   
      Physical volume "/dev/sdc" successfully created.
    [root@localhost zxj]# vgcreate vg_zxj /dev/sd{b,c}           #创建卷组
      Volume group "vg_zxj" successfully created
    [root@localhost zxj]# lvcreate -n lv_zxj  -L 500M vg_zxj     #创建逻辑卷
    WARNING: xfs signature detected on /dev/vg_zxj/lv_zxj at offset 0. Wipe it? [y/n]: y
      Wiping xfs signature on /dev/vg_zxj/lv_zxj.
      logical volume "lv_zxj" created.
    [root@localhost zxj]# mkfs.xfs /dev/vg_zxj/lv_zxj            #格式化文件系统
    [root@localhost zxj]# mkdir /zxj
    mkdir: cannot create directory ‘/zxj’: File exists
    [root@localhost zxj]# mount /dev/vg_zxj/lv_zxj /zxj          #挂载
    [root@localhost zxj]# df -h
    /dev/mapper/vg_zxj-lv_zxj  497M   26M  472M   6% /zxj
    [root@localhost zxj]# lvextend –L 700M /dev/vg_zxj/lv_zxj    #逻辑卷扩展
      Size of logical volume vg_zxj/lv_zxj changed from 500.00 MiB (125 extents) to 700.00 MiB (175 extents).
      logical volume vg_zxj/lv_zxj successfully resized.
    [root@localhostzxj]#xfs_growfs  /dev/vg_zxj/lv_zxj           #在线扩容                        
    meta-data=/dev/mapper/vg_zxj-lv_zxj  isize=512    agcount=4, agsize=32000 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0 spinodes=0
    data     =                       bsize=4096   blocks=128000, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal               bsize=4096   blocks=855, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    data blocks changed from 128000 to 179200
    [root@localhost zxj]# df -h                                  #查看卷组,成功扩容
    /dev/mapper/vg_zxj-lv_zxj  697M   26M  672M   4% /zxj

    11. linux删除逻辑卷

    步骤:

    [root@localhost zxj]# umount /zxj2                         #卸载
    [root@localhost zxj]# lvremove /dev/vg_zxj/ext4_zxj        #删除逻辑卷
    Do you really want to remove active logical volume vg_zxj/ext4_zxj? [y/n]: y
      logical volume "ext4_zxj" successfully removed
    [root@localhost zxj]# vgremove vg_zxj                      #删除卷组
    Do you really want to remove volume group "vg_zxj" containing 1 logical volumes? [y/n]: y
    Do you really want to remove active logical volume vg_zxj/lv_zxj? [y/n]: y
      logical volume "lv_zxj" successfully removed
      Volume group "vg_zxj" successfully removed
    [root@localhost zxj]# pvremove /dev/sd{b,c}                #删除物理卷
      labels on physical volume "/dev/sdb" successfully wiped.
      labels on physical volume "/dev/sdc" successfully wiped.
  • 相关阅读:
    BZOJ 1101 [POI2007]Zap
    BZOJ 2005 [Noi2010]能量采集
    BZOJ 1053 [HAOI2007]反素数ant
    BZOJ 4321 queue2
    ZOJ 1456 Minimum Transport Cost(Floyd算法求解最短路径并输出最小字典序路径)
    POJ 3268 Silver Cow Party(Dijkstra算法求解来回最短路问题)
    Trie(字典树)解析及其在编程竞赛中的典型应用举例
    POJ 3037 Skiing(如何使用SPFA求解二维最短路问题)
    POJ 1724 ROADS(使用邻接表和优先队列的BFS求解最短路问题)
    POJ 1860 Currency Exchange(如何Bellman-Ford算法判断图中是否存在正环)
  • 原文地址:https://www.cnblogs.com/ajunyu/p/10878424.html
Copyright © 2020-2023  润新知