CentOS 7.6.18 Apache Subversion服务器搭建全过程

转载请注明连接。

一、安装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
    #
    
    #
    #   DAV svn
    #   SVNParentPath /var/www/svn
    #
    #   # Limit write permission to list of valid users.
    #   
    #      # Require SSL connection for password protection.
    #      # SSLRequireSSL
    #
    #      AuthType Basic
    #      AuthName "Authorization Realm"
    #      AuthUserFile /path/to/passwdfile
    #      Require valid-user
    #   
    #
    
    
       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
    
    
  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:///svn/REPO 去访问,会提示错误:



Could not open the requested SVN filesystem

猜测原因是改变路径,建立链接之后,没有访问文件系统的权限了。而关闭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/地址,出现如下:

CentOS 7.6.18 Apache Subversion服务器搭建全过程_第1张图片
截屏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')来标识存储卷。

CentOS 7.6.18 Apache Subversion服务器搭建全过程_第2张图片

从上图可知,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服务器搭建全过程)