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仓库
-
准备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 结束 -
创建yum元数据文件
-源码软件管理安装(一般来说源码软件安装的前提是我们要有GCC编译环境,因为大部分软件都是由C语言写的)
找到一个源码下载站 https://sourceforge.net/
-
-
-
配置安装参数
-
就拿htop软件来说,下载下来,编译
./configure --prefix=/usr/local/htop/ #./configure --help|less查看帮助文件 其中有一个参数是大多数软件都通用的,"prefix"可以指定安装目录。
-
-
编译
make 在配置安装参数那个目录执行,因为make还在那个目录 -
安装
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: 第一块
- /dev/sda
-
硬盘分区名称:
- 类型
- 主分区
- 扩展分区 主分区 扩展分区加起来不能超过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 -hTlinux磁盘管理
-
-
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空间不足的扩展
-
提升VG空间
[root@localhost ~]# vgextend vg2000 /dev/sdb2 #将物理卷"/dev/sdb2"加入卷组"vg2000"lvm快照(snapshot)功能
注意
-
将快照的权限设置为只读,建立快照目录只是用来备份数据不断业务用的
-
设置合适的生存周期
这个生存周期不是指时间,而是空间大小,如果设置的空间太小,还没有备份完数据,而原磁盘的数据量还在增加,到了生存周期的大小,那直接快照就不存在了,备份也将找不到设备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
浙公网安备 33010602011771号