linux 7

5 Sept

14.6.3 用户邮件信箱:mail

mailbox 会放置在/var/spool/mail里面,一个账号一个mailbox

  • 如何寄出信件呢?
    直接执行mail username@localhost -s "邮件标题"即可!

eg. 以root寄信给liangst,信件标题是“Nice to meet you” 则

mail liangst -s "Nice to meet you"

可以用数据流对邮件内容进行重定向:
eg mail -s "bashrc file content" liangst < ~/.bashrc

收信 : mail

14.7 手动新增用户

理论上,最好用useradd命令来新增用户。

14.7.1 一些检查工具

  • pwck
    用于检查/etc/passwd这个账号配置文件内的信息,以及实际的主文件夹是否存在,还可以比较/etc/passwd, /etc/shadow信息是否一致
    这里写图片描述

  • pwconv
    将/etc/passwd内的账号与密码移动到/etc/shadow当中(用于解决旧版UNIX密码没加密问题)。

  • pwunconv
    相对于pwconv, pwunconv是将/etc/shadow内的密码列写回/etc/passwd中,并且删除/etc/shadow文件

  • chpasswd
    可以读入未加密前的密码,经过加密后将其写入/etc/shadow中。经常被用于批量新建账号的情况。可以更新用户的密码。 eg,

echo "dmtsai:abcdefg" | chpasswd -m   #用户名:dmtsai, 当前密码:abcdefg

14.7.2 特殊账号的手工创建

步骤:
1 先新建所需要的用户组(vi /etc/group
2 将/etc/group与/etc/gshadow同步(grpconv
3 新建账号的各个属性(vi /etc/passwd
4 将/etc/passwd与/etc/shadow同步(pwconv
5 新建该账号的密码(passwd accountname
6 新建用户主文件夹(cp -a /etc/skel /home/accountname
7 更改用户主文件夹的属性(chown -R accountname.group /home/accountname
eg.
1. 新建用户组normalgroup(GID=520),并且同步gshadow

#在/etc/group最后一行下面加入 
normalgroup:x:520:

这里写图片描述
确保/etc/group和/etc/gshadow里都有narmalgroup这个用户组
2. 新建normaluser这个账号(UID=700)

vi /etc/passwd
#加入一行"normaluser:x:700:520::/home/normaluser:/bin/bash"
  1. 同步密码,并且新建该用户的密码
    这里写图片描述
  2. 新建用户主文件夹,并且修改权限
    这里写图片描述

14.7.3 批量新建账号

14.8 重点回顾

  • Linux操作系统上面,关于账号与用户组,其实记录的是UID/GID的数字
  • 用户账号/用户组与UID/GID的对应,参考/etc/passwd 以及/etc/group两个文件。
  • UID只有0与非0两种,非0为一般账号。一般账号分为系统账号(1-499)和可登录者账号(大于500)
  • 账号的密码在/etc/shadow文件中,该文件权限仅有root可以改动。
  • 用户可以支持多个用户组,其中在新建文件时记录的所属用户组,为该用户的有效用户组。而写入/etc/passwd的第四个字段称为初始用户组。
  • 与用户新建、更改参数、删除有关的命令为useradd, usermod, userdel等,密码新建则为passwd。
  • 与用户组新建、修改、删除有关的命令为groupadd, groupmod, groupdel等。
  • 用户组的查看与有效用户组的切换分别为groups和newgrp命令
  • 查看用户详细的密码参数,可以使用“change -l username”来处理
  • 用户自行修改参数的命令有chsh, chfn等, 查看命令则有id,finger等
  • ACL可进行单一个人或组的权限管理,但ACL的启动需要有文件系统的支持
  • ACL的设置可使用setfacl,查阅则可以使用getfacl。
  • 身份切换可以使用su, 也可以使用sudo。但是如果使用sudo,必须先以visudo设置可使用的命令(用root权限)。
  • 系统上面账号登录情况的查询,可以使用w, who, last, lastlog等。
  • 在线与用户交谈可以使用write, wall, 脱机状态下可使用mail传送邮件。

15.1 磁盘配额(Quota)的应用与实践

  • 限制某一用户组所能使用的最大磁盘配额(针对用户组限制)
  • 限制某一用户的最大磁盘配额(针对用户限制)

Quota的使用限制:

  • 仅能针对整个文件系统
  • 内核必须支持quota
  • 只对一般身份用户有效:并不是所有在Linux上面的账号都可以设置quota的,例如root就不能设置quota,因为整个系统所有的数据几乎都是它的。

soft/hard限制:
hard: 表示用户的用量绝对不会超过这个限制值,若超过这个值则系统会锁住该用户的磁盘使用权。
soft:表示用户在低于soft限值时,可以正常使用磁盘;但若超过soft且低于hard时,每次用户登录系统时,系统会主动发出磁盘即将饱满的警告信息,且会给予一个宽限时间(gracetime).

单次实验Quota:

mount -o remount,usrquota,grpquota /home
mount | grep home
输出:/dev/hda3 on /home type ext3(rw,usrquota,grpquota)
  • quotacheck:扫描文件系统并新建Quota的配置文件
    quotacheck [-avugfM] [/mount_point]

  • quotaon:启动quota服务
    quotaon [-avug]或者quotaon [-vug] [/mount_point]

  • quotaoff:关闭quota服务
    quotaoff [-a]或者quotaoff [-ug] [/mount_point]

  • edquota:编辑账号/用户组的限值和宽限时间
    edquota [-u username] [-g groupname]
    edquota -t <==修改宽限时间
    edquota -p 范本账号 -u 新账号<==复制范本。范本账号为已经存在且已经设置好quota的用户。意思是把“范本账号”用户的quota限制值复制给新账号。

  • repquota:针对文件系统的限额做报表
    repquota -a [-vugs]

  • setquota:直接于命令中设置quota限额

15.2.1 RAID

RAID - Redundant Arrays of Inexpensive Disks 容错廉价磁盘阵列。 可以通过一些技术将多个较小的磁盘整合成为一个较大的磁盘设备。

  • RAID-0 : 等量模式,stripe,性能最佳
    • 如果使用相同型号与容量的磁盘来组成时,效果较佳。会将磁盘先切除等量的区块,然后依序放到各个磁盘里去。但是,如果其中某一块磁盘损毁了,那么整个文件就会被损毁。
  • RAID-1:映像模式mirror,完整备份
    • 这种模式主要是让同一份数据完整保存在两块磁盘上,所以需要相同磁盘容量的、最好一模一样的磁盘,不然总容量将以最小的那一块磁盘为主。
  • RAID 0+1, RAID1+0:RAID-0和RAID-1相结合。
  • RAID 5:性能与数据备份的均衡考虑。
    • RAID 5至少需要三块以上的磁盘才能够组成这种类型的磁盘阵列。这种磁盘阵列的数据写入有点类似RAID-0,不过在每个循环写入过程中,在每块磁盘还加入一个同位检查数据(Parity),这个数据会记录其他磁盘的备份数据。可以支持一块磁盘的损毁情况

磁盘阵列的优点:

  • 数据安全与可靠性
    • 磁盘损毁时,数据是否还能安全救援或使用
  • 读写性能
    - 例如使用RAID 0 可以加强读写性能,改善系统I/O
  • 容量
    • 可以让多块磁盘组合起来,所以单一文件系统可以有相当大的容量

15.2.3 软件磁盘阵列的设置

查看创建的md0信息:
mdadm --detail /dev/md0
例子
创建五个大小一样的分区并更新分区表
这里写图片描述

使用mdadm命令创建RAID,并查阅结果
-C 创建RAID
-l 指定RAID级别(level)
-n 指定磁盘个数
-x 指定备用设备个数
这里写图片描述

查看系统软件磁盘阵列的情况:
这里写图片描述

格式化与挂载使用RAID
这里写图片描述

15.2.4 仿真RAID错误的救援模式

mdadm --manage/dev/md[0-9] [--add device] [--remove device] [--fail device](或者 [-f device])

先设置磁盘为错误:
检查一下,/dev/sda7的确变成faulty了。/dev/sda10替换了它原来的位置。
这里写图片描述

如果/dev/sda7里面有数据,通过模拟损坏后,快速查看RAID详细信息可以看出正在使用/dev/sda10重建数据(还原数据),而原来的/dev/sdb2成了损坏的空闲设备。

重新挂载/dev/sda7
这里写图片描述

检查一下是否成功添加
这里写图片描述

Conclusion
磁盘阵列里的数据不但一直存在,而且可以一直顺利运行/mnt/raid内的数据,即使其中一个磁盘损毁了。可以通过管理的功能就能够加入新磁盘且拔出坏掉的磁盘。这一切都是在上线(on-line)的情况下进行。

15.2.5 开机自动启动RAID并自动挂载:

查询这个RAID设备向系统注册的UUID标识符,并保存到uuid.txt中
这里写图片描述

开始设置mdadm.conf
vim /etc/mdadm.conf加入这行
这里写图片描述

设置开机自动挂载并测试
vim /etc/fstab
这里写图片描述

这里写图片描述

15.2.6 关闭软件RAID

  • 先卸载且删除配置文件内与这个/dev/md0有关的配置
    umount /dev/md0
    vi /etc/fstab 去掉与/dev/md0相关的那行

  • 直接关闭/dev/md0的方法
    mdadm --stop /dev/md0
    检查一下:cat /proc/mdstat
    去掉conf那行:vi /dtc/mdadm.conf

15.3 逻辑卷管理器(Logicla Volume manager)

LVM的中点在于可以弹性调整文件系统的容量。LVM可以整合多个物理分区在一起,让这些分区看起来就像是一个磁盘一样。

15.3.1 什么是LVM:PV,PE,VG,LV

  • PhysicalVolume,PV,物理卷

    • 实际的分区需要调整系统标识符(System)改成8e(LVM的标识符)【用fdisk调整】,然后再通过pvcreate的命令将它转成LVM最底层的物理卷PV,之后才能将这些PV加以利用。
  • Volume Group, VG, 卷用户组

    • 所谓的LVM大磁盘就是将许多PV整合成这个VG。每个VG最多仅能包含65534个PE而已,则一个VG最大可达256GB容量。(参考下方PE说明)
  • Pyhsical Extend, PE, 物理扩展块
    • PE是整个LVM最小的储存块,LVM默认使用4MB的PE块,我们的文件数据都是由写入PE来处理的。这个PE有点像文件系统里面block大小,所以调整PE会影响到VG的最大容量。
  • Logical Volume, LV, 逻辑卷
    • 最终的VG会被切成LV, 这个LV就是最后可以被格式化使用的类似分区。LV的设备文件名通常指定为”/dev/vgname/lvname”的样式
    • LVM可弹性更改文件系统的容量,其实就是通过交换PE来进行数据转换,将原本LV内的PE移动到其他设备中以降低LV容量,或者将其他设备的PE加到这个LV中以加大容量

这里写图片描述

这里写图片描述

当数据写入这个LV时,有两种机制:

  • 线性模式(linear): 加入将/dev/hda1, /dev/hdb1折两个分区加入到VG中,并且整个VG只有一个LV时,线性模式的意思就是当/dev/hda1的容量用完之后,/dev/hdb1的磁盘才会被用到。
  • 交错模式(triped): 将一条数据拆成两部分,分别写入/dev/hda1与/dev/hdb1,有点像RAID 0。 如此一来,一份数据用两块硬盘来写入,理论上读写的性能会比较好。

Conclusion
基本上, LVM最主要的用处是在实现一个可以弹性调整容量的文件系统上,而不是在新建一个性能为主的磁盘上。所以,LVM默认的读写模式是线性模式。如果使用triped模式,数据更有可能收到损坏。

15.3.2 LVM实作流程

  • PV阶段
    • pvcreate: 将物理分区新建成为PV
    • pvscan: 查询目前系统里面具有PV的磁盘
    • pvdisplay: 显示出目前系统上面的PV状态
    • pvremove: 将PV属性删除,让该分区不具有PV属性

注意
pvcreate 之前要把上一节的RAID删掉,否则会出现“Can’t open /dev/sda5. Mounted filesystem?”
mdadm --stop /dev/md0
检查cat /proc/mdstat

步骤
1 pvscan. 找不到任何存在的PV
2 pvcreate /dev/sda{5,6,7,8}
3 pvscan. 确认已经新建了PV
4 pvdisplay

  • VG阶段
    1 将/dev/sda5-7新建成为一个VG, 且指定P为16MB。
    vgcreate -s 16M liangst-vg /dev/sda{5,6,7}
    用vgscan检查一下
    这里写图片描述
    用pvscan检查一下,发现有三个PV被用掉,剩下一个。
    这里写图片描述

    这里写图片描述
    从上图可以知道,整体的VG容量为288MB,内部每个PE的大小为16MB,总共的PE数量是18个。

如果要增加这个VG的容量,我们可以测试把/dev/sda8加进去:
这里写图片描述
可以看到,PE的总数量变成了24个:
这里写图片描述

  • LV阶段
    • 创造出VG这个大磁盘之后,接下来要新建分区(所谓的LV)
      lvcreate -l 24 -n liangst-lv liangst-vg
      使用方法:lvcreate [-l N] [-n LV名称] VG名称(-l后面接的N为PE的个数),或者,lvcreate [-L N[mgt]] [-n LV名称] VG名称

检查是否创建成功:
这里写图片描述

这里写图片描述

  • 文件系统阶段
    • 格式化,挂载与查看LV

这里写图片描述

这里写图片描述

15.3.3 放大LV容量

步骤

  • 用fdisk设置新的具有8e systemID的分区
  • 利用pvcreate构建PV
    • pvcreate /dev/sda10
  • 利用vgextend将PV加入我们的liangst-vg
    • vgextend liangst-vg /dev/sda10
  • 利用lvresize将新加入的PV内的PE加入liangst-lv中
    • lvresize -l +179 /dev/liangst-vg/liangst-lv(+179表示增加179个PE)
  • 通过resize2fs将文件系统的容量增加
    • resize2fs /dev/liangst-vg/liangst-lv

15.3.4 缩小LV容量

比如我们想把/dev/sda6抽离出来:

用pvdisplay查看一下/dev/sda6贡献了多大的容量
这里写图片描述
看到/dev/sda6有6个PE(红框的下一行),一共有109MB

lvdisplay
看到LV的大小是384MB
这里写图片描述

直接降低文件系统的容量:(可以在线增加容量,但是不能在线缩小)Reference
resize2fs /dev/liangst-vg/liangst-lv 270M(这里是目标容量)

#但是不可以在线缩小;要缩小文件系统必须先卸载文件系统
[root@localhost ku]# resize2fs /dev/sdb1 1G
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/sdb1 is mounted on /ku; on-line resizing required
On-line shrinking from 640000 to 262144 not supported.

这里写图片描述

# umount LVM, then 用e2fsck检查
[root@localhost ku]# cd /
[root@localhost /]# umount /ku
[root@localhost /]# resize2fs /dev/sdb1 1G
resize2fs 1.41.12 (17-May-2010)
Please run 'e2fsck -f /dev/sdb1' first.
## e2fsck用于检查ext2、ext3、ext4等文件系统的正确性
[root@localhost /]# e2fsck -f /dev/sdb1
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: 12/147520 files (0.0% non-contiguous), 17864/640000 blocks
#操作resize2fs减小容量,再重新mount,再df检查一下
[root@localhost /]# resize2fs /dev/sdb1 1G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/sdb1 to 262144 (4k) blocks.
The filesystem on /dev/sdb1 is now 262144 blocks long.
[root@localhost /]# mount /dev/sdb1 /ku
[root@localhost /]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       16G  3.7G   11G  25% /
tmpfs                 613M   88K  613M   1% /dev/shm
/dev/sda1             485M   32M  428M   7% /boot
/dev/sdb1            1010M   34M  939M   4% /ku

降低LV的容量。另外我们知道/dev/sda6有6个PE,所以参数用-6
这里写图片描述
接着用lvdisplay确认LV的容量是否减小。

接下来要把/dev/sda6抽离VG。首先要确定/dev/sda6里面的PE完全没有被使用,用pvdisplay检查:
这里写图片描述
这里写图片描述

发现/dev/sda6里面的PE仍然被占用,所以要把sda6里面被占用的PE移到SDA8里面。
这里写图片描述

现在可以将/dev/sda6移出VG啦!
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值