系统分区,磁盘的加密保护,磁盘阵列,磁盘配额,lvm的管理,磁盘的扩容与缩容,lvm快照的制作
1.系统分区概述:
分区:磁盘上的分区规划
硬盘:可划分的分区(可见的)
硬盘与系统的关系: 系统管理硬盘 硬盘保存系统信息
/dev/sda #第一块串口硬盘(sata)
a表示第一块 b表示第二块 依次类推
/dev/hd0 #并口磁盘
--IDE #老式硬盘(并口硬盘)
/dev/cdrom #光驱(不一定存在)
/dev/sr0 #光驱(一定存在)
注意:cdrom为sro的快捷方式,cdrom可以不存在
/dev/mapper
2.系统分区的查看与挂载
fdisk -l #查看真实存在的硬盘
cat /pro/partitions #查看系统可识别到的硬盘
blkid #查看系统可用的硬盘
df #查看系统正在使用的硬盘
df -h #2^n 1M=1024k
df -H #10^n 1M=1000k
fuser -vm /dev/sdb1 #vm表示查看/dev/sdb1设备正在运行的程序
fuser -kvm /dev/sdb1 #k表示结束正在运行着的程序
(实验1)具体操作步骤如下:(在真机里)
su -root #切换到超级用户
df
插上u盘
df #/dev/sdb1表示u盘
umount /dev/sdb1 #卸载
mount /dev/sdb1 /mnt #挂载(在home的cumputer的/mnt里可查看到u盘的内容)
cd /mnt
再打开一个shell
su - root
umount /mnt #(无法卸载)
fuser -vm /dev/sdb1 #查看
fuser -kvm /dev/sdb1 #结束运行的程序
umount /mnt #(卸载成功)
说明:当硬盘正在使用时(即有程序运行时),则将无法执行umount命令
mount /dev/sdb1 /mnt #把/dev/sdb1挂载到/mnt上(临时性的)
#挂载 配置名 挂载点
umount /mnt #将/dev/sdb1 从挂载点/mnt上卸载(等同于umount /dev/sdb1)
mount /dev/sdb1 /mnt #默认为读写挂载
mount -o ro /dev/sdb1 /mnt #ro表示只读挂载
mount -o remount,rw /dev/sdb1 #remount表示重新挂载 rw表示读写挂载
(实验2)具体操作步骤如下:(在真机里)
mount -o ro /dev/sdb1 /mnt/ #只读挂载
df
touch /mnt/file1 #(建立失败)
umount /dev/sdb1
mount -o rw /dev/sdb1 /mnt/ #读写挂载
touch /mnt/file1 #(建立成功)
说明:只有挂载时给写的权限才能执行touch命令
3.如何划分分区
mbr (dos)#主引导记录,打开分区
mpt #记录分区信息
512-446=66=64+2
# mbr mpt 55aa
分区的两种方式:
mbr #分为主分区p(primary第四个分区)和扩展分区e(expended容器;逻辑分区(容器中的内容),最多只能划分4个主分区。为了容纳更多的东西,所以将第4个分区化为扩展分区(容器),可将容纳不下的东西放到这个扩展分区中在linux中最多放16个,且每个不超过2t
gpt #不分主分区和扩展分区,可划分128个分区
fdisk /dev/vdb #进入/dev/vdb设备中
常用参数的含义:
m #获得帮助
n #新建
p #显示分区信息
t #修改分区
w #将当前操作写入硬盘分区表
q #直接退出不保存
wq #退出保存
partprobe #手动同步划分的分区信息
具体操作步骤如下:(在server中)
fdisk -l #查看真实存在的硬盘
fdisk /dev/vdb #进入/dev/vdb设备中
m #获得帮助
n #新建分区
p #分区的类型为主分区
1 #分区的编号为1
First sector #设为默认(直接回车即可)
+100M #分区的大小为100M
重复上述操作建立3个分区
n #新建分区
e #分区类型为扩展分区
剩下的设为默认即可
n #在刚建的扩展分区上新建分区
p #分区的类型为主分区
1 #分区的编号为1
First sector #设为默认
+100M #分区的大小为100M
wq #退出保存
partprobe #同步分区信息
cat /proc/partitions #查看设备是否被系统识别
4.分区的挂载:
挂载前需要先格式化
mkfs.xfs /dev/vdb1 #格式化设备,在设备上安装文件系统xfs
具体操作步骤如下:
mount /dev/vdb1 /mnt #(挂载失败)
mkfs.xfs /dev/vdb1 # 格式化/dev/vdb1
blkid # 查看系统可用的硬盘
mount /dev/vdb1 /mnt #(挂载成功)
df
注意:不能挂载 /dev/vdb4 因为它是个扩展分区
5.更改分区的类型(方式)
parted /dev/vdb( 设备名称) #更改分区方式
partprobe #手动同步划分的分区
(1)mbr(dos)---->gpt
具体操作步骤如下:
umount /mnt #解除所有挂载
(如果没有全部挂载到/mnt则需要单独解除挂载形如:umount /dev/vdb1)
fdisk /dev/vdb #进入/dev/vdb
d #删除分区
1 #分区序号
重复上述操作删除所有分区
wq
cat /proc/partitions #查看是否删除了分区
(如果系统没有识别到刚才的操作则需执行下一步操作)
partprobe #手动同步划分的新分区
cat /proc/partitions #查看有没有删掉刚新建的分区
parted /dev/vdb #更改分区的类型(方式)
mklabel
tab键补齐可查看到分区类型
gpt #分区方式更改为gpt
quit
fdisk -l #可查看到分区的类型是否更改为gpt类型(方式)
(2)gpt---->mbr(dos)
具体操作步骤如下:
parted /dev/vdb #更改分区的类型
(parted) mklabel
tab键补齐可查看到分区类型
msdos
(parted) quit
fdisk -l #可查看到分区类型是否更改为mbr(dos)类型(方式)
注意:如果输入msdos回车之后出现
Ignare/Cancel? 则此时需要输入I #ignore忽略
6.挂载的两种方式
(1)临时性挂载:
cat /proc/partitions #查看分区
df
mount /dev/sdb1 /mnt
df #查看是否挂载
(2)永久性挂载:
df #查看是否挂载
umount /dev/vdb1 #取消挂载点(如果有挂载)
vim /etc/fstab #编写文件,开机时自动挂载,即永久性挂载
################
/dev/vdb1 /mnt xfs defaults 0 0
#设备名 挂载点 系统类型 参数
mount -a #系统重新读取挂载信息
df #查看是否挂载
7.将分区更改为swap类型的两种方式
(1)临时性更改:
具体操作步骤如下
df #查看是否挂载(如果挂在了需要卸载)
cat /proc/partitions #查看是否有/dev/vdb1(如果没有则需要新建分区)
fdisk /dev/vdb #进入/dev/vdb里
Command (m for help): t #修改为swap分区
Partition number (1-3, default 3): 1
Hex code (type L to list all codes): 82
wq
partprobe #同步
mkswap /dev/vdb1 #格式化
swapon -a /dev/vdb1 #测试(不报错)
swapon -s #查看
fdisk -l #查看是否修改为swap分区
(2)永久性更改:
具体操作步骤如下
vim /etc/fstab
##########
/dev/vdb1 swap swap defaults 0 0
#设备名 系统不需要挂载 分区类型 参数 不需要测试
mkswap /dev/vdb1 #格式化
swapon -a /dev/vdb1 #测试(不报错)
swapon -s #查看
fdisk -l #查看是否修改为swap分区
8.删除swap分区
vim /etc/fstab
#########
删除/dev/vdb1 swap swap defaults 0 0
swapoff /dev/vdb1
fdisk /dev/vdb #进入/dev/vdb
Command (m for help): d # 删除swap分区
Partition number (1-5, default 5): 1
Partition 2 is deleted
Command (m for help): wq
partprobe #同步
cat /proc/partitions #查看是否删除了swap分区(/dev/vdb1)
9.磁盘的加密保护
(1)临时性加密
具体操作如下:
fdisk /dev/vdb #进入dev/vdb 并新建(n)/dev/vdb1
partprobe #同步
cryptsetup luksFormat /dev/vdb1 #加密/dev/vdb1
YES #必须是大写
Enter passphrase: westos666 #输入密码为westos666
Verify passphrase:
mount /dev/vdb1 /mnt #(挂载失败)
ls /dev/mapper/
cryptsetup open /dev/vdb1 westos #解密(open打开)并且解密形态为westos
Enter passphrase for /dev/vdb1: 输入密码
ls /dev/mapper/
mkfs.xfs /dev/mapper/westos #格式化
mount /dev/mapper/westos /mnt/ #用解密形态挂载(成功)
touch /mnt/file{1..10}
ls /mnt
umount /mnt/
df
ls /mnt/
cryptsetup close westos #关闭(close)解密
ls /dev/mapper/
mount /dev/mapper/westos /mnt #(挂载失败)
mount /dev/vdb1 /mnt/ #(挂载失败)两者作用相同
cryptsetup open /dev/vdb1 westos #打开保存解密形态到westos
mount /dev/vdb1 /mnt/ #(挂载成功)
mount /dev/mapper/westos /mnt/ #(挂载成功)
df
ls /mnt #可查看到刚新建的文件
(2)永久性加密:(开机后自动加密)
vim /root/diskpass #编写解密文件
################
westos666 #自定义设定密码
chmod 600 /root/diskpass #给一个执行权限
cryptsetup luksAddKey /dev/vdb1 /root/diskpass
Enter any passphrase: # 输入密码
vim /etc/crypttab
##############
westos /dev/vdb1 /root/diskpass
#加密形态 设备名称 解密文件
vim /etc/fstab
###############
/dev/mapper/westos /mnt xfs defaults 0 0
df #查看是否挂载
umount /mnt #卸载/mnt(如果有,那么执行此步骤)
reboot #重启
df #查看是否挂载成功
cat /var/log/boot.log #查看开机启动日志
[ OK ] Found device /dev/mapper/westos. # 自动读取密码
(3)解开永久性加密:
vim /etc/crypttab
##############
删除westos /dev/vdb1 /root/diskpass
vim /etc/fstab
###############
删除/dev/mapper/westos /mnt xfs defaults 0 0
rm -fr /root/diskpass
df
umount /mnt
cryptsetup close westos #关闭
mkfs.xfs /dev/vdb1 #格式化
mkfs.xfs /dev/vdb1 -f #强制格式化
10.磁盘阵列
0 #表示写入的速度快
1 #表示读的速度快
5 #最少需要三块硬盘
mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3}
参数的具体含义:
-C #创建
-a yes #若没有该设备则自动创建
-l 1 #级别
-n 2 #用两块设备做
-x 1 #一块闲置
-D #查看状态
-f #损坏
-r #卸载
具体操作步骤如下:
fdisk /dev/vdb #进入/dev/vdb中并新建分区
n #新建三个分区
t #改变分区类型(改为fd)
Hex code (type L to list all codes): fd
wq
partprobe #手动同步
cat /proc/partitions #查看
fdisk -l #查看到分区类型是否为dos
mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3}
mkfs.xfs /dev/md0 #格式化
mount /dev/md0 /mnt
df
注意:要做完上述操作之后才能做以下实验
(1)设备的管理(mdadm)
mdadm -D /dev/md0 #查看所有设备的状态
mdadm /dev/md0 -f /dev/vdb2 #强行损坏/dev/vdb2设备
df
mdadm -D /dev/md0
mdadm /dev/md0 -r /dev/vdb2 #删除
mdadm -D /dev/md0
mdadm /dev/md0 -a /dev/vdb2 #添加
mdadm -D /dev/md0
(2)设备的永久性删除
df
umount /mnt #解除挂载
df
mdadm -S /dev/md0 #停止设备
fdisk /dev/vdb
#进入 /dev/vdb 删除所有分区(d)
partprobe #同步
cat /proc/partitions #查看
11.磁盘配额
dd if=/dev/zero of=/mnt/studentfile bs=1M count=21
具体参数的含义:
dd #截取
if #input file
of #out of file
/dev/zero #无限零字节(设备)
bs #大小(block size)
count #个数
实验:(在server里,实验之前最好先重置server)
cat /proc/partitions
fdisk /dev/vdb
#进入/dev/vdb中,并新建(n)一个分区/dev/vdb1
cat /proc/partitions #查看是否建立好了/dev/vdb1
mkfs.xfs /dev/vdb1 #格式化
mount -o usrquota /dev/vdb1 /mnt #挂载
chmod 777 /mnt #更改权限
edquota -u student #设置配额参数(临时的)
#################
Filesystem blocks soft hard inodes soft hard
/dev/vdb1 0 0 20480 0 0 0
#最多可截取20个
mount #查看是否**配额参数
*************
/dev/vdb1 on /mnt type xfs (rw,relatime,seclabel,attr2,inode64,usrquota)
测试:
su - student
dd if=/dev/zero of=/mnt/studentfile bs=1M count=21
**************
dd: error writing ‘/mnt/studentfile’: Disk quota exceeded
exit
vim /etc/fstab #开机自动**配额
####################
/dev/vdb1 /mnt xfs defaults,usrquota 0 0
12.逻辑卷(lvm)的管理(在server里)
lvm #它的作用是实现硬盘的无限分区与扩容
pv #物理卷
vg #物理卷组
pe #物理拓展
注意:作以下实验之前需要 再打开一个shell,连接server并用
watch -n 1 'pvs;vgs;lvs;df -h /mnt' 来监控,便于观察现象
具体操作步骤如下:
df
umount /mnt
vim /etc/fstab
#############
删除/dev/vdb1 /mnt xfs defaults,usrquota 0 0
fdisk /dev/vdb #进入设备,删除(d)分区
#新建(n)3个分区并改变(t)分区类型(8e) ##物理分区(3个橘子)
partprobe #同步
cat /proc/partitions #查看
pvcreate /dev/vdb1 ##将物理分区处理为物理卷(榨汁)
vgcreate vg0 /dev/vdb1 ##物理卷组成物理卷组(将果汁融合到一杯)
lvcreate -L 300M -n lv0 vg0 ##将物理卷划分为逻辑卷(分杯)
mkfs.xfs /dev/vg0/lv0 #格式化
mount /dev/vg0/lv0 /mnt #挂载
df
13.磁盘的扩容与缩容
注意:需要先做好逻辑卷(lvm)的管理实验,才能做以下实验
(1)xsf系统的扩容(刚新建的分区大小为1G)
VG容量够时:
lvextend -L 500M /dev/vg0/lv0 #扩大设备
xfs_growfs /dev/vg0/lv0 #扩展文件系统
VG容量不够时:
pvcreate /dev/vdb2 #将物理分区处理为物理卷
vgextend vg0 /dev/vdb2 #将新添加的物理卷添加到原来的物理卷组中
lvextend -L 1500M /dev/vg0/lv0 #扩大设备
xfs_growfs /dev/vg0/lv0 #扩展文件系统
(2)在ext4系统下
1.磁盘容量的扩展
umount /mnt
mkfs.ext4 /dev/vg0/lv0 #格式化为ext4系统
mount /dev/vg0/lv0 /mnt #挂载
mount #查看
lvextend -L 1800M /dev/vg0/lv0 #扩大设备
resize2fs /dev/vg0/lv0 #更新逻辑卷的信息(扩展文件系统)
2.磁盘容量的缩减
umount /mnt
e2fsck -f /dev/vg0/lv0 #扫描逻辑设备上的空间
resize2fs /dev/vg0/lv0 1000M #缩减文件系统(Filesystem)
mount /dev/vg0/lv0 /mnt #挂载
lvreduce -L 1000M /dev/vg0/lv0 #缩减设备
3.缩减VG(将数据迁移到闲置的设备上)
pvmove /dev/vdb1 /dev/vdb2 #将/dev/vdb1上的数据迁移到/dev/vdb
#如果出现报错,则说明vdb1缩的不够小,vdb2容不下。解决方法是将vdb1缩的更小一些即可
vgreduce vg0 /dev/vdb1 #从vg0中取出/dev/vdb1
pvremove /dev/vdb1 #删除dev/vdb1
14.lvm快照的制作
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 #制作快照
具体操作步骤如下:
cd /mnt
ls
touch file{1..5} #在/mnt建立文件
ls
cd #返回上层目录
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 #制作快照
#如果失败,则说明容量不够,那么需要扩容,然后再制作快照
pvcreate /dev/vdb1 ##扩大容量
vgextend vg0 /dev/vdb1
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 #制作快照
mount /dev/vg0/lv0backup /mnt #挂载
cd /mnt
rm -fr * #删除文件
ls
cd
umount /mnt
lvremove /dev/vg0/lv0backup #删除快照
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0
#重新制作快照
mount /dev/vg0/lv0backup /mnt #挂载
ls /mnt #可查看到刚才建立的文件,因为有快照的存在,所以删除文件时,删除的是快照,而不是母本.