linux系统运维--磁盘管理
linux系统中的磁盘管理
本地存储设备的识别
fdisk -l ##真实存在的设备
cat /proc/partitions ##系统识别的设备
blkid ##系统可使用的设备
df ##系统正在挂载的设备
设备的挂载和卸载
设备名称
/dev/&d& ##例如sda,sdb,hd0,hd1,sda1,sda2
两个&第一个代表类型(s就是SATA串口硬盘,h就是老式的并口硬盘),第二个代表一个类型里的第几块,数字或者字母都是排序)
/dev/sr0 ##光驱
/dev/mapper/* ##虚拟设备
设备的挂载
mount 设备 挂载点
例子:mount /dev/sdb1 /test ##挂载sdb1到test
挂载之后就可以在指定目录里查看设备的内容了
umount /test(/dev/sdb1) ##卸载
卸载之后就看不到内容了
mont -o ro /dev/sdb1 /mnt ##只读挂载
只读挂载就不能对设备内容进行改变
mount ##查看挂载信息
mount -o remount,rw /dev/sdb1(/mnt) ##重新读写挂载
可以看到本来只读的文件挂载在重新读写挂载后又可以更改文件了
解决设备正忙的情况
有程序正在使用此设备
解决方法1
fuser -kvm /mnt
umount /mnt
解决方法2
lsof /mnt
找到这个正在占用设备的进程,然后干掉他
kill -9 id
umount /mnt
磁盘分区
磁盘的0磁道1扇区512个字节
512B=446(mbr:主引导记录)+64(mpt:主分区标)+2(磁盘的有效性标识:内容为55aa)
磁盘分区标
64B
其中一个分区占用16B,最多可以划分4个主分区
分区步骤
fdisk -l
fdisk /dev/vdb
m(m for help)
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): ##选择id(空白表示默认)
First sector (2048-20971519, default 2048): ##分区起始(空白表示默认)
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +500M ##分区大小
Partition 1 of type Linux and of size 500 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: 0x516c5253
Device Boot Start End Blocks Id System
/dev/vdb1 2048 1026047 512000 83 Linux
Command (m for help): wq ##退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
但系统已经有三个主分区时、
我们的一个硬盘最多支持4个主分区,但是如果我们想要5个甚至更多的分区怎么办,这个时候就需要将最后一个分区的起始目录变成一个容器,来装多出来的分区的起始目录,我们把多出来的分区成为逻辑分区
划分逻辑分区的方法与上面基本一致
[[email protected] ~]# 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.
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e ##3个主分区出现要先划分扩展分区
Partition number (2-4, default 2): 4
First sector (1026048-20971519, default 1026048):
Using default value 1026048
Last sector, +sectors or +size{K,M,G} (1026048-20971519, default 20971519):
Using default value 20971519
Partition 4 of type Extended and of size 9.5 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: 0x516c5253
Device Boot Start End Blocks Id System
/dev/vdb1 2048 1026047 512000 83 Linux
/dev/vdb4 1026048 20971519 9972736 5 Extended ##把所有空间都给E
Command (m for help): wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
给设备安装文件系统(格式化)
ext3 rhel5及之前的版本 最多支持32TB的文件系统和2TB文件 实际上是2TB文件系统,16GB文件
ext4 rhel6 最多支持1EB的文件系统和16TB文件
xfs rhel7 最多支持18EB的文件系统和9TB文件 读取速度最多7GB/s,实际上是4GB/s
mkfs.xfs /dev/vdb1 ##将设备格式化
mount /dev/vdb1 /mnt
这时分区已经可以使用了,但是这个分区在再次开机的时候会消失,如果希望能够永久保存这个分区,就需要在下面这个文件里加上这个新分区的信息
vim /etc/fstab
设备 挂载点 文件系统 挂载参数 是否备份 是否检测
swap分区管理
swap分区建立
划分分区并设定分区标签为82
在wq退出保存的时候会出现如下报错
对于这个报错,我们只需要在系统提示的三种方法中随便执行一个就行
同样,想要永久保存,需要更改下面这个文件
vim /etc/fstab
/dev/vdb6 swap swap defaults 0 0
配额
配额是针对与设备的,是限制某一个用户在某一个设备上所能存储的文件大小(数量)
首先我们要将挂载的设备**配额功能
然后给挂载的目录加一个1777权限
这之后使用mount命令可以看到设备状态最后有一个usrquota
然后使用命令edquota -u student /dev/vdb1
这样就打开了配额的配置命令
从左至右分别是
filesystem(在哪个设备) blocks(该设备上用户已经有的文件大小,客观事实) soft(软限,文件大小超过时警告) hard(硬限,文件大小不能超过) inodes(该设备上用户已经有的文件数量,客观事实) soft(软限,文件数量超过时警告) hard(硬限,文件数量不能超过)
更改后保存退出,限额就设定好了
测试:我们截取一些数据放到这个文件中(bs是单位大小,count是单位数量)
可以看到并无报错,我们在来看看这个文件的大小
可以看到是我们当时设定的硬限大小,说明不能超过这个硬限
磁盘加密
但我们需要让自己的设备更多一些隐私性的话,我们可以给设备加上一个锁(注意加密时会清空磁盘里原来的文件)
cryptsetup luksFormat /dev/vdb1(注意:要先把设备卸载)
cryptsetup open /dev/vdb1 &&& #将设备的锁打开,设备内容解密后放在&&&文件夹
mkfs.xfs /dev/mapper/westos #格式化(因为没有管理文件,第一次上锁后需要格式化来产生设备管理文件)
mount /dev/mapper/westos /mnt/ #挂载设备
touch /mnt/file{1…10} #执行一些命令,产生一些文件
umount /mnt/ #卸载
cryptsetup close westos #将锁锁上
这样我们的锁就设定好了,下次再次使用这个设备的时候,只需要开锁,挂载就能使用了(使用完之后要卸载,关锁)
cryptsetup open /dev/vdb1 westos
mount/dev/mapper/westos /mnt/
加密磁盘开机挂载
我们如果将磁盘加密,因为在挂载时需要输入密码,在开机时,电脑挂载设备时无法挂载出现报错
vim /etc/fstab
/dev/mapper/westos /mnt xfs defaults 0 0 #我们先将设备设置成开机挂载
vim /etc/crypttab #然后编辑这个文件,内容如下
westos /dev/vdb1 /root/westoskey(文件的名字根据需要更改)
vim /root/westoskey #然后在这个文件中写下密码
密码
最后执行这个命令,就成功了
cryptsetup luksAddKey /dev/vdb1 /root/westoskey
这样在系统启动时就会自动加载密码来解锁并挂载这个加密设备