##存储设备的管理

来源:互联网 发布:杭州博远软件 编辑:程序博客网 时间:2024/05/18 03:16

1、设备的查看

1)发现系统的设备

fdisk -l   #(使用超户查看)cat  /proc/partitions 

2)系统发现的但是没投入使用随时可以使
用的

 blkid    #查看设备的id信息

3)系统中正在使用的设备

df     df -h    #单位G,以2^n的方式计量 df -H    #单位G,以10^n的方式计量

这里写图片描述

这里写图片描述

2、设备名词的读取

/dev/xd*x=s   /dev/sd* #sata硬盘,或者iscsi网络存储    x=v   /dev/vd* #虚拟硬盘,一般出现在老式虚拟机里x=h   /dev/hd* #ide硬盘,一般出现在老式电脑中*=a~...       /dev/vda  #系统中的第一块虚拟硬盘/dev/sda1 #系统中的第一块sata硬盘的第一个分区/dev/cdrom ,/dev/sr[0-....] #系统中的光驱/dev/mapper/* #系统中的虚拟设备

3、设备的使用

设备必须要用目录来对设备中的内容进行读取,所以设备在使用时需要进行挂载动作

blkid   #查看系统中可用设备

这里写图片描述

挂载:

1)

mount  可用设备  挂载点

这里写图片描述

2)
我们在命令行直接输入mount ,可以看到设备的挂载点、文件系统类型、挂载方式等信息

这里写图片描述

还可以用df查看已挂载的设备

3)
指定挂载方式:

mount -o ro /dev/vdb1 /mnt    # 将/dev/vdb1以只读方式挂载(在挂载之前先卸载设备)

这里写图片描述

mount -o remount,rw /mnt | /dev/vdb1   #在挂载后无需卸载 更改挂载方式

这里写图片描述

【注意】:

我们将设备挂载后在挂载点下做的更改其实是对设备的更改
举个栗子:
我们将/dev/vdb1挂载在/mnt下,然后在mnt下建文件file
这里写图片描述
然后我们将设备卸载,查看mnt下是否有file
这里写图片描述
然后我们将/dev/vdb1挂载在其他目录下,依然可以看到我们建立的file文件
这里写图片描述

卸载:

umount   设备 | 挂载点umount /dev/vdb1 | /mnt

【注意】:

当我们在卸载时出现以下报错时
这里写图片描述

【情况1】:我们系统当前环境在挂载点中,这时我们只要退出当前环境,然后正常卸载就可以了
这里写图片描述

【情况2】:如果不在挂载点环境中,还出现如下情况
这里写图片描述
根据提示,我们可以使用lsof、fuser这两个命令

解法1:
查出占用此设备的进程的id号

lsof /dev/vdb1    fuser -vm /dev/vdb1 

这里写图片描述

结束掉占用设备的进程

 kill -9 id 

这里写图片描述

解法2:
无需查询id,直接结束进程

fuser -km /dev/vdb1

这里写图片描述

4、分区管理

设备分区信息

1、mbr主引导记录446个字节
2、mpt主分区表64个字节
3、硬盘的有效性标识“55aa“2个字节
4、一个主分区占用16个字节记录分区信息
5、一块硬盘上如果用mbr的分区方式最多可以存在4个主分区
6、主分区
7、扩展分区
8、逻辑分区
我们知道硬盘的第一个扇区也就是第0扇区是用来存放主引导记录(MBR)的,因此也称MBR扇区。一个扇区是512字节,因此MBR的大小也是512字节,其具体数据结构:446个字节的引导代码、64个字节的分区表及2个字节的签名值”55AA”。由于MBR的分区表只有64个字节,这决定了它只能存储4个分区记录。这就是为什么一块硬盘最多只能有4个“主分区”的原因。
一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且主分区+扩展分区总共不能超过4个。逻辑分区可以有若干个。扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分。

5、设备划分分区:

1)

fdisk  /dev/vdb

进入fdisk界面后使用m获得帮助

Command action   a   toggle a bootable flag   b   edit bsd disklabel   c   toggle the dos compatibility flag   d  # 删除分区   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   #新建分区   o   create a new empty DOS partition table   p   #显示分区标信息   q   #不保存退出   s   create a new empty Sun disklabel   t   #修改分区id   u   change display/entry units   v   verify the partition table   w   #将当前操作写入硬盘分区标   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   #选择分区idFirst sector (2048-20971519, default 2048):   #分区的起始块,建议用默认Using default value 2048Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +500M    #分区的结束块,一般使用加大小的方式来指定Command (m for help): wq      #保存分区策略并退出fdisk界面

这里写图片描述

这里写图片描述

这时我们使用blkid查看时,并没有发现我们新建的vdb1分区,原因是我们并没有安装文件系统,所以/dev/vdb1分区目前还是一个不能使用的分区
这里写图片描述

2)

格式化设备,在设备上安装xfs文件系统[root@server ~]# mkfs.xfs /dev/vdb1 

这里写图片描述
这时我们使用blkid就可以查看到我们的/dev/vdb1设备了,也就是说我们的/dev/vdb1设备随时都可以被投入使用了
这里写图片描述

6、删除分区

先卸载再删除umount /dev/vdb1fdisk /dev/vdb

7、设备的永久挂载

vim /etc/fstab     #设备挂载策略

这里写图片描述

/dev/vdb1      #设备名                  /mnt           #挂载点     xfs            #文件系统名称       ro            #挂载方式   0             #是否检测设备  0             #是否备份设备在改完配置文件后保存退出,然后重启系统
mount -a   #让策略无需重启立即生效

这里写图片描述

【注意】:

此文件系统在写的在编辑时一定不能出错,若写错,则可能造成我们的系统不能重启

如图:我们将设备名错写成/dev/vd1,然后重启系统
这里写图片描述

在重启过程中会进入这样的界面
这里写图片描述
它会一直在我们的系统中检测vd1这个设备

遇到这种情况解决方法有两个

方法1:

我们只需耐心的等待系统进入这样的界面
这里写图片描述
根据上面的提示我们选择输入root用户的密码,回车后进入命令行界面,在命令行界面输编辑 /etc/fstab ,将我们的策略修改正确后保存退出
这里写图片描述
然后再次重启我们的系统,这时就可以正常启动,然后我们使用df查看挂载设备,发现我们的vdb1已经被正常自动挂载了
这里写图片描述

方法2:

如果我们不想等待,可以参考之前我们提到的重启系统时修改root用户密码的方法
1、在系统重启时使用上下键暂停此界面
这里写图片描述
选择e,按照下图所示方式修改linux16这一行,并使用Ctrl + x执行
这里写图片描述

然后执行一下命令
这里写图片描述
将我们的自动挂载策略修改正确后保存退出
这里写图片描述

然后使用两次exit退出,这时系统就能正常启动了

8、sawp分区的管理

sawp交换分区,系统自己使用,不需要挂载

1、swap分区的查看

[root@server ~]# swapon -sFilename  Type Size  Used  Priority/dev/vdb1  partition 5119960    -1

2、swap分区的建立

1)划分分区,并修改分区为swap

在划分号分区后,使用p命令可以看到我们的分区id为83,类型为Linux的普通分区
这里写图片描述

使用t命令修改分区类型
这里写图片描述

使用l列出所有的类型的id代码,可以看到swap分区的id代码是82
这里写图片描述
修改分区类型为swap
这里写图片描述
使用p命令查看
这里写图片描述
wq保存退出

使用 fdisk -l 查看
这里写图片描述

2)格式化设备为swap文件系统格式

[root@server ~]# mkswap /dev/vdb2

这里写图片描述

【注意】:因为我之前已经将文件系统类型设置为xfs了,所以此时修改分区类型时会有一个warning

我们在作完以上工作后使用swapon -s 查看系统中的swap分区时并没有发现swap分区,那是因为我们没有激活swap设备,所以此时swap设备还是不能被系统使用的

3)激活swap分区,使系统可以使用

[root@server ~]# swapon -a /dev/vdb1

这里写图片描述

4)开机自动激活此设备

[root@server ~]# vim /etc/fstab 

这里写图片描述

这里写图片描述

5)swapon  -a  # /etc/fstab中未生效的策略生效

3、 当我们的磁盘空间全部被占用,不能再分区时,我们可以用文件来代替分区

[root@server ~]# dd if=/dev/zero of=/swapfile bs=1M count=1000

这里写图片描述

这一步完成后,剩下的步骤和设备是一样的

[root@server ~]# mkswap /swapfile Setting up swapspace version 1, size = 1023996 KiBno label, UUID=8cabd18a-e8d8-4726-ab02-9a22f012b414
[root@server ]# swapon -a /swapfileswapon: /swapfile: insecure permissions 0644, 0600 suggested.
[root@server ~]# swapon -sFilename  Type  Size  Used Priority/dev/vdb1 partition 511996  0   -1/swapfile   file    1023996 0   -2

4、swap 分区的删除

我们在删除分区前确定将我们之前激活的设备全关掉

1)删掉我们之前在策略中编辑的内容

[root@server ~]# vim /etc/fstab    

2)关掉我们激活的所有设备

[root@server ~]# swapoff /dev/vdb1[root@server ~]# swapoff /swapfile [root@server ~]# 

3)删掉swap分区

[root@server ~]# fdisk /dev/vdb

4)删掉swapfile文件

[root@server ~]# rm -rf /swapfile

5)查看是否删除成功

[root@server ~]# swapon -s

【注意】:

因为接下来的实验需要,我要重新建立了/dev/vdb这个分区,新建分区文件系统格式默认与删除之前的文件系统格式一致
因为swap分区不能被挂载,所以我们先将swap分区重新格式化成xfs分区,再开始接下来的实验
这里写图片描述

9、磁盘配额

为磁盘使用用户分配额度
分区配额是针对于设备的

1、激活设备配额参数

[root@server ~]# mkdir /wtt[root@server ~]# mount -o usrquota /dev/vdb1 /wtt

2、查看配合参数是否被激活

[root@server ~]# mount | grep /dev/vdb1/dev/vdb1 on /wtt type xfs (rw,relatime,seclabel,attr2,inode64,usrquota)

3、修改挂载点权限,让student用户可以执行写的操作

[root@server ~]# chmod  777 /wtt[root@server ~]# ls -ld /wttdrwxrwxrwx. 2 root root 20 Nov  6 09:57 /wtt

4、修改student对/dev/vdb1的额度

[root@server ~]# edquota -u student /dev/vdb1 edquota: user /dev/vdb1 does not exist.

这里写图片描述
(这里限定studnet用户最大额度为200M)
从左到右依次为

Filesystem       blocks       #已存在文件大小soft         #软额度hard         #最大额度(文件大小)inodes       #文件个数soft         #软额度hard         #最大额度(文件个数)

5、切换到student用户来检测是否限额成功

[student@server ~]$  dd if=/dev/zero of=/wtt/wtt bs=1M count=100100+0 records in100+0 records out104857600 bytes (105 MB) copied, 0.0566515 s, 1.9 GB/s[student@server ~]$ du -sh /wtt/wtt100M    /wtt/wtt[student@server ~]$  dd if=/dev/zero of=/wtt/wtt bs=1M count=200200+0 records in200+0 records out209715200 bytes (210 MB) copied, 0.121462 s, 1.7 GB/s[student@server ~]$ du -sh /wtt/wtt200M    /wtt/wtt[student@server ~]$  dd if=/dev/zero of=/wtt/wtt bs=1M count=201dd: error writing ‘/wtt/wtt’: Disk quota exceeded    #提示超过配额限制201+0 records in200+0 records out209715200 bytes (210 MB) copied, 0.283925 s, 739 MB/s[student@server ~]$ du -sh /wtt/wtt200M    /wtt/wtt

6、开机自动激活配额

[root@server ~]# vim /etc/fstab

这里写图片描述

重启系统,检测配额是否仍然是被激活状态

[root@server ~]# rebootConnection to 172.25.254.244 closed by remote host.Connection to 172.25.254.244 closed.[kiosk@foundation44 Desktop]$ ssh root@172.25.254.244root@172.25.254.244's password: Last login: Mon Nov  6 22:32:05 2017##################OSlevel: rhe17.0DISC:        MYSQLSERVER        FOR        ZHIFUBAO#################[student@server ~]$  dd if=/dev/zero of=/wtt/wtt bs=1M count=200200+0 records in200+0 records out209715200 bytes (210 MB) copied, 0.436391 s, 481 MB/s[student@server ~]$  dd if=/dev/zero of=/wtt/wtt bs=1M count=202dd: error writing ‘/wtt/wtt’: Disk quota exceeded     #这里会有报错201+0 records in200+0 records out209715200 bytes (210 MB) copied, 2.51461 s, 83.4 MB/s

10、分区方式的修改

( mbr <—–>gpt)

1、mbr ———-> gpt

1)查看当前分区方式

[root@server ~]# fdisk -lDisk label type: dos   #mbr分区方式

2)将mbr的分区方式修改成gpt的
这里写图片描述

(parted) mklabel  #修改设备分区方式标签   

双击tabel键列出所有分区方式
这里写图片描述
将原来的dos标签改称gpt格式
这里写图片描述
这里写图片描述

3)查看我们是否修改成功

[root@server ~]# fdisk -lDisk label type: gpt   #当前分区方式为gpt

2、gpt ———>mbr的操作与上述过程类似

[root@server ~]# parted /dev/vdb(parted) mklabelNew disk label type? msdosWarning: The existing disk label on/dev/vdb will be destroyedand all data on this disk will be lost. Do you want to continue?Yes/No? yes(parted) quit Information: You may need to update /etc/fstab.

3、【注意】:

更改分区方式会损坏我们设备上数据,建议先有需要的情况下先备份数据

[root@server ~]# parted /dev/vdbNew disk label type? gptWarning: The existing disk label on/dev/vdb will be destroyed and all data on thisdisk will be lost. Do you want to continue?Yes/No?          

11、分区加密

建立分区加密

1、建立分区【注意】因为我之前的实验都是用/dev/vdb1这个分区做的,在做磁盘分区方式转换时(gpt<->mbr)vdb1分区已经被删掉了,然后在做此次实验之前我新建了/dev/vdb1分区,然后去加密,发现报了一下错误

这里写图片描述

原因很简单,我们之前提到过,在我们将/dev/vdb1删掉后重建/dev/vdb1分区时,新分区的文件系统格式与之前一样
这里写图片描述
也就是说我们对分区加密前以经格式化好了文件系统,所以自然就加密不成功了

2、分区加密[root@server ~]# cryptsetup  luksFormat /dev/vdb2   
3、映射分区[root@server ~]# cryptsetup open /dev/vdb3 wtt    Enter passphrase for /dev/vdb3: 
4、格式化文件系统[root@server ~]# mkfs.xfs /dev/mapper/westos    
5、挂载   [root@server ~]# mount /dev/mapper/westos /mnt     #用映射文件挂载分区[root@server ~]# touch /mnt/file{1..5}[root@server ~]# ls /mntfile1  file2  file3  file4  file5[root@server ~]# umount /mnt[root@server ~]# mount /dev/vdb3 /mnt   #此时不能用分区挂载mount: unknown filesystem type 'crypto_LUKS'   
6、关闭映射(先卸载再关闭)[root@server ~]# umount /mnt[root@server ~]# cryptsetup close westos[root@server ~]# ls /mntmntfile  pts  test
7、关闭映射后不能挂载[root@server ~]# mount /dev/mapper/westos /mntmount: special device /dev/mapper/westos does not exist[root@server ~]# mount /dev/vdb3 /mntmount: unknown filesystem type 'crypto_LUKS'
8、重新映射分区后就可以挂载了[root@server ~]# cryptsetup open /dev/vdb3 wttEnter passphrase for /dev/vdb3: [root@server ~]# mount  /dev/mapper/wtt   /mnt