第三单元 系统延迟及定时机制
一、计划定期任务
1.at 命令可以指定某一任务在将来的特定时间运行。该作业可能是一次备份、对您系统的检查或者特定时间发送的通知。那些需要花费很长时间才可完成的作业正适合 at 命令。仅需使用 at 命令将任务设置为在一分钟或两分钟之后运行。然后您便可以安全注销 , 因为该任务会在与 shell 会话断开连接的情况下运行
1)at 命令必须指定任务应运行的时间。该指定可以是具体时间和 / 或日期 ( 例如星期一 , 10:00pm 或 7 月 15 日 ) 。也可以是当前时间的相对时间 ( 现在时间加上 5 分钟 , 现在时间加上 3 天或 4:00pm 加上1 周 ) 通过添加其他选项 , 您可以在任务完成是发送邮件 ( -m ), 或者从文件中读取任务 ( -f 文件 ), 而无需通过标准输入进行
2)在键入 at 命令行之后 , 按 Enter 并继续键入作业中包含的其他命令。任务可由多个命令组成。在完成键入要运行的命令时 , 在单独出现的一行中按 Ctrl+d 完成任务
2.at 命令示例
[root@serverX ~]# at now +2 min
at> echo "Hello from the at command" >/dev/pts/0
at> <EOT>
job 4 at 2011-08-10 14:05
ps:在将某一 at 作业设置为运行之后 , 可以通过使用 atq 命令列出作业编号以及次数。若要查看作业中所包含的命令 , 键入 at -c #( # 号为作业编号 ) 。键入Atrm # ( # 号为作业编号 ) 则是删除指定作业。
eg:[root@localhost ~]# date ###现在时间21:13
Wed Apr 5 21:13:40 EDT 2017
[root@localhost ~]# touch /mnt/file ###在/mnt下建立一个文件
[root@localhost ~]# at 21:15 ###指定在21:15完成以下命令
at> rm -fr /mnt/* ###删除/mnt下的所有文件
at> <EOT> ###ctrl+d退出
job 1 at Wed Apr 5 21:15:00 2017
[root@localhost ~]# at -l ###列出at任务
1 Wed Apr 5 21:15:00 2017 a root
[root@localhost ~]# at -l ###21:15后任务执行完毕
[root@localhost ~]# touch /mnt/file
[root@localhost ~]# at 21:17
at> rm -fr /mnt/*
at> <EOT>
job 2 at Wed Apr 5 21:17:00 2017
[root@localhost ~]# at -l
2 Wed Apr 5 21:17:00 2017 a root
[root@localhost ~]# atrm 2 ###撤销任务2
[root@localhost ~]# at -l
[root@localhost ~]# at 21:18
at> date
at> <EOT>
job 3 at Wed Apr 5 21:18:00 2017
[root@localhost ~]# mail
No mail for root
[root@localhost ~]# at -l
3 Wed Apr 5 21:18:00 2017 a root
[root@localhost ~]# mail ###有输出的任务可在执行完毕后用mail查看输出结果
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 root Wed Apr 5 21:18 14/520 "Output from your job "
& 1
Message 1:
From root@localhost.localdomain Wed Apr 5 21:18:01 2017
Return-Path: <root@localhost.localdomain>
X-Original-To: root
Delivered-To: root@localhost.localdomain
Subject: Output from your job 3
To: root@localhost.localdomain
Date: Wed, 5 Apr 2017 21:18:00 -0400 (EDT)
From: root@localhost.localdomain (root)
Status: R
Wed Apr 5 21:18:00 EDT 2017 ###输出结果显示
& q ###q退出
Held 1 message in /var/spool/mail/root
[root@localhost ~]# at now+30day ###执行时间是30天后
at> poweroff ###关机
at> <EOT>
job 4 at Fri May 5 21:18:00 2017
您在 /var/spool/mail/root 中有邮件
[root@localhost ~]# at -l
4 Fri May 5 21
[root@localhost ~]# vim /etc/at.deny ###用户黑名单,名单上的用户皆无法执行at命令
[root@localhost ~]# cat /etc/at.deny ###student用户被禁止
student
[root@localhost ~]# su - student
上一次登录:Wed Apr 5 21:30:12 EDT 2017pts/2 上
[student@localhost ~]$ at 21:50 ###无法执行,无权限
You do not have permission to use at.
[student@localhost ~]$ exit
logout
[root@localhost ~]# vim /etc/at.allow ###用户白名单,只有名单上的用户才能执行at命令
[root@localhost ~]# cat /etc/at.allow ###名单为空,所有用户都被禁止
[root@localhost ~]# su - student
上一次登录:Wed Apr 5 21:32:33 EDT 2017pts/2 上
[student@localhost ~]$ at 21:58 ###无法执行,无权限
You do not have permission to use at
[student@localhost ~]$ exit
logout
[root@localhost ~]# vim /etc/at.allow
[root@localhost ~]# cat /etc/at.allow ###仅student用户可以执行at命令,其他用户都被禁止
student
[root@localhost ~]# su - student
上一次登录:Wed Apr 5 21:31:17 EDT 2017pts/2 上
[student@localhost ~]$ at 21:55 ###student用户可执行at命令
at> exit
at> <EOT>
job 5 at Wed Apr 5 21:55:00 2017
[student@localhost ~]$ atrm 5
[student@localhost ~]$ exit
logout
二、管理定期任务
1.cron 设备管理必须按计划定期重复运行的程序。后台程序crond 每分钟唤醒一次 , 以运行计划的任何任务用户使用crontab 命令计划个人任务。系统管理员可以在系统范围配置文件中设置任务
2.单个用户使用称为 crontab ( cron 表 ) 的文本文件登记任务
1)crontab -l 列出文件
2)crontab -r 删除文件
3)crontab -e 编辑文件
4)crontab -e 使用默认编辑器是 vi
3.corn 时间表示方式
1* 2* 3* 4* 5* command
– 1*---------- 分钟
– 2*---------- 小时
– 3*---------- 天
– 4*---------- 月
– 5*---------- 周
4.crontab 注意事项
1)属于系统的任务通常保存在 /etc/crontab 文件中而不是使用 crontab -e 编辑保存在个人文件中。更好的做法是用文本编辑器创建 crontab 文件并保存到 /etc/cron.d 中 ( 避免更新系统软件包 cronie 时出现问题 ) 。/etc/cron.d/crontab 文件在日期说明后另加一个字段 , 表示将运行作业的用户
2)对于需要每天、每周或每月运行一次的脚本 , 可以直接将其设置为可执行文件 , 并保存在 /etc/cron.{daily,weekly,monthly} 中相应目录下。这些任务由/etc/anacrontab 配置的系统 anacron 服务运行 anacron是 cron 的集成组件 , 用于更好地管理作业 , 并确保在作业因计算机关闭而未运行的情况下 , 在系统引导后运行作业
5.cron 权限设定
1)在系统中默认所有用户可以设定 cron
2)用户黑名单
– /etc/cron.deny
3)用户白名单
– /etc/cron.allow
6.系统中的临时文件
1)系统中服务在正常运行时会产生临时文件
2)在系统中 /usr/lib/tmpfiles.d/ 标实服务的临时文件存放位置
3)文件示例
#vim /usr/lib/tmpfiles.d/test.conf
d /run/test 0700 root root 5s
7.控制系统中的临时文件
#systemd-tmpfiles
--create /usr/lib/tmpfiles.d/test.conf
--clean /usr/lib/tmpfiles.d/test.conf
eg:[root@localhost ~]# systemctl status crond.service ###检查crond服务状态
crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled)
Active: active (running) since Wed 2017-04-05 21:04:38 EDT; 54min ago ###正在运行
Main PID: 531 (crond)
CGroup: /system.slice/crond.service
└─531 /usr/sbin/crond -n
Apr 05 21:04:38 localhost systemd[1]: Started Command Scheduler.
Apr 05 21:04:38 localhost crond[531]: (CRON) INFO (RANDOM_DELAY will be sca....)
Apr 05 21:04:39 localhost crond[531]: (CRON) INFO (running with inotify support)
Apr 05 21:50:01 localhost crond[531]: (root) RELOAD (/var/spool/cron/root)
Apr 05 21:53:01 localhost crond[531]: (root) RELOAD (/var/spool/cron/root)
Apr 05 21:57:01 localhost crond[531]: (root) RELOAD (/var/spool/cron/root)
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# crontab -u root -e ###编辑文件-e
crontab: installing new crontab
[root@localhost ~]# crontab -u root -l ###列出文件-l
* * * * * rm -fr /mnt/* ###每隔一分钟,执行一次清空/mnt目录命令
[root@localhost ~]# cat /var/spool/cron/root
* * * * * rm -fr /mnt/*
[root@localhost ~]# touch /mnt/file{1..5} ###mnt目录新建文件
[root@localhost ~]# ls /mnt/
file1 file2 file3 file4 file5
[root@localhost ~]# ls /mnt/ ###一分钟后,mnt目录内文件被清空
[root@localhost ~]# vim /etc/cron.d/student ###通过文件,执行
[root@localhost ~]# cat /etc/cron.d/student
* * * * * root rm -fr /mnt/*
[root@localhost ~]# touch /mnt/file
[root@localhost ~]# ls /mnt ###一分钟后,mnt目录内文件被清空
[root@localhost ~]# echo "* * * * * root rm -fr /mnt/*" >/etc/cron.d/student ###用echo写入文件执行
[root@localhost ~]# cat /etc/cron.d/student
* * * * * root rm -fr /mnt/*
[root@localhost ~]# touch /mnt/file
[root@localhost ~]# ls /mnt ###一分钟后,mnt目录内文件被清空
[root@localhost ~]# su - student
上一次登录:Wed Apr 5 21:34:32 EDT 2017pts/2 上
[student@localhost ~]$ crontab -e ###student用户可以执行crontab -e进行编辑
no crontab for student - using an empty one
crontab: no changes made to crontab
[student@localhost ~]$ exit
logout
[root@localhost ~]# vim /etc/cron.deny ###用户黑名单,名单上的用户无法执行crontab -e进行编辑
[root@localhost ~]# cat /etc/cron.deny ###student用户在黑名单上
student
[root@localhost ~]# su - student
上一次登录:Wed Apr 5 22:10:10 EDT 2017pts/2 上
[student@localhost ~]$ crontab -e ###编辑失败,权限被禁止
You (student) are not allowed to use this program (crontab)
See crontab(1) for more information
[student@localhost ~]$ exit
logout
[root@localhost ~]# vim /etc/cron.allow ###用户白名单,只有名单上的用户可以执行crontab -e进行编辑
[root@localhost ~]# cat /etc/cron.allow ###student用户在白名单上
student
[root@localhost ~]# su - student
上一次登录:Wed Apr 5 22:12:04 EDT 2017pts/2 上
[student@localhost ~]$ crontab -e ###student在白名单上,可以编辑
no crontab for student - using an empty one
crontab: no changes made to crontab
[student@localhost ~]$ exit
logout
[root@localhost ~]# su - westos
[westos@localhost ~]$ crontab -e ###westos用户没在白名单上,无编辑权限
You (westos) are not allowed to use this program (crontab)
See crontab(1) for more information
[westos@localhost ~]$ exit
logout
[root@localhost tmpfiles.d]# vim student.conf ###系统中的临时文件
[root@localhost tmpfiles.d]# cat student.conf
d /mnt/westos 1777 root root 10s ###作用对象/mnt/westos目录,时长10s
[root@localhost tmpfiles.d]# systemd-tmpfiles --create /lib/tmpfiles.d/*
[root@localhost tmpfiles.d]# touch /mnt/westos/file ###两个文件的创建相差几秒
[root@localhost tmpfiles.d]# touch /mnt/westos/file1
[root@localhost tmpfiles.d]# systemd-tmpfiles --clean /lib/tmpfiles.d/* ###第一次清除的是创建时长超过10s的file文件,file1创建时长不超过10s,不会被清除
[root@localhost tmpfiles.d]# systemd-tmpfiles --clean /lib/tmpfiles.d/* ###第二次清除,此时file1文件创建已超过10s,会被清除
ps:0磁道1扇区512字节(446+64+2):446-mbr;64-mpt;2-55aa磁盘有效标识。主分区,扩展分区,逻辑分区
第四单元 管理系统中的简单分区和文件系统
一、简单分区和文件系统
1.存储是每个计算机系统的基本需求。 Red Hat Enterprise Linux 提供了一些强大的工具 , 它们能在大量的场景中管理多种类型的存储设备
2.disk 是用于管理磁盘分区的实用程序。您可以通过选择 -l选项和指定磁盘名称 ( fdisk -cul /dev/vda ) 运行该实用程序 , 以查看磁盘及其分区。您可以通过交互式地运行该实用程序 , 并选择相应的菜单选项( fdisk -cu /dev/vda ) 进行更改。 -c 禁用旧的 DOS 兼容模式 , -u 以扇区 ( 而不是柱面 , 已经过时 ) 的格式显示输出
二、查看系统设备信息
1.fdisk -l ###显示系统中所有可以使用的设备信息
2.blkid ###显示系统正在使用的设备 id
eg:[root@localhost ~]# fdisk -l
磁盘 /dev/vda:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00013f3e
设备 Boot Start End Blocks Id System
/dev/vda1 * 2048 20970332 10484142+ 83 Linux
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5119a134
设备 Boot Start End Blocks Id System
[root@localhost ~]# blkid
/dev/vda1: UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" TYPE="xfs"
/dev/vdb: PTTYPE="dos"
三、创建新分区
eg:[root@localhost tmpfiles.d]# fdisk /dev/vdb ###创建新的分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x5119a134 创建新的 DOS 磁盘标签。
命令(输入 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)
命令(输入 m 获取帮助):n ###新建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p ###p,主分区;e,扩展分区
分区号 (1-4,默认 1):1
起始 扇区 (2048-20971519,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+1G ###分区大小设置为1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):p ###显示分区
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5119a134
设备 Boot Start End Blocks Id System
/dev/vdb1 2048 2099199 1048576 83 Linux ###分区建立成功
命令(输入 m 获取帮助):wq ###保存更改并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost tmpfiles.d]# partprobe ###同步到磁盘
[root@localhost tmpfiles.d]# cat /proc/partitions ####查看分区
major minor #blocks name
253 0 10485760 vda
253 1 10484142 vda1
253 16 10485760 vdb
253 17 1048576 vdb1
[root@localhost tmpfiles.d]# mkfs.xfs /dev/vdb1 ###格式化,创建文件系统
meta-data=/dev/vdb1 isize=256 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost tmpfiles.d]# blkid ###显示系统正在使用的设备
/dev/vda1: UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" TYPE="xfs"
/dev/vdb1: UUID="6109cc6f-6c9e-4e65-823e-806ed0329fe6" TYPE="xfs"
[root@localhost tmpfiles.d]# mount /dev/vdb1 /mnt/ ###将刚新建的分区挂载到/mnt下,关机重启后,需重新挂载
[root@localhost tmpfiles.d]# df ###查看挂载点
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/vda1 10473900 3809408 6664492 37% /
devtmpfs 927072 0 927072 0% /dev
tmpfs 942660 84 942576 1% /dev/shm
tmpfs 942660 17092 925568 2% /run
tmpfs 942660 0 942660 0% /sys/fs/cgroup
/dev/vdb1 1038336 32928 1005408 4% /mnt
[root@localhost tmpfiles.d]# umount /mnt/ ###卸载
[root@localhost tmpfiles.d]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/vda1 10473900 3809408 6664492 37% /
devtmpfs 927072 0 927072 0% /dev
tmpfs 942660 84 942576 1% /dev/shm
tmpfs 942660 17092 925568 2% /run
tmpfs 942660 0 942660 0% /sys/fs/cgroup
[root@localhost tmpfiles.d]# fdisk /dev/vdb ###删除分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):d ###删除分区1
已选择分区 1
分区 1 已删除
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5119a134
设备 Boot Start End Blocks Id System ###显示分区已被删除
命令(输入 m 获取帮助):wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost tmpfiles.d]# partprobe ###同步到磁盘
[root@localhost tmpfiles.d]# cat /proc/partitions ###查看挂载信息,新建分区已不存在
major minor #blocks name
253 0 10485760 vda
253 1 10484142 vda1
253 16 10485760 vdb
四、文件系统比较
1.ext4 是 Red Hat Enterprise Linux 6 的标准文件系统。它非常强大可靠 , 具有多项可以提高现代工作量处理性能的功能
2.ext2 是常用于 Linux 中的较旧的文件系统。它简单可靠 , 非常适合小型存储设备 , 但是效率低于 ext4
3.vfat 支持包括一系列相关文件系统 ( VFAT/FAT16 和FAT32 ), 这些文件系统针对较旧版本的 Microsoft Windows开发 , 在大量的系统和设备上受支持
4.xfs 在 Red Hat Enterprise Linux 7 的标准文件系统其具备数据完全性 、性能稳定、扩展性强( 18eb )、传输速率高( 7G/s )
五、文件系统创建示例
# mkfs -t ext4|xfs /dev/vda3
# blkid /dev/vda3
/dev/vda3: UUID="cffde973-ab02-4b52-a09c-2a7ee610255c"
TYPE="ext4"
# mkdir /test
向 /etc/fstab 添加一个条目 :
UUID="cffde973-ab02-4b52-a09c-2a7ee610255c" /test [ext4|xfs] defaults
1 2
测试挂载 :
# mount /test
删除现有文件系统
1. 通过使用 umount /mountpoint 卸载文件系统。
2. 在 /etc/fstab 中删除相应条目。
3. 删除挂载点目录 : rmdir /mountpoint
eg:[root@localhost tmpfiles.d]# mkfs.xfs /dev/vdb1 -f ###给新建的vdb1分区格式化,创建文件系统
meta-data=/dev/vdb1 isize=256 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost tmpfiles.d]# mount /dev/vdb1 /mnt/ ###挂载
[root@localhost tmpfiles.d]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/vda1 10473900 3809456 6664444 37% /
devtmpfs 927072 0 927072 0% /dev
tmpfs 942660 84 942576 1% /dev/shm
tmpfs 942660 17092 925568 2% /run
tmpfs 942660 0 942660 0% /sys/fs/cgroup
/dev/vdb1 1038336 32928 1005408 4% /mnt ###已挂载上
[root@localhost tmpfiles.d]# vim /etc/fstab
[root@localhost tmpfiles.d]# cat /etc/fstab ###编辑文件系统配置文件,永久自动挂载
#
# /etc/fstab
# Created by anaconda on Wed May 7 01:22:57 2014
#
# 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
#
UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
/dev/vdb1 /mnt xfs defaults 0 0
[root@localhost tmpfiles.d]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/vda1 10473900 3809476 6664424 37% /
devtmpfs 927072 0 927072 0% /dev
tmpfs 942660 84 942576 1% /dev/shm
tmpfs 942660 17092 925568 2% /run
tmpfs 942660 0 942660 0% /sys/fs/cgroup
/dev/vdb1 1038336 32928 1005408 4% /mnt
[root@localhost tmpfiles.d]# umount /mnt/ ###卸载
[root@localhost tmpfiles.d]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/vda1 10473900 3809456 6664444 37% /
devtmpfs 927072 0 927072 0% /dev
tmpfs 942660 84 942576 1% /dev/shm
tmpfs 942660 17092 925568 2% /run
tmpfs 942660 0 942660 0% /sys/fs/cgroup
[root@localhost tmpfiles.d]# mount -a ###刷新
[root@localhost tmpfiles.d]# df ###已经挂载上
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/vda1 10473900 3809456 6664444 37% /
devtmpfs 927072 0 927072 0% /dev
tmpfs 942660 84 942576 1% /dev/shm
tmpfs 942660 17092 925568 2% /run
tmpfs 942660 0 942660 0% /sys/fs/cgroup
/dev/vdb1 1038336 32928 1005408 4% /mnt
[root@localhost tmpfiles.d]# vim /etc/fstab
[root@localhost tmpfiles.d]# cat /etc/fstab ###将刚才添加的删除
#
# /etc/fstab
# Created by anaconda on Wed May 7 01:22:57 2014
#
# 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
#
UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
[root@localhost tmpfiles.d]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/vda1 10473900 3809476 6664424 37% /
devtmpfs 927072 0 927072 0% /dev
tmpfs 942660 84 942576 1% /dev/shm
tmpfs 942660 17092 925568 2% /run
tmpfs 942660 0 942660 0% /sys/fs/cgroup
/dev/vdb1 1038336 32928 1005408 4% /mnt
[root@localhost tmpfiles.d]# umount /mnt/ ###卸载
[root@localhost tmpfiles.d]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/vda1 10473900 3809476 6664424 37% /
devtmpfs 927072 0 927072 0% /dev
tmpfs 942660 84 942576 1% /dev/shm
tmpfs 942660 17092 925568 2% /run
tmpfs 942660 0 942660 0% /sys/fs/cgroup
[root@localhost tmpfiles.d]# fdisk /dev/vdb ###删除分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5119a134
设备 Boot Start End Blocks Id System
命令(输入 m 获取帮助):wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost tmpfiles.d]# partprobe
[root@localhost tmpfiles.d]# cat /proc/partitions
major minor #blocks name
253 0 10485760 vda
253 1 10484142 vda1
253 16 10485760 vdb
[root@localhost tmpfiles.d]#
六、swap 交换分区
换空间或交换区是磁盘驱动器上的空间 , 用作当前未使用部分内存的溢出。这样 , 系统就能在主内存中留出空间用于储存当前正在处理的数据 , 并在系统面临主内存空间不足的风险时提供应急溢出
七、管理交换分区
1.使用 fdisk 创建新分区。此外 , 在用 fdisk 保存更改之前 , 将分区类型更改为 “ 0x82 Linux Swap”
2.mkswap /dev/vdaN 会准备好将分区用作交换区
3.blkid /dev/vdaN 将确定 UUID
4.将新交换空间添加到 /etc/fstab :UUID=uuid swap swap defaults 0 0
5.swapon -a 将激活新交换区
6.swapon -s 将显示当前交换区的状态
7.swapoff /dev/vdaN 将停用该特定交换区
eg:[root@localhost tmpfiles.d]# fdisk /dev/vdb ###创建新分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):t ###修改标签
已选择分区 1
Hex 代码(输入 L 列出所有代码):82 ###82 Linux swap
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5119a134
设备 Boot Start End Blocks Id System
/dev/vdb1 2048 2099199 1048576 82 Linux swap / Solaris
命令(输入 m 获取帮助):wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost tmpfiles.d]# partprobe
[root@localhost tmpfiles.d]# mkswap /dev/vdb1 ###mkswap /dev/vdb1 会准备好将分区用作交换区
mkswap: /dev/vdb1: warning: wiping old xfs signature.
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=b54c8fe3-5a3c-46dc-9196-4e4a1ffe3ab6
[root@localhost tmpfiles.d]# swapon -a /dev/vdb1 ###swapon -a 将激活新交换区
[root@localhost tmpfiles.d]# swapon -s ###swapon -s 将显示当前交换区的状态
文件名 类型 大小 已用 权限
/dev/vdb1 partition 1048572 0 -1
[root@localhost tmpfiles.d]# vim /etc/fstab
[root@localhost tmpfiles.d]# cat /etc/fstab ###将新交换空间添加到/etc/fstab :UUID=uuid swap swap defaults 0 0
#
# /etc/fstab
# Created by anaconda on Wed May 7 01:22:57 2014
#
# 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
#
UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
/dev/vdb1 swap swap defaults 0 0
[root@localhost tmpfiles.d]# swapon -s ###显示交换区状态
文件名 类型 大小 已用 权限
/dev/vdb1 partition 1048572 0 -1
[root@localhost tmpfiles.d]# swapoff /dev/vdb1 ###swapoff /dev/vdb1 将停用该特定交换区
[root@localhost tmpfiles.d]# swapon -s ###交换区不存在
[root@localhost tmpfiles.d]# swapon -a ###激活
[root@localhost tmpfiles.d]# swapon -s ###交换区出现
文件名 类型 大小 已用 权限
/dev/vdb1 partition 1048572 0 -1
[root@localhost tmpfiles.d]# vim /etc/fstab
[root@localhost tmpfiles.d]# cat /etc/fstab ###删除添加的文件
#
# /etc/fstab
# Created by anaconda on Wed May 7 01:22:57 2014
#
# 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
#
UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
[root@localhost tmpfiles.d]# swapoff /dev/vdb1 ###停用
[root@localhost tmpfiles.d]# fdisk /dev/vdb ###删除文件
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5119a134
设备 Boot Start End Blocks Id System
命令(输入 m 获取帮助):wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost tmpfiles.d]# partprobe
[root@localhost tmpfiles.d]#
八、磁盘加密保护
1.LUKS ( Linux 统一密钥设置 ) 是标准的设备加密格式
2.LUKS 可以对分区或卷进行加密
3.必须首先对加密的卷进行解密 , 才能挂载其中的文件系统
九、创建新加密的卷
1.使用 fdisk 创建新分区
2.cryptsetup luksFormat /dev/vdaN 可对新分区进行加密 ,并设置解密密码
3.您输入正确的解密密码之后 , cryptsetup luksOpen /dev/vdaN name 会将加密的卷 /dev/vdaN 解锁为/dev/mapper/name
4.解密的卷上创建 xfs 文件系统 : mkfs -t xfs
/dev/mapper/name
5.创建目录挂载点 , 并挂载文件系统 : mkdir /secret
– mount /dev/mapper/name /secret
6.完成之后 , umount /dev/mapper/name 并运行cryptsetup luksClose name 以锁定加密的卷
eg:[root@localhost tmpfiles.d]# partprobe
[root@localhost tmpfiles.d]# cryptsetup luksFormat /dev/vdb1 ###对新分区进行加密 ,并设置解密密码
WARNING!
========
This will overwrite data on /dev/vdb1 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase: ###设置密码
Verify passphrase:
[root@localhost tmpfiles.d]# ll /dev/mapper/
总用量 0
crw-------. 1 root root 10, 236 Apr 5 21:04 control
[root@localhost tmpfiles.d]# cryptsetup open /dev/vdb1 redhat ###会将加密的卷 /dev/vdb1 解锁为/dev/mapper/redhat
Enter passphrase for /dev/vdb1: ###输入正确的密码
[root@localhost tmpfiles.d]# ll /dev/mapper/
总用量 0
crw-------. 1 root root 10, 236 Apr 5 21:04 control
lrwxrwxrwx. 1 root root 7 Apr 6 02:31 redhat -> ../dm-0
[root@localhost tmpfiles.d]# mkfs.xfs /dev/mapper/redhat ###解密的卷上创建 xfs 文件系统
meta-data=/dev/mapper/redhat isize=256 agcount=4, agsize=31872 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=127488, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost tmpfiles.d]# mount /dev/mapper/redhat /mnt/
[root@localhost tmpfiles.d]# ls /mnt/
[root@localhost tmpfiles.d]# touch /mnt/file{1..5}
[root@localhost tmpfiles.d]# ls /mnt/
file1 file2 file3 file4 file5
[root@localhost tmpfiles.d]# umount /mnt/
[root@localhost tmpfiles.d]# ls /mnt/
[root@localhost tmpfiles.d]# ll /dev/mapper/
总用量 0
crw-------. 1 root root 10, 236 Apr 5 21:04 control
lrwxrwxrwx. 1 root root 7 Apr 6 02:35 redhat -> ../dm-0
[root@localhost tmpfiles.d]# cryptsetup close redhat ###锁定加密的卷
[root@localhost tmpfiles.d]# ll /dev/mapper/
总用量 0
crw-------. 1 root root 10, 236 Apr 5 21:04 control
[root@localhost tmpfiles.d]# cryptsetup open /dev/vdb1 redhat
Enter passphrase for /dev/vdb1:
[root@localhost tmpfiles.d]# mount /dev/mapper/redhat /mnt/
[root@localhost tmpfiles.d]# ls /mnt/
file1 file2 file3 file4 file5
[root@localhost tmpfiles.d]# umount /mnt/
[root@localhost tmpfiles.d]# cryptsetup close redhat
[root@localhost /]# mkfs.xfs /dev/vdb1 -f
meta-data=/dev/vdb1 isize=256 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
十、三块设备做一个阵列
eg:[root@localhost /]# fdisk /dev/vdb ###创建新的分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n ###添加3个新分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p ###p根本的,e扩充的
分区号 (1-4,默认 1):1
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (2099200-20971519,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-20971519,默认为 20971519):+1G
分区 2 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):3
起始 扇区 (4196352-20971519,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-20971519,默认为 20971519):+1G
分区 3 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):t ###改变标签fd Linux raid autodetect
分区号 (1-3,默认 3):1
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):2
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):3
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5119a134
设备 Boot Start End Blocks Id System
/dev/vdb1 2048 2099199 1048576 fd Linux raid autodetect
/dev/vdb2 2099200 4196351 1048576 fd Linux raid autodetect
/dev/vdb3 4196352 6293503 1048576 fd Linux raid autodetect
命令(输入 m 获取帮助):wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost /]# partprobe
[root@localhost /]# mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3}
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost /]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Apr 6 03:09:57 2017
Raid Level : raid1
Array Size : 1048000 (1023.61 MiB 1073.15 MB)
Used Dev Size : 1048000 (1023.61 MiB 1073.15 MB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Apr 6 03:10:18 2017
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Name : localhost:0 (local to host localhost)
UUID : ee5fc225:414db753:cccafd10:f09edfdc
Events : 17
Number Major Minor RaidDevice State
0 253 17 0 active sync /dev/vdb1
1 253 18 1 active sync /dev/vdb2
2 253 19 - spare /dev/vdb3
[root@localhost /]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=256 agcount=4, agsize=65500 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=262000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost /]# mount /dev/md0 /mnt/
[root@localhost /]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/vda1 10473900 3810404 6663496 37% /
devtmpfs 927072 0 927072 0% /dev
tmpfs 942660 84 942576 1% /dev/shm
tmpfs 942660 17136 925524 2% /run
tmpfs 942660 0 942660 0% /sys/fs/cgroup
/dev/md0 1044588 32928 1011660 4% /mnt
[root@localhost /]# mdadm /dev/md0 -f /dev/vdb1
mdadm: set /dev/vdb1 faulty in /dev/md0
[root@localhost /]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Apr 6 03:09:57 2017
Raid Level : raid1
Array Size : 1048000 (1023.61 MiB 1073.15 MB)
Used Dev Size : 1048000 (1023.61 MiB 1073.15 MB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Apr 6 03:21:40 2017
State : clean, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 1
Spare Devices : 1
Rebuild Status : 62% complete
Name : localhost:0 (local to host localhost)
UUID : ee5fc225:414db753:cccafd10:f09edfdc
Events : 29
Number Major Minor RaidDevice State
2 253 19 0 spare rebuilding /dev/vdb3
1 253 18 1 active sync /dev/vdb2
0 253 17 - faulty /dev/vdb1
[root@localhost /]# mdadm /dev/md0 -r /dev/vdb1
mdadm: hot removed /dev/vdb1 from /dev/md0
[root@localhost /]# mdadm /dev/md0 -a /dev/vdb1
mdadm: added /dev/vdb1
[root@localhost /]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Apr 6 03:09:57 2017
Raid Level : raid1
Array Size : 1048000 (1023.61 MiB 1073.15 MB)
Used Dev Size : 1048000 (1023.61 MiB 1073.15 MB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Apr 6 03:22:40 2017
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Name : localhost:0 (local to host localhost)
UUID : ee5fc225:414db753:cccafd10:f09edfdc
Events : 40
Number Major Minor RaidDevice State
2 253 19 0 active sync /dev/vdb3
1 253 18 1 active sync /dev/vdb2
3 253 17 - spare /dev/vdb1
[root@localhost /]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/vda1 10473900 3810416 6663484 37% /
devtmpfs 927072 0 927072 0% /dev
tmpfs 942660 84 942576 1% /dev/shm
tmpfs 942660 17136 925524 2% /run
tmpfs 942660 0 942660 0% /sys/fs/cgroup
/dev/md0 1044588 32928 1011660 4% /mnt
[root@localhost /]# umount /mnt
[root@localhost /]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
[root@localhost /]# fdisk /dev/vdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):d
分区号 (1-3,默认 3):1
分区 1 已删除
命令(输入 m 获取帮助):d
分区号 (2,3,默认 3):2
分区 2 已删除
命令(输入 m 获取帮助):d
已选择分区 3
分区 3 已删除
命令(输入 m 获取帮助):3
3: unknown command
命令操作
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
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5119a134
设备 Boot Start End Blocks Id System
命令(输入 m 获取帮助):wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost /]# partprobe
[root@localhost /]# reboot
Connection to 172.25.42.10 closed by remote host.
Connection to 172.25.42.10 closed.
[kiosk@foundation42 Desktop]$ ssh root@172.25.42.10 -X
root@172.25.42.10's password:
Last login: Thu Apr 6 03:20:39 2017 from 172.25.42.250
[root@localhost ~]# fdisk -l
磁盘 /dev/vda:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00013f3e
设备 Boot Start End Blocks Id System
/dev/vda1 * 2048 20970332 10484142+ 83 Linux
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5119a134
设备 Boot Start End Blocks Id System
[root@localhost ~]# blkid
/dev/vda1: UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" TYPE="xfs"
/dev/vdb: PTTYPE="dos"
[root@localhost ~]# ll /dev/md0
ls: 无法访问/dev/md0: 没有那个文件或目录
[root@localhost ~]#
[root@localhost ~]# watch -n 1 cat /proc/mdstat ###监控
第五单元 使用逻辑卷管理器管理灵活存储
一、查看 LVM 定义
1.物理分区或磁盘是 LVM 的第一构建块。这些可以是分区、完整磁盘、 RAID 集或 SAN 磁盘
2.物理卷是 LVM 所使用的基础 “ 物理 ” 存储。这通常是块设备 ,例如分区或完整磁盘。设备必须初始化为 LVM 物理卷 , 才能
与 LVM 结合使用
3.卷组是存储池 , 由一个或多个物理卷组成
4.物理区块是物理卷中存储的小型数据区块 , 用作 LVM 存储的后端
5.逻辑区块映射到物理区块 , 构成 LVM 存储的前端。默认情况下 , 每个逻辑区块映射到一个物理区块。启用某些选项将更改此映射。例如 , 镜像会导致每个逻辑区块映射到两个物理区块
6.逻辑卷是逻辑区块组。逻辑卷可以像硬盘驱动器分区一样使用
二、为什么使用逻辑卷
1.逻辑卷和逻辑卷管理有助于更加轻松地管理磁盘空间。如果文件系统需要更多的空间 ,可以将其卷组的可用空间分配给逻辑卷 , 并且可以调整文件系统的大小。如果磁盘开始出现错误 , 可以通过卷组将替换磁盘注册为物理卷 , 并且逻辑卷的范围可迁移到新磁盘。
三、使用命令行工具实施 LVM 存储
1.准备物理卷
– disk 用于创建与 LVM 结合使用的新分区。在要与 LVM 结合使用的分区上 , 始终将“ 类型 ” 设置为 “ 0x8e Linux LVM”
– pvcreate /dev/vdaN 用于初始化分区 ( 或其他物理设备 ), 使其作为物理卷与 LVM 结合使用。直接在物理卷中创建用于存储 LVM 配置数据的表头
2.创建卷组
– vgcreate vgname /dev/vdaN 将创建名为 vgname 且由物理卷 /dev/vdaN 组成的卷组。您可以在创建时指定其他物理卷 ( 以空格隔开 ), 也可以随后使用 vgextend 添加新物理卷
3.创建和使用新逻辑卷
– lvcreate -n lvname -L 2G vgname 从 vgname 上可用物理区块创建名为 lvname 、容量为 2GB 的新逻辑卷
– mkfs -t ext4 /dev/vgname/lvname 将在新逻辑卷上创建 ext4 文件系统
– mkdir /data 建立所需目录作为挂载点
– 向 /etc/fstab 文件中添加一下条目:/dev/mapper/vgname-lvname /data ext4 defaults 1 2
– 运行 mount -a 可在 /etc/fstab 中挂载所有文件系统 , 包括您刚刚添加的条目
eg:[root@localhost ~]# fdisk /dev/vdb ###创建两个分区,/dev/vdb1和/dev/vdb2,修改类型t-8e,将Linux类型修改为Linux LVM
[root@localhost ~]# partprobe
[root@localhost ~]# fdisk -l
磁盘 /dev/vda:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00013f3e
设备 Boot Start End Blocks Id System
/dev/vda1 * 2048 20970332 10484142+ 83 Linux
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5119a134
设备 Boot Start End Blocks Id System
/dev/vdb1 2048 2099199 1048576 8e Linux LVM ###创建分区成功
/dev/vdb2 2099200 4196351 1048576 8e Linux LVM
[root@localhost ~]# pvcreate /dev/vdb1 ###初始化分区失败 ,原因可能是/dev/md0自动激活
Physical volume /dev/vdb1 not found
Can't open /dev/vdb1 exclusively. Mounted filesystem?
[root@localhost ~]# mdadm -S /dev/md0 ###停止/dev/md0
mdadm: stopped /dev/md0
[root@localhost ~]# pvcreate /dev/vdb1 ###初始化分区vdb1, 使其作为物理卷与 LVM 结合使用
Physical volume /dev/vdb1 not found
WARNING: linux_raid_member signature detected on /dev/vdb1 at offset 4096. Wipe it? [y/n] y
Wiping linux_raid_member signature on /dev/vdb1.
WARNING: xfs signature detected on /dev/vdb1 at offset 0. Wipe it? [y/n] y
Wiping xfs signature on /dev/vdb1.
Physical volume "/dev/vdb1" successfully created
[root@localhost ~]# vgcreate vg0 /dev/vdb1 ###将创建名为 vg0且由物理卷 /dev/vda1组成的卷组
Volume group "vg0" successfully created
[root@localhost ~]# lvcreate -L 100M -n lv0 vg0 ###从 vg0上可用物理区块创建名为 lv0、容量为100M的新逻辑卷
Logical volume "lv0" created
[root@localhost ~]# mkfs.xfs /dev/vg0/lv0 ###格式化,在新逻辑卷上创建文件系统
meta-data=/dev/vg0/lv0 isize=256 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mount /dev/vg0/lv0 /pub/
[root@localhost ~]# ll /dev/vg0/lv0
lrwxrwxrwx. 1 root root 7 Apr 6 04:00 /dev/vg0/lv0 -> ../dm-0
[root@localhost ~]# ll /dev/mapper/vg0-lv0 ###虚拟
lrwxrwxrwx. 1 root root 7 Apr 6 04:00 /dev/mapper/vg0-lv0 -> ../dm-0
[root@localhost ~]#
[root@localhost ~]# watch -n 1 'pvs;echo======;vgs;echo========;lvs;echo=========;df -H /pub' ###监控
四、查看 LVM 状态信息
1.pvdisplay /dev/vdaN 将显示有关特定物理卷的信息
2.vgdisplay vgname 将显示有关特定卷组的信息
3.lvdisplay /dev/vgname/lvname 将显示有关特定逻辑卷的信息
五、扩展逻辑卷和 xfs 文件系统
1.验证已挂载文件系统 /data 的当前大小
– df -h /data
2.验证 “ 可用物理区块 ” 是否够用
– vgdisplay vgname
3.使用部分或全部可用区块扩展逻辑卷
– lvextend -l 128 /dev/vgname/lvname
4.扩展在 /data 上挂载的关联文件系统
– xfs_growfs
/dev/vgname/lvname
5.验证已挂载文件系统 /data 的新的大小
– df -h /data
eg:[root@localhost ~]# lvextend -L 500M /dev/vg0/lv0 ###扩展逻辑卷
Extending logical volume lv0 to 500.00 MiB
Logical volume lv0 successfully resized
[root@localhost ~]# xfs_growfs /dev/vg0/lv0
meta-data=/dev/mapper/vg0-lv0 isize=256 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 25600 to 128000
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0
Extending logical volume lv0 to 1.46 GiB
Insufficient free space: 250 extents needed, but only 130 available
[root@localhost ~]# pvcreate /dev/vdb2
Physical volume /dev/vdb2 not found
WARNING: linux_raid_member signature detected on /dev/vdb2 at offset 4096. Wipe it? [y/n] y
Wiping linux_raid_member signature on /dev/vdb2.
Physical volume "/dev/vdb2" successfully created
[root@localhost ~]# vgextend vg0 /dev/vdb2
Volume group "vg0" successfully extended
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0
Extending logical volume lv0 to 1.46 GiB
Logical volume lv0 successfully resized
[root@localhost ~]# xfs_growfs /dev/vg0/lv0
meta-data=/dev/mapper/vg0-lv0 isize=256 agcount=20, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=128000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 128000 to 384000
[root@localhost ~]# lvremove /dev/vg0/lv0
Do you really want to remove active logical volume lv0? [y/n]: y
Logical volume "lv0" successfully removed
[root@localhost ~]# vgremove vg0
Volume group "vg0" successfully removed
[root@localhost ~]# pvremove /dev/vdb1
Labels on physical volume "/dev/vdb1" successfully wiped
[root@localhost ~]# pvremove /dev/vdb2
Labels on physical volume "/dev/vdb2" successfully wiped
[root@localhost ~]# fdisk /dev/vdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):d
分区号 (1,2,默认 2):1
分区 1 已删除
命令(输入 m 获取帮助):d
已选择分区 2
分区 2 已删除
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5119a134
设备 Boot Start End Blocks Id System
命令(输入 m 获取帮助):wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# partprobe
[root@localhost ~]#
[root@localhost ~]# watch -n 1 'pvs;echo======;vgs;echo========;lvs;echo=========;df -H /pub' ###监控
六、创建快照以便于数据备份
1.快照逻辑卷是 LVM 存储的另一项灵活功能。LVM 快照是临时保留所更改的逻辑卷的原始数据的逻辑卷。快照提供原始卷的静态视图 , 从而能够以一致状态备份其数据
2.快照卷大小只需足以存储在它存在期间更改的数据即可
3.如果数据更改量大于快照存储容量 , 则快照将自动变为不可用。 ( 原始卷原封不动 , 仍然需要从卷组中手动解除挂载和删除不可用的快照。 )
七、创建和使用快照进行备份
1.创建 /dev/vgname/lvname 的名为 snaplvname 、大小为 20M 的新快照卷
– lvcreate -s -n snaplv -L 20M /dev/vgname/lvname
2.如果备份软件要求 , 请挂载该快照 , 并使备份程序指向新挂载点
– mkdir /snapmount
– mount -o ro /dev/vgname/snaplv /snapmount
3.验证快照逻辑卷的状态
– lvs /dev/vgname/snaplv
4.不再使用快照时 , 请解除挂载并删除它
– umount /snapmount
– lvremove /dev/vgname/snaplv
eg:[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/vda1 10473900 3809340 6664560 37% /
devtmpfs 927072 0 927072 0% /dev
tmpfs 942660 80 942580 1% /dev/shm
tmpfs 942660 17076 925584 2% /run
tmpfs 942660 0 942660 0% /sys/fs/cgroup
/dev/mapper/vg0-lv0 1532588 7072 1525516 1% /pub
[root@localhost ~]# touch /pub/file{1..5}
[root@localhost ~]# ls /pub
file1 file2 file3 file4 file5
[root@localhost ~]# umount /pub/
[root@localhost ~]# ls /pub
[root@localhost ~]# lvcreate -L 40M -n lv0-backup -s /dev/vg0/lv0 ###创建快照
Logical volume "lv0-backup" created
[root@localhost ~]# mount /dev/vg0/lv0-backup /pub/
[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/vda1 10473900 3809320 6664580 37% /
devtmpfs 927072 0 927072 0% /dev
tmpfs 942660 80 942580 1% /dev/shm
tmpfs 942660 17064 925596 2% /run
tmpfs 942660 0 942660 0% /sys/fs/cgroup
/dev/mapper/vg0-lv0--backup 1532588 34720 1497868 3% /pub
[root@localhost ~]# ls /pub/
file1 file2 file3 file4 file5
[root@localhost ~]# rm -fr /pub/*
[root@localhost ~]# ls /pub/
[root@localhost ~]# umount /pub/
[root@localhost ~]# lvremove /dev/vg0/lv0-backup
Do you really want to remove active logical volume lv0-backup? [y/n]: y
Logical volume "lv0-backup" successfully removed
[root@localhost ~]# lvcreate -L 40M -n lv0-backup -s /dev/vg0/lv0
Logical volume "lv0-backup" created
[root@localhost ~]# mount /dev/vg0/lv0-backup /pub/
[root@localhost ~]# ls /pub/
file1 file2 file3 file4 file5
[root@localhost ~]#