美文网首页
CentOS 7.6.18 Apache Subversion服

CentOS 7.6.18 Apache Subversion服

作者: 蜗牛Michael | 来源:发表于2020-01-16 11:00 被阅读0次

    转载请注明连接。

    一、安装CentOS 7.6.18 系统

    1. 下载镜像文件:CentOS 7.6.18 64位服务器镜像
    2. 制作光盘启动或是U盘启动:工具采用iSOUltra,具体方式谷歌一下即可。
    3. 系统安装
      • 分区:可以选择一个磁盘进行自动分区,也可以手动分区,自动分区会创建一个PV并加入一个名称为centos的VG中。然后创建home、swap、root三个LV。手动分区就自己划分就行,此处不作详解。
      • 软件选择Software Selection:我选的是Basic Web Server,并勾选了Debugging Tools。
      • 设置root密码,添加用户和设置用户密码
      • 等待安装完成,重启即可。

    1.1 有时候系统无法启动 Non-System disk or disk error. replace and strike any key when ready

    最终解决:

    1. 修改启动顺序,将Hard Disk放在第一位:
    2. 格式化除了系统盘之外的所有磁盘:因为之前有一块其他盘也安装了系统,后来调换了磁盘位置。

    二、搭建Apache + Subversion 服务器

    2.1. 安装httpd服务:

    yum install httpd
    
    # 下面两步无关紧要
    # 移除Apache默认的welcome首页
    sudo sed -i 's/^/#&/g' /etc/httpd/conf.d/welcome.conf
    # 防止Apache显示在“/var/www/html”目录中的文件:
    sudo sed -i "s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/httpd/conf/httpd.conf
    

    2.2. 安装subversion和mod_dav_svn模块:

    sudo yum install subversion mod_dav_svn
    

    2.3. 配置svn

    主要由两个部分:

    1. 安装subversion 的时候会创建配置文件:/etc/sysconfig/svnserve,此文件配置指定svn仓库的根路径。

      [root@localhost autoscripts]# cat /etc/sysconfig/svnserve 
      # OPTIONS is used to pass command-line arguments to svnserve.
      # 
      # Specify the repository location in -r parameter:
      #OPTIONS="-r /var/svn"
      OPTIONS="-r /var/www/svn/"
      
    2. 另外一个apache httpd中提供关于svn模块的配置文件: /etc/httpd/conf.modules.d/10-subversion.conf

      [root@localhost autoscripts]# cat /etc/httpd/conf.modules.d/10-subversion.conf 
      # 加载svn模块
      LoadModule dav_svn_module     modules/mod_dav_svn.so
      LoadModule authz_svn_module   modules/mod_authz_svn.so
      LoadModule dontdothat_module  modules/mod_dontdothat.so
      
      #
      # Example configuration to enable HTTP access for a directory
      # containing Subversion repositories, "/var/www/svn".  Each repository
      # must be both:
      #
      #   a) readable and writable by the 'apache' user, and
      #
      #   b) labelled with the 'httpd_sys_content_t' context if using
      #   SELinux
      #
      
      #
      # To create a new repository "http://localhost/repos/stuff" using
      # this configuration, run as root:
      #
      #   # cd /var/www/svn
      #   # svnadmin create stuff   
      #   # chown -R apache.apache stuff
      #   # chcon -R -t httpd_sys_content_t stuff
      #
      
      #<Location /repos>
      #   DAV svn
      #   SVNParentPath /var/www/svn
      #
      #   # Limit write permission to list of valid users.
      #   <LimitExcept GET PROPFIND OPTIONS REPORT>
      #      # Require SSL connection for password protection.
      #      # SSLRequireSSL
      #
      #      AuthType Basic
      #      AuthName "Authorization Realm"
      #      AuthUserFile /path/to/passwdfile
      #      Require valid-user
      #   </LimitExcept>
      #</Location>
      
      <Location /svn>
         ErrorDocument 404 default
         DAV svn
         SVNParentPath /var/www/svn //svn仓库路径
         SVNListParentPath off
         AuthType Basic
         AuthName "Subversion repositories"
         #AuthUserFile /var/www/svn/usvn-1.0.7/files/htpasswd
         #AuthzSVNAccessFile /var/www/svn/usvn-1.0.7/files/authz
         AuthUserFile /var/www/svn/svn-auth //用户、用户组授权文件
         AuthzSVNAccessFile /var/www/svn/authz //用户密码文件
         Require valid-user
      </Location>
      
    3. 解决启动httpd服务的警告信息, 配置文件/etc/httpd/conf/httpd.conf

      #ServerName www.example.com:80
      ServerName  localhost:80
      

    2.4 创建svn仓库和授权文件

    //创建仓库,名称为my_svn_coderepo
    svnadmin create /var/www/svn/my_svn_coderepo
    //修改所属组
    sudo chown -R apache:apache my_svn_coderepo
    

    创建授权文件:

    //10-subversion.conf中配置的路径
    //AuthUserFile /var/www/svn/svn-auth //用户、用户组授权文件
    //AuthzSVNAccessFile /var/www/svn/authz //用户密码文件
    
    mkdir -p /var/www/svn/svn-auth
    sudo chown root:apache /var/www/svn/svn-auth
    sudo chmod 640 /var/www/svn/svn-auth
    

    给用户和用户组添加授权:

    sudo htpasswd -m /var/www/svn/svn-auth user1
    sudo htpasswd -m /var/www/svn/svn-auth user2
    
    mkdir -p /var/www/svn/authz
    # 添加内容
    sudo vi /var/www/svn/authz
    

    htpasswd命令详解

    authz配置示例:

    //组
    [groups]
    admin=user1
    repo1_user=user2 user3 user4 ...
    repo1_trainee=user3 user5 
    
    [/]
    @admin=rw
    
    [repo1:/]
    @repo1_user=rw //组具有读写权限
    @repo1_trainee=r
    

    2.5 启动httpd服务和svn服务

    sudo systemctl start httpd.service
    sudo systemctl enable httpd.service
    
    sudo systemctl start svnserve.service
    sudo systemctl enable svnserve.service
    

    systemctl 提供服务的管理操作,如:

    restart
    status
    enable
    disable
    stop
    start
    

    2.6 防火墙设置

    注意:此步非常关键,如果不设置,那么将提示找不大page,因为http 80端口的流量被refuse了。

    sudo firewall-cmd --zone=public --permanent --add-service=http
    sudo firewall-cmd --reload
    

    2.7 Selinux 设置

    通常创建仓库是在根路径 /var/www/svn 下创建,这并不会带来访问的问题。但是有时候服务器/var/www/svn下的空间不够,迫使我们要在其他新的磁盘上创建仓库,然后建立一个链接。如下:

    svnadmin create /home/newdisk/repo
    ln -sf /home/newdisk/repo /var/www/svn/REPO
    

    如果通过:http://<server_ip_address>/svn/REPO 去访问,会提示错误:

    <D:error xmlns:D="DAV:" xmlns:m="http://apache.org/dav/xmlns" xmlns:C="svn:">
    <C:error/>
    <m:human-readable errcode="13">Could not open the requested SVN filesystem</m:human-readable>
    </D:error>
    

    猜测原因是改变路径,建立链接之后,没有访问文件系统的权限了。而关闭selinux就可以不受限制。

    关闭Selinux的方法:

    1.查看命令:getenforce
    2.临时关闭【enforcing—->permissive】
      setenforce 0
    3.永久关闭【enforcing—->disabled或者permissive—->disabled】
      vim /etc/selinux/config
      将SELINUX=enforcing改为SELINUX=disabled;设置后保存,需要重启才能生效。
    

    至此,全部配置已经完成,最终效果如下:访问 http://192.168.1.104/svn/eq/地址,出现如下:

    截屏2020-01-1518.40.51.png

    三、LVM 创建大容量LV给SVN仓库使用

    需求场景:有时候一个svn仓库可能非常大,比如10T,而你的服务器磁盘单个容量只有2T或4T,那么此时就需要借助LVM的技术创建动态灵活的分区。

    3.1. LVM简介

    LVM 是 Logical Volume Manager(逻辑卷管理)的简写,LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。

    在LVM管理下的存储卷可以按需要随时改变大小与移除(可能需对文件系统工具进行升级)。LVM也允许按用户组对存储卷进行管理,允许管理员用更直观的名称(如"sales'、 'development')代替物理磁盘名(如'sda'、'sdb')来标识存储卷。

    从上图可知,LVM就是创建一个虚拟的VG卷组,它相当于一个磁盘容器,然后将多个物理卷PV加入到VG,这样VG的容量就变大了。然后再对这个大容量的VG进行逻辑分区,创建1个或多个LV逻辑卷。整个过程就是先融合,再分拆,一来一去,就将原来的物理磁盘分区变为了逻辑卷。并且可以动态的向容器VG中添加和移除PV,以动态的改变整个容器的总容量。

    3.2 LVM基本术语

    LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。首先我们讨论以下几个LVM术语:

    1. 物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
    2. 物理卷(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
    3. 卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
    4. 逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
    5. PE(physical extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
    6. LE(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

    3.3. 安装lvm

    # CentOS 7 安装lvm2
    yum install lvm2
    

    3.4. 创建和管理LVM

    物理磁盘分区

    分区工具:2T以上使用parted工具,2T以下可以使用fdisk工具。这里因为磁盘都是4TB大小,因此采用parted工具进行分区。

    parted命令常用选项。
    当在命令行输入parted后,进入parted命令的交互模式。输入help会显示帮助信息。下面就简单介绍一下常用的功能
    1、Check     简单检查文件系统。建议用其他命令检查文件系统,比如fsck
    2、Help      显示帮助信息
    3、mklabel   创建分区表, 即是使用msdos(MBR)还是使用gpt,或者是其他方式分区表
    4、mkfs      创建文件系统。该命令不支持ext3 格式,因此建议不使用,最好是用parted分好区,然后退出parted交互模式,用其他命令进行分区,比如:mkfs.ext3
    5、mkpart    创建新分区。
            格式:mkpart PART-TYPE  [FS-TYPE]  START  END
                 PART-TYPE 类型主要有primary(主分区), extended(扩展分区), logical(逻辑区). 扩展分区和逻辑分区只对msdos。
                 fs-type   文件系统类型,主要有fs32,NTFS,ext2,ext3等
                 start end 分区的起始和结束位置。
    6、mkpartfs  建立分区及其文件系统。目前还不支持ext3文件系统,因此不建议使用该功能。最后是分好区后,退出parted,然后用其他命令建立文件系统。
    7、print    输出分区信息。该功能有3个选项,
           free 显示该盘的所有信息,并显示磁盘剩余空间
         number 显示指定的分区的信息
            all 显示所有磁盘信息
    8、resize   调整指定的分区的大小。目前对ext3格式支持不是很好,所以不建议使用该功能。
    9、rescue   恢复不小心删除的分区。如果不小心用parted的rm命令删除了一个分区,那么可以通过rescue功能进行恢复。恢复时需要给出分区的起始和结束的位置。然后parted就会在给定的范围内去寻找,并提示恢复分区。
    10、rm      删除分区。命令格式 rm  number 。如:rm 3 就是将编号为3的分区删除
    11、select  选择设备。当输入parted命令后直接回车进入交互模式是,如果有多块硬盘,需要用select 选择要操作的硬盘。如:select /dev/sdb
    12、set     设置标记。更改指定分区编号的标志。标志通常有如下几种:boot  hidden   raid   lvm 等。boot 为引导分区,hidden 为隐藏分区,raid 软raid,lvm 为逻辑分区。如:set 3  boot  on   设置分区号3 为启动分区
    

    注意:LVM管理的分区必须是LVM分区类型。对应下面的toggle 1 lvm 设置步骤。

    [root@localhost svn]# parted /dev/sdb
    GNU Parted 3.1
    使用 /dev/sdb
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) p                                                                
    Model: HP MB4000JFEPB (scsi)
    Disk /dev/sdb: 4001GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt //gpt 支持大磁盘分区
    Disk Flags: 
    
    Number  Start   End     Size    File system  Name  标志
     1      17.4kB  4001MB  4001MB  ext4         sdb1  lvm
    
    (parted) help                                                             
      align-check TYPE N                        check partition N for TYPE(min|opt) alignment
      help [COMMAND]                           print general help, or help on COMMAND
      mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
      mkpart PART-TYPE [FS-TYPE] START END     make a partition
      name NUMBER NAME                         name partition NUMBER as NAME
      print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found partitions, or a particular partition
      quit                                     exit program
      rescue START END                         rescue a lost partition near START and END
      
      resizepart NUMBER END                    resize partition NUMBER
      rm NUMBER                                delete partition NUMBER
      select DEVICE                            choose the device to edit
      disk_set FLAG STATE                      change the FLAG on selected device
      disk_toggle [FLAG]                       toggle the state of FLAG on selected device
      set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
      toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
      unit UNIT                                set the default unit to UNIT
      version                                  display the version number and copyright information of GNU Parted
    (parted) rm 1 //删除之前的分区
    (parted) p                                                                
    Model: HP MB4000JFEPB (scsi) //注意:此磁盘已经创建了分区表,所以没有调用mklabel
    Disk /dev/sdb: 4001GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: 
    
    Number  Start  End  Size  File system  Name  标志
    
    (parted) mkpart                                                           
    分区名称?  []? sdb1   //随便定义一个分区Label名称                                                   
    文件系统类型?  [ext2]? //直接回车                                                  
    起始点? 0%                                                               
    结束点? 100% //可以用百分比表示磁盘的最大容量,因为我这里一个物理磁盘只需要一个分区                                                             
    (parted) p                                                                
    Model: HP MB4000JFEPB (scsi)
    Disk /dev/sdb: 4001GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: 
    
    Number  Start   End     Size    File system  Name  标志
     1      1049kB  4001GB  4001GB               sdb1
    
    (parted) toggle 1 lvm                                                     
    (parted) p
    Model: HP MB4000JFEPB (scsi)
    Disk /dev/sdb: 4001GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: 
    
    Number  Start   End     Size    File system  Name  标志
     1      1049kB  4001GB  4001GB               sdb1  lvm
    
    (parted) quit
    

    总结:整个过程就是:

    mklabel //创建分区表,输入gpt
    mkpart //输入分区label名称,设置分区的容量大小
    toggle 1 lvm //设置为LVM分区类型
    quit //退出
    

    查看信息:

    [root@localhost svn]# fdisk -l /dev/sdb
    WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
    
    磁盘 /dev/sdb:4000.8 GB, 4000787030016 字节,7814037168 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:gpt
    Disk identifier: 7322DA71-AE1C-4317-AE72-27B5539E2206
    
    # 类型就是Linux LVM
    #         Start          End    Size  Type            Name
     1         2048   7814035455    3.7T  Linux LVM       sdb1
    

    不重启读取分区表信息:

    不重启读取分区信息:
    [root@localhost ~]# partprobe
    

    分区格式化:

    //格式化为ext4文件系统
    mkfs.ext4 /dev/sdb1
    

    用pvcreate命令创建PV

    [root@localhost svn]# pvcreate /dev/sdb1
    WARNING: ext4 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y
      Wiping ext4 signature on /dev/sdb1.
      Physical volume "/dev/sdb1" successfully created.
    [root@localhost svn]# pvcreate /dev/sdc1
    WARNING: ext4 signature detected on /dev/sdc1 at offset 1080. Wipe it? [y/n]: y
      Wiping ext4 signature on /dev/sdc1.
      Physical volume "/dev/sdc1" successfully created.
    [root@localhost svn]# pvcreate /dev/sdd1
    WARNING: ext4 signature detected on /dev/sdd1 at offset 1080. Wipe it? [y/n]: y
      Wiping ext4 signature on /dev/sdd1.
      Physical volume "/dev/sdd1" successfully created.
    [root@localhost svn]# 
    [root@localhost svn]# pvdisplay 
      --- Physical volume ---
      PV Name               /dev/sda3
      VG Name               centos
      PV Size               <3.64 TiB / not usable 0   
      Allocatable           yes 
      PE Size               4.00 MiB
      Total PE              953605
      Free PE               1
      Allocated PE          953604
      PV UUID               Au8tWW-O3ad-Rsye-axGh-8B1O-vA1v-rEiR9L
       
      "/dev/sdd1" is a new physical volume of "<3.64 TiB"
      --- NEW Physical volume ---
      PV Name               /dev/sdd1
      VG Name               
      PV Size               <3.64 TiB
      Allocatable           NO
      PE Size               0   
      Total PE              0
      Free PE               0
      Allocated PE          0
      PV UUID               WxJSgH-s5B3-wsaF-oJJQ-nTkg-eVNs-3BNlHq
       
      "/dev/sdc1" is a new physical volume of "<3.64 TiB"
      --- NEW Physical volume ---
      PV Name               /dev/sdc1
      VG Name               
      PV Size               <3.64 TiB
      Allocatable           NO
      PE Size               0   
      Total PE              0
      Free PE               0
      Allocated PE          0
      PV UUID               7ozVr7-rL0u-kSkb-lfT9-SWBu-QY64-fYVUgh
       
      "/dev/sdb1" is a new physical volume of "<3.64 TiB"
      --- NEW Physical volume ---
      PV Name               /dev/sdb1
      VG Name               
      PV Size               <3.64 TiB
      Allocatable           NO
      PE Size               0   
      Total PE              0
      Free PE               0
      Allocated PE          0
      PV UUID               2LLND8-Z1ST-XucC-8JrH-8NC2-BTYO-At4uEx
    

    用vgcreate命令创建VG

    创建卷组名为svn_repo_vg,并将物理卷加入卷组。创建完成VG之后,才能从VG中划分LV。

    [root@localhost svn]# vgcreate svn_repo_vg /dev/sdb1 /dev/sdc1 /dev/sdd1 
      Volume group "svn_repo_vg" successfully created
    [root@localhost svn]# vgdisplay 
      --- Volume group ---
      VG Name               centos
      System ID             
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  4
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                3
      Open LV               3
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               <3.64 TiB
      PE Size               4.00 MiB
      Total PE              953605
      Alloc PE / Size       953604 / <3.64 TiB
      Free  PE / Size       1 / 4.00 MiB
      VG UUID               pDz4nM-O7dF-1HVp-dx5Y-qCnW-baTF-6X9PGe
       
      --- Volume group ---
      VG Name               svn_repo_vg
      System ID             
      Format                lvm2
      Metadata Areas        3
      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                3
      Act PV                3
      VG Size               <10.92 TiB
      PE Size               4.00 MiB
      Total PE              2861583
      Alloc PE / Size       0 / 0   
      Free  PE / Size       2861583 / <10.92 TiB
      VG UUID               10L43F-XhJ3-8hNu-F5VU-zYo6-gcj6-i33EOr
    

    以后要新加物理卷PV的时候也可以通过vgextend 向svn_repo_vg组添加物理卷。

    用lvcreate命令创建LV

    创建完卷组后,就可以创建逻辑卷了(我这里是3块4T的硬盘)。这里我们创建一个逻辑卷,因为想当一个大磁盘来用。

    [root@localhost svn]# lvcreate -L 11T -n svn_logical_volume svn_repo_vg
      Volume group "svn_repo_vg" has insufficient free space (2861583 extents): 2883584 required.
    [root@localhost svn]# 
    [root@localhost svn]# 
    [root@localhost svn]# lvcreate -L 10T -n svn_logical_volume svn_repo_vg
      Logical volume "svn_logical_volume" created.
    

    注意:LV Size不能超过VG的size。

    lvdisplay
    
    ...
      --- Logical volume ---
      LV Path                /dev/svn_repo_vg/svn_logical_volume
      LV Name                svn_logical_volume
      VG Name                svn_repo_vg
      LV UUID                TISO2g-1Bgr-yDe2-ElMu-FtKQ-bWZD-tHnM8B
      LV Write Access        read/write
      LV Creation host, time localhost.localdomain, 2020-01-15 04:19:11 -0500
      LV Status              available
      # open                 0
      LV Size                10.00 TiB
      Current LE             2621440
      Segments               3
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:3
    ...
    

    LV格式化及挂载

    下一步需要对LV进行格式化(使用mksf进行格式化操作),然后LV才能存储资料。

    root@localhost svn]# mkfs.ext4 /dev/svn_repo_vg/svn_logical_volume
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    335544320 inodes, 2684354560 blocks
    134217728 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=4294967296
    81920 block groups
    32768 blocks per group, 32768 fragments per group
    4096 inodes per group
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848, 512000000, 550731776, 644972544, 1934917632, 
        2560000000
    
    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information:            
    完成
    
    [root@localhost svn]# blkid
    /dev/sda2: UUID="d263050c-26dc-4a77-aac1-2b720f594a91" TYPE="xfs" PARTUUID="66102ab5-4d77-4d1c-8e0e-8ef73e8ab5fb" 
    /dev/sda3: UUID="Au8tWW-O3ad-Rsye-axGh-8B1O-vA1v-rEiR9L" TYPE="LVM2_member" PARTUUID="cd5d5817-b7d3-40e6-b7db-d61132ab6621" 
    /dev/sdf: UUID="638bfc4a-adf6-4a83-ba41-5cc15fe4bcb6" TYPE="ext4" 
    /dev/sde: UUID="2123b229-b596-4dcd-bf74-c81736a4f4d2" TYPE="ext4" 
    /dev/mapper/centos-root: UUID="0849139d-9e53-487e-a518-99f6d4d96758" TYPE="xfs" 
    /dev/mapper/centos-swap: UUID="9df3f5b5-0eda-49ef-a7cc-f477268dd4c4" TYPE="swap" 
    /dev/mapper/centos-home: UUID="858a126d-ff31-4c4c-9045-3367fd899e44" TYPE="xfs" 
    /dev/sdb1: UUID="2LLND8-Z1ST-XucC-8JrH-8NC2-BTYO-At4uEx" TYPE="LVM2_member" PARTLABEL="sdb1" PARTUUID="e0066e55-094c-4419-b0af-e3a375deb90e" 
    /dev/sdc1: UUID="7ozVr7-rL0u-kSkb-lfT9-SWBu-QY64-fYVUgh" TYPE="LVM2_member" PARTLABEL="sdc1" PARTUUID="240365c1-7c54-410a-90df-29b69a913281" 
    /dev/sdd1: UUID="WxJSgH-s5B3-wsaF-oJJQ-nTkg-eVNs-3BNlHq" TYPE="LVM2_member" PARTLABEL="sdd1" PARTUUID="a614748c-c0f6-47a6-8acc-10720dbb4167" 
    /dev/sda1: PARTUUID="9f2bb6da-6e4e-4347-a525-e83aadfef07a" 
    /dev/mapper/svn_repo_vg-svn_logical_volume: UUID="95b7be8a-f146-4ea3-93b7-16678db325f4" TYPE="ext4" 
    

    至此,将3块磁盘分区格式化、创建物理卷PV、并将3个PV加入一个svn_repo_vg的VG,然后再从VG中分出一个LV逻辑卷,最后对逻辑卷LV进行格式化,最终LV看起来就像是一个虚拟的大硬盘。

    挂载LV到指定挂载点

    [root@localhost svn]# mkdir /svn_repo
    [root@localhost svn]# mount /dev/svn_repo_vg/svn_logical_volume /svn_repo/
    [root@localhost svn]# df -h
    文件系统                                    容量  已用  可用 已用% 挂载点
    /dev/mapper/centos-root                      50G  1.6G   49G    4% /
    devtmpfs                                     32G     0   32G    0% /dev
    tmpfs                                        32G     0   32G    0% /dev/shm
    tmpfs                                        32G  9.5M   32G    1% /run
    tmpfs                                        32G     0   32G    0% /sys/fs/cgroup
    /dev/mapper/centos-home                     3.6T   47G  3.6T    2% /home
    /dev/sda2                                  1014M  148M  867M   15% /boot
    tmpfs                                       6.3G     0  6.3G    0% /run/user/0
    /dev/mapper/svn_repo_vg-svn_logical_volume   10T   73M  9.5T    1% /svn_repo
    

    扩容和删除

    1. 扩容

      parted /dev/newdisk //进行新的物理磁盘分区,LVM分区
      partprobe
      mkfs.ext4 /dev/newDisk1 //格式化LVM分区
      
      pvcreate /dev/newDisk1 //创建PV
      vgdisplay
      vgextend svn_repo_vg /dev/newDisk1 //向vg中添加新的pv
      lvdisplay
      lvextend -L 13T /dev/svn_repo_vg/svn_logical_volume //扩展LV svn_logical_volume
      resize2fs /dev/svn_repo_vg/svn_logical_volume //执行重设大小,对于当前正在使用的svn_logical_volume有效
      
      df -h //查看挂载与容量情况
      
    2. 删除

      //从卷组里删除PV
      1、先查看VG里的PV情况: vgdisplay -v
      2、从VG里删除PV: vgreduce svn_repo_vg /dev/sdb1
      3、检查确认是否删除PV: vgdisplay -v svn_repo_vg | grep "/dev/sdb1"
      
      //删除PV
       1、确认pv信息 pvdisplay
           "/dev/sdb1" is a new physical volume of "290.24 MB"
           这里的/dev/sdb1就是要删除的pv
       2、删除pv 
          pvremove  /dev/sdb1
       3、确认pv是否成功删除
          pvdisplay | grep "/dev/sdb1"
      
      //删除硬盘上的LVM分区
       1、parted /dev/sdb
       2、parted (m for help): p 
       3、parted (m for help): rm 1
       4、parted (m for help): p <--在显示分区情况,发现已经没了
       5、 Command (m for help): w
      
      //删除lv
      1、卸载挂载 umount /dev/vg00/lv01
      2、移除lv lvremove  /dev/vg00/lv01
      3、确认是否成功移除lv
          lvdisplay | grep "/dev/vg00/lv01"
      
    3. 减小LV容量:缩小LV需要事先知道LV中的数据容量大小,缩小容量值不应超过剩余空间容量,而且要知道减少LV容量后的新大小。可以通过lvscan来查看LV容量,通过vgdisplay来查看剩余容量。

      //lvreduce减小LV容量
      lvreduce -L 8TG  /dev/svn_repo_vg/svn_logical_volume
      

    3.5 错误显示 关于centos7的LVM出现[unknown]的PV错误

    vgdisplay/lvdisplay/pvdisplay命令均会提示找不到物理卷设备。

    解决:yum install lvm2 安装lvm2

    四、FAQ

    4.1. SVN Error: Unexpected HTTP status 413 Request Entity Too Large

    修改:vim /etc/httpd/conf/httpd.conf

    增加如下内容:

    LimitXMLRequestBody 0
    LimitRequestBody 0
    

    相关文章

      网友评论

          本文标题:CentOS 7.6.18 Apache Subversion服

          本文链接:https://www.haomeiwen.com/subject/fakfzctx.html