linux系统之存储设备的管理

时间:2022-06-06 11:12:03

存储设备的管理


一.设备的查看

1.发现系统中的设备
  fdisk -l        ##查看真实存在的设备


linux系统之存储设备的管理


  cat /proc/partitions    ##系统能够识别的设备 能否使用不一定


linux系统之存储设备的管理


2.系统发现的,但没有投入使用,随时可以使用

  blkid            ##查看系统能够挂载使用的设备id


linux系统之存储设备的管理

3.发现并且在使用的设备

  df            ##查看设备被系统使用的情况

    -h      ##2的n次方  更精确

linux系统之存储设备的管理


    -H      ##10的n次方

linux系统之存储设备的管理


二.设备的使用

1.设备的挂载
  设备必须要用目录来对设备中的内容进行读取所以设备在使用时需要做挂在动作
mount   设备      挂载点
mount     /dev/sdb1 /mnt   #把系统中第二块硬盘的第一个分区挂载到/mnt目录下
mount -o ro  /dev/sdb1   /mnt  
                        ###以只读方式把系统中第二块硬盘的第一个分区挂载到/mnt目录下
mount -o remount,rw /mnt 或者 /dev/sdb1 
                         ###在设备被使用时更改设备的挂载参数为读写(rw)
2.卸载设备
umout        设备或者挂载点

##注意:卸载设备时如出现以下情况
###########################################################
[root@foundation17 ~]# umount /dev/sdb1 
umount: /home/kiosk/Desktop/photo: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
############################################################
表示设备正在被某个程序使用
解决:
fuser -kvm     设备|挂载点    
                 ##-k kill (进程终止的方式),-v显示详细信息,-m扫描设备
                 ##kill -9 进程id   ##结束进程
lsof /dev/sdb1   ##进程发现的方式

三.设备的识别

##查看设备时出现以下名称时对应代表的意思
/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/*        ##虚拟设备(用软件制作出来的设备)

四.分区管理

 (一)设备分区信息
1.mbr主引导记录446个字节

每个扇区=512 =mbr(446bytes)+mpt(64bytes)+55aa(2bytes)(硬盘的的有效性标示)

2.mpt主分区表64个字节

3.硬盘的有效性标识“55aa”2个字节

4.一个主分区占用16个字节记录分区信息

5.一块硬盘上如果用mbr的分区方式最多可以存在4个主分区

6.主分区:也叫引导分区,最多可能创建4个,当创建四个主分区时候,就无法再创建扩展分区了,当然也就没有逻辑分区了。

主分区是独立的,对应磁盘上的第一个分区,“

一般”就是C盘。在Windows系统把所有的主分区和逻辑分区都叫做“盘”或者“驱动器”,并且把所有的可存储介质都显示为操作系统的“盘”。

因此,从“盘”的概念上无法区分主分区和逻辑分区。并且盘符可以在操作系统中修改,这就是要加上“一般”二字的原因。
7.扩展分区:除了主分区外,剩余的磁盘空间就是扩展分区了,扩展分区是一个概念,实际上是看不到的。
当整个硬盘分为一个主分区的时候,就没有了扩展分区。
8.逻辑分区:在扩展分区上面,可以创建多个逻辑分区。
逻辑分区相当于一块存储截止,和操作系统还有别的逻辑分区、主分区没有什么关系,是“独立的”。

 (二)分区的划分
[root@ssh-server ~]# fdisk -l
#############################################################
Disk /dev/vda: 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: 0x00013f3e
   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    20970332    10484142+  83  Linux
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
################################################################


linux系统之存储设备的管理


####注:由于图文不是同一台主机故分区有些许差异,在此只作操作示例


[root@ssh-server ~]# fdisk /dev/vdb
###############################################################
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): +100M ##分区结束块位置,用+大小的方式指定
Partition 1 of type Linux and of size 100 MiB is set
Command (m for help): wq     ###保存分区策略并退出fdisk界面
###############################################################


linux系统之存储设备的管理


######################################################
Command (m for help): 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   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   ##将当前操作写入硬盘分区表
   x   extra functionality (experts only)
######################################################


###分区划分完之后###
 cat /proc/partitions   ##查看设备是否被系统识别
###########################################
[root@ssh-server ~]# cat /proc/partitions 
major minor  #blocks  name
 253        0   10485760 vda
 253        1   10484142 vda1
 253       16   10485760 vdb
 253       17     102400 vdb2
############################################

 linux系统之存储设备的管理


mkfs.xfs  /dev/vdb2     ##格式化设备,在设备上安装文件系统xfs 也可以是其他的
######################################################################
[root@ssh-server ~]# mkfs.xfs /dev/vdb1
meta-data=/dev/vdb1              isize=256    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
#######################################################################

 

linux系统之存储设备的管理


blkid               ###查看可用设备,可以看到被格式化好的/dev/vdb1
##################################################################
[root@ssh-server ~]# blkid
/dev/vda1: UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" TYPE="xfs" 
/dev/vdb1: UUID="473d0ad8-c020-4d06-a66e-e3fe6cbe97ed" TYPE="xfs" 
##################################################################
 mount /dev/vdb2/ /mnt  ###挂载设备,使设备投入使用

 

linux系统之存储设备的管理


(三)文件系统

Windows最大仅支持128个GPT分区

GPT可管理 硬盘大小达到了18EB

ext3最多支持32tb

ext4最多支持1EB

xfs 支持8EB-1byte


 (四)设备永久挂载

 vim /etc/fstab           ##设备挂载策略文件(此文件写错系统将无法启动)

 文件内容:
设备        挂载点    文件系统类型  挂载参数  是否备份设备  是否检测设备
/dev/vdb2  /wrh       xfs         defaults   0           0
UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /              xfs     defaults        1 1
/dev/vdb2                                 /wrh           xfs     defaults        0 0   


###注意尽量保持对齐
mount -a     ###让fstab中未生效的策略生效


(五)swap分区的管理

#定义:交换分区,系统自己用,不需要挂载

1.swap分区的查看
swapon -s

2.swap分区的建立
(1)划分分区,并修改分区的id为swap
fdisk /dev/vdb2  ###建立分区

############################################################################
          Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     3907583     1952768   83  Linux   
                        ###默认情况下此分区是linux的普通分区
Command (m for help): t    ##修改id
Selected partition 1       ##
Hex code (type L to list all codes): l    ###列出各分区id代码
Hex code (type L to list all codes): 82   ###swap分区是82

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb2            2048     3907583     1952768   82  Linux swap / Solaris

#############################################################################
[root@client ~]# mkswap /dev/vdb2    ###格式化设备为swap文件系统格式 

mkswap: /dev/vdb2: warning: wiping old xfs signature.
Setting up swapspace version 1, size = 102396 KiB
no label, UUID=82f32ac8-fee9-4bed-985b-3405575f7ec6
[root@client ~]# swapon -a /dev/vdb2        ###激活swap设备,使系统利用此设备
[root@client ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/vdb2            partition    102396    0        -1
###当磁盘全部被占用,不能创建新分区,可以用文件来代替分区

[root@client ~]# dd if=/dev/zero of=swapfile bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 13.376 s, 78.4 MB/s
###此文件创建后的步骤和设备的步骤一致,不再赘述

####swap分区的删除
        vim /etc/fstab
        删除fstab里内容  ###此处将fstab里vdb2内容注释掉也是一样的效果

        swapon -s

        swapoff /dev/vdb2
        swapoff /swapfile
        fdisk  /dev/vdb

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

问题1:
[root@client ~]# mount /dev/vdb2 /wrh
mount: unknown filesystem type 'swap'
解决:
[root@client ~]# mkfs.xfs /dev/vdb2 -f
1.激活设备配额参数
mount -o usrquota /dev/vdb2 /wrh/
chmod 777 /wrh/
edquota -u student /dev/vdb2
su - student
dd if=dev/zero of=/wrh/file bs=1M count=201


2.分区方式修改 (修改设备的标签)企业为gpt分区方式mbr分区方式不够
(1).mbr>>>>>>>gpt
为什么要转换 ?
Linux系统中有MBR和GPT两中分区机制,其中MBR的使用比较多,但是有限制。GPT是比MBR更新的一个分区机制 MBR(Master Boot Record)

  主引导记录,是传统的分区机制,应用于绝大多数使用BIOS的PC设备

  MBR支持32位和64位系统。

  MBR支持分区数量有限。

  MBR只支持不超过2T的硬盘,超过2T的硬盘将只能用2T空间(有第三方解决方法)。

  GPT(GUID Partition Table)

  全局唯一标识分区表,是一个较新的分区机制,解决了MBR很多缺点。

  支持超过2T的磁盘(64位寻址空间)。fdisk最大只能建立2TB大小的分区,创建一个大于2TB的分区使用parted。

  向后兼容MBR。

  必须在支持uEFI的硬件上才能使用(Intel提出,用于取代BIOS)。

  必须使用64位系统。

  Mac、Linux系统都能支持GPT分区格式。

  Windows 7/8 64bit、Windows Server 2008 64bit支持GPT。

  以上就是Linux系统MBR和GPT分区的区别,总得来说GPT比MBR更先进,但是MBR的兼容性比GPT要好。

parted /dev/vdb

(parted) mklabel
                                                          
New disk label type?
                                                      
aix    amiga  bsd    dvh    gpt    loop   mac    msdos  pc98   sun    
New disk label type? gpt

Yes/No? y 
                                                                
(parted) quit 



[root@ssh-server ~]# fdisk -l
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: gpt

(2).gpt>>>>>>>mbr
parted /dev/vdb

(parted) mklabel
New disk label type? msdos 
Yes/No? yes                                                               
(parted) quit  

[root@ssh-server ~]# fdisk -l                                    
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


(七)分区加密

LUKS加密

LUKS(Linux Unified Key Setup)为Linux硬盘加密提供了一种标准,它不仅能通用于不同的Linux发行版本,还支持多用户/口令。因为它的加密密钥独立于口令,所以如果口令失密,我们可以迅速改变口令而无需重新加密真个硬盘。通过提供一个标准的磁盘上的格式,它不仅方便之间分布的兼容性,而且还提供了多个用户密码的安全管理。必须首先对加密的卷进行解密,才能挂载其中的文件系统。这个磁盘加密是最底层加密,如果强力去暴力破解,得到的结果就是文件损坏,将得不到自己想要得到的信息。(无法暴力破解)

1.建立分区
#######################################################################
[root@ssh-server ~]# 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 (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-20971519, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +100M
Partition 1 of type Linux and of size 100 MiB is set

Command (m for help): wq
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
#########################################################################

2.加密

 cryptsetup是linux下的一个分区加密工具

cryptsetup是分区级别的,比文件系统级别工作在更底层的位置,是在经过加密的块设备上,再创建文件系统,再挂载使用。


#########################################################################
[root@ssh-server ~]# cryptsetup luksFormat /dev/vdb1  ##将设备luks方式加密

WARNING!
========
This will overwrite data on /dev/vdb1 irrevocably.

Are you sure? (Type uppercase yes): YES   ##此处应是大写
Enter passphrase:                     ##设置密码wrh1996 虽然不足八位但是复杂度满足
Verify passphrase: 


[root@ssh-server ~]# cryptsetup open /dev/vdb1 wrh  ##打开设备的锁,并命名为wrh
Enter passphrase for /dev/vdb1: 

[root@ssh-server ~]# mkfs.xfs /dev/mapper/wrh   ##格式化为xfs文件系统
[root@ssh-server ~]# mount /dev/mapper/wrh /mnt/
[root@ssh-server ~]# touch /mnt/file{1..10}            ####建立文件作为测试
[root@ssh-server ~]# ls /mnt/
file1  file10  file2  file3  file4  file5  file6  file7  file8  file9


###当我们用完我们的加密分区后,就可以卸载它然后再锁住,这样数据就又会保护起来 我们要先卸载我们挂上去的分区,然后再锁住,如果不能锁住,可以尝试下先把挂载目录删了
[root@ssh-server ~]# umount /mnt
[root@ssh-server ~]# cryptsetup close wrh

!!!无法访问/dev/mapper/wrh: 没有那个文件或目录

####如果下次先再用,就重复Open,再挂载就可以了
[root@ssh-server ~]# cryptsetup open /dev/vdb1 wrh
Enter passphrase for /dev/vdb1: 
[root@ssh-server ~]# mount /dev/mapper/wrh /mnt/
[root@ssh-server ~]# 
#########################################################################

示意图:
           |  文件系统   |
         ——————————————————
           |            |
           |  luks加密层 |
          ————————————————
           |             |
           |    设备      |
           |             |
           ———————————————
###加密设备开机自动挂载
#########################################################################
[root@ssh-server ~]# vim /etc/fstab 

###文件/etc/fstab存放的是系统中的文件系统信息。 当正确的设置了该文件,则可以通过mount /directoryname命令来加载一个文件系统, 每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开。 同时fsck、 mount、umount的等命令都利用该程序。
/dev/mapper/wrh     /mnt       xfs    defaults        0 0

[root@ssh-server ~]# vim /etc/crypttab    ##
解密后设备管理文件   设备      加密字符存放文件
wrh   /dev/vdb1    /mnt   xfs    defaults     0   0

[root@ssh-server ~]# vim /root/passfile           ##编辑密码文件
wrh1996

[root@ssh-server ~]# chmod 600 /root/passfile   ##为存放密码的文件加权限

[root@ssh-server ~]# cryptsetup luksAddKey /dev/vdb1 /root/passfile 

                                         ##关联密码文件
Enter any passphrase:       ##原来的密码
#######################################################################
###加密的清除

[root@ssh-server ~]# umount /dev/mapper/wrh
[root@ssh-server ~]# cryptsetup close wrh
[root@ssh-server ~]# mkfs.xfs /dev/vdb1 -f
[root@ssh-server ~]# vim /etc/fstab     ###删除内容
[root@ssh-server ~]# vim /etc/crypttab ###删除内容