4.微服务架构-linux

linux 简介

概述

Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

linux操作系统也是自由软件和开源代码发展中最著名的例子。
Linux操作系统也是白由软件和开放源代码发展中最著名的例子。只要遵循GNU通用公共许可证,任何人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统(也被称为GNU/ Linux)。通常情况下,Linux被打包成供桌上型电脑和服务器使用的Linux发行版本,些流行的主流 Linux发行版本,包括Debian (及其衍生版本Ubuntu),Fedora和OpenSUSE等。Kernel + Softwares + Tools就是Linux Distribution

Linux 的发行版

Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。
在这里插入图片描述
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
在这里插入图片描述

Windows与Linux比较

比较WindowsLinux
区别桌面操作系统服务器
界面界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。
驱动程序驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。
使用使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。图形界面使用简单,容易入门。文字界面,需要学习才能掌握。
学习系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。
软件每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。大部分软件都可以自由获取,同样功能的软件选择较少。

linux 安装

原生云应用基本都是基于云服务器部署,本地化的 Linux 操作基本也都是在虚拟机中进行模拟操作。故我们只需要安装虚拟机并在虚拟机上安装对应的 Linux 操作系统即可。本章基于Ubuntu Server 操作系统进行实践。

安装中需要设置镜像地址,我们使用阿里云的镜像地址:http://mirrors.aliyun.com/ubuntu

远程控制管理

概述

传统的网络服务程序,FTP、POP、telnet 本质上都是不安全的,因为它们在网络上通过明文传送口令和数据,这些数据非常容易被截获。SSH 叫做 Secure Shell。通过 SSH,可以把传输数据进行加密,预防攻击,传输的数据进行了压缩,可以加快传输速度。

OpenSSH

SSH 是芬兰一家公司开发。但是受到版权和加密算法限制,现在很多人都使用 OpenSSH。OpenSSH 是 SSH 的替代软件,免费。

OpenSSH 由客户端和服务端组成。

  • 基于口令的安全验证:知道服务器的帐号密码即可远程登录,口令和数据在传输过程中都会被加密。
  • 基于密钥的安全验证:此时需要在创建一对密钥,把公有密钥放到远程服务器上自己的宿主目录中,而私有密钥则由自己保存。

安装流程如下:

  • 检查软件是否安装
apt-cache policy openssh-client openssh-server
  • 安装服务端
apt-get install openssh-server
  • 安装客户端
apt-get install openssh-client

OpenSSH 服务器的主要配置文件为 /etc/ssh/sshd\_config,几乎所有的配置信息都在此文件中。

XShell

XShell 是一个强大的安全终端模拟软件,它支持 SSH1, SSH2, 以及 Microsoft Windows 平台的 TELNET 协议。XShell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。

XShell 可以在 Windows 界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。
在这里插入图片描述

FinalShell

FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求。
在这里插入图片描述

目录管理

目录结构

在这里插入图片描述

目录说明
bin存放二进制可执行文件(ls、cat、mkdir 等)
boot存放用于系统引导时使用的各种文件
dev用于存放设备文件
etc存放系统配置文件
home存放所有用户文件的根目录,root用户除外
lib存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt系统管理员安装临时文件系统的安装点
opt额外安装的可选应用程序包可放置的位置
proc虚拟文件系统,存放当前文件的映射
root超级用户目录
sbin存放二进制可执行文件,只有root用户可以访问
tmp用于存放各种临时文件
usr用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录
var用于存放运行时需要改变数据的文件

home、etc、user/local、var 这几个目录比较重要。

常用命令说明

操作文件目录命令

超级管理员可以用 ll 进行查看根目录
普通用户用 ls -al 进行查看
在这里插入图片描述

操作解压缩命令
tar

在这里插入图片描述
例子

  • 压缩文件:tar -zcvf test.tar.gz test\
  • 解压文件:tar -zxvf test.tar.gz

有两种压缩(用什么压缩就用对应解压缩)

  • gzip
    后缀名为.gz
  • bzip2
    后缀名为.bz2

系统管理

操作系统管理命令

在这里插入图片描述

使用权限:系统管理者。

操作开关机命令

Linux shutdown 命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。
使用权限:系统管理者。
在这里插入图片描述
重启

  • sudo reboot
  • sudo shutdown -r now

关机

  • sudo shutdown -h now

vim 编辑器

概述

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。

连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。
vim 键盘图
在这里插入图片描述

运行模式

  • 编辑模式:等待编辑命令输入
  • 插入模式:编辑模式下输入i进入插入模式,插入文本信息
  • 命令模式:在编辑模式下,输入 “:” 进行命令模式
命令模式
  • :q 直接退出vi
  • :wq 保存后ui出vi,并可以新建文件
  • :q! 强制退出
  • :w file 将当前内容保存成某个文件
  • /: 查找字符串
  • :set number 在编辑文件显示行号
  • :set nonumber 在编辑文件不显示行号
  • :set paste 原样粘贴

用户和组管理

概述

组分配权限,用户归于组。用户——>组(不同组不同权限)

Linux 操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。

使用Root用户

在实际生产操作中,我们基本上都是使用超级管理员账户操作 Linux 系统,也就是 Root 用户,Linux 系统默认是关闭 Root 账户的,我们需要为 Root 用户设置一个初始密码以方便我们使用。

  • 设置 Root 账户密码
sudo passwd root
  • 切换到 Root
su
  • 设置允许远程登录 Root
vi /etc/ssh/sshd_config
# Authentication:
LoginGraceTime 120
#PermitRootLogin without-password     //注释此行
PermitRootLogin yes       //加入此行
StrictModes yes

#重启服务
service ssh restart

在这里插入图片描述

用户账户说明

  • 普通用户
    普通用户在系统上的任务是进行普通操作

  • 超级管理员
    管理员在系统上的任务是对普通用户和整个系统进行管理。对系统具有绝对的控制权,能够对系统进行一切操作。用 root 表示,root 用户在系统中拥有最高权限,默认下 Ubuntu 用户的 root 用户是不能登录的。

  • 安装时创建的系统用户
    此用户创建时被添加到 admin 组中,在 Ubuntu 中,admin 组中的用户默认是可以使用 sudo 命令来执行只有管理员才能执行的命令的。如果不使用 sudo 就是一个普通用户。

组账户说明

  • 私有组
    当创建一个用户时没有指定属于哪个组,Linux 就会建立一个与用户同名的私有组,此私有组只含有该用户。

  • 标准组
    当创建一个用户时可以选定一个标准组,如果一个用户同时属于多个组时,登录后所属的组为主组,其他的为附加组。

账户系统文件说明

/etc/passwd
每一行代表一个账号,众多账号是系统正常运行所必须的,例如 bin,nobody 每行定义一个用户账户,此文件对所有用户可读。每行账户包含如下信息:

root❌0:0:root:/root:/bin/bash

用户名: 就是账号,用来对应 UID,root UID 是 0。

口令: 密码,早期 UNIX 系统密码存在此字段,由于此文件所有用户都可以读取,密码容易泄露,后来这个字段数据就存放到 /etc/shadow 中,这里只能看到 X。

用户标示号(UID): 系统内唯一,root 用户的 UID 为 0,普通用户从 1000 开始,1-999 是系统的标准账户,500-65536 是可登陆账号。

组标示号(GID): 与 /etc/group 相关用来规定组名和 GID 相对应。
注释: 注释账号

宿主目录(主文件夹): 用户登录系统后所进入的目录 root 在 /root/itcast

命令解释器(shell): 指定该用户使用的 shell ,默认的是 /bin/bash

/etc/shadow
为了增加系统的安全性,用户口令通常用 shadow passwords 保护。只有 root 可读。每行包含如下信息:

root: 6 6 6Reu571.V$Ci/kd.OTzaSGU.TagZ5KjYx2MLzQv2IkZ24E1.yeTT3Pp4o/yniTjus/rRaJ92Z18MVy6suf1W5uxxurqssel.:17465:0:99999:7:::

账号名称: 需要和 /etc/passwd 一致。

密码: 经过加密,虽然加密,但不表示不会被破解,该文件默认权限如下:

-rw------- 1 root root 1560 Oct 26 17:20 passwd-

只有root能都读写

最近修改密码日期: 从1970-1-1起,到用户最后一次更改口令的天数

密码最小时间间隔: 从1970-1-1起,到用户可以更改口令的天数

密码最大时间间隔: 从1970-1-1起,必须更改的口令天数

密码到期警告时间: 在口令过期之前几天通知

密码到期后账号宽限时间

密码到期禁用账户时间: 在用户口令过期后到禁用账户的天数保留

/etc/group

用户组的配置文件

root❌0:

用户组名称

用户组密码: 给用户组管理员使用,通常不用

GID: 用户组的ID

此用户支持的账号名称: 一个账号可以加入多个用户组,例如想要 itcast 加入 root 这个用户组,将该账号填入该字段即可 root❌0:root, icast 将用户进行分组是 Linux 对用户进行管理及控制访问权限的一种手段。一个中可以有多个用户,一个用户可以同时属于多个组。该文件对所有用户可读。

/etc/gshadow

该文件用户定义用户组口令,组管理员等信息只有root用户可读。

root:*::

  • 用户组名
  • 密码列
  • 用户组管理员的账号
  • 用户组所属账号

账户管理常用命令

  • 增加用户
    useradd 用户名
    useradd -u (UID号)
    useradd -p (口令)
    useradd -g (分组)
    useradd -s (SHELL)
    useradd -d (用户目录)6
    如:useradd lusifer
    增加用户名为 lusifer 的账户

  • 修改用户
    usermod -u (新UID)
    usermod -d (用户目录)
    usermod -g (组名)
    usermod -s (SHELL)
    usermod -p (新口令)
    usermod -l (新登录名)
    usermod -L (锁定用户账号密码)
    usermod -U (解锁用户账号)
    如:usermod -u 1024 -g group2 -G root lusifer
    将 lusifer 用户 uid 修改为 1024,默认组改为系统中已经存在的 group2,并且加入到系统管理员组

  • 删除用户
    userdel 用户名 (删除用户账号)
    userdel -r 删除账号时同时删除目录
    如:userdel -r lusifer
    删除用户名为 lusifer 的账户并同时删除 lusifer 的用户目录

  • 组账户维护
    groupadd 组账户名 (创建新组)
    groupadd -g 指定组GID
    groupmod -g 更改组的GID
    groupmod -n 更改组账户名
    groupdel 组账户名 (删除指定组账户)

  • 口令维护
    passwd 用户账户名 (设置用户口令)
    passwd -l 用户账户名 (锁定用户账户)
    passwd -u 用户账户名 (解锁用户账户)
    passwd -d 用户账户名 (删除账户口令)
    gpasswd -a 用户账户名 组账户名 (将指定用户添加到指定组)
    gpasswd -d 用户账户名 组账户名 (将用户从指定组中删除)
    gpasswd -A 用户账户名 组账户名 (将用户指定为组的管理员)

  • 用户和组状态
    su 用户名(切换用户账户)
    id 用户名(显示用户的UID,GID)
    whoami (显示当前用户名称)
    groups (显示用户所属组)

文件权限管理

概述

ls -al 使用 ls 不带参数只显示文件名称,通过ls -al 可以显示文件或者目录的权限信息。
ls -l 文件名显示信息包括:文件类型(d目录 - 普通文件 l连接文件),文件的权限,文件的用户,文件的所属组,文件的大小,文件的创建时间,文件的名称。

-rw-r–r-- 1 lusifer lusifer 675 Oct 26 17:20 .profile

文档类型及权限连接数文档所属用户文档所属组文档大小文档最后被修改日期文档名称
- r w - r - - r - -1lusiferlusifer675Oct 26 17:20.profile
  • -:普通文件。
  • r w -:说明用户 lusifer 有读写权限,没有执行权限.
  • r - -:表示用户组 lusifer 只有读权限,没有写和运行的权限。
  • r - -:其他用户只有读权限,没有写权限和运行权限。
-rw -r - -r - -
文件类型文档所有者权限(user)文档所属用户组权限(group)其他用户权限(other)
文档类型与权限

(-)(- - -)(- - -)(- - -)10个字符

  • 文件类型(-)- 普通文件 d目录 l连接文件
  • 文档所有者权限(r w x)r 只读,w 可写,x 可执行,- 表示无此权限
  • 文档所属用户组权限(r w x)r 只读,w 可写,x 可执行,- 表示无此权限
  • 其他用户权限(r w x)r 只读,w 可写,x 可执行,- 表示无此权限
数字设定法
  • 0 表示没有任何权限
  • 1 表示有可执行权限 = x
  • 2 表示有可写权限 = w
  • 4 表示有可读权限 = r

在这里插入图片描述
例如:
若要rwx 属性则 4+2+1=7
若要rw- 属性则 4+2=6
若要r-x 属性则 4+1=5

更改操作权限

chown
主要作用就是改变文件或者目录所有者,所有者包含用户和用户组

chown [-R] 用户名称 文件或者目录
chown [-R] 用户名称 用户组名称 文件或目录

chomd
改变权限访问

chmod [who] [+ | - | =] [mode] 文件名

who表示对象

  • u:用户 user
  • g:用户组 group
  • o:表示其他用户
  • a:表示所有用户是系统默认

操作权限

  • +:表示添加某个权限
  • -:表示取消某个权限
  • =:赋予给定的权限,取消文档以前的所有权限

mode表示可执行的权限,可以是 r、w、x

软件包管理

概述

APT(Advanced Packaging Tool) 是 Debian/Ubuntu 类 Linux 系统中的软件包管理程序, 使用它可以找到想要的软件包, 而且安装、卸载、更新都很简便;也可以用来对 Ubuntu 进行升级; APT 的源文件为 /etc/apt/ 目录下的 sources.list 文件

修改数据源

由于国内网络问题,我们需要将ubuntu的数据源修改成国内数据源,操作步骤如下。

查看版本号
lsb_release -a

在这里插入图片描述

编辑数据源
vi /etc/apt/sources.list

删除全部内容并修改为

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

在这里插入图片描述

更新数据源
apt-get update
常用APT命令
安装软件包
apt-get install packagename
删除软件包
apt-get remove packagename
更新软件包列表
apt-get update
升级更新系统(最好别用)
apt-get upgrad
搜索
apt-cache search package
获取包信息
apt-cache show package
删除包及配置文件
apt-get remove package --purge
了解使用依赖
apt-cache depends package
查看包依赖
apt-cache rdepends package
安装相关编译环境
apt-get build-dep package
下载源代码
apt-get source package
清理没用包
apt-get clean && apt-get autoclean
检查是否有损坏依赖
apt-get check

部署应用程序

安装 Java

解压缩并移动到指定目录
  • 解压缩:tar -zxvf jdk-8u152-linux-x64.tar.gz
  • 创建目录:mkdir -p /usr/local/java
  • 移动安装包:mv jdk1.8.0_152/ /usr/local/java/
  • 设置所有者:chown -R root:root /usr/local/java/
配置环境变量
  • 配置系统环境变量:vi /etc/environment
  • 修改系统环境变量
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export JAVA_HOME=/usr/local/java/jdk1.8.0_152
export JRE_HOME=/usr/local/java/jdk1.8.0_152/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
  • 配置用户环境变量:vi /etc/profile
  • 修改用户环境变量
if [ "$PS1" ]; then
  if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

export JAVA_HOME=/usr/local/java/jdk1.8.0_152
export JRE_HOME=/usr/local/java/jdk1.8.0_152/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi
  • 使用户环境变量生效:source /etc/profile
source /etc/profile
验证安装是否成功
java -version

# 输出如下
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)

安装 Tomcat

解压缩并移动到指定目录
  • 解压缩:tar -zxvf apache-tomcat-8.5.23.tar.gz
  • 变更目录:mv apache-tomcat-8.5.23 tomcat
  • 移动目录:mv tomcat/ /usr/local/

验证安装是否成功

  • 启动:
/usr/local/tomcat/bin/startup.sh
./startup.sh
  • 停止:
/usr/local/tomcat/bin/shutdown.sh
./shutdown.sh

安装 MySQL

安装
  • 更新数据源:apt-get update

  • 安装数据库:apt-get install mysql-server

    注意: 系统将提示您在安装过程中创建 root 密码。选择一个安全的密码,
    并确保你记住它,因为你以后需要它。接下来,我们将完成 MySQL 的配置。
    
配置
 注意: 因为是全新安装,您需要运行附带的安全脚本。这会更改一些不太安全的默认选项,例如远程 
 root 登录和示例用户。在旧版本的 MySQL 上,您需要手动初始化数据目录,但最新的 MySQL 已经
 自动完成了。
mysql_secure_installation

这将提示您输入您在之前步骤中创建的 root 密码。您可以按 Y,然后 ENTER 接受所有后续问题的默认值,但是要询问您是否要更改 root 密码。您只需在之前步骤中进行设置即可,因此无需现在更改。

验证安装是否成功

按上边方式安装完成后,MySQL 应该已经开始自动运行了。要测试它,请检查其状态。

systemctl status mysql

# 输出如下
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2017-11-21 13:04:34 CST; 3min 24s ago
 Main PID: 2169 (mysqld)
   CGroup: /system.slice/mysql.service
           └─2169 /usr/sbin/mysqld

Nov 21 13:04:33 ubuntu systemd[1]: Starting MySQL Community Server...
Nov 21 13:04:34 ubuntu systemd[1]: Started MySQL Community Server.
常用命令
  • 查看版本:mysqladmin -p -u root version
  • 启动:service mysql start
  • 停止:service mysql stop
  • 重启:service mysql restart
  • 登录:mysql -u root -p
  • 授权:grant all privileges on . to ‘root’@’%’ identified by ‘Your Password’;
扩展阅读
配置使用密码方式登录

在安装过程中可能没有提示密码设置的环节此时默认使用的是 auth_socket 方式登录,我们需要修改为 mysql_native_password 方式,操作步骤如下

  • 本地登录 MySQL,此时无需输入密码
mysql -u root -p
  • 切换数据库到 mysql
use mysql;
  • 修改 root 账号密码
update user set authentication_string=password('123456') where user='root';
  • 设置登录模式
update user set plugin="mysql_native_password";
  • 刷新配置
flush privileges;
  • 退出 MySQL
exit;
  • 重新启动 MySQL
systemctl restart mysql
配置远程访问
  • 修改配置文件
vi /etc/mysql/mysql.conf.d/mysqld.cnf
  • 注释掉(语句前面加上 # 即可):
# bind-address = 127.0.0.1
  • 重启 MySQL
service mysql restart
  • 登录 MySQL
mysql -u root -p
  • 授权 root 用户允许所有人连接
grant all privileges on *.* to 'root'@'%' identified by 'Your Password';
因弱口令无法成功授权解决步骤
  • 查看和设置密码安全级别
select @@validate_password_policy;
set global validate_password_policy=0;
  • 查看和设置密码长度限制
select @@validate_password_length;
set global validate_password_length=1;
其它配置

修改配置文件:vi /etc/mysql/mysql.conf.d/mysqld.cnf

[client]
default-character-set=utf8

[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
lower-case-table-names=1
注意: 配置内容追加到对应节点的底部即可

LVM磁盘扩容

LVM的基本概念

  • 物理卷Physical volume (PV):可以在上面建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopback file)。物理卷包括一个特殊的header,其余部分被切割为一块块物理区域(physical extents)。
  • 卷组Volume group (VG):将一组物理卷收集为一个管理单元。
  • 逻辑卷Logical volume (LV):虚拟分区,由物理区域(physical extents)组成。
  • 物理区域Physical extent (PE):硬盘可供指派给逻辑卷的最小单位(通常为4MB)。

示例:

两块物理硬盘
                
  硬盘1 (/dev/sda):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    |分区1 50GB (物理卷)            |分区2 80GB (物理卷)             |
    |/dev/sda1                    |/dev/sda2                     |
    |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ __|
                                  
  硬盘2 (/dev/sdb):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    |分区1 120GB (物理卷)                          |
    |/dev/sdb1                                   |
    | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
LVM方式

  卷组VG1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ 
    |逻辑卷1 15GB                  |逻辑卷2 35GB                        |逻辑卷3 200GB                         |
    |/dev/MyStorage/rootvol        |/dev/MyStorage/homevol             |/dev/MyStorage/mediavol              |
    |_ _ _ _ _ _ _ _ _ _ _ _ _ _ __|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|

优点

  • 比起正常的硬盘分区管理,LVM更富于弹性:

  • 使用卷组(VG),使众多硬盘空间看起来像一个大硬盘。

  • 使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区。

  • 可以创建小的逻辑卷(LV),在空间不足时再动态调整它的大小。

  • 在调整逻辑卷(LV)大小时可以不用考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间。It does not depend on the position of the LV within VG, there is no need to ensure surrounding available space.

  • 可以在线(online)对逻辑卷(LV)和卷组(VG)进行创建、删除、调整大小等操作。LVM上的文件系统也需要重新调整大小,某些文件系统也支持这样的在线操作。

  • 无需重新启动服务,就可以将服务中用到的逻辑卷(LV)在线(online)/动态(live)迁移至别的硬盘上。

  • 允许创建快照,可以保存文件系统的备份,同时使服务的下线时间(downtime)降低到最小。

这些优点使得LVM对服务器的管理非常有用,对于桌面系统管理的帮助则没有那么显著,你需要根据实际情况进行取舍。

缺点

  • 在系统设置时需要更复杂的额外步骤,且文件一旦被误删除想要恢复会比普通磁盘分区恢复更加困难。

磁盘操作命令

查看挂载点
  • 查看挂载点
    在这里插入图片描述

  • 显示当前的logical volume:lvdisplay
    在这里插入图片描述

  • 显示当前的physical volume
    在这里插入图片描述

LVM扩容

查看 fdisk

在这里插入图片描述

查看所有存储设备

在这里插入图片描述
在这里插入图片描述

创建sdb分区

在这里插入图片描述

格式化磁盘
  • 查看分区
    在这里插入图片描述

  • 格式化
    在这里插入图片描述

创建pv

在这里插入图片描述

查看卷组

在这里插入图片描述

扩容VG
  • 查看VG
    在这里插入图片描述

  • 查看LV
    在这里插入图片描述

  • 扩容LV
    在这里插入图片描述

  • 刷新分区
    在这里插入图片描述

  • 验证是否成功
    在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值