Linux系统中的磁盘管理(root用户)
1.本地存储设备的识别
fdisk -l 真实存在的设备
cat /proc/partitions 系统识别的设备
blkid 系统可使用的设备
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 /mnt 挂载sdb1到mnt
umount /mnt /dev/sdb1 卸载
mount -o ro /dev/sdb1 /mnt 只读挂载
mount 查看挂载信息
mount -o remount,rw /dev/sdb1 | /mnt 重新读写挂载
(3)解决设备正忙情况
如:
执行命令卸载挂载
umount /mnt/
此时可能会报错:
umount: /mnt: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
解决方法1
fuser -kvm /mnt 解决进程
umount /mnt 卸载
解决方法2
losf /mnt 查看占用设备的进程id
kill -9 xxxxx 结束占用设备的进程
umont /mnt 卸载
3.磁盘分区
(1)磁盘0磁道1扇区的512个字节中记录的信息如下:
512=446+64+2
446 | 64 | 2 |
---|---|---|
mbr(主引导记录) | mpt(主分区标) | 55aa(硬盘的有效性标示) |
硬盘分区标(64):一个分区占用16个字节,因此一块硬盘上最多可以划分四个主分区
(2)分区步骤
执行命令:
fdisk -l 查看磁盘情况
fdisk /dev/vdb 分区命令
具体操作:
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)
建立主分区:
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): 1 ————id可以使用默认(回车即可)
First sector (2048-20971519, default 2048): ————分区起始(回车即可默认)
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +1G ————分区大小
Partition 1 of type Linux and of size 1 GiB 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: 0x4cfd52b8
Device Boot Start End Blocks Id System
/dev/vdb1 2048 2099199 1048576 83 Linux
Command (m for help): wq ————保存设置
The partition table has been altered!
(3)当系统已经有三个主分区时,可以分出扩展分区
fdisk /dev/vdb ————磁盘分区管理命令
Command (m for help): n ————添加分区
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e ————选择扩展分区
Selected partition 4 ————分区id(回车默认)
First sector (4147200-20971519, default 4147200): ————分区起始
Using default value 4147200
Last sector, +sectors or +size{K,M,G} (4147200-20971519, default 20971519): ————分区大小(回车默认代表剩余所有)
Using default value 20971519
Partition 4 of type Extended and of size 8 GiB 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: 0x4cfd52b8
Device Boot Start End Blocks Id System
/dev/vdb1 2048 2099199 1048576 83 Linux
/dev/vdb2 2099200 3123199 512000 83 Linux
/dev/vdb3 3123200 4147199 512000 83 Linux
/dev/vdb4 4147200 20971519 8412160 5 Extended
(4)在扩展分区添加逻辑分区
fdisk /dev/vdb ————磁盘分区管理命令
Command (m for help): n ————添加分区
All primary partitions are in use
Adding logical partition 5 ————分区id(回车默认)
First sector (4149248-20971519, default 4149248): ————分区起始
Using default value 4149248
Last sector, +sectors or +size{K,M,G} (4149248-20971519, default 20971519): +100M ————分区大小
Partition 5 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: 0x4cfd52b8
Device Boot Start End Blocks Id System
/dev/vdb1 2048 2099199 1048576 83 Linux
/dev/vdb2 2099200 3123199 512000 83 Linux
/dev/vdb3 3123200 4147199 512000 83 Linux
/dev/vdb4 4147200 20971519 8412160 5 Extended
/dev/vdb5 4149248 4354047 102400 83 Linux
Command (m for help): wq ————退出保存
4.给设备安装文件系统
(1)文件系统版本
版本 | 适用范围 | 功能 |
---|---|---|
ext4 | rhel6 | 最多支持1EB文件系统和16tb文件 |
xfs | rhel7 | 最多支持18EB文件系统和9EB文件,以及7G/s的读取速度和4G/s的上传速度 |
ext3 | rhel5及之前的版本 | 最多支持23tb的文件系统和2t文件,16G文件 |
(2)磁盘处理
执行命令
mkfs.xfs /dev/vdb1 格式化磁盘
mount /dev/vdb1 /mnt 将磁盘临时挂载到/mnt上
vim /etc/fstab 编辑开机挂载策略
在文末输入
/dev/vdb1 /mnt xfs defaults 0 0
/dev/vdb1 | /mnt | xfs | defaults | 0 | 0 |
---|---|---|---|---|---|
设备 | 挂载点 | 文件系统 | 挂载参数 | 是否备份 | 是否检测 |
执行命令立即生效:
mount -a
5.swap分区管理
(1)swap分区建立
fdisk /dev/vdb ————磁盘分区管理命令
Command (m for help): n ————添加分区
All primary partitions are in use
Adding logical partition 6 ————分区id(回车默认)
First sector (4356096-20971519, default 4356096): ————分区起始
Using default value 4356096
Last sector, +sectors or +size{K,M,G} (4356096-20971519, default 20971519): +100M ————分区大小
Partition 6 of type Linux and of size 100 MiB is set
Command (m for help): t ————修改分区id
Partition number (1-6, default 6): 6 ————修改第6个分区
Hex code (type L to list all codes): 82 ————id修改为82
Changed type of partition 'Linux' to 'Linux swap / Solaris'
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: 0x4cfd52b8
Device Boot Start End Blocks Id System
/dev/vdb1 2048 2099199 1048576 83 Linux
/dev/vdb2 2099200 3123199 512000 83 Linux
/dev/vdb3 3123200 4147199 512000 83 Linux
/dev/vdb4 4147200 20971519 8412160 5 Extended
/dev/vdb5 4149248 4354047 102400 83 Linux
/dev/vdb6 4356096 4560895 102400 82 Linux swap / Solaris ————已经变为swap分区了
Command (m for help): wq ————保存退出
如果设备正在被使用,则会警告:
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
此时需要执行立即读取命令:
partprobe
(2)swap分区设定
mkswap /dev/vdb6 格式化分区
swapon -a /dev/vdb6 启用分区
swapon -s 查看swap分区
永久挂载swap分区
执行命令编辑文件:
vim /etc/fstab
在文末输入:
/dev/vdb6 swap swap defaults 0 0
保存退出即可
(3)swap分区删除
执行命令
vim /etc/fstab
删除最后一行
退出保存
swapoff /dev/vdb6 关闭设备
swapon -s 再次查看swap分区就没有了
6.配额
配额时针对于分区进行配额的。
(1)具体方法如下:
如果将要配额的分区已经被挂载过,要先卸载再挂载
umount /mnt
再进行挂载(临时)
mount -o usrquota /dev/vdb1 /mnt
更改目录权限
chmod 777 /mnt
编辑用户磁盘控制限额
edquota -u student
输入
/dev/vdb 0 0 102400(单次最大分100M) 0 0
(2)永久挂载
vim /etc/fstab
输入
/dev/vdb1 /mnt xfs defaults,usrquota 0 0
(3)测试
dd if=/dev/zero of=/mnt/studentfile bs=1M(每块的大小) count=200(共200块)
由于超过100M不能配额
dd if=/dev/zero of=/mnt/studentfile bs=1B(每块的大小) count=200(共200块)
配额成功
7.磁盘加密
对磁盘加密之后,对磁盘内的内容进行操作时必须要输入密码,否则无法进行操作。
(1)具体方法如下:
执行命令:
cryptsetup luksFormat /dev/vdb3 磁盘加密指令
如果想要对内容进行操作,就要先打开磁盘密码锁
cryptsetup open /dev/vdb3 lee 打开后需要会生成一个虚拟目录(/dev/mapper/lee),因此需要输入名字
mkfs.xfs /dev/mapper/lee 对lee进行格式化(xfs格式)
mount /dev/mapper/lee /mnt/ 将lee挂载(临时)到/mnt/下
此时便可对磁盘进行操作了:
touch /mnt/file{1..10}
操作完成后需要对磁盘进行卸载
umount /mnt/
cryptsetup close lee 关闭磁盘
(2)加密磁盘开机自动挂载
步骤如下:
设置开机自动挂载
vim /etc/fstab
输入
/dev/mapper/lee /mnt xfs defaults 0 0
设置钥匙
vim /etc/crypttab
输入
lee /dev/vdb3 /root/leekey
编辑钥匙
vim leekey
输入密码,如:
westos2019
将钥匙与设备进行对接
cryptsetup luksAddKey /dev/vdb3 /root/leekey