Linux软件包管理和磁盘管理实践

一、自建yum仓库,分别为网络源和本地源

  本地yum仓库的搭建就是以下三个步骤:

  1. 创建仓库目录结构
  2. 上传相应的包到目录下,或者直接挂载光盘也行,如果挂载光盘,第三步就可以省略,因为光盘默认里有repodata目录,且里面就是放的仓库元数据信息。
  3. 创建仓库元数据信息(createrepo 后面放包存放的目录路径)

  网络仓库源的搭建就是在本地仓库搭建的步骤上多了一个安装http的过程,然后把对应的目录挂载到http 的工作目录下就可以,具体实现请参考本人博客https://www.cnblogs.com/qiuhom-1874/p/11487456.html

搭建好仓库就可以创建相应的配置文件,其客户端配置文件格式如下(/etc/yum.repo.d/xxx.repo)

[my_base]
name=this is test repo
baseurl=file:///rpm/centos/$releasever/os/$basearch
gpgcheck=0

  说明:其中第一行中括号里的内容可以任意填写,就相当于仓库的名字,name表示仓库的说明信息,baseurl是仓库的路径,上面就是一个本地仓库的地址,如果是基于网络http的仓库,就要写http://仓库服务器地址/repodata文件夹的父目录,gpgcheck=0表示不开启gpg验证。

在客户端配置好repo文件后,可以查看我们搭建的仓库信息

yum clean all               ##清除缓存
yum repolist          ##列出仓库信息 

二、编译安装http2.4,实现可以正常访问,并将编译步骤和结果提交。

  编译安装,首先安装好编译环境包,比如:“development tools”,然后下载好源码包解压,然后进入到解压后的目录,然后查看README或者INSTALL说明文档,然后在解压后的目录下运行./configure --help查看编译选项说明,然后根据自己的需求定制编译选项,检查当前系统是否满足指定编译参数的环境,比如编译依赖的库是否存在呀,编译依赖的包是否存在呀等等,然后make && make install 如编译安装http2.4步骤如下:

  1、yum安装 “development tools” 包组

[root@localhost ~]# yum groupinstall "development tools" -y

  2、创建一个系统用户用于httpd的启动

[root@localhost ~]useradd -r -u 80 -d /data/www/ -s /sbin/nologin httpd
[root@localhost ~]# getent passwd httpd
httpd:x:80:80::/data/www/:/sbin/nologin

  3、下载源码包

[root@localhost ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.41.tar.gz
--2019-11-05 20:11:40--  http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.41.tar.gz
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9267917 (8.8M) [application/octet-stream]
Saving to: ‘httpd-2.4.41.tar.gz’

100%[======================================>] 9,267,917   2.82MB/s   in 3.1s   

2019-11-05 20:11:43 (2.82 MB/s) - ‘httpd-2.4.41.tar.gz’ saved [9267917/9267917]

[root@localhost ~]# ll
total 9052
-rw-r--r--. 1 root root 9267917 Aug 13 07:37 httpd-2.4.41.tar.gz

  4、解压源码包

[root@localhost ~]# tar xf httpd-2.4.41.tar.gz 
[root@localhost ~]# ls
httpd-2.4.41  httpd-2.4.41.tar.gz

  5、进入到解压后的目录

[root@localhost ~]# cd httpd-2.4.41/

  6、查看README文件

Installation
  ------------

  Please see the file called INSTALL.  Platform specific notes can be
  found in README.platforms.

  说明:它上面说安装就去看INSTALL文件

  7、查看INSTALL文件

 Quick Start - Unix
  ------------------

  For complete installation documentation, see [ht]docs/manual/install.html or
  http://httpd.apache.org/docs/2.4/install.html

     $ ./configure --prefix=PREFIX
     $ make
     $ make install
     $ PREFIX/bin/apachectl start

  说明:INSTALL文件说快速安装就用以上命令就可以快速运行服务,当然快速安装,我们要指定安装软件的位置,很多选项都是默认的值。

 For a short impression of what possibilities you have, here is a
  typical example which configures Apache for the installation tree
  /sw/pkg/apache with a particular compiler and flags plus the two
  additional modules mod_rewrite and mod_speling for later loading
  through the DSO mechanism:

     $ CC="pgcc" CFLAGS="-O2" 
     ./configure --prefix=/sw/pkg/apache 
     --enable-rewrite=shared 
     --enable-speling=shared 

  The easiest way to find all of the configuration flags for Apache 2.4
  is to run ./configure --help.

  说明:INSTALL还告诉我们,如果我们需要编译安装额外的模块,我们用像它给我们举的例子这样用选项来指定。当然要查看更多选项信息,我们可以运行./configure --help来查看

  8、查看./configure 选项帮助

[root@localhost httpd-2.4.41]# ./configure --help
`configure' configures this package to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print `checking ...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for `--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or `..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local/apache2]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, `make install' will install all the files in
`/usr/local/apache2/bin', `/usr/local/apache2/lib' etc.  You can specify
an installation prefix other than `/usr/local/apache2' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]
...省略部分显示

  说明:我们可以看到.configure 的编译选项有很多,每个选项都代表着不同的功能和含义。

  9、指定自己需要的功能选项,运行./configure +功能选项 检查系统都有指定功能说依赖的库和包。

[root@localhost httpd-2.4.41]# ./configure --prefix=/application/httpd_2.4 --sysconfdir=/etc/httpd24 --enable-ssl --disable-status  
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
configure: 
configure: Configuring Apache Portable Runtime library...
configure: 
checking for APR... no
configure: error: APR not found.  Please read the documentation.
[root@localhost httpd-2.4.41]# 

  说明:我们指定httpd 安装到/application/httpd_2.4目录里 ,系统配置文件存放在/etc/httpd24目录下 ,开启ssl功能,关闭进程/线程监控。configure抱错,找不到APR,请阅读文档

  10、安装依赖包

yum install apr-devel apr-util-devel pcre-devel openssl-devel

  说明:安装依赖可以在第一步就可以做。在我们熟悉软件的情况下可以提前安装好它说依赖的包。

  11、安装完依赖包后,我们在来用./configure +我们指定的选项 来检查我们当前系统是否符合编译选项功能

config.status: creating build/config_vars.sh
config.status: creating include/ap_config_auto.h
config.status: executing default commands
configure: summary of build options:

    Server Version: 2.4.41
    Install prefix: /application/httpd_2.4
    C compiler:     gcc -std=gnu99
    CFLAGS:           -pthread  
    CPPFLAGS:        -DLINUX -D_REENTRANT -D_GNU_SOURCE  
    LDFLAGS:           
    LIBS:             
    C preprocessor: gcc -E

[root@localhost httpd-2.4.41]# 

  说明:安装依赖后,我们再次运行./configure +我们指定的编译选项,没有发现有ERROR的字样,说明我们指定的编译选项在当前系统环境是可以编译的

  12、编译

usr/lib64/apr-1/build/libtool --silent --mode=link gcc -std=gnu99  -pthread           -o mod_rewrite.la -rpath /application/httpd_2.4/modules -module -avoid-version  mod_rewrite.lo 
make[4]: 离开目录“/root/httpd-2.4.41/modules/mappers”
make[3]: 离开目录“/root/httpd-2.4.41/modules/mappers”
make[2]: 离开目录“/root/httpd-2.4.41/modules”
make[2]: 进入目录“/root/httpd-2.4.41/support”
make[2]: 离开目录“/root/httpd-2.4.41/support”

make[1]: 离开目录“/root/httpd-2.4.41”
[root@localhost httpd-2.4.41]# 

  说明:在我们执行make命令后,会出现一大片编译显示的信息,最后如果没有出现ERROR,说明我们的编译时没有问题的

  13、安装

Installing configuration files
mkdir /etc/httpd24
mkdir /etc/httpd24/extra
mkdir /etc/httpd24/original
mkdir /etc/httpd24/original/extra
Installing HTML documents
mkdir /application/httpd_2.4/htdocs
Installing error documents
mkdir /application/httpd_2.4/error
Installing icons
mkdir /application/httpd_2.4/icons
mkdir /application/httpd_2.4/logs
Installing CGIs
mkdir /application/httpd_2.4/cgi-bin
Installing header files
mkdir /application/httpd_2.4/include
Installing build system files
mkdir /application/httpd_2.4/build
Installing man pages and online manual
mkdir /application/httpd_2.4/man
mkdir /application/httpd_2.4/man/man1
mkdir /application/httpd_2.4/man/man8
mkdir /application/httpd_2.4/manual
make[1]: 离开目录“/root/httpd-2.4.41”
[root@localhost httpd-2.4.41]# 

  说明:我们通过执行make install 可以了解到,安装就是把我们编译好的库和二进制文件复制到相应的目录下的过程

  14、添加PATH环境变量,并加载环境变量

[root@localhost httpd-2.4.41]# ll /application/httpd_2.4/bin/
总用量 1176
-rwxr-xr-x 1 root root  73808 11月  6 05:20 ab
-rwxr-xr-x 1 root   40   3449 11月  6 05:13 apachectl
-rwxr-xr-x 1 root   40  23519 11月  6 05:13 apxs
-rwxr-xr-x 1 root root   8736 11月  6 05:20 checkgid
-rwxr-xr-x 1 root   40   8925 11月  6 05:13 dbmmanage
-rw-r--r-- 1 root   40   1081 11月  6 05:13 envvars
-rw-r--r-- 1 root   40   1081 11月  6 05:13 envvars-std
-rwxr-xr-x 1 root root  13848 11月  6 05:20 fcgistarter
-rwxr-xr-x 1 root root  40984 11月  6 05:20 htcacheclean
-rwxr-xr-x 1 root root  28096 11月  6 05:20 htdbm
-rwxr-xr-x 1 root root  18208 11月  6 05:20 htdigest
-rwxr-xr-x 1 root root  23456 11月  6 05:20 htpasswd
-rwxr-xr-x 1 root root 867296 11月  6 05:20 httpd
-rwxr-xr-x 1 root root  13800 11月  6 05:20 httxt2dbm
-rwxr-xr-x 1 root root  14440 11月  6 05:20 logresolve
-rwxr-xr-x 1 root root  27432 11月  6 05:20 rotatelogs
[root@localhost httpd-2.4.41]# echo 'export PATH=/application/httpd_2.4/bin/:$PATH' >/etc/profile.d/http24.sh
[root@localhost httpd-2.4.41]# . /etc/profile.d/http24.sh
[root@localhost httpd-2.4.41]# echo $PATH
/application/httpd_2.4/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost httpd-2.4.41]# 

  15、启动服务(启动服务前,把/etc/httpd24/httpd.conf里的User 更改为我们之前建立的用户httpd)

[root@localhost httpd-2.4.41]# apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using ::1. Set the 'ServerName' directive globally to suppress this message
[root@localhost httpd-2.4.41]# ss -ntl
State      Recv-Q Send-Q                    Local Address:Port                                   Peer Address:Port              
LISTEN     0      128                                   *:22                                                *:*                  
LISTEN     0      100                           127.0.0.1:25                                                *:*                  
LISTEN     0      80                                   :::3306                                             :::*                  
LISTEN     0      128                                  :::80                                               :::*                  
LISTEN     0      32                                   :::21                                               :::*                  
LISTEN     0      128                                  :::22                                               :::*                  
LISTEN     0      100                                 ::1:25                                               :::*                  
[root@localhost httpd-2.4.41]#  ps axu |grep httpd
root 41401 0.0 0.1 72852 2956 ? Ss 05:28 0:00 /application/httpd_2.4/bin/httpd -k start
httpd 41583 0.0 0.3 427352 6256 ? Sl 05:39 0:00 /application/httpd_2.4/bin/httpd -k start
httpd 41584 0.0 0.3 361816 6264 ? Sl 05:39 0:00 /application/httpd_2.4/bin/httpd -k start
httpd 41585 0.0 0.3 361816 6264 ? Sl 05:39 0:00 /application/httpd_2.4/bin/httpd -k start
root 41668 0.0 0.0 112724 984 pts/0 R+ 05:40 0:00 grep --color=auto httpd

  说明:可以看到80端口已经处于监听状态,httpd进程也相应起来了,况且是以我们指定的系统用户运行的。

  16、用浏览器访问我们的服务器

三、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统 ext4,卷标为test,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项

   1、分区

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0    3G  0 part [SWAP]
└─sda3   8:3    0 16.8G  0 part /
sdb      8:16   0   40G  0 disk 
sr0     11:0    1 1024M  0 rom  
[root@localhost ~]# fdisk /dev/sdb 
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x7a888819.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

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
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   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
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 
Value out of range.
Partition number (1-4): 1
First cylinder (1-5221, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-5221, default 5221): +2G  

Command (m for help): p

Disk /dev/sdb: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7a888819

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

  2、创建文件系统

[root@localhost ~]# mkfs.ext4 -b 2048 -m 1  -L "test" /dev/sdb1               
mke2fs 1.41.12 (17-May-2010)
Filesystem label=test
OS type: Linux
Block size=2048 (log=1)
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
131560 inodes, 1052240 blocks
10522 blocks (1.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=538968064
65 block groups
16384 blocks per group, 16384 fragments per group
2024 inodes per group
Superblock backups stored on blocks: 
        16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

  说明:centos6自己手动创建的文件系统默认没有ACL功能,需要用tune2fs -o acl /dev/sdb1来添加默认挂载选项具有acl功能

3、添加默认挂载选项具有acl功能

[root@localhost ~]# tune2fs -l /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   test
Last mounted on:          <not available>
Filesystem UUID:          be76ff36-e949-4434-9925-af60ce4e155a
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              131560
Block count:              1052240
Reserved block count:     10522
Free blocks:              998252
Free inodes:              131549
First block:              0
Block size:               2048
Fragment size:            2048
Reserved GDT blocks:      512
Blocks per group:         16384
Fragments per group:      16384
Inodes per group:         2024
Inode blocks per group:   253
Flex block group size:    16
Filesystem created:       Tue Oct 22 02:45:40 2019
Last mount time:          n/a
Last write time:          Tue Oct 22 02:45:40 2019
Mount count:              0
Maximum mount count:      39
Last checked:             Tue Oct 22 02:45:40 2019
Check interval:           15552000 (6 months)
Next check after:         Sun Apr 19 02:45:40 2020
Lifetime writes:          97 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      2c750580-3dd9-4af4-a1e9-581761cd9559
Journal backup:           inode blocks
[root@localhost ~]# tune2fs -o acl /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
[root@localhost ~]# tune2fs -l /dev/sdb1    
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   test
Last mounted on:          <not available>
Filesystem UUID:          be76ff36-e949-4434-9925-af60ce4e155a
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              131560
Block count:              1052240
Reserved block count:     10522
Free blocks:              998252
Free inodes:              131549
First block:              0
Block size:               2048
Fragment size:            2048
Reserved GDT blocks:      512
Blocks per group:         16384
Fragments per group:      16384
Inodes per group:         2024
Inode blocks per group:   253
Flex block group size:    16
Filesystem created:       Tue Oct 22 02:45:40 2019
Last mount time:          n/a
Last write time:          Tue Oct 22 02:46:53 2019
Mount count:              0
Maximum mount count:      39
Last checked:             Tue Oct 22 02:45:40 2019
Check interval:           15552000 (6 months)
Next check after:         Sun Apr 19 02:45:40 2020
Lifetime writes:          97 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      2c750580-3dd9-4af4-a1e9-581761cd9559
Journal backup:           inode blocks
[root@localhost ~]# 

  说明:可以看到Default mount options: acl 表示:具有了acl挂载选项,块大小为2048,Block count: 1052240和Reserved block count: 10522的比例是100:1,Filesystem volume name: test 表示卷标名为test

  4、查看/dev/sdb1的卷标

[root@localhost ~]# e2label /dev/sdb1 
test

  5、设置开机挂载至/test目录

[root@localhost ~]# mkdir /test
[root@localhost ~]# echo '/dev/sdb1  /test  ext4  defaults,acl 0 0  ' >> /etc/fstab 
[root@localhost ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda3       17187708 1915396  14392544  12% /
tmpfs             953456       0    953456   0% /dev/shm
/dev/sda1         194241   40472    143529  22% /boot
[root@localhost ~]# mount -a
[root@localhost ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda3       17187708 1915396  14392544  12% /
tmpfs             953456       0    953456   0% /dev/shm
/dev/sda1         194241   40472    143529  22% /boot
/dev/sdb1        2005740    9236   1975460   1% /test
[root@localhost ~]# mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1 on /test type ext4 (rw,acl)
[root@localhost ~]# 

  说明:可以看到/dev/sdb1的文件系统类型是ext4,并且以读写,acl挂载至/test 

四、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小 为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录

   1、创建分区并分别指定大小为10G,并把分区类型改为Linux LVM类型

[root@localhost ~]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

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
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   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): p

Disk /dev/sdb: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7a888819

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (263-5221, default 263): 
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-5221, default 5221): +10G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1569-5221, default 1569): 
Using default value 1569
Last cylinder, +cylinders or +size{K,M,G} (1569-5221, default 5221): +10G

Command (m for help): p

Disk /dev/sdb: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7a888819

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb2             263        1568    10490445   83  Linux
/dev/sdb3            1569        2874    10490445   83  Linux

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): L

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         
 5  Extended        42  SFS             86  NTFS volume set da  Non-FS data    
 6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   
 8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1
Hex code (type L to list codes): 8e  
Changed system type of partition 2 to 8e (Linux LVM)

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sdb: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7a888819

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb2             263        1568    10490445   8e  Linux LVM
/dev/sdb3            1569        2874    10490445   8e  Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@localhost ~]# 

  说明:可以看到/dev/sdb1和/dev/sdb2的分区类型为Linux LVM

2、创建pv

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0    3G  0 part [SWAP]
└─sda3   8:3    0 16.8G  0 part /
sdb      8:16   0   40G  0 disk 
└─sdb1   8:17   0    2G  0 part /test
sr0     11:0    1 1024M  0 rom  
[root@localhost ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1
[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0    3G  0 part [SWAP]
└─sda3   8:3    0 16.8G  0 part /
sdb      8:16   0   40G  0 disk 
├─sdb1   8:17   0    2G  0 part /test
├─sdb2   8:18   0   10G  0 part 
└─sdb3   8:19   0   10G  0 part 
sr0     11:0    1 1024M  0 rom  
[root@localhost ~]# pvcreate  /dev/sdb2 /dev/sdb3
  Physical volume "/dev/sdb2" successfully created
  Physical volume "/dev/sdb3" successfully created
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdb2       lvm2 ---  10.00g 10.00g
  /dev/sdb3       lvm2 ---  10.00g 10.00g
[root@localhost ~]# pvdisplay
  "/dev/sdb2" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               Yxsoub-DQJt-5g3T-uSca-839U-vmVV-A2t8Gl
   
  "/dev/sdb3" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb3
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               ChnbDg-DaSx-BhKz-a427-qEjc-VneO-A6V2jl
   
[root@localhost ~]# 

  说明:在我们分区后,用lsblk可能会出现分区表不同步的现象,我们可以用partx -a /dev/sdb命令来通知内核同步,这样我们就可以看到我们之前的分区,然后用pvcreate命令 来创建pv,用pvs或者pvdisplay来查看我们创建的物理卷的信息

  3、创建vg(卷组),并设置pe大小为16m

root@localhost ~]# vgcreate "testvg" -s 16m /dev/sdb{2,3}
  Volume group "testvg" successfully created
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree 
  testvg   2   0   0 wz--n- 20.00g 20.00g
[root@localhost ~]# vgdisplay 
  --- Volume group ---
  VG Name               testvg
  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               20.00 GiB
  PE Size               16.00 MiB
  Total PE              1280
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1280 / 20.00 GiB
  VG UUID               XgjjlR-jg4D-iOpA-W65s-S4WF-Qq8r-UaBjPW
   

  说明:可以看到我们已经很顺利的创建了testvg,大小为20G,pe的大小是16m,pe是逻辑卷中最小分配单位,类似磁盘的block大小,只有创建了VG 才可以看到pe的大小,若不指定默认为4m

  4、创建大小为5G的逻辑卷testlv

[root@localhost ~]# lvs
[root@localhost ~]# lvdisplay 
[root@localhost ~]# lvcreate -n "testlv" -L 5G testvg
  Logical volume "testlv" created.
[root@localhost ~]# lvs
  LV     VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  testlv testvg -wi-a----- 5.00g                                                    
[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/testvg/testlv
  LV Name                testlv
  VG Name                testvg
  LV UUID                RPUlTS-fVfA-etlO-Rzqz-KzMD-6xS1-dszf8F
  LV Write Access        read/write
  LV Creation host, time localhost, 2019-10-22 03:55:08 +0800
  LV Status              available
  # open                 0
  LV Size                5.00 GiB
  Current LE             320
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
[root@localhost ~]#

  说明:lvcreate -n 表示指定要创建的逻辑卷名称,-L 表示指定逻辑卷的大小,当然还有-l 指定逻辑卷大小的方式,小l指定的是pe的个数。最后指定在那个卷组里分配,创建好的lvs 它的真正路径在/dev/dm-0,因为dm-0没有实质的意义,就是我们看到名字不知道这个逻辑卷到底是那个卷组里创建的,所以系统就给我们做了一个软连接,/dev/testvg/testlv,我们一看这个名字这个逻辑卷是从testvg里分配的。

  5、在创建好的lvs上创建文件系统

root@localhost ~]# mkfs.ext4 /dev/testvg/testlv 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

  6、挂载创建好文件系统的lvs

[root@localhost ~]# mount /dev/testvg/testlv /users/
[root@localhost ~]# df -Th
Filesystem           Type   Size  Used Avail Use% Mounted on
/dev/sda3            ext4    17G  1.9G   14G  12% /
tmpfs                tmpfs  932M     0  932M   0% /dev/shm
/dev/sda1            ext4   190M   40M  141M  22% /boot
/dev/sdb1            ext4   2.0G  9.1M  1.9G   1% /test
/dev/mapper/testvg-testlv
                     ext4   4.8G   10M  4.6G   1% /users
[root@localhost ~]# 

  说明:若要开机自动挂载需要在/etc/fstab文件中加上 /dev/testvg/testlv  /users  ext4  defaults  0  0 这条记录就可以实现开机自动挂载。

原文地址:https://www.cnblogs.com/qiuhom-1874/p/11794021.html