CentOS 7.6.18 Apache Subversion服務(wù)器搭建全過程

轉(zhuǎn)載請注明連接。

一、安裝CentOS 7.6.18 系統(tǒng)

  1. 下載鏡像文件:CentOS 7.6.18 64位服務(wù)器鏡像
  2. 制作光盤啟動或是U盤啟動:工具采用iSOUltra,具體方式谷歌一下即可。
  3. 系統(tǒng)安裝
    • 分區(qū):可以選擇一個磁盤進行自動分區(qū),也可以手動分區(qū),自動分區(qū)會創(chuàng)建一個PV并加入一個名稱為centos的VG中。然后創(chuàng)建home、swap、root三個LV。手動分區(qū)就自己劃分就行,此處不作詳解。
    • 軟件選擇Software Selection:我選的是Basic Web Server,并勾選了Debugging Tools。
    • 設(shè)置root密碼,添加用戶和設(shè)置用戶密碼
    • 等待安裝完成,重啟即可。

1.1 有時候系統(tǒng)無法啟動 Non-System disk or disk error. replace and strike any key when ready

最終解決:

  1. 修改啟動順序,將Hard Disk放在第一位:
  2. 格式化除了系統(tǒng)盤之外的所有磁盤:因為之前有一塊其他盤也安裝了系統(tǒng),后來調(diào)換了磁盤位置。

二、搭建Apache + Subversion 服務(wù)器

2.1. 安裝httpd服務(wù):

yum install httpd

# 下面兩步無關(guān)緊要
# 移除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 的時候會創(chuàng)建配置文件:/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中提供關(guān)于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 //用戶、用戶組授權(quán)文件
       AuthzSVNAccessFile /var/www/svn/authz //用戶密碼文件
       Require valid-user
    </Location>
    
  3. 解決啟動httpd服務(wù)的警告信息, 配置文件/etc/httpd/conf/httpd.conf

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

2.4 創(chuàng)建svn倉庫和授權(quán)文件

//創(chuàng)建倉庫,名稱為my_svn_coderepo
svnadmin create /var/www/svn/my_svn_coderepo
//修改所屬組
sudo chown -R apache:apache my_svn_coderepo

創(chuàng)建授權(quán)文件:

//10-subversion.conf中配置的路徑
//AuthUserFile /var/www/svn/svn-auth //用戶、用戶組授權(quán)文件
//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

給用戶和用戶組添加授權(quán):

sudo htpasswd -m /var/www/svn/svn-auth user1
sudo htpasswd -m /var/www/svn/svn-auth user2

mkdir -p /var/www/svn/authz
# 添加內(nèi)容
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 //組具有讀寫權(quán)限
@repo1_trainee=r

2.5 啟動httpd服務(wù)和svn服務(wù)

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

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

systemctl 提供服務(wù)的管理操作,如:

restart
status
enable
disable
stop
start

2.6 防火墻設(shè)置

注意:此步非常關(guān)鍵,如果不設(shè)置,那么將提示找不大page,因為http 80端口的流量被refuse了。

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

2.7 Selinux 設(shè)置

通常創(chuàng)建倉庫是在根路徑 /var/www/svn 下創(chuàng)建,這并不會帶來訪問的問題。但是有時候服務(wù)器/var/www/svn下的空間不夠,迫使我們要在其他新的磁盤上創(chuàng)建倉庫,然后建立一個鏈接。如下:

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>

猜測原因是改變路徑,建立鏈接之后,沒有訪問文件系統(tǒng)的權(quán)限了。而關(guān)閉selinux就可以不受限制。

關(guān)閉Selinux的方法:

1.查看命令:getenforce
2.臨時關(guān)閉【enforcing—->permissive】
  setenforce 0
3.永久關(guān)閉【enforcing—->disabled或者permissive—->disabled】
  vim /etc/selinux/config
  將SELINUX=enforcing改為SELINUX=disabled;設(shè)置后保存,需要重啟才能生效。

至此,全部配置已經(jīng)完成,最終效果如下:訪問 http://192.168.1.104/svn/eq/地址,出現(xiàn)如下:

截屏2020-01-1518.40.51.png

三、LVM 創(chuàng)建大容量LV給SVN倉庫使用

需求場景:有時候一個svn倉庫可能非常大,比如10T,而你的服務(wù)器磁盤單個容量只有2T或4T,那么此時就需要借助LVM的技術(shù)創(chuàng)建動態(tài)靈活的分區(qū)。

3.1. LVM簡介

LVM 是 Logical Volume Manager(邏輯卷管理)的簡寫,LVM將一個或多個硬盤的分區(qū)在邏輯上集合,相當于一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續(xù)將其它的硬盤的分區(qū)加入其中,這樣可以實現(xiàn)磁盤空間的動態(tài)管理,相對于普通的磁盤分區(qū)有很大的靈活性。

在LVM管理下的存儲卷可以按需要隨時改變大小與移除(可能需對文件系統(tǒng)工具進行升級)。LVM也允許按用戶組對存儲卷進行管理,允許管理員用更直觀的名稱(如"sales'、 'development')代替物理磁盤名(如'sda'、'sdb')來標識存儲卷。

從上圖可知,LVM就是創(chuàng)建一個虛擬的VG卷組,它相當于一個磁盤容器,然后將多個物理卷PV加入到VG,這樣VG的容量就變大了。然后再對這個大容量的VG進行邏輯分區(qū),創(chuàng)建1個或多個LV邏輯卷。整個過程就是先融合,再分拆,一來一去,就將原來的物理磁盤分區(qū)變?yōu)榱诉壿嬀?。并且可以動態(tài)的向容器VG中添加和移除PV,以動態(tài)的改變整個容器的總?cè)萘俊?/p>

3.2 LVM基本術(shù)語

LVM是在磁盤分區(qū)和文件系統(tǒng)之間添加的一個邏輯層,來為文件系統(tǒng)屏蔽下層磁盤分區(qū)布局,提供一個抽象的盤卷,在盤卷上建立文件系統(tǒng)。首先我們討論以下幾個LVM術(shù)語:

  1. 物理存儲介質(zhì)(The physical media):這里指系統(tǒng)的存儲設(shè)備:硬盤,如:/dev/hda1、/dev/sda等等,是存儲系統(tǒng)最低層的存儲單元。
  2. 物理卷(physical volume):物理卷就是指硬盤分區(qū)或從邏輯上與磁盤分區(qū)具有同樣功能的設(shè)備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(zhì)(如分區(qū)、磁盤等)比較,卻包含有與LVM相關(guān)的管理參數(shù)。
  3. 卷組(Volume Group):LVM卷組類似于非LVM系統(tǒng)中的物理硬盤,其由物理卷組成??梢栽诰斫M上創(chuàng)建一個或多個“LVM分區(qū)”(邏輯卷),LVM卷組由一個或多個物理卷組成。
  4. 邏輯卷(logical volume):LVM的邏輯卷類似于非LVM系統(tǒng)中的硬盤分區(qū),在邏輯卷之上可以建立文件系統(tǒng)(比如/home或者/usr等)。
  5. PE(physical extent):每一個物理卷被劃分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認為4MB。
  6. LE(logical extent):邏輯卷也被劃分為被稱為LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,并且一一對應(yīng)。

3.3. 安裝lvm

# CentOS 7 安裝lvm2
yum install lvm2

3.4. 創(chuàng)建和管理LVM

物理磁盤分區(qū)

分區(qū)工具:2T以上使用parted工具,2T以下可以使用fdisk工具。這里因為磁盤都是4TB大小,因此采用parted工具進行分區(qū)。

parted命令常用選項。
當在命令行輸入parted后,進入parted命令的交互模式。輸入help會顯示幫助信息。下面就簡單介紹一下常用的功能
1、Check     簡單檢查文件系統(tǒng)。建議用其他命令檢查文件系統(tǒng),比如fsck
2、Help      顯示幫助信息
3、mklabel   創(chuàng)建分區(qū)表, 即是使用msdos(MBR)還是使用gpt,或者是其他方式分區(qū)表
4、mkfs      創(chuàng)建文件系統(tǒng)。該命令不支持ext3 格式,因此建議不使用,最好是用parted分好區(qū),然后退出parted交互模式,用其他命令進行分區(qū),比如:mkfs.ext3
5、mkpart    創(chuàng)建新分區(qū)。
        格式:mkpart PART-TYPE  [FS-TYPE]  START  END
             PART-TYPE 類型主要有primary(主分區(qū)), extended(擴展分區(qū)), logical(邏輯區(qū)). 擴展分區(qū)和邏輯分區(qū)只對msdos。
             fs-type   文件系統(tǒng)類型,主要有fs32,NTFS,ext2,ext3等
             start end 分區(qū)的起始和結(jié)束位置。
6、mkpartfs  建立分區(qū)及其文件系統(tǒng)。目前還不支持ext3文件系統(tǒng),因此不建議使用該功能。最后是分好區(qū)后,退出parted,然后用其他命令建立文件系統(tǒng)。
7、print    輸出分區(qū)信息。該功能有3個選項,
       free 顯示該盤的所有信息,并顯示磁盤剩余空間
     number 顯示指定的分區(qū)的信息
        all 顯示所有磁盤信息
8、resize   調(diào)整指定的分區(qū)的大小。目前對ext3格式支持不是很好,所以不建議使用該功能。
9、rescue   恢復不小心刪除的分區(qū)。如果不小心用parted的rm命令刪除了一個分區(qū),那么可以通過rescue功能進行恢復?;謴蜁r需要給出分區(qū)的起始和結(jié)束的位置。然后parted就會在給定的范圍內(nèi)去尋找,并提示恢復分區(qū)。
10、rm      刪除分區(qū)。命令格式 rm  number 。如:rm 3 就是將編號為3的分區(qū)刪除
11、select  選擇設(shè)備。當輸入parted命令后直接回車進入交互模式是,如果有多塊硬盤,需要用select 選擇要操作的硬盤。如:select /dev/sdb
12、set     設(shè)置標記。更改指定分區(qū)編號的標志。標志通常有如下幾種:boot  hidden   raid   lvm 等。boot 為引導分區(qū),hidden 為隱藏分區(qū),raid 軟raid,lvm 為邏輯分區(qū)。如:set 3  boot  on   設(shè)置分區(qū)號3 為啟動分區(qū)

注意:LVM管理的分區(qū)必須是LVM分區(qū)類型。對應(yīng)下面的toggle 1 lvm 設(shè)置步驟。

[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 支持大磁盤分區(qū)
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 //刪除之前的分區(qū)
(parted) p                                                                
Model: HP MB4000JFEPB (scsi) //注意:此磁盤已經(jīng)創(chuàng)建了分區(qū)表,所以沒有調(diào)用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                                                           
分區(qū)名稱?  []? sdb1   //隨便定義一個分區(qū)Label名稱                                                   
文件系統(tǒng)類型?  [ext2]? //直接回車                                                  
起始點? 0%                                                               
結(jié)束點? 100% //可以用百分比表示磁盤的最大容量,因為我這里一個物理磁盤只需要一個分區(qū)                                                             
(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

總結(jié):整個過程就是:

mklabel //創(chuàng)建分區(qū)表,輸入gpt
mkpart //輸入分區(qū)label名稱,設(shè)置分區(qū)的容量大小
toggle 1 lvm //設(shè)置為LVM分區(qū)類型
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 字節(jié),7814037168 個扇區(qū)
Units = 扇區(qū) of 1 * 512 = 512 bytes
扇區(qū)大小(邏輯/物理):512 字節(jié) / 512 字節(jié)
I/O 大小(最小/最佳):512 字節(jié) / 512 字節(jié)
磁盤標簽類型:gpt
Disk identifier: 7322DA71-AE1C-4317-AE72-27B5539E2206

# 類型就是Linux LVM
#         Start          End    Size  Type            Name
 1         2048   7814035455    3.7T  Linux LVM       sdb1

不重啟讀取分區(qū)表信息:

不重啟讀取分區(qū)信息:
[root@localhost ~]# partprobe

分區(qū)格式化:

//格式化為ext4文件系統(tǒng)
mkfs.ext4 /dev/sdb1

用pvcreate命令創(chuàng)建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命令創(chuàng)建VG

創(chuàng)建卷組名為svn_repo_vg,并將物理卷加入卷組。創(chuàng)建完成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命令創(chuàng)建LV

創(chuàng)建完卷組后,就可以創(chuàng)建邏輯卷了(我這里是3塊4T的硬盤)。這里我們創(chuàng)建一個邏輯卷,因為想當一個大磁盤來用。

[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)
文件系統(tǒng)標簽=
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
第一個數(shù)據(jù)塊=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塊磁盤分區(qū)格式化、創(chuàng)建物理卷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
文件系統(tǒng)                                    容量  已用  可用 已用% 掛載點
/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 //進行新的物理磁盤分區(qū),LVM分區(qū)
    partprobe
    mkfs.ext4 /dev/newDisk1 //格式化LVM分區(qū)
    
    pvcreate /dev/newDisk1 //創(chuàng)建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 //執(zhí)行重設(shè)大小,對于當前正在使用的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分區(qū)
     1、parted /dev/sdb
     2、parted (m for help): p 
     3、parted (m for help): rm 1
     4、parted (m for help): p <--在顯示分區(qū)情況,發(fā)現(xiàn)已經(jīng)沒了
     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中的數(shù)據(jù)容量大小,縮小容量值不應(yīng)超過剩余空間容量,而且要知道減少LV容量后的新大小??梢酝ㄟ^lvscan來查看LV容量,通過vgdisplay來查看剩余容量。

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

3.5 錯誤顯示 關(guān)于centos7的LVM出現(xiàn)[unknown]的PV錯誤

vgdisplay/lvdisplay/pvdisplay命令均會提示找不到物理卷設(shè)備。

解決:yum install lvm2 安裝lvm2

四、FAQ

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

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

增加如下內(nèi)容:

LimitXMLRequestBody 0
LimitRequestBody 0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容