七.Linux存储管理

2019-09-04 15:40:27 浏览数 (1)

一.存储基础知识

从工作原理区分:

  • 机械 HDD
  • 固态 SSD

SSD的优势:

代码语言:javascript复制
    SSD是摒弃传统磁介质,采用电子存储介质进行数据存储和读取的一种技术,突破了传统机械硬盘的性能瓶颈,拥有极高的存储性能,被认为是存储
    技术发展的未来新星。固态硬盘的全集成电路化、无任何机械运动部件的革命性设计,从根本上解决了在移动办公环境下,对于数据读写稳定性的需
    求。全集成电路化设计可以让固态硬盘做成任何形状。与传统硬盘相比,SSD固态电子盘具有以下优点:
    第一,SSD不需要机械结构,完全的半导体化,不存在数据查找时间、延迟时间和磁盘寻道时间,数据存取速度快。
    第二,SSD全部采用闪存芯片,经久耐用,防震抗摔,即使发生与硬物碰撞,数据丢失的可能性也能够降到最小。
    第三,得益于无机械部件及FLASH闪存芯片,SSD没有任何噪音,功耗低。
    第四,质量轻,比常规1.8英寸硬盘重量轻20-30克,使得便携设备搭载多块SSD成为可能。同时因其完全半导体化,无结构限制,可根据实际情况  
    设计成各种不同接口、形状的特殊电子硬盘。

从磁盘尺寸区分:

3.5 2.5 1.8

从插拔方式区分:

  • 热插拔
  • 非热插拔

从硬盘主要接口区分:

  • IDE —— SATA I/II/II 个人计算机
  • SCSI —— SAS 服务器
  • FC
  • PCIE

从存储连接方式区分:

  • 本地存储:例如DellR730本地磁盘
  • 外部存储:scsi线、stat线、sas线、FC线
  • 网络存储:以太网络、FC网络

从kernel对不同接口硬盘命名方式:

代码语言:javascript复制
OS      IDE(并口)     SATA(串口)              SCSI          
RHEL5        /dev/hda           /dev/sda                /dev/sda        
RHEL6        /dev/sda           /dev/sda                /dev/sda
RHEL7        /dev/sda           /dev/sda                /dev/sda
KVM          /dev/vda(半虚拟化驱动)
           /dev/sda(全虚拟化驱动)

从分区方式区分:

代码语言:javascript复制
存储大小            分区软件        分区表
2TB以下的硬盘        fdisk/parted/   MSDOS(MBR) 
2TB以上的硬盘        parted      GPT
注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!

MSDOS(MBR)分区的限制:

主引导分区(Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区。

MBR(512字节)=446字节(存放grub指针) 64字节(分区表) 2字节(校验位)

主分区,扩展分区,逻辑分区

只支持4个主分区,总分区数不能超过15个

只支持2TB以下的硬盘

GPT的限制:

没有限制

HP服务器硬盘:

代码语言:javascript复制
/dev/cciss/c0d0
/dev/cciss/c0d0p1   //c0第一个控制器, d0第一块磁盘, p1分区1
/dev/cciss/c0d0p2   //c0第一个控制器, d0第一块磁盘, p2分区2

文件系统与数据资料:

Ext3:文件系统最大16TB,单个文件最大2TB

Ext4:文件系统最大16TB,单个文件最大16TB

XFS:

代码语言:javascript复制
Ext3:是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。  然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘  的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。

Ext4:Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1,073,741,824GB),  且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block块,从而极大地提高了读写效率。

XFS:是一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,  即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。并且它最大可支持的存  储容量为18EB,这几乎满足了所有需求。

二.磁盘分区

2.1 磁盘管理相关命令

2.1.1 fdisk 分区工具

fdisk是一个创建和维护分区表的程序,它兼容DOS类型的分区表、BSD或者SUN类型的磁盘列表。

  • 语法: fdisk [必要参数][选择参数]
  • 必要参数: -l 列出素所有分区表 -u 与"-l"搭配使用,显示分区数目
  • 选择参数: -s<分区编号> 指定分区 -v 版本信息
  • 菜单操作说明: a toggle a bootable flag --设置启动分区 b edit bsd disklabel --编辑分区标签 d delete a partition --删除一个分区 l list known partition types --列出分区类型 m print this menu --帮助 n add a new partition --建立一个新的分区 o create a new empty DOS partition table --创建一个新的空白DOS分区表 p print the partition table --打印分区表 q quit without saving changes --退出不保存设置 t changea partition's system id --改变分区的类型 u changedisplay/entry units --改变显示的单位 v verifythe partition table --检查验证分区表 w write table to disk and exit --保存分区表
  • 示例 显示当前分区情况:
代码语言:javascript复制
# fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot   Start     End   Blocks  Id System
/dev/sda1  *      1     13   104391  83 Linux
/dev/sda2       14    1305  10377990  8e Linux LVM

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

显示SCSI硬盘的每个分区情况:

代码语言:javascript复制
# fdisk -lu  

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes

  Device Boot   Start     End   Blocks  Id System
/dev/sda1  *     63   208844   104391  83 Linux
/dev/sda2     208845  20964824  10377990  8e Linux LVM

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders, total 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes

2.1.2 lsblk 查看块设备

lsblk用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,cd-ROM等等。

  • 选项: -a, --all 显示所有设备。 -b, --bytes 以bytes方式显示设备大小。 -d, --nodeps 不显示 slaves 或 holders。 -D, --discard print discard capabilities。 -e, --exclude <list> 排除设备 (default: RAM disks)。 -f, --fs 显示文件系统信息。 -h, --help 显示帮助信息。 -i, --ascii use ascii characters only。 -m, --perms 显示权限信息。 -l, --list 使用列表格式显示。 -n, --noheadings 不显示标题。 -o, --output <list> 输出列。 -P, --pairs 使用key="value"格式显示。 -r, --raw 使用原始格式显示。 -t, --topology 显示拓扑结构信息。
  • 示例 [root@centos7-1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 252:0 0 10G 0 disk ├─vda1 252:1 0 500M 0 part /boot └─vda2 252:2 0 9.5G 0 part ├─cl-root 253:0 0 9G 0 lvm / └─cl-swap 253:1 0 500M 0 lvm [SWAP] NAME:这是块设备名。 MAJ:MIN:本栏显示主要和次要设备号。 RM:本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。 SIZE:本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。 RO:该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。 TYPE:本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。 MOUNTPOINT:本栏指出设备挂载的挂载点。

2.1.3 partprobe 刷新授权表

partprobe命令用于重读分区表,当出现删除文件后,出现仍然占用空间。可以partprobe在不重启的情况下重读分区。

  • 选项: -d:不更新内核; -s:显示摘要和分区; -h:显示帮助信息; -v:显示版本信息。
  • 示例: ```shell 1、添加新的磁盘分区 [root@localhost ~]# fdisk /dev/sda The number of cylinders for this disk is set to 38770. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of lilo) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)

command (m for help): p

Disk /dev/sda: 318.9 GB, 318901321728 bytes 255 heads, 63 sectors/track, 38770 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks id System /dev/sda1 * 1 3824 30716248 83 Linux /dev/sda2 3825 7648 30716280 83 Linux /dev/sda3 7649 8668 8193150 82 Linux swap / Solaris

Command (m for help): n Command action e extended p primary partition (1-4) p Selected partition 4 First cylinder (8669-38770, default 8669): Using default value 8669 last cylinder or size or sizeM or sizeK (8669-38770, default 38770): 100G Command (m for help): w The partition table has been altered!

Calling ioctl() to re-read partition table.

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. Syncing disks.

2、 使用工具partprobe让kernel读取分区信息 [root@localhost ~]# partprobe 使用fdisk工具只是将分区信息写到磁盘,如果需要mkfs磁盘分区则需要重启系统,而使用partprobe则可以使kernel重新读取分区信息,从而避免重启系统。

3、格式化文件系统 [root@localhost ~]# mkfs.ext3 /dev/sda4 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 12222464 inodes, 24416791 blocks 1220839 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 746 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632,     2654208, 4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information:

done

This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@localhost ~]#

4、 mount新的分区/dev/sda4 [root@localhost ~]# e2label /dev/sda4 /data [root@localhost ~]# mkdir /data [root@localhost ~]# mount /dev/sda4 /data [root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 29753556 3810844 24406900 14% / /dev/sda2 29753588 11304616 16913160 41% /oracle tmpfs 2023936 0 2023936 0% /dev/shm /dev/sda4 96132968 192312 91057300 1% /data ```

2.1.4 blkid 查看设备UUID

在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。要使用这个命令必须安装e2fsprogs软件包。

  • 示例: # blkid /dev/sda3 /dev/sda3: UUID="3bca1b81-1339-4345-9df4-9c25ec00a60b" TYPE="swap"

2.2 磁盘分区示例

分区步骤:

  • 1、需要有一块硬盘
  • 2、使用分区工具对硬盘进行分区(fdisk)
  • 3、格式化分区
  • 4、挂载使用
  1. 进入分区表 新建分区
  2. 更新分区表(刷新分区表)
  3. 格式化
  4. 挂载

第1步:我们首先使用fdisk命令来尝试管理/dev/vdb硬盘设备。在看到提示信息后输入参数p来查看硬盘设备内已有的分区信息,其中包括了硬盘的容量大小、扇区个数等信息:

代码语言:javascript复制
[root@centos7-1 ~]# fdisk /dev/vdb 
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xf24ceedc 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):p

磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xf24ceedc

   设备 Boot      Start         End      Blocks   Id  System

命令(输入 m 获取帮助):

第2步:输入参数n尝试添加新的分区。系统会要求您是选择继续输入参数p来创建主分区,还是输入参数e来创建扩展分区。这里输入参数p来创建一个主分区:

代码语言:javascript复制
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p

第3步:在确认创建一个主分区后,系统要求您先输入主分区的编号。我们在前文得知,主分区的编号范围是1~4,因此这里输入默认的1就可以了。接下来系统会提示定义起始的扇区位置,这不需要改动,我们敲击回车键保留默认设置即可,系统会自动计算出最靠前的空闲扇区的位置。最后,系统会要求定义分区的结束扇区位置,这其实就是要去定义整个分区的大小是多少。我们不用去计算扇区的个数,只需要输入 2G即可创建出一个容量为2GB的硬盘分区。

代码语言:javascript复制
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):此处敲击回车
将使用默认值 2048
Last 扇区,  扇区 or  size{K,M,G} (2048-41943039,默认为 41943039): 2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB

第4步:再次使用参数p来查看硬盘设备中的分区信息。果然就能看到一个名称为/dev/vdb1、起始扇区位置为2048、结束扇区位置为4196351的主分区了。这时候千万不要直接关闭窗口,而应该敲击参数w后回车,这样分区信息才是真正的写入成功啦。

代码语言:javascript复制
命令(输入 m 获取帮助):p

磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xf24ceedc

   设备 Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     4196351     2097152   83  Linux

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

第5步:在上述步骤执行完毕之后,Linux系统会自动把这个硬盘主分区抽象成/dev/vdb1设备文件。我们可以使用file命令查看该文件的属性,有些时候系统并没有自动把分区信息同步给Linux内核,而且这种情况似乎还比较常见(但不能算作是严重的bug)。我们可以输入partprobe命令手动将分区信息同步到内核,而且一般推荐连续两次执行该命令,效果会更好。如果使用这个命令都无法解决问题,那么就重启计算机吧,这个杀手锏百试百灵,一定会有用的。

代码语言:javascript复制
[root@centos7-1 ~]# partprobe
[root@centos7-1 ~]# partprobe
[root@centos7-1 ~]# file /dev/vdb1 
/dev/vdb1: block special

第6步:格式化,如果硬件存储设备没有进行格式化,则Linux系统无法得知怎么在其上写入数据。因此,在对存储设备进行分区后还需要进行格式化操作。在Linux系统中用于格式化操作的命令是mkfs。这条命令很有意思,因为在Shell终端中输入mkfs名后再敲击两下用于补齐命令的Tab键,会有如下所示的效果

代码语言:javascript复制
[root@centos7-1 ~]# mkfs
mkfs         mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs     
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat 

对!这个mkfs命令很贴心地把常用的文件系统名称用后缀的方式保存成了多个命令文件,用起来也非常简单—mkfs.文件类型名称。例如要格式分区为XFS的文件系统,则命令应为mkfs.xfs /dev/sdb1。

代码语言:javascript复制
[root@centos7-1 ~]# mkfs.xfs /dev/vdb1 
meta-data=/dev/vdb1              isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

第7步:挂载,完成了存储设备的分区和格式化操作,接下来就是要来挂载并使用存储设备了。与之相关的步骤也非常简单:首先是创建一个用于挂载设备的挂载点目录;然后使用mount命令将存储设备与挂载点进行关联;最后使用df -h命令来查看挂载状态和硬盘使用量信息。

代码语言:javascript复制
[root@centos7-1 ~]# mkdir /newFS
[root@centos7-1 ~]# mount /dev/vdb1 /newFS/
[root@centos7-1 ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
/dev/mapper/cl-root  9.1G  3.7G  5.4G   41% /
devtmpfs             481M     0  481M    0% /dev
tmpfs                497M  124K  497M    1% /dev/shm
tmpfs                497M   14M  484M    3% /run
tmpfs                497M     0  497M    0% /sys/fs/cgroup
/dev/vda1            497M  166M  332M   34% /boot
tmpfs                100M  8.0K  100M    1% /run/user/42
tmpfs                100M   16K  100M    1% /run/user/0
/dev/vdb1            2.0G   33M  2.0G    2% /newFS[![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0);

开机自动挂载,通过UUID挂载,blkid 查看设备的UUID

代码语言:javascript复制
[root@centos7-1 ~]# blkid /dev/vdb1 
/dev/vdb1: UUID="a9c72628-f6b1-4feb-bdfb-9fa456d119bb" TYPE="xfs"
[root@centos7-1 ~]# vim /etc/fstab
UUID=a9c72628-f6b1-4feb-bdfb-9fa456d119bb  /newFS         xfs     defaults        0 0

三.磁盘挂载与卸载

  • 单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
  • 单一目录不应该重复挂载多个文件系统;
  • 要作为挂载点的目录,理论上应该都是空目录才是。

如果你要用来挂载的目录里面并不是空的,那么挂载了文件系统之后,原目录下的东西就会暂时的消失。 举个例子来说,假设你的 /home 原本与根目录 (/) 在同一个文件系统中,底下原本就有 /home/test 与 /home/vbird 两个目录。然后你想要加入新的硬盘,并且直接挂载 /home 底下,那么当你挂载上新的分割槽时,则 /home 目录显示的是新分割槽内的数据,至于原先的 test 与 vbird 这两个目录就会暂时的被隐藏掉了!注意:并不是被覆盖掉, 而是暂时的隐藏了起来,等到新分割槽被卸除之后,则 /home 原本的内容就会再次的跑出来啦!

  • 格式: mount [-t 文件系统] [-o 额外选项] 装置文件名 挂载点
  • 参数: 选项与参数: -a :依照配置文件 /etc/fstab 的数据将所有未挂载的磁盘都挂载上来 -l :单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名称! -t :与 mkfs 的选项非常类似的,可以加上文件系统种类来指定欲挂载的类型。 常见的 Linux 支持类型有:ext2, ext3, vfat, reiserfs, iso9660(光盘格式), nfs, cifs, smbfs(此三种为网络文件系统类型) -n :在默认的情况下,系统会将实际挂载的情况实时写入 /etc/mtab 中,以利其他程序 的运行。但在某些情况下(例如单人维护模式)为了避免问题,会刻意不写入。 此时就得要使用这个 -n 的选项了。 -L :系统除了利用装置文件名 (例如 /dev/hdc6) 之外,还可以利用文件系统的标头名称 (Label)来进行挂载。最好为你的文件系统取一个独一无二的名称吧! -o :后面可以接一些挂载时额外加上的参数!比方说账号、密码、读写权限等: rw 读写 ro 只读 suid 支持suid dev 支持设备文件 nodev 不支持设备文件 noexec 不允许执行二进制文件 exec 允许执行二进制文件 auto mount -a 开机自动挂载 noauto mount -a 开机不自动挂载 async 异步写入 sync 同步同入 noatime 不更新访问时间atime usrquota 支持用户级磁盘配额功能 grpquota 支持组级磁盘配额功能 acl 支持acl功能 remount 在线重新挂载 pri 指定优先级
  • 示例 mount -t ext4 -o acl /dev/sdb1 /mnt/disk1 文件系统类型:ext4,xfs,nfs,cifs,iso9660,loop

3.1 挂载IOS文件

代码语言:javascript复制
[root@centos7-1 ~]# mount -o loop /data/CentOS-7.3-x86_64-DVD-1611.iso /ios/
[root@centos7-1 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root  202G   34G  169G   17% /
devtmpfs                 1.7G     0  1.7G    0% /dev
tmpfs                    1.8G   12M  1.7G    1% /dev/shm
tmpfs                    1.8G   26M  1.7G    2% /run
tmpfs                    1.8G     0  1.8G    0% /sys/fs/cgroup
/dev/sda1                794M  179M  616M   23% /boot
/dev/mapper/centos-opt   200G   85M  200G    1% /opt
/dev/mapper/centos-home   51G   37M   51G    1% /home
tmpfs                    349M   36K  349M    1% /run/user/0
/dev/loop0               4.1G  4.1G     0  100% /ios

3.2 开机自动挂载

/etc/fstab

格式说明:

代码语言:javascript复制
要挂载的资源路径    挂载点    资源类型    挂载选项    dump备份支持  文件系统检测
/dev/vda1           /      ext4      defaults        1            1
1段:挂载的设备(磁盘设备的文件名或设备的卷标或者是设备的UUID)
2段:挂载点(建议用一个空目录)
3段:文件系统类型(ext3、ext4、vfat、ntfs、swap等等)
4段:文件系统选项(fs mntops)在装载文件系统时使用的装载选项
5段:是否支持dump备份。0代表不要做dump备份,1代表要每天进行dump的动作,2也代表其他不定日期的dump备份。数字越小优先级越高。
6段:是否用 fsck 检验扇区。#开机的过程中,系统默认会用fsck检验文件系统是否完整。0是不要检验,1表示最先检验(一般只有根目录会设定为1)
代码语言:javascript复制
[root@centos7-1 ~]# cat /etc/fstab 
...
需要挂载的设备            挂载点                  文件类型 
/dev/mapper/cl-root     /                        xfs       defaults        0 0
/dev/mapper/cl-swap     swap                     swap      defaults        0 0
  • 示例: [root@centos7-1 ~]# blkid /dev/vdb1 /dev/vdb1: UUID="a9c72628-f6b1-4feb-bdfb-9fa456d119bb" TYPE="xfs" [root@centos7-1 ~]# vim /etc/fstab UUID=a9c72628-f6b1-4feb-bdfb-9fa456d119bb /newFS xfs defaults 0 0

3.3 Automount 自动挂载

3.3.1 本地挂载

  • 挂载是由访问产生的:设置开机不一定要挂载的目录,当用的时候才实现自动挂载。
  • 卸载是由超时产生的:用户不使用自动挂载的目录一段的时间,会自动卸载。(默认时间为5分钟)

autofs ----自动挂载的软件

代码语言:javascript复制
[root@centos7-1 ~]# rpm -q autofs 
autofs-5.0.7-56.el7.x86_64

配置文件:

代码语言:javascript复制
/etc/auto.master        主配置文件
/etc/auto.misc          子配置文件/etc/sysconfig/autofs   额外配置文件
/usr/sbin/automount     二进制命令

示例:

通过autofs 自动挂载本地设备 /dev/vdb1 到 /fs 目录

第1步:修改主配置文件,定义一级挂载点以及子配置文件, --timeout=20 设置超时时间为20秒。20秒如果没有访问,自动卸载

代码语言:javascript复制
[root@centos7-1 ~]# vim /etc/auto.master
/-      /etc/auto.fs     --timeout=20

第2步:创建子配置文件,并定义二级挂载点

代码语言:javascript复制
[root@centos7-1 ~]# vim /etc/auto.fs
/fs    -fstype=xfs,rw :/dev/vdb1

一级二级挂载点说明:将/dev/vda1 挂载到/u01/vd1目录下,那么一级挂载点就是/dev、二级挂载点就是vd1 如果单独只有一级目录,那么auto.master里面写/-

第3步:启动服务并查看状态

代码语言:javascript复制
[root@centos7-1 ~]# systemctl start autofs
[root@centos7-1 ~]# systemctl status autofs

第4步:测试验证

代码语言:javascript复制
[root@centos7-1 ~]# df -h                // 可以查看到没有进行使用,虽然启动了服务,但是还是没有挂载
文件系统             容量  已用  可用 已用% 挂载点
/dev/mapper/cl-root  9.1G  3.7G  5.4G   41% /
devtmpfs             481M     0  481M    0% /dev
tmpfs                497M  124K  497M    1% /dev/shm
tmpfs                497M   14M  484M    3% /run
tmpfs                497M     0  497M    0% /sys/fs/cgroup
/dev/vda1            497M  166M  332M   34% /boot
tmpfs                100M  8.0K  100M    1% /run/user/42
tmpfs                100M   16K  100M    1% /run/user/0

[root@centos7-1 ~]# cd /fs/                // 一旦挂载点进行了使用,再次查看,就自动挂载上了
[root@centos7-1 fs]# ls
[root@centos7-1 fs]# df -h
文件系统             容量  已用  可用 已用% 挂载点
/dev/mapper/cl-root  9.1G  3.7G  5.4G   41% /
devtmpfs             481M     0  481M    0% /dev
tmpfs                497M  124K  497M    1% /dev/shm
tmpfs                497M   14M  484M    3% /run
tmpfs                497M     0  497M    0% /sys/fs/cgroup
/dev/vda1            497M  166M  332M   34% /boot
tmpfs                100M  8.0K  100M    1% /run/user/42
tmpfs                100M   16K  100M    1% /run/user/0
/dev/vdb1            2.0G   33M  2.0G    2% /fs

[root@centos7-1 ~]# date                 // 测试超时是否自动卸载
2018年 11月 09日 星期五 16:21:19 CST
[root@centos7-1 ~]# date 
2018年 11月 09日 星期五 16:21:51 CST
[root@centos7-1 ~]# df -h                // 时间超过了20秒后查看,已自动卸载
文件系统             容量  已用  可用 已用% 挂载点
/dev/mapper/cl-root  9.1G  3.7G  5.4G   41% /
devtmpfs             481M     0  481M    0% /dev
tmpfs                497M  124K  497M    1% /dev/shm
tmpfs                497M   14M  484M    3% /run
tmpfs                497M     0  497M    0% /sys/fs/cgroup
/dev/vda1            497M  166M  332M   34% /boot
tmpfs                100M  8.0K  100M    1% /run/user/42
tmpfs                100M   16K  100M    1% /run/user/0

3.3.2 远程挂载 NFS

要求:将NFS服务器上的/home/dir1和/home/dir2目录分别挂载 到 挂载服务器的/nfs-server/dir1和/nfs-server/dir2上

NFS服务器:192.168.122.228 简单准备共享目录

代码语言:javascript复制
[root@centos7-2 ~]# mkdir /home/dir{1,2}    
[root@centos7-2 ~]# vim /etc/exports
/home/dir1      *(rw,sync,no_root_squash)
/home/dir2      *(rw,sync,no_root_squash)
[root@centos7-2 ~]# systemctl restart nfs-server.service  
[root@centos7-2 ~]# systemctl status  nfs-server.service

挂载服务器:192.168.122.205

第1步:查看nfs服务器共享的目录

代码语言:javascript复制
[root@centos7-1 ~]# showmount -e 192.168.122.228
Export list for 192.168.122.228:
/home/dir2 *
/home/dir1 *

手动挂载示例:

代码语言:javascript复制
[root@centos7-1 ~]# mount -t nfs 192.168.122.228:/home/dir1 /nfs-server/dir1
[root@centos7-1 ~]# mount -t nfs 192.168.122.228:/home/dir2 /nfs-server/dir2
[root@centos7-1 ~]# df -h
文件系统                    容量  已用  可用 已用% 挂载点
/dev/mapper/cl-root         9.1G  3.7G  5.4G   41% /
devtmpfs                    481M     0  481M    0% /dev
tmpfs                       497M  124K  497M    1% /dev/shm
tmpfs                       497M   14M  484M    3% /run
tmpfs                       497M     0  497M    0% /sys/fs/cgroup
/dev/vda1                   497M  166M  332M   34% /boot
tmpfs                       100M  8.0K  100M    1% /run/user/42
tmpfs                       100M   16K  100M    1% /run/user/0
192.168.122.228:/home/dir1  9.1G  3.7G  5.4G   41% /nfs-server/dir1
192.168.122.228:/home/dir2  9.1G  3.7G  5.4G   41% /nfs-server/dir2

开机自动挂载示例:

代码语言:javascript复制
[root@centos7-1 ~]# vim /etc/fstab
192.168.122.228:/home/dir1    /nfs-server/dir1    xfs        defaults        0 0
192.168.122.228:/home/dir2    /nfs-server/dir2    xfs        defaults        0 0
优点:可以实现开机自动挂载
缺点:由于网络连接的不稳定性,会导致网络设备挂载失败
结论:适合挂载本地设备和持续使用的设备

第2步:修改主配置文件;定义一级挂载点以及子配置文件

代码语言:javascript复制
[root@centos7-1 ~]# vim /etc/auto.master
/-     /etc/auto.nfs   --timeout=60

第3步:创建子配置文件

代码语言:javascript复制
[root@centos7-1 ~]# vim /etc/auto.nfs
/dir1    rw  192.168.122.228:/home/dir1
/dir2    rw  192.168.122.228:/home/dir2

第4步:启动服务

代码语言:javascript复制
[root@centos7-1 ~]# systemctl start autofs 
[root@centos7-1 ~]# systemctl status autofs

第5步:测试验证

代码语言:javascript复制
[root@centos7-1 ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
/dev/mapper/cl-root  9.1G  3.7G  5.4G   41% /
devtmpfs             481M     0  481M    0% /dev
tmpfs                497M  124K  497M    1% /dev/shm
tmpfs                497M   14M  484M    3% /run
tmpfs                497M     0  497M    0% /sys/fs/cgroup
/dev/vda1            497M  166M  332M   34% /boot
tmpfs                100M  8.0K  100M    1% /run/user/42
tmpfs                100M   16K  100M    1% /run/user/0

[root@centos7-1 ~]# cd /dir1
[root@centos7-1 dir1]# df -h
文件系统                    容量  已用  可用 已用% 挂载点
/dev/mapper/cl-root         9.1G  3.7G  5.4G   41% /
devtmpfs                    481M     0  481M    0% /dev
tmpfs                       497M  124K  497M    1% /dev/shm
tmpfs                       497M   14M  484M    3% /run
tmpfs                       497M     0  497M    0% /sys/fs/cgroup
/dev/vda1                   497M  166M  332M   34% /boot
tmpfs                       100M  8.0K  100M    1% /run/user/42
tmpfs                       100M   16K  100M    1% /run/user/0
192.168.122.228:/home/dir1  9.1G  3.7G  5.4G   41% /dir1

[root@centos7-1 dir1]# cd /dir2
[root@centos7-1 dir2]# df -h
文件系统                    容量  已用  可用 已用% 挂载点
/dev/mapper/cl-root         9.1G  3.7G  5.4G   41% /
devtmpfs                    481M     0  481M    0% /dev
tmpfs                       497M  124K  497M    1% /dev/shm
tmpfs                       497M   14M  484M    3% /run
tmpfs                       497M     0  497M    0% /sys/fs/cgroup
/dev/vda1                   497M  166M  332M   34% /boot
tmpfs                       100M  8.0K  100M    1% /run/user/42
tmpfs                       100M   16K  100M    1% /run/user/0
192.168.122.228:/home/dir2  9.1G  3.7G  5.4G   41% /dir2

声明:本文为原创,作者为 伍, 国飞,转载时请保留本声明及附带文章链接:http://www.duiyi.xyz/linux存储管理/

0 人点赞