###########################
##第四单元.管理系统存储##
###########################
主分区+逻辑分区总个数不能超过15
一般分区时,分三个主分区,第四个为扩展分区(容器),给其分配剩余所有空间
###1.分区的划分####
fdisk /dev/vdb ##进入分区划分
partprobe ##加载分区表
cat /proc/partitions ##查看分区信息
mkfs.xfs ##格式化分区=创建xfs文件系统
blkid ##查看文件系统类型
mount /dev/vdb1 挂载点 ##分区挂载
umount /dev/vdb1 挂载点 ##卸载挂载
vim /etc/fstab ##实现永久挂载
/dev/vdb1 挂载点 文件系统类型(xfs) defaults 0 0
mount -a
df ##查看已挂载的分区
####2.swap分区管理####
swapon -s ##查看系统中的swap分区
建立swap分区
mkswap /dev/vdb1 ##把/dev/vdb1格式化为swap分区
swapon -a /dev/vdb1 ##激活
上述激活方式,重启后激活消失,如需永久激活,需要修改配置文件
vim /etc/fstab ##开机自动激活
/dev/vdb1 swap swap defaults 0 0
设备 挂载点 文件系统类型
swapoff /dev/vdb1 ##关闭激活的swap分区
添加临时swap分区
dd if=/dev/zero of=/mnt/swapfilename bs=1M count=1000 ##在/mnt中划分一块名为swapfile的分区,块大小为1M,数量为1000
mkswap /dev/vdb1 ##格式化swap格式
swapon -a /dev/vdb1 ##激活
[root@station mnt]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xa1575c6c.
Command (m for help): m
Command action
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)
Command (m for help): n ##选择新建分区
Partition type:
p primary (0 primary, 0 extended, 4 free) ##分区类型为主分区
e extended ##分区类型为扩展分区
Select (default p): ##默认为主分区
Using default response p
Partition number (1-4, default 1): 1 ##主分区id
First sector (2048-20971519, default 2048): ##此分区起始位置(一般为默认)
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +100M ##分区大小
Partition 1 of type Linux and of size 100 MiB is set
Command (m for help): p
Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xa1575c6c
Device Boot Start End Blocks Id System
/dev/vdb1 2048 206847 102400 83 Linux
Command (m for help): wq ##保存退出,若输入为q表示放弃更改退出
The partition table has been altered!
[root@station mnt]# partprobe
[root@station mnt]# cat /proc/partitions ##同步分区表
major minor #blocks name
253 0 10485760 vda
253 1 10484142 vda1
253 16 10485760 vdb
253 17 102400 vdb1
文件类型:
vfat
ntfs
ext:日志文件系统,最大分区为32T
xfs:最大分区为18eb,1eb=1024t,最快吞吐速度可达8G/s
后两者Windows不识别
mkfs.xfs /dev/vdb5 ##格式化
mount /dev/vdb5 /mnt ##挂载
####3.磁盘加密###
fdisk /dev/vdb
cryptsetup luksFormat /dev/vdb1 ##对vdb1进行luks加密
cryptsetup open /dev/vdb1 westos ##打开加密锁,并对其给予一个新的名字
mkfs.xfs /dev/mapper/westos ##对其进行格式化
mount /dev/mapper/westos /mnt ##对westos进行挂载
umount /mnt/ ##:执行此操作时,应该不在/mnt目录下,否则会提醒设备正在被使用的警告或报错
cryptsetup close westos ##对westos进行关闭(即上锁)
#####加密磁盘的永久挂载####
vim /etc/crypttab ##此文件的作用相当于使系统执行cryptsetup open /dev/vdb1 westos的这条命令
内容如下:
格式为: 解密后设备管理文件 设备 加密字符(密码)存放文件
Westos /dev/vdb1 /root/diskpass
vim /root/diskpass##密码所存放的文件
内容为:huyanchong ##自己所设置的密码
chmod 600 /root/diskpass ##给予文件600的权限
cryptsetup luksAddKey /dev/vdb1 /root/diskpass ##将磁盘和密码文件链接对应起来
Enter any passphrase: ##执行上条连接命令时需要输入密码
vim /etc/fstab
内容为:
/dev/mapper/redhat /mnt xfs defaults 0 0
执行完上述命令后reboot虚拟机后,执行df命令,便可以看到效果(即此时设备已经被挂载)
#####加密清除#####
vim /etc/fstab ##进入/etc/fstab文件删除在第2步中写入的行
> /etc/crypttab ##删除/etc/crypttab文件
rm -fr /root/lukspsfile ##删除mima存放的文件
umount /mnt ##卸载/mnt
cryptsetup close westos ##关闭磁盘 此步骤一定要做
mkfs.xfs /dev/vdb1 ##格式化磁盘(此时会提醒报错,必须使用-f进行强行格式化)
mkfs.xfs: /dev/vdb1 appears to contain an existing filesystem (crypto_LUKS).
mkfs.xfs: Use the -f option to force overwrite.
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
操作完成,加密清除!!!
#####4.磁盘阵列####
fdisk /dev/vdb
mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3}
mkfs.xfs /dev/md0
mount /dev/md0 /mnt
监控命令:
watch -n 1 cat /proc/mdstat;echo ===; df -h
卸载磁盘阵列:
mdadm -f /dev/md0 /dev/vdb1 ##破坏磁盘阵列md0中的vdb1磁盘
mdadm -D /dev/md0 ##查看正在使用的磁盘
mdadm -r /dev/md0 /dev/vdb1 ##删除磁盘阵列中的vdb1磁盘
mdadm -a /dev/md0 /dev/vdb1 ##
umount /mnt
mdadm -S /dev/md0 ##停止使用磁盘阵列
####5.配额###
fdisk /dev/vdb
mkdir /pub
mount /dev/vdb1 /pub
mkfs.xfs /dev/vdb1 -f
chmod 1777 /pub ##给予目录/pub的权限为1777
mount -o usrquota /dev/vdb1 /pub
quotaon -uv /dev/vdb1 ##激活配额
edquota -u username ##给用户分配配额
内容如下:
Disk quotas for user student (uid 1000):
Filesystem blocks(事实) soft hard inodes soft(事实) hard
/dev/vdb1 0 0 102400 0 0 0
即除了修改第一个hard,其余参数不用修改
su - username ##切换用户
切换用户后执行:
dd if=/dev/zero of=/pub/file bs=1M count=10
dd if=/dev/zero of=/pub/file bs=1M count=100
dd if=/dev/zero of=/pub/file bs=1M count=101
quota ##查看用户被分配的配额
例:
fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +500M
[root@localhost ~]# mkdir /pub
[root@localhost ~]# mount /dev/vdb1 /pub
mount: unknown filesystem type 'linux_raid_member' ##报错原因:因为此磁盘在上一布用于磁盘阵列,所以格式化时应该加-f
[root@localhost ~]# mkfs.xfs /dev/vdb1 -f
[root@localhost ~]# chmod 1777 /pub ##给予目录/pub的权限为1777
[root@localhost ~]# mount -o usrquota /dev/vdb1 /pub
[root@localhost ~]# quotaon -uv /dev/vdb1 ##激活配额
quotaon: Enforcing user quota already on /dev/vdb1
[root@localhost ~]# edquota -u username ##给用户分配配额
[root@localhost ~]# su - username ##切换用户
[student@localhost ~]$ dd if=/dev/zero of=/pub/file bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0227461 s, 461 MB/s
[student@localhost ~]$ dd if=/dev/zero of=/pub/file bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 1.23691 s, 84.8 MB/s
[student@localhost ~]$ dd if=/dev/zero of=/pub/file bs=1M count=101
dd: error writing ‘/pub/file’: Disk quota exceeded ##报错原因:超过root用户给分配的配额
101+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.640045 s, 164 MB/s
[student@localhost ~]$ quota ##查看用户被分配的配额
Disk quotas for user student (uid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/vdb1 102400* 0 102400
#####自动挂载配额分区####
/dev/vdb1 /mnt xfs defaults,usrquota 0 0
文件内容编写不正确,则重启会报错,此时,修改文件,当修改完后,重启则又可以正常启
#############################################
#############第五单元lvm管理###############
#############################################
1.lvm名词
lvm 逻辑卷,可以让设备*伸缩的一个设备管理软件
pv 物理卷
vg 物理卷组
pe 物理拓展,lvm最小的存储单元
lvm 逻辑卷,时最终我们使用的可以伸缩的设备
2.lvm的制作
首先划分lvm所用到的设备,这些设备的功能id必须时linux LVM
1)lvm建立
pvcreate /dev/vdb1 ##把物理分区做成物理卷
pvs|pvdisplay ##查看物理卷
vgcreate vg0 /dev/vdb1 ##用制作好的/dev/vdb1这个物理卷制作一个物理卷组vg0
vgs|vgdisplay ##查看物理卷组
lvcreate -L 200M -n lv0 vg0 ##在vg0这个组中建立出lv0设备 -L 指定设备大小 -n 指定设备名字
lvs|lvdisplay ##对逻辑卷设备进行查看
建立lvm
pvcreate /dev/vdb1 ##建立pv
vgcreate vg0 /dev/vdb1 ##建立vg(组)
lvcreate -L 300M -n lv0 vg0 ##设置vm的大小
mkfs.xfs /dev/vg0/lv0 ##格式化
mount /dev/lzt/vg0 /mnt ##挂载
3.lvm设备的扩大
###############针对xfs文件系统######################
xfs文件系统只能扩大不能缩减
1)lvm扩大
lvextend —L 500M /dev/vg0/lv0 ##扩大lvm设备到500M
xfs_growfs /dev/vg0/lv0 ##扩大xfs文件系统到设备大小
2)vg扩大
pvcreate /dev/vdb2 ##在pv中增加一块设备/dev/vdb2
vgextend vg0 /dev/vdb2 ##把新建立的/dev/vdb2添加到vg0中
##############针对ext文件系统####################
ext文件系统可以扩大也可以缩减
1)lvm扩大
lvextend —L 2G /dev/vg0/lv0 ##扩大lvm设备到2G
resize2fs /dev/vg0/lv0 ##设定文件系统大小和设备同步
2)vg扩大
pvcreate /dev/vdb3 ##在pv中增加一块设备/dev/vdb3
vgextend vg0 /dev/vdb3 ##把新建立的/dev/vdb2添加到vg0中
对建立的lvm进行拓展与拉伸
监控命令:
watch -n 1 'echo "=pvinfo=";pvs;echo "=vginfo=";vgs;echo =lvinfo=;lvs;df -h /mnt'
lvextend -L 250M /devvg0/lv0 ##拓展分区为250M
xfs_growfs /dev/lzt/lv0 ##对xfs文件系统进行拉伸(须知: 1.当执行完上条命令时,由监控命令可知新拓展的区域还没有xfs文件系统 2.挂载的位置没有变化,故可直接拉伸)
当一个pv不能满足拓展与拉伸的需求时,操作如下命令:
pvcreate /dev/vdb2 ##建立第二个pv
vgextend vg0 /dev/vdb2 ##将第二个pv添加到建立的vg组里
lvextend -L 600M /dev/vg0/lv0 ##拓展分区为600M
xfs_growfs /dev/vg0/lv0 ##对xfs文件系统进行拉伸
例:
[root@localhost ~]# lvextend -L 250M /dev/lzt/lv0
[root@localhost ~]# xfs_growfs /dev/lzt/lv0
[root@localhost ~]# lvextend -L 600M /dev/lzt/lv0
Extending logical volume lv0 to 600.00 MiB
Insufficient free space: 87 extents needed, but only 61 available ##报错:现有的pv不能满足要求,需要87个pe才可成功,现有的只有61个
[root@localhost ~]# pvcreate /dev/vdb2
[root@localhost ~]# vgextend vg0 /dev/vdb2
Volume group "vg0" successfully extended
[root@localhost ~]# lvextend -L 600M /dev/vg0/lv0
Extending logical volume lv0 to 600.00 MiB
Logical volume lv0 successfully resized ##成功拓展与拉伸
[root@localhost ~]# xfs_growfs /dev/vg0/lv0
3)lvm缩减
umount /dev/vg0/lv0 ##卸载设备,因为文件系统缩减不支持在线操作
e2fsck -f /dev/vg0/lv0 ##检测文件系统,确定文件系统中已有数据大小防止过度缩减
resize2fs /dev/vg0/lv0 1G ##把文件系统缩减到1G
lvreduce -L 1G /dev/vg0/lv0 ##设备缩减到1G
4)vg缩减
#在vg缩减时只能缩减没有被占用的设备
pvmove 设备1 设备2 ##把设备1上的所有数据移动到设备2上
vgreduce vg0 /dev/vdb1 ##把vg0中的/dev/vdb1删除
pvremove /dev/vdb1 ##把/dev/vdb1上的lvm管理信息删除
分区的缩小:
(xfs文件类型不能进行缩小,ext文件类型可以)
umount /mnt/
mkfs.ext4 /dev/lzt/lv0 ##首先格式化lvm为ext4文件类型
e2fsck -f /dev/vg0/lv0 ##对lvm中的数据进行查看(在缩小lvm前必须要做的)
resize2fs /dev/vg0/lv0 550M ##将lvm文件系统的大小缩小为500M
lvreduce -L 500M /dev/vg0/lv0 ##将lv大小缩小为500M
pvremove /dev/vdb1 /dev/vdb2 ##将/dev/vdb1中的数据移动到/dev/vdb2中(切记:此过程中不要执行ctrl+c命令操作)
vgreduce vg0 /dev/vdb1 ##将/dev/vdb1从vg组中移除
pvremove /dev/vdb1 ##删除pv(即/dev/vdb1)
若先缩减lv则会出现错误,此时应先将设备的空间升上来,
若删除了正在使用的设备,则需执行vgreduce --removemissing vg0(vg组名)
5)lvm丢失设备的删除
[root@westos ~]# pvs
PV g2OIge-1awl-HOFo-XwNG-EhUg-KP5E-GBQGRt not recognised. Is the device missing?
PV g2OIge-1awl-HOFo-XwNG-EhUg-KP5E-GBQGRt not recognised. Is the device missing?
PV g2OIge-1awl-HOFo-XwNG-EhUg-KP5E-GBQGRt not recognised. Is the device missing?
PV g2OIge-1awl-HOFo-XwNG-EhUg-KP5E-GBQGRt not recognised. Is the device missing?
PV VG Fmt Attr PSize PFree
/dev/vdb1 vg0 lvm2 a-- 1020.00m 820.00m
/dev/vdb2 vg0 lvm2 a-- 1020.00m 1020.00m
unknown device vg0 lvm2 a-m 996.00m 996.00m ##设备丢失
[root@westos ~]# vgreduce --removemissing vg0 ##删除vg0中丢失的设备
PV g2OIge-1awl-HOFo-XwNG-EhUg-KP5E-GBQGRt not recognised. Is the device missing?
PV g2OIge-1awl-HOFo-XwNG-EhUg-KP5E-GBQGRt not recognised. Is the device missing?
Wrote out consistent volume group vg0
[root@westos ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb1 vg0 lvm2 a-- 1020.00m 820.00m
/dev/vdb2 vg0 lvm2 a-- 1020.00m 1020.00m
6.lvm快照
lvcreate -L 20M -n lv0-backup -s /dev/vg0/lv0 ##给/dev/vg0/lv0建立快照,-L 指定快照大小,-n指定快照名字 -s指定快照模板设备
mount /dev/vg0/lv0-backup /userdate
当快照设备里的数据被更改,如果想还原,删除快照设备,在重新建立快照即可
lvcreate -L 12M -n lv0backup -s /dev/lzt/lv0
7.lvm删除
lvremove---->vgremove----->pvremove
lvremove /dev/vg0/lv0backup
lvremove /dev/vg0/lv0
vgremove vg0
pvremove /dev/vdb2
########附加知识点------《磁盘配额》######################
1.磁盘配额时限制用户向设备中写入数据的大小,或者个数
2.此这定针对与设备的,
3.做法
mount -o usrquota,grpquota /dev/vdb1 /pub ##激活配额功能参数
quotaon -ugv /pub ##开启配额
edquota -u lee ##设定lee的配额
repquota -a ##root可以执行,查看用户配额信息
quota ##配额限制用户查看自己配额信息命令
4.开机自动激活配额
vim /etc/fstab
/dev/vdb1 /pub xfs defaults,usrquota,grpquota 0 0
5.关闭配额
删除vim /etc/fstab中的配额参数
quotaoff -ugv 设备