linux学习笔记

修改主机名

hostname name#或者hostnamectl set-localhost name

目录

/bin,/sbin,/usr/bin,,/usr/sbin 可执行进程序(二井制程序)
/lib,/lib64 库文件,文件能正常运行,一般带有.SO
(dll动态连接库文件在WINDOWS里面)
/boot linux内核 , 一些启动文件
/etc 配置文件的目录 。conf
/home 家目录
/dev 设备配置目录
/proc ,/sys 伪根系统
ls -h以人性化方式显示文件信息
touch {1..100}.txt 建立100个TXT文件

touch {1,2,3,a,b,c}.txt #建立几个文件

ctrol +c ; ctrl +u 一行内的命令重写

[root@xiaoxu tmp]# date +%F
2019-12-23
[root@xiaoxu tmp]# date +%T
13:40:04
[root@xiaoxu tmp]# date +%T
13:40:04
[root@xiaoxu tmp]# date +%M
40
[root@xiaoxu tmp]# date +%m
12
[root@xiaoxu tmp]# date +%F-%T
2019-12-23-13:41:49
#date命令
[root@xiaoxu tmp]# ls *.log
2019-12-23-13:43:28.log  yum.log
touch /tmp/$(date +%F-%T).log#或者touch /tmp/`date +%F-%T`.log

批量创建文件

[root@xiaoxu tmp]# touch {300..305}.mp5
[root@xiaoxu tmp]# touch {400,402,404}.mp5
[root@xiaoxu tmp]# ll *.mp5
300.mp5  301.mp5  302.mp5  303.mp5  304.mp5  305.mp5  400.mp5  402.mp5  404.mp5

日期函数

[root@xiaoxu tmp]# date
2019年 12月 25日 星期三 22:15:19 CST
[root@xiaoxu tmp]# date +%F
2019-12-25
[root@xiaoxu tmp]# date +%T
22:15:38
[root@xiaoxu tmp]# date +%M
15
[root@xiaoxu tmp]# date +%m
12
[root@xiaoxu tmp]# date +%F  +%T
date: 额外的操作数 "+%T"
Try 'date --help' for more information.
[root@xiaoxu tmp]# date +%F  %T
date: 额外的操作数 "%T"
Try 'date --help' for more information.
[root@xiaoxu tmp]# date +%F-%T
2019-12-25-22:16:49
[root@xiaoxu tmp]# touch $(date +%F-%T).log
[root@xiaoxu tmp]# ls *.log
2019-12-26-09:32:24.log

查看文件信息

[root@xiaoxu tmp]# touch $(date +%F-%T).log
[root@xiaoxu tmp]# ls *.log
2019-12-26-09:32:24.log

查看文件前几行

[root@xiaoxu tmp]# touch $(date +%F-%T).log
[root@xiaoxu tmp]# ls *.log
2019-12-26-09:32:24.log

查看文件第五行

[root@xiaoxu tmp]# touch $(date +%F-%T).log
[root@xiaoxu tmp]# ls *.log
2019-12-26-09:32:24.log

ls参数排序,人类可读

[root@xiaoxu tmp]# ls -lhS /etc/ |head -n 5
总用量 1.1M
-rw-r--r--.  1 root root   655K 6月   7 2013 services
-rw-r--r--.  1 root root    29K 12月 22 10:46 ld.so.cache
-rw-r--r--.  1 root root    12K 12月 19 05:23 aliases.db
-rw-r--r--.  1 root root   7.2K 12月 18 19:13 kdump.conf

用FIND查找 文件

[root@xiaoxu tmp]# find /etc/ -name "*.conf"
[root@xiaoxu tmp]# find /etc/ -name "*.conf"|wc -l
96#查看文件数量
[root@xiaoxu tmp]# find /etc/ -size +3M     #查看大于3M的文件 小于用-      正好不用+ -   大概那么大
/etc/udev/hwdb.bin
/etc/selinux/targeted/active/policy.kern
/etc/selinux/targeted/policy/policy.31

[root@xiaoxu tmp1]# find -mtime -7   #查看7天之内修改的文件
.
./1.log
./2.log
./3.log
./4.log
./5.log
[root@xiaoxu tmp1]# find -mtime +7        #查看7天之前修改的文件

[root@xiaoxu tmp1]# find /dev/ -type b			#按文件的类型查找
/dev/dm-2
/dev/dm-1
/dev/dm-0
/dev/sr0
/dev/sda2
/dev/sda1
/dev/sda
/dev/fd0

[root@xiaoxu tmp1]# find -mtime -7 -a -size -1b      #小于7天 AND  大小小于1BYTE
./2.log
./3.log
./4.log
./5.log




指令 说明
h j k l 光标控制
shift + g 最后一行
gg 返回首行
13gg 跳到13行
$ 行尾
^ 行首
x 删除单个字符
dw 删除单词
d$ 删除到行尾
d^ 删除到行首
dd 删除整行
dG 删除到文件末尾
r 替换单个字符
R 连续替换多个字符,按ESC返回命令模式
u 撤销
yy 复制当前行
nyy 复制n行
p 粘贴
np 粘贴多次
/string 查找字符, n向下找 N 向上:
😒/root/admin 把光标所在行第一个root改成admin 通配%
😒/root/admin/g 把这一行的ROOT换成ADMIN
:5,10 s/bin/xupanfeng 5到10行的内容替换
:.,$ s/daemon/xupanfneg/g 从当前行向下替换
:g/^$/d 删除空行,g大概是全局的意思,%是表示所有行

centeros 翻译工具

wget git.io/trans
chmod +x ./trans
mv trans /usr/bin/

grep 正则用法

grep "r..t" passwd #.代表单个字符
grep "r[a-z][a-z]t" passwd  #匹配root
grep "r[^0-9]t" passwd  #取反
grep "r[[:punct:]]t" passwd #匹配符号
r,t
[root@xiaoxu tmp1]# grep -E "r[[:punct:]]+t" passwd 
r,t
r,,,,,,,t   #匹配字符
[root@xiaoxu tmp1]# grep -E "r[[:space:]]+" passwd 
r      t
r t#匹配空格
[root@xiaoxu tmp1]# grep "^r" passwd 
r,t
r,,,,,,,t
r      t
r t    #匹配以R开斗
[root@xiaoxu tmp1]# grep "^[a-z]" passwd 
r,t
r,,,,,,,t
r      t
r t
abcd
[root@xiaoxu tmp1]# grep "t$" passwd 
r,t
r,,,,,,,t
r      t
r t #匹配T结尾 的行
[root@xiaoxu tmp1]# grep "^$" passwd   #匹配空行
[root@xiaoxu tmp1]# grep "^$" passwd | wc -l
6   #数一数有几个空行
[root@xiaoxu tmp1]# ls -l /etc/ | grep "^d" #查看目录
[root@xiaoxu tmp1]# grep  "^#" /etc/yum.repos.d/mysql-community.repo  #-v   取反
[root@xiaoxu ~]# grep -E "r[a-z]{,10}t" /etc/passwd    #最高匹配10个
grep -E "(ab){,3}" /tmp/tmp1/passwd  #分组正则
[root@xiaoxu tmp1]# ifconfig | grep -A 1 "mask"  #找到目标,顺带把下一行也显示出来   向上用B
[root@xiaoxu tmp1]# grep -e "^#" -e "^$" /etc/fstab    #两个元字符条件 用-e 加起来


压缩和解压缩

命令 用法
gzip 压缩文件,压缩后源文件 没有了 file 1.log.gz
bzip2 password 源文件消失,扩展名".bz2"
-d 解压都用-d
tar cf 创建打包文件
tar xf 解包文件
tar tvf 查看包里面的文件
tart cjf 调用bzip2压缩打包文件 tar xjf 解包解压缩 -C 解压到指定目录
tar czf 调用gzip压缩打包文件 tar xzf 解包解压缩 -C
tar cJf 调用XZ压缩打包文件 都有-C 不写-C 直接解压到当前目录了

注意事项:mkdir -p 建立多层目录。打包的时候目录不要太多级。

用户权限

  • 多用户

    • 多用户多任务的操作系统
  • 用户类型

    • 管理员用户 root
    • 普通用户
      • 系统用户/程序用户(为了让某些程序运行)MYSQL
  • 用户相关的文件

    • /etc/password 用户信息

      root	:	x:			0:		0:				root	:/root:/bin/bash
      用户名		密码占位符	uid		gid(基本组ID)		
      
    • etc/shadow 用户密码信息

  • 用户:

    • 基本组

      • 附加组 如果建立 了一个usera 系统也会再加一个组USERA组
      [root@xiaoxu ~]# id 2002
      uid=2002(usera) gid=2002(usera) 组=2002(usera)
      id user3	查看用户相关信息,UID GID 分组ID
      id -u user3		查看UID
      id -g user3		查看GID
      id -u -n user3	查看用户名  可以以UID查   
      id -g -n user3 	查看组名
      
  •   useradd -g指定基本组,-G 附加组
      useradd -u 2002 user2    指定用户的uId,
      useradd -s   一般是建立系统用户的时候,有就是不让他有登录的shell一般不给用户创建家目录   -M
      useradd -s /sbin/nologin -M apache
      useradd -r mysql	直接  创系统用户,不会有目录
      
    selenux 非常高级不要碰,东西太多,上千条配置规则,    getenforce看看状态,   setenforce 0   关闭  临时关了,  一关机一开机又开了
      配置关了,vim /etc/sysconfig/selinux      改成disabled
    
    
  • 用户密码相关操作

    [root@localhost ~]# passwd -S user3				查看用户的状态,
    user3 LK 2020-01-07 0 99999 7 -1 (密码已被锁定。)
    
    [root@localhost ~]# passwd -l user3				锁定用户    -u     解锁
    锁定用户 user3 的密码 。
    passwd: 操作成功
    
    [root@localhost ~]# passwd -e user3				密码已失效,登陆的时候需要重新设置
    正在终止用户 user3 的密码。
    passwd: 操作成功
    
    [root@localhost ~]# usermod -u 1003 user3		修改uid
    [root@localhost ~]# id user3
    uid=1003(user3) gid=1001(ceshi) 组=1001(ceshi)
    
    [root@localhost ~]# usermod -g xinjiazu user3	修改user3的组
    [root@localhost ~]# id user3
    uid=1003(user3) gid=1002(xinjiazu) 组=1002(xinjiazu)
    
    [root@localhost ~]# usermod -aG ceshi user3		把user3新加到ceshi分组
    [root@localhost ~]# id user3
    uid=1003(user3) gid=1002(xinjiazu) 组=1002(xinjiazu),1001(ceshi)
    
    [root@localhost ~]# gpasswd --help
    用法:gpasswd [选项] 组
    
    选项:
      -a, --add USER                向组 GROUP 中添加用户 USER
      -d, --delete USER             从组 GROUP 中添加或删除用户
      -h, --help                    显示此帮助信息并推出
      -Q, --root CHROOT_DIR         要 chroot 进的目录
      -r, --delete-password         remove the GROUP's password
      -R, --restrict                向其成员限制访问组 GROUP
      -M, --members USER,...        设置组 GROUP 的成员列表
      -A, --administrators ADMIN,...	设置组的管理员列表
    除非使用 -A 或 -M 选项,不能结合使用这些选项。
    
    
    
  • 文件及目录权限管理

    • 常规权限
      r read 读取
      w write 写入
      x execute 执行

    • 文件
      r 查看文件内容(CAT/MORE/LESS/HEAD/TAIL/GREP)
      W 编辑文件内容(vim)
      x shell/python脚本

    • 目录
      r 查看目录下的文件(ls)
      w 修改目录下的文件(新建、删除、mv)
      x 切换目录(cd)

      [root@localhost ~]# ls -ld /etc/     	#查看目录的相关权限
      drwxr-xr-x. 75 root root 8192 1月   7 14:13 /etc/
      
    • 设置文件目录权限
      chomd {augo}{+-=}{rxw} 文件名称
      a all 所有
      u user 属主用户
      g group 属组
      o other 其他

      [root@localhost tmp1]# chmod a+x 1.txt 
      [root@localhost tmp1]# ls -l 1.txt 
      -rwxr-xr-x. 1 root root 0 1月   7 16:16 1.txt
      
      [root@localhost tmp1]# ll 2.txt 
      -rw-rw-r--. 1 root root 0 1月   7 16:16 2.txt
      
      [root@localhost tmp1]# chmod 600 /tmp/tmp1/3.txt 
      [root@localhost tmp1]# ll 3.txt 
      -rw-------. 1 root root 0 1月   7 16:16 3.txt
      #三种设置权限的方法
      
      [root@localhost tmp1]# chown ceshi1.jishu /tmp/tmp1/1.txt   #一下子改用户和组
      [root@localhost tmp1]# ls -l /tmp/tmp1/1.txt 
      -rw-r--r--. 1 ceshi1 jishu 0 1月   7 16:22 /tmp/tmp1/1.txt
      
      [root@localhost tmp1]# chgrp caiwu 2.txt   #修改文件属组
      [root@localhost tmp1]# ll
      总用量 0
      -rw-r--r--. 1 ceshi1 jishu 0 1月   7 16:22 1.txt
      -rw-r--r--. 1 root   caiwu 0 1月   7 16:22 2.txt
      -rw-r--r--. 1 root   root  0 1月   7 16:22 3.txt
      
      
      

      除了以上修改文件属性信息的方法还有一个方法是修改ACL, 优先级比较高,而且更加灵活

      [root@localhost tmp1]# setfacl -m u:user4:r 3.txt 		#m   modify 
      [root@localhost tmp1]# ll 3.txt 			#m
      -rw-r--r--+ 1 root root 0 1月   7 16:22 3.txt
      
      [root@localhost tmp1]# getfacl 3.txt 			
      # file: 3.txt
      # owner: root
      # group: root
      user::rw-
      user:user4:r--						user4的单独权限
      group::r--
      mask::r--
      other::r--
      
      setfacl -x u:user4		# 一下把User4单独的权限都去掉  不支持单个去权限
      
      

      [root@localhost tmp1]# ll /usr/bin/passwd

  • 用户环境配置文件
    .bash_logout 注销系统的时候执行
    .bash_profile 用户登录的时候执行 /etc/profile 针对所有用户
    .bashrc 打开新终端的时候执行 /etc/bashrc 针对所有用户
    比如说alias 命令,如果现在给一个命令做了别名操作,但是下一次登录的时候就不能用了。可以写到文件里面
    如果想要修改的文件马上生效,需要source 一下配置文件。

    source /home/usera/.bashrc	这个配置文件才生效
    
  • 软件包管理
    首先知道自己的系统平台,要不然软件选择的时候就有问题,可能会装不上,或装上不正常

    [root@localhost ~]# uname -r
    3.10.0-1062.el7.x86_64
    
    [root@localhost ~]# cat /etc/redhat-release 			#查看软件版本
    CentOS Linux release 7.7.1908 (Core)
    
    
    
    • 一些常用的软件都是在安装光盘里面,可以挂载光盘,去Packet目录里面找

      mount /dev/sr0 /mnt		#把光驱这个块设备挂载到/MNT目录
      
      软件包名头一个   “-”    连接的两个是软件名,包名      第二个“-”后面是版本号,再后面是平台需求,有的写的noarch,意思就是都可以
      

      一般下载rpm包可以通过以下网站,
      https://pkgs.org/ https://rpmfind.net/ 一般情况下这两个网站都是需要FQ才能打开的。

    • 管理rpm软件

      • 查询软件是否安装
        rpm -q 软件名称,但是一般我们不太知道软件的名称,或全名所以可以通过查找
        rpm -qa | grep vim 这个去找
      • 查询软件的说明信息
        rpm -qi 软件名称
  • 查询软件包安装后的文件
    rpm -ql 软件名称

    rpm -ql bash|less  看看bash里面都有什么文件
    
  • 查询某文件是由什么软件生成的

    [root@localhost ~]# rpm -qf /usr/bin/ls
    coreutils-8.22-24.el7.x86_64
    
    #再看看coreutils这个软件都生成了什么文件
    [root@localhost ~]# rpm -ql coreutils | less
    好多文件,
    
    • 查看软件的配置文件在哪儿

      [root@localhost ~]# rpm -qc vim-enhanced
      /etc/profile.d/vim.csh
      /etc/profile.d/vim.sh
      
      
  • 管理操作rpm

    • 安装软件
      rpm -ivh 软件安装包名称
      i:安装install
      v:显示详细信息verbose
      h:显示软件的安装进度
      安装vsftpd

      [root@localhost soft]# rpm -ivh /tmp/soft/vsftpd-3.0.2-25.el7.x86_64.rpm 
      准备中...                          ################################# [100%]
      正在升级/安装...
         1:vsftpd-3.0.2-25.el7              ################################# [100%]
       
      
      • yum相关操作
    • 使用yum管理rpm软件包的优势:自动解决软件依赖关系

    • 使用前提条件:配置了yum仓库/yum源

    • yum源的类型

      • 本地yum源

      • ftp源

      • http源

        • mirrors.aliyun.com 比较有名的源

          • rpm软件一般存在ISO文件夹里面

          • 比如可以

            • mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
              先备份源
              
              wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
              下载源
              
        • 还有网易163源, centeros 官司方源,还有一个epel源

      • 系统的源配置文件位置

        [root@localhost ~]# ll /etc/yum.repos.d/
        总用量 32
        -rw-r--r--. 1 root root 1664 9月   5 21:05 CentOS-Base.repo
        -rw-r--r--. 1 root root 1309 9月   5 21:05 CentOS-CR.repo
        -rw-r--r--. 1 root root  649 9月   5 21:05 CentOS-Debuginfo.repo
        -rw-r--r--. 1 root root  314 9月   5 21:05 CentOS-fasttrack.repo
        -rw-r--r--. 1 root root  630 9月   5 21:05 CentOS-Media.repo
        -rw-r--r--. 1 root root 1331 9月   5 21:05 CentOS-Sources.repo
        -rw-r--r--. 1 root root 6639 9月   5 21:05 CentOS-Vault.repo
        
        #文件的名称正好对应Mirrors  centeros官司网的目录名
        
      • 注意事项:一般一个REPO文件对应的是一个软件,或者一类软件,不同的repo文件不有相同的源地址,要不会出错,比如

        openstack docker hadoop
        openstack.repo docker.repo hadoop.repo
  • repo文件一般是这个样子的

    [centosplus-source]
    name=CentOS-$releasever - Plus Sources
    baseurl=http://vault.centos.org/centos/$releasever/centosplus/Source/     #这行最重要
    gpgcheck=1				#签名检测   自己写的就写0一般
    enabled=0				#是否启用
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    
    • 自写软件源可以按如下简单写法
    [root@localhost yum.repos.d]# cat centeroshtop.repo 
    [htop-sorce]
    name=htopsorce
    baseurl=ftp://222.85.35132/ftp
    #如果是本地目录就是
    #faseurl=file:///mnt...
    enabled=1
    gpgcheck=0
    
    
    • 一般建完源后要清一下yum缓存 yum clean all

    • 然后刷新一下源 yum repolist repo

    • 重新生成一下缓存 yum makecache

    • epel这个源是可以安装的,作用一般是自动化操作,相关 的

      yum install -y epel-release    #安装epel源
      [root@localhost yum.repos.d]# ll /etc/yum.repos.d/ep*
      -rw-r--r--. 1 root root  951 10月  3 2017 /etc/yum.repos.d/epel.repo
      -rw-r--r--. 1 root root 1050 10月  3 2017 /etc/yum.repos.d/epel-testing.repo
      
      
    • 查看软件组 yum grouplist

      [root@localhost yum.repos.d]# yum grouplist
      已加载插件:fastestmirror
      没有安装组信息文件
      Maybe run: yum groups mark convert (see man yum)
      Loading mirror speeds from cached hostfile
       * base: mirrors.aliyun.com
       * extras: mirrors.aliyun.com
       * updates: mirrors.aliyun.com
      可用的环境分组:
         最小安装
         基础设施服务器
         计算节点
         文件及打印服务器
         基本网页服务器
         虚拟化主机
         带 GUI 的服务器
         GNOME 桌面
         KDE Plasma Workspaces
         开发及生成工作站
      可用组:
         传统 UNIX 兼容性
         兼容性程序库
         图形管理工具
         安全性工具
         开发工具
         控制台互联网工具
         智能卡支持
         科学记数法支持
         系统管理
         系统管理工具
      完成
      
      
      • yum install -y 软件名称 不提示直接安装软件依赖

      • yum list all 查看Yum中的所有软件

      • yum groupinstall -y "软件组名" 安装软件组,这里有一点需要注意,如果是英文环境,单词之间有空格 ,需要把整个单词用引号引起来,要不然机器认为是两个组名

      • 查看某文件的软件来源

        yum provides "*bin/passwd"   #*是通配sbin等 
        
        
      • 制作一个自己的yum仓库

        1. 准备rpm软件

          yum install --downloadonly --downloaddir=./ redis #下载依赖以及安装文件到当前目录下
          
          yum -y install createrepo 
          #下载软件createrepo
          [root@localhost mysql]# mv /etc/yum.repos.d/*.repo /tmp/tmp1/
          #把原来的repo文件转移走
          
          createrepo ./    #生成repodata文件在当前目录下
          
          [root@localhost yum.repos.d]# cat redis.repo 
          [redissource]
          name=redis
          baseurl=file:///tmp/mysql
          enabled=1
          gpgcheck=0
          
          yum clean all
          yum repolist repo
          yum makecache
          yum install -y redis
          
          [root@localhost yum.repos.d]# cat redis.repo 
          [redissource]
          name=redis
          baseurl=file:///tmp/mysql
          enabled=1
          gpgcheck=0
          
          
          结束
          
          
          
          
          
        2. 创建yum元数据文件
          -源码软件管理安装(一般来说源码软件安装的前提是我们要有GCC编译环境,因为大部分软件都是由C语言写的)
          找到一个源码下载站 https://sourceforge.net/

  1. 配置安装参数

    1. 就拿htop软件来说,下载下来,编译

       ./configure --prefix=/usr/local/htop/    #./configure --help|less查看帮助文件
       其中有一个参数是大多数软件都通用的,"prefix"可以指定安装目录。
      
  2. 编译

    make    在配置安装参数那个目录执行,因为make还在那个目录
    
    
  3. 安装

    make install 开始安装    执行过后在安装目录里面就开始有文件了。 这里有两个两个目录 bin   share
    bin 里面应该就是可执行命令了,而share一般是一些帮助文档。
    以当前软件为例,直接在bin目录下有htop文件,通过"./htop"直接执行该软件。
    执行的话如果没有做软连接,那就只能去安装目录里面执行了
    
    • 磁盘管理
[root@localhost ~]# ls -l /dev/sd*   #列出当前的硬盘     都是块文件,需要通过挂载才能访问
brw-rw----. 1 root disk 8, 0 1月   6 11:32 /dev/sda  	#第一个硬盘,如果有第二个就是sdb
brw-rw----. 1 root disk 8, 1 1月   6 11:32 /dev/sda1		#第一个分区
brw-rw----. 1 root disk 8, 2 1月   6 11:32 /dev/sda2		#第二个分区
  • Linux磁盘管理

    • 基本磁盘管理 lvm/raid

    • 磁盘名称表示方法:

      • /dev/sda
        sd:硬盘接口(scsi,stat,sas)
        a: 第一块
    • 硬盘分区名称:

      • 类型
        • 主分区
        • 扩展分区 主分区 扩展分区加起来不能超过4个 ,扩展分区不能存数据
        • 逻辑分区 在扩展分区上建立逻辑分区
    • 格式化/创建文件系统

      • windows:

        • ntfs
        • fat32
      • Linux

        • ext3

        • ext4

        • xfs

        • swap

          [root@localhost ~]# fdisk -l   显示当前分区信息
          
          磁盘 /dev/sda:322.1 GB, 322122547200 字节,629145600 个扇区   #如果是虚拟机就是/dev/vda
          Units = 扇区 of 1 * 512 = 512 bytes
          扇区大小(逻辑/物理):512 字节 / 512 字节
          I/O 大小(最小/最佳):512 字节 / 512 字节
          磁盘标签类型:dos
          磁盘标识符:0x000dc5c0
          
             设备 Boot      Start         End      Blocks   Id  System
          /dev/sda1   *        2048     2099199     1048576   83  Linux
          /dev/sda2         2099200   629145599   313523200   8e  Linux LVM
          
          磁盘 /dev/mapper/centos-root:53.7 GB, 53687091200 字节,104857600 个扇区
          Units = 扇区 of 1 * 512 = 512 bytes
          扇区大小(逻辑/物理):512 字节 / 512 字节
          I/O 大小(最小/最佳):512 字节 / 512 字节
          
          
          磁盘 /dev/mapper/centos-swap:9529 MB, 9529458688 字节,18612224 个扇区
          Units = 扇区 of 1 * 512 = 512 bytes
          扇区大小(逻辑/物理):512 字节 / 512 字节
          I/O 大小(最小/最佳):512 字节 / 512 字节
          
          
          磁盘 /dev/mapper/centos-home:257.8 GB, 257823866880 字节,503562240 个扇区
          Units = 扇区 of 1 * 512 = 512 bytes
          扇区大小(逻辑/物理):512 字节 / 512 字节
          I/O 大小(最小/最佳):512 字节 / 512 字节
          
          
          [root@localhost ~]# lsblk
          NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
          fd0               2:0    1     4K  0 disk 
          sda               8:0    0   300G  0 disk 
          ├─sda1            8:1    0     1G  0 part /boot
          └─sda2            8:2    0   299G  0 part 
            ├─centos-root 253:0    0    50G  0 lvm  /
            ├─centos-swap 253:1    0   8.9G  0 lvm  [SWAP]
            └─centos-home 253:2    0 240.1G  0 lvm  /home
          sr0              11:0    1   4.4G  0 rom  
          #用列表表示出当前硬盘分区情况
          
          [root@localhost dev]# fdisk /dev/sda     #使用fdisk 格式化分区
          欢迎使用 fdisk (util-linux 2.23.2)。
          
          更改将停留在内存中,直到您决定将更改写入磁盘。
          使用写入命令前请三思。
          
          
          命令(输入 m 获取帮助):
          命令(输入 m 获取帮助):m
          命令操作
             a   toggle a bootable flag
             b   edit bsd disklabel
             c   toggle the dos compatibility flag
             d   delete a partition		#删除一个分区
             g   create a new empty GPT partition table
             G   create an IRIX (SGI) partition table
             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		#修改分区id
             u   change display/entry units
             v   verify the partition table
             w   write table to disk and exit      #保存即出
             x   extra functionality (experts only)
          #还有一个注意事项,如果输入错误,退格键不能用,需要配合“ctrl"键
          
          分区建完之后,还要建文件系统,或者说是格式化
          [root@localhost dev]# mkfs -t ext4 /dev/sdb10      #除了这个命令还有一个命令
          mke2fs 1.42.9 (28-Dec-2013)
          无法对 /dev/sdb10 进行 stat 调用 --- 没有那个文件或目录
          
          The device apparently does not exist; did you specify it correctly?
          [root@localhost dev]# mkfs.        tab  出了这么多系统可以选  后面直接跟分区
          mkfs.btrfs   mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.ext4    mkfs.minix   mkfs.xfs   
          
          格式化完了需要挂载一下, 可以先查一下当前的系统挂载情况     直接  输入mount命令
          有关分区表的文件也有一个
          partprobe /dev/sdb		#使系统能够识别分区格式的变化
          grep "sda" /proc/partition	#查看分区文件
          还有一个查看分区的方法
          [root@localhost ~]# lsblk | grep sda
          sda               8:0    0   300G  0 disk 
          ├─sda1            8:1    0     1G  0 part /boot
          └─sda2            8:2    0   299G  0 part 
          
          [root@localhost ~]# df -hT		查看磁盘容量
          文件系统                类型      容量  已用  可用 已用% 挂载点
          devtmpfs                devtmpfs  8.9G     0  8.9G    0% /dev
          tmpfs                   tmpfs     8.9G     0  8.9G    0% /dev/shm
          tmpfs                   tmpfs     8.9G  185M  8.7G    3% /run
          tmpfs                   tmpfs     8.9G     0  8.9G    0% /sys/fs/cgroup
          /dev/mapper/centos-root xfs        50G  1.9G   49G    4% /
          /dev/sda1               xfs      1014M  136M  879M   14% /boot
          /dev/mapper/centos-home xfs       240G   38M  240G    1% /home
          tmpfs                   tmpfs     1.8G     0  1.8G    0% /run/user/1006
          tmpfs                   tmpfs     1.8G     0  1.8G    0% /run/user/0
          那么如果分区格式化完了之后可以通过mount命令挂载,可是有一个问题就是重新开机后就没有了,怎么办?可以通过 /etc/fatab  文件配置为开机自动挂载,先看一下文件内容
          [root@localhost ~]# cat /etc/fstab 
          
          #
          # /etc/fstab
          # Created by anaconda on Wed Dec 18 19:12:25 2019
          #
          # Accessible filesystems, by reference, are maintained under '/dev/disk'
          # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
          #
          /dev/mapper/centos-root /                       xfs     defaults        0 0
          UUID=ad102a52-d86b-4d07-a0f5-deb4650c4442 /boot                   xfs     defaults        0 0
          /dev/mapper/centos-home /home                   xfs     defaults        0 0
          /dev/mapper/centos-swap swap                    swap    defaults        0 0
          第一列为分区     第二个为挂载的目录   第三列是文件系统    第三个挂载的时候使用的参数, 两个0 第一个是有关备份0表示不备份    第二个类似磁盘检测  0 表示 不检测
          第一列的分区还可以用UUID 就是分区ID表示   查看UUID可以通过以下命令
          [root@localhost ~]# blkid /dev/sda1    #复制ID的时候可以有引号也可以没有
          /dev/sda1: UUID="ad102a52-d86b-4d07-a0f5-deb4650c4442" TYPE="xfs" 
          
          mount -a #挂载  /etc/fatab文件里面的内容
          
          • 有关磁盘的容量,如果要看一个分区里面是否还可以放入新的文件,除了看容量是否有剩余之外还有一个指标就是inode ,一个分区越大INODE的数量就越多,下面命令可以查看一个分区INODE的使用情况

            [root@localhost ~]# df -i /dev/sda1
            文件系统        Inode 已用(I) 可用(I) 已用(I)% 挂载点
            /dev/sda1      524288     326  523962       1% /boot
            
          • swap分区
            SWAP分区是类似WINDOWS里面的虚拟内存,如果真实内存用完了,就会在SWAP分区交换数据,
            swap的大小要设置好,因为有一些软件比如ORACL数据库软件就对swap分区大小有要求,达不到要求是无法安装软件的。要求最低有2g。那查看SWAP分区的命令如下

            [root@localhost ~]# free -h
                          total        used        free      shared  buff/cache   available
            Mem:            17G        2.6G         14G        184M        419M         14G
            Swap:          8.9G          0B        8.9G
            
            

            这个命令连真实内存信息也一起看了。如果分区容量不够,可以在当前盘里面看一下有没有剩余容量,如果有就先分一下区,再格式化为SWAP分区,然后FSTAB文件里面开机挂载

            makeswap /dev/sda7
            

            挂载的时候目录直接写SWAP 分区类型也写SWAP 其他都一样

          • 课题,准备1G分区,修改其SYSTEM ID 为82,并格式化为swap文件系统

            fdisk /dev/sda(省略)
            partprobe /dev/sda    #通知系统分区发生了变化
            grep "sda7" /proc/partition			
            mkswap /dev/sda7			#创建交换分区
            vim /etc/fstab				#开机自动挂载
            mount -a					#挂载fstab里面没有挂载的分区
            swapon -a					#挂载交换分区
            free -h						#验证
            

            linux磁盘管理

  • lvm 逻辑卷管理logical volum manage

​ 冷备份:比如数据库,断掉服务,开始备份

  • 优势:

    • 扩展或者缩减磁盘
    • 支持磁盘快照
  • 工作过程
    磁盘/分区—>pv物理卷—>vg卷组—>lv逻辑卷—>格式化—>挂载使用

    • 先建pv,pv可以是一个裸盘,也可是一个裸分区(标准是分区id是要以8e开头,不需要格式化
  • pv物理卷相关的操作

    pvcreate 磁盘名称/分区名称      #创建PV
    pvscan						#查看系统所有pv
    root@localhost ~]# pvscan 
      PV /dev/sda2   VG centos          lvm2 [<299.00 GiB / 4.00 MiB free]
      Total: 1 [<299.00 GiB] / in use: 1 [<299.00 GiB] / in no VG: 0 [0   ]
    
    pvremove 物理郑名称				#删除pv
    
  • vg卷组

    [root@localhost ~]# vgscan 				#没有什么内容
      Reading volume groups from cache.
      Found volume group "centos" using metadata type lvm2
    #一般用下一个命令,查看VG信息
    
    [root@localhost ~]# vgdisplay   后面可加也可以不加参数,不加参加显示所有VG组
      --- 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               <299.00 GiB
      PE Size               4.00 MiB
      Total PE              76543
      Alloc PE / Size       76542 / 298.99 GiB
      Free  PE / Size       1 / 4.00 MiB
      VG UUID               0Jdt9d-OtDK-H73f-7wWx-E5si-CEPU-PR7186
    
  • lv逻辑卷相关操作

    lvcreate -L 容量 -n 名称 卷组名称
    lvscan		查看逻辑卷
    [root@localhost ~]# lvscan 
      ACTIVE            '/dev/centos/swap' [<8.88 GiB] inherit
      ACTIVE            '/dev/centos/home' [<240.12 GiB] inherit     #像home swap root都是软件连接的名称只是为了好识别,真正的挡挂载是块文件
      ACTIVE            '/dev/centos/root' [50.00 GiB] inherit
      
      [root@localhost ~]# ll /dev/centos/home 
    lrwxrwxrwx 1 root root 7 1月  14 00:13 /dev/centos/home -> ../dm-2   #文件是软连接,指向/dm-2
    
    [root@localhost ~]# ls -al /dev/ | grep "^b"     真实的文件属性
    brw-rw----   1 root disk    253,   0 1月  14 00:13 dm-0
    brw-rw----   1 root disk    253,   1 1月  14 00:13 dm-1
    brw-rw----   1 root disk    253,   2 1月  14 00:13 dm-2
    brw-rw----   1 root disk      2,   0 1月  14 00:13 fd0
    brw-rw----   1 root disk      8,   0 1月  14 00:13 sda
    brw-rw----   1 root disk      8,   1 1月  14 00:13 sda1
    brw-rw----   1 root disk      8,   2 1月  14 00:13 sda2
    brw-rw----   1 root cdrom    11,   0 1月  14 00:13 sr0
    
  • 示例
    创建逻辑卷/dev/data/webdata,大小为2G,为其创建EXT4文件系统 ,并针其挂载到/web/htdocs目录

    • 先建卷组

      [root@localhost ~]# lsblk 
      NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
      fd0               2:0    1     4K  0 disk 
      sda               8:0    0   300G  0 disk 
      ├─sda1            8:1    0     1G  0 part /boot
      └─sda2            8:2    0   299G  0 part 
        ├─centos-root 253:0    0    50G  0 lvm  /
        ├─centos-swap 253:1    0   8.9G  0 lvm  [SWAP]
        └─centos-home 253:2    0 240.1G  0 lvm  /home
      sdb               8:16   0     8G  0 disk 
      sr0              11:0    1   4.4G  0 rom  
      找到磁盘名称  sdb
      [root@localhost ~]# vgcreate data /dev/sdb 
        Physical volume "/dev/sdb" successfully created.
        Volume group "data" successfully created
      提示创建成功
      
      [root@localhost ~]# vgdisplay data
        --- Volume group ---
        VG Name               data
        System ID             
        Format                lvm2
        Metadata Areas        1
        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                1
        Act PV                1
        VG Size               <8.00 GiB
        PE Size               4.00 MiB
        Total PE              2047
        Alloc PE / Size       0 / 0   
        Free  PE / Size       2047 / <8.00 GiB
        VG UUID               PstG9h-n2XD-VR6S-agcI-3Fo2-UMPI-aaN9fs
      创建完成,验证成功有这个VG
      
      创建逻辑卷
      [root@localhost ~]# lvcreate -L 2G -n webdata data
        Logical volume "webdata" created.
      已经创建成功,
      
      创建文件系统 ,挂载使用
      [root@localhost ~]# mkfs.ext4 /dev/data/webdata 
      mke2fs 1.42.9 (28-Dec-2013)
      文件系统标签=
      OS type: Linux
      块大小=4096 (log=2)
      分块大小=4096 (log=2)
      Stride=0 blocks, Stripe width=0 blocks
      131072 inodes, 524288 blocks
      26214 blocks (5.00%) reserved for the super user
      第一个数据块=0
      Maximum filesystem blocks=536870912
      16 block groups
      32768 blocks per group, 32768 fragments per group
      8192 inodes per group
      Superblock backups stored on blocks: 
      	32768, 98304, 163840, 229376, 294912
      
      Allocating group tables: 完成                            
      正在写入inode表: 完成                            
      Creating journal (16384 blocks): 完成
      Writing superblocks and filesystem accounting information: 完成 
      完成
      [root@localhost data]# mkdir -p /web/htdocs
      [root@localhost data]# vim /etc/fstab 
      /dev/data/webdata       /web/htdocs     ext4    defaults        0 0
      最后一步验证
      df -hT
      

      linux磁盘管理

  • lvm 逻辑卷管理logical volum manage

​ 冷备份:比如数据库,断掉服务,开始备份

  • 优势:
    • 扩展或者缩减磁盘
    • 支持磁盘快照
  • 工作过程

    磁盘/分区—>pv物理卷—>vg卷组—>lv逻辑卷—>格式化—>挂载使用

    • 先建pv,pv可以是一个裸盘,也可是一个裸分区(标准是分区id是要以8e开头,不需要格式化
  • pv物理卷相关的操作

    pvcreate 磁盘名称/分区名称      #创建PV
    pvscan						#查看系统所有pv
    root@localhost ~]# pvscan 
      PV /dev/sda2   VG centos          lvm2 [<299.00 GiB / 4.00 MiB free]
      Total: 1 [<299.00 GiB] / in use: 1 [<299.00 GiB] / in no VG: 0 [0   ]
    
    pvremove 物理郑名称				#删除pv
    
  • vg卷组

    [root@localhost ~]# vgscan 				#没有什么内容
      Reading volume groups from cache.
      Found volume group "centos" using metadata type lvm2
    #一般用下一个命令,查看VG信息
    
    [root@localhost ~]# vgdisplay   后面可加也可以不加参数,不加参加显示所有VG组
      --- 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               <299.00 GiB
      PE Size               4.00 MiB
      Total PE              76543
      Alloc PE / Size       76542 / 298.99 GiB
      Free  PE / Size       1 / 4.00 MiB
      VG UUID               0Jdt9d-OtDK-H73f-7wWx-E5si-CEPU-PR7186
    
  • lv逻辑卷相关操作

    lvcreate -L 容量 -n 名称 卷组名称
    lvscan		查看逻辑卷
    [root@localhost ~]# lvscan 
      ACTIVE            '/dev/centos/swap' [<8.88 GiB] inherit
      ACTIVE            '/dev/centos/home' [<240.12 GiB] inherit     #像home swap root都是软件连接的名称只是为了好识别,真正的挡挂载是块文件
      ACTIVE            '/dev/centos/root' [50.00 GiB] inherit
      
      [root@localhost ~]# ll /dev/centos/home 
    lrwxrwxrwx 1 root root 7 1月  14 00:13 /dev/centos/home -> ../dm-2   #文件是软连接,指向/dm-2
    
    [root@localhost ~]# ls -al /dev/ | grep "^b"     真实的文件属性
    brw-rw----   1 root disk    253,   0 1月  14 00:13 dm-0
    brw-rw----   1 root disk    253,   1 1月  14 00:13 dm-1
    brw-rw----   1 root disk    253,   2 1月  14 00:13 dm-2
    brw-rw----   1 root disk      2,   0 1月  14 00:13 fd0
    brw-rw----   1 root disk      8,   0 1月  14 00:13 sda
    brw-rw----   1 root disk      8,   1 1月  14 00:13 sda1
    brw-rw----   1 root disk      8,   2 1月  14 00:13 sda2
    brw-rw----   1 root cdrom    11,   0 1月  14 00:13 sr0
    
  • 示例

    创建逻辑卷/dev/data/webdata,大小为2G,为其创建EXT4文件系统 ,并针其挂载到/web/htdocs目录

    • 先建卷组

      [root@localhost ~]# lsblk 
      NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
      fd0               2:0    1     4K  0 disk 
      sda               8:0    0   300G  0 disk 
      ├─sda1            8:1    0     1G  0 part /boot
      └─sda2            8:2    0   299G  0 part 
        ├─centos-root 253:0    0    50G  0 lvm  /
        ├─centos-swap 253:1    0   8.9G  0 lvm  [SWAP]
        └─centos-home 253:2    0 240.1G  0 lvm  /home
      sdb               8:16   0     8G  0 disk 
      sr0              11:0    1   4.4G  0 rom  
      找到磁盘名称  sdb
      [root@localhost ~]# vgcreate data /dev/sdb 
        Physical volume "/dev/sdb" successfully created.
        Volume group "data" successfully created
      提示创建成功
      
      [root@localhost ~]# vgdisplay data
        --- Volume group ---
        VG Name               data
        System ID             
        Format                lvm2
        Metadata Areas        1
        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                1
        Act PV                1
        VG Size               <8.00 GiB
        PE Size               4.00 MiB
        Total PE              2047
        Alloc PE / Size       0 / 0   
        Free  PE / Size       2047 / <8.00 GiB
        VG UUID               PstG9h-n2XD-VR6S-agcI-3Fo2-UMPI-aaN9fs
      创建完成,验证成功有这个VG
      
      创建逻辑卷
      [root@localhost ~]# lvcreate -L 2G -n webdata data
        Logical volume "webdata" created.
      已经创建成功,
      
      创建文件系统 ,挂载使用
      [root@localhost ~]# mkfs.ext4 /dev/data/webdata 
      mke2fs 1.42.9 (28-Dec-2013)
      文件系统标签=
      OS type: Linux
      块大小=4096 (log=2)
      分块大小=4096 (log=2)
      Stride=0 blocks, Stripe width=0 blocks
      131072 inodes, 524288 blocks
      26214 blocks (5.00%) reserved for the super user
      第一个数据块=0
      Maximum filesystem blocks=536870912
      16 block groups
      32768 blocks per group, 32768 fragments per group
      8192 inodes per group
      Superblock backups stored on blocks: 
      	32768, 98304, 163840, 229376, 294912
      
      Allocating group tables: 完成                            
      正在写入inode表: 完成                            
      Creating journal (16384 blocks): 完成
      Writing superblocks and filesystem accounting information: 完成 
      完成
      [root@localhost data]# mkdir -p /web/htdocs
      [root@localhost data]# vim /etc/fstab 
      /dev/data/webdata       /web/htdocs     ext4    defaults        0 0
      最后一步验证
      df -hT
      
      [root@localhost /]# lvextend -L+5G /dev/data/webdata   #当LV空间不足的时候,而VG还有剩余空间可以直接扩展LV大小    
        Size of logical volume data/webdata changed from 2.00 GiB (512 extents) to 7.00 GiB (1792 extents).
        Logical volume data/webdata successfully resized.
      #执行完毕只是物理的边界扩大了 逻辑空间还没有加  lvscan空间已经生效还需要 文件系统扩大 执行以下指令
      [root@localhost ~]# resize2fs /dev/data/webdata    ##这个命令对EXT3,4有效如果是xfs系统需要执行以下指令
      [root@localhost ~]# xfs_growfs /dev/data/webdata
      

示例2 如果vg空间不足的扩展

  1. 提升VG空间

    [root@localhost ~]# vgextend vg2000 /dev/sdb2     #将物理卷"/dev/sdb2"加入卷组"vg2000"
    

    lvm快照(snapshot)功能

注意

  1. 将快照的权限设置为只读,建立快照目录只是用来备份数据不断业务用的

  2. 设置合适的生存周期
    这个生存周期不是指时间,而是空间大小,如果设置的空间太小,还没有备份完数据,而原磁盘的数据量还在增加,到了生存周期的大小,那直接快照就不存在了,备份也将找不到设备

    lvcreate -s -p r -L 3M /dev/data/webdata 
    r 只读 -s snapshot -n 名字
    
    [root@localhost ~]# lvscan 
      ACTIVE   Original '/dev/data/webdata' [10.00 GiB] inherit
      ACTIVE   Snapshot '/dev/data/lvol0' [4.00 MiB] inherit
      ACTIVE            '/dev/centos/swap' [<8.88 GiB] inherit
      ACTIVE            '/dev/centos/home' [<240.12 GiB] inherit
      ACTIVE            '/dev/centos/root' [50.00 GiB] inherit
    这个时候就会多出一个SNAPSHOT的逻辑卷,挂载后就可以备份数据了
    

    先建立一个目录用于存放文件

    [root@localhost tmp]# mount /dev/data/lvol0 /tmp/snap/
    mount: /dev/mapper/data-lvol0 写保护,将以只读方式挂载
    

    这个时候试着在原磁盘里面写入超过生存周期大小的文件,那快照就会失效了

    dd if=/dev/zero of=/web/htdocs/123.mp3 bs=1M count=4
    
    lvscan 
     inactive Snapshot '/dev/data/lvol0' [4.00 MiB] inherit    快照磁盘已经不是激活状态了
    
    用完之后把快照卷删除就行了
    lvremove /dev/data/lvo10
    

posted on 2020-01-01 15:06  土豆爸  阅读(273)  评论(0)    收藏  举报

导航