一.linux系统中的磁盘管理
1.本地存储设备的识别
1)fdisk -l ---真实存在的设备
主机硬盘320G
插入的U盘信息
2)cat /proc/partitions ---系统识别的设备
![](https://i-blog.csdnimg.cn/blog_migrate/7326e9c4f6251f3c56ace9b4157404ab.png)
3)blkid ---系统可使用的设备
![](https://i-blog.csdnimg.cn/blog_migrate/507de74d51fd3ab8ee749fd0f8129aa6.png)
4)df ---系统正在挂载的设备
2.设备的挂载和卸载
1)设备名称
/dev/xdx ---/dev/hd0 /dev/hd1 /dev/sda /dev/sdb /dev/sda1 /dev/sda2 /dev/sdb1
/dev/sr0 ---光驱
/dev/mapper/* ---虚拟设备
2)设备的挂载
mount 设备 挂载点
mount /dev/sdb1 /dai ---将sdb1挂载到/dai
此时,在/dai中的文件管理等同于对U盘进行管理
mv /etc/passwd
查看U盘中出现passwd文件
umount /dai | /dev/sdb1 ---卸载
mount -o ro /dev/sdb1 /dai ---只读挂载
mount ---查看挂载信息
mount -o remount ,rw /dev/sdb1 | /dai ---将只读挂载重新读写挂载
mount ---查看挂载信息
3)解决设备正忙情况
[root@doundation 62 ~]#umount /dai/
umount: /dai: target is busy. ---有程序在使用此设备
(In some cases useful info about processes that the device is found by lsof(8) or fuser(1))
#解决方法1
fuser -kvm /dai
umount /dai
#解决方法2
lsof /dai
[root@foundation62 ~]lsof /dai/
lsof :WARNING: can't stat () fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output is information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 4639 root cwd DIR 8,17 16384 1 /dai
kill -9 4639 ---强制结束进程4639
umount /dai ---卸载/dai
下面的实验必须用server做
3.磁盘分区
1.硬盘0磁道1扇区的512个字节中记录的信息如下
512=446 + 64 +2
mbr(主引导记录) mpt(主分区表) 55aa(硬盘的有效性标识)
硬盘分区表
64
1个分区占用16个字节
一块硬盘上最多可以划分4个主区
2.分区步骤
1)fdisk -l ---查看硬盘分区信息
2)fdisk /dev/vdb ---在/dev/vdb中进行分区管理
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 ---修改分区id
u change display/entry units
v verify the partition table
w write table to disk and exit ---保存分区表信息到硬盘
x extra functionality (experts only)
1.#建立主分区
Command (m for help): n ---新建
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p ---主分区
Partition number (1-4, default 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 ---给这个分区100M的大小
Partition 1 of type Linux and of size 100 MiB is set
Command (m for help): p ---显示信息
Device Boot Start End Blocks Id System
/dev/vdb1 2048 206847 102400 83 Linux
Command (m for help): wq ---保存退出
The partition table has been altered!
2.#扩展分区
当系统已经有三个主分区时
Command (m for help): n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e ---3个主分区出现要先划分扩展分区,也可以无视默认推荐,继续划分主分区,但是之后再划分会报错,无法划分更多分区
Selected partition 4
First sector (616448-20971519, default 616448): ---默认初始位置
Using default value 616448
Last sector, +sectors or +size{K,M,G} (616448-20971519, default 20971519): ---默认最终位置,将所有空间都给扩展分区
Using default value 20971519
Partition 4 of type Extended and of size 9.7 GiB is set
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/vdb1 2048 206847 102400 83 Linux
/dev/vdb2 206848 411647 102400 83 Linux
/dev/vdb3 411648 616447 102400 83 Linux
/dev/vdb4 616448 20971519 10177536 5 Extended
Command (m for help): wq
The partition table has been altered!
4.给设备安装文件系统
ext3 rhel5及之前的版本 最多支持32TB的文件系统和2T文件,实际2TB文件系统,16G文件
ext4 rhel6 1EB 16TB
xfs rhel7 18EB 9EB 7G/s 4G/s
文件系统大小 允许保存的最大文件 下载最大速度,写入最大速度
1)mkfs.xfs /dev/vdb1 ---格式化分区vdb1(1号虚拟硬盘)
2)mount /dev/vdb1 /dai ---将硬盘挂载到/dai下,此时才能在文件中控制硬盘内容
![](https://i-blog.csdnimg.cn/blog_migrate/71a98da350099ea7612b2a69b66b8fdc.png)
df检测是否挂载成功
3)partprobe ---立即同步分区表
4)设置开机启动挂载命令
vim /etc/fstab
##文件内容格式:
设备 挂载点 文件系统 挂载参数 是否备份 是否检测
/dev/vdb1 /mnt xfs defaults 0 0
mount -a ---立即挂载(上面的文件内容立即执行,可以先不挂载,设置开机挂载文件后,用此命令立即挂载)
5.swap分区管理
1)临时设置分区
swap分区建立,划分分区并设定分区标签为82
fdisk /dev/vdb ---管理/dev/vdb的分区
n ---新建分区
last +1000M ---给swap分区1000M的空间
p ---查看已建立分区
t ---修改分区信息
修改第5分区的信息
L ---列出标签信息并修改标签
82 ---将标签修改为82(swap分区)
p ---查看分区信息,第5分区已被修改为swap分区
wq ---保存之前的操作
partprobe ---立即同步分区表
mkswap /dev/vdb5 ---格式化swap分区
swapon -a /dev/vdb5 ---开启这个设备的服务,没有报错的话,说明建立成功
swapon -s ---查看swap服务开启状态,检测swap分区是否建立成功
2)永久分区设置
配置开机自动挂载文件
vim /etc/fstab
/dev/vdb5 swap swap defaults 0 0
硬件分区 挂载点 文件系统 挂载参数 是否备份 是否检测
swapon -a ---没有报错的话说明永久挂载成功
3)swap分区删除
vim /etc/fstab
dd删除刚才添加的一行
swapon -a
swapoff /dev/vdb5 ---将/dev/vdb5分区的设备服务关闭
必须将vdb5的所有使用都停掉,再删除swap分区,否则系统会默认正在使用,不能正常删除
fdisk /dev/vdb ---管理硬件分区
d ---删除
5 ---删除第5个分区
p ---查看这个硬盘下的所有分区
wq ---退出保存
partprobe
swapon -s ---检测是否删除成功
6.配额(配额是针对分区的)
1)新添加一个逻辑分区/dev/vdb5
2)mount -o usrquota /dev/vdb5 /public ---将/dev/vdb5 分区挂载到/public
![](https://i-blog.csdnimg.cn/blog_migrate/882d2135fa9c6bfca2f0e79adce99e13.png)
4)chmod 777 /public/ ---给/public/满权限,便于实验
![](https://i-blog.csdnimg.cn/blog_migrate/56e404c3e6126ab5952f435fd37458dc.png)
5)edquota -u student ---设置student用户的配额
指定管理的分区 ,将hard(最大空间)设置为20M
6)设置永久配额
vim /etc/fstab
/dev/vdb5 /public xfs defaults,usrquota 0 0
硬件分区 挂载点 文件系统 挂载参数,配额管理 是否备份 是否检测
测试:
需要切换到student用户进行
[student@localhost ~]$ dd if=/dev/zero of=/public/file bs=1M count=200 ---从/dev/zero下切出文件,放到/public/目录下,名称为file,大小为1M,次数为200次
再切出一块大小共20M的文件放到/public/,名称为file,没有报错,此处尝试保存为file1,被拒绝,是此前设置问题。
查看/public/file的文件大小,为20M,新的文件将空间正好占满,原文件丢失。
7.磁盘加密
luks加密方式 :
先在磁盘外铺一层加密,再在之外铺一层文件系统,提取磁盘中的数据时,先是得到加密的数据,然后才经过文件系统编辑,强制清除密码之后,得到的数据都是经过加密的,没有解密方式,使磁盘安全性更高
环境:server
首先建立分区
fdisk -l 可以查看到设备/dev/vdb下有5个分区
![](https://i-blog.csdnimg.cn/blog_migrate/53f1a45c41719630272dd1dc41362f96.png)
步骤:
1)cryptsetup luksFormat /dev/vdb5 ---将设备分区5加密(此处YES确认必须大写,否则不生效)
2)cryptsetup open /dev/vdb5 dai ---将设备解密,使之成为一个虚拟设备,并命名为dai
3)ll /dev/mapper/ ---查看设备
4)mkfs.xfs /dev/mapper/dai ---将/dev/mapper/dai格式化为xfs格式
5)mount /dev/mapper/dai /mnt/ ---将虚拟设备挂载到/mnt/
df ---查看挂载信息
6)touch /mnt/file{1..10} ---在/mnt/下新建文件
7) umount /mnt/ ---卸载/mnt/
8)cryptsetup close dai ---关闭虚拟设备,此时/dev/vdb5处于无法访问状态
9)ll /dev/mapper/ ---查看设备,发现虚拟设备消失
![](https://i-blog.csdnimg.cn/blog_migrate/40bd2c0e593002e3c6e04730a3ebe75e.png)
(检测一)此时磁盘加密状态,虚拟设备不存在
10)mount /dev/mapper/dai /mnt/ ---挂载虚拟设备报错,因为虚拟设备不存在
mount: special device /dev/mapper/dai does not exist
(检测二)直接挂载真实设备,系统报错无法识别加密磁盘
11)mount /dev/vdb5 /mnt/ ---挂载真实设备报错,因为是加密状态
mount: unknown filesystem type 'crypto_LUKS'
12)cryptsetup open /dev/vdb5 westos ---将设备解密,使之成为一个虚拟设备,并命名为westos
![](https://i-blog.csdnimg.cn/blog_migrate/9d09fc83e66249a6a4729ea32f52cbc8.png)
(检测三)13.mount /dev/mapper/westos /mnt/ ---挂载
14)ls /mnt/ ---此时加密磁盘被解密,可以查看/mnt/的文件,发现之前在真实设备中新建的10个文件
8.加密挂载开机自启
步骤:
1)vim /etc/fstab ---编辑开启自动挂载文件
/dev/mapper/disk /pub xfs defaults 0 0
设备名称(虚拟设备名称任意指定) 挂载点(需要已经存在) 文件系统 挂载参数 是否备份 是否检测
2)vim /etc/crypttab ---配置添加虚拟设备信息的文件
disk /dev/vdb5 /root/vdb5pass
虚拟设备名称 虚拟设备对应的物理分区 物理分区的密码指定文件(它不能自动去查询,需要第5步操作)
3)vim /root/vdb5pass ---编辑指定的密码文件
2018dai ---保存着此前加密操作的密码
![](https://i-blog.csdnimg.cn/blog_migrate/52b3dc30da006c56257499b44725e7a9.png)
4)chmod 600 /root/vdb5pass ---此文件指定只允许超级用户能查看
5)cryptsetup luksAddKey /dev/vdb5 /root/vdb5pass ---让/root/vdb5pass与/etc/crypttab文件产生联系,当创建虚拟分区需要密码时,系统会自动去查询密码文件
检测:
reboot
![](https://i-blog.csdnimg.cn/blog_migrate/fb7ba416b7c0cc236692d1ea025d1828.png)
df ---查看到挂载信息,开机自启设置成功,设备挂载到/pub下
#取消加密(强行格式化加密设备后,加密就不存在了)
步骤:
1)vim /etc/fstab ---删除自动挂载
2)vim /etc/crypttab ---删除自动挂载指定查看的加密信息文件
3)df ---查看挂载信息
![](https://i-blog.csdnimg.cn/blog_migrate/8bb612064997aa0bcb34322e6ec8a00c.png)
umount /pub/ ---卸载虚拟设备
4)cryptsetup close disk ---关闭虚拟设备
5)mkfs.xfs /dev/vdb5 -f ---强制将/dev/vdb5格式化为xfs格式
检测:
mount /dev/vdb5 /mnt/
![](https://i-blog.csdnimg.cn/blog_migrate/b6f9420b3859176cf84860c01a410f9a.png)
df ---因为取消了加密,所以可以直接进行挂载,不会报错
总结:如果要取消加密,那就必须要格式化,起到了对文件的保护作用,没有密码的用户,就不能获取到设备中的文件