Linux云自动化运维第十课

第三单元  系统延迟及定时机制

一、计划定期任务

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 ~]#

原文地址:https://www.cnblogs.com/Virgo-sept/p/6684936.html