本篇介绍在Ubuntu系统(虚拟机)上进行存储的基本操作和设置。

一、添加和扩容分区

1. 基础知识

硬盘一般分为IDE硬盘、SCSI硬盘和SATA硬盘三种,在Linux系统中,IDE接口的硬盘被称为hd,SCSI和SATA接口的硬盘则被称为sd,其中IDE硬盘基本上已经淘汰,现在市面上最常见的就是SATA接口的硬盘,第1块硬盘称为sda,第2块硬盘称为sdb……,依此类推。
一块硬盘最多有4个主分区,主分区以外的分区称为扩展分区,硬盘可以没有扩展分区,但是一定要有主分区,在主分区中要有一个激活分区用来启动Windows系统,在扩展分区中可以建立若干个逻辑分区,因此,最合理的分区方式应该最多分三个主分区,一个扩展分区,这样可以有效地利用有限的主分区,然后在扩展分区中建立逻辑分区。
在Linux系统中每一个硬盘总共最多有16个分区,硬盘上的4个主分区,分别标识为sdal、sda2、sda3和sda4,逻辑分区则从sda5开始标识一直到sda16。

2. 区分LVM的几个概念:

LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。
物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda、/dev/sda等等,是存储系统最低层的存储单元。
物理卷(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
PE(physical extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
LE(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
其中,物理卷(PV)被由大小等同的基本单元PE组成。一个卷组由一个或多个物理卷组成,PE和LE有着一一对应的关系。逻辑卷建立在卷组上。逻辑卷就相当于非LVM系统的磁盘分区,可以在其上创建文件系统。

3. 创建分区:添加硬盘–创建分区–格式化分区–挂载

(1)添加硬盘
在虚拟机的设置中添加一块硬盘,选择SCSI或者SATA接口。

(2)新建分区

# 查看硬盘分区(物理分区)
yang@Ubuntu:~$ ls /dev/sd*
# 应该有一个/dev/sdb的硬盘,该硬盘未分区,未格式化,也未加入逻辑卷和逻辑卷组。

# 查看硬盘大小
yang@Ubuntu:~$ fdisk -l /dev/sdb

# 新建硬盘分区
yang@Ubuntu:~$ fdisk /dev/sdb
依此执行:
n: 生成新分区
g: 生成新的分区表
w: 将表写入磁盘并退出

# 再次查看分区(物理分区)
yang@Ubuntu:~$ ls /dev/sd*

# 创建Physical Volumn并查看
yang@Ubuntu:~$ pvcreate /dev/sdb1
yang@Ubuntu:~$ pvdisplay

# 创建名为data的卷组(Volumn Group)并查看
yang@Ubuntu:~$ vgcreate data /dev/sdb1
yang@Ubuntu:~$ vgdisplay

# 创建Logical Volumn并查看
yang@Ubuntu:~$ lvcreate -l 5119 data -n data1
yang@Ubuntu:~$ lvdisplay

(3)格式化分区

# 格式化
yang@Ubuntu:~$ mkfs.xfs /dev/mapper/data-data1

(4)挂载

# 创建文件夹并将新建的逻辑卷挂载
yang@Ubuntu:~$ mkdir /data
yang@Ubuntu:~$ mount /dev/mapper/data-data1 /data

# 查看全部的挂载情况
yang@Ubuntu:~$ df -kh

# 设置开机自启动
yang@Ubuntu:~$ vi /etc/fstab
添加:
/dev/mapper/data-data1 /data xfs defaults 0 2
yang@Ubuntu:~$ reboot

4. 扩容分区

扩容分区是在原有分区的基础上,添加一个卷组,并将其添加到原有分区的逻辑卷中。

# 之前的步骤和新建分区相同
# 创建卷组
yang@Ubuntu:~$ vgcreate data /dev/sdb1
yang@Ubuntu:~$ vgdisplay

# 扩容逻辑卷
yang@Ubuntu:~$ lvdisplay
yang@Ubuntu:~$ lvextend /dev/ubuntu-vg/ubuntu-lv /dev/sdb1
yang@Ubuntu:~$ lvdisplay

二、硬盘挂载

1. 通过mount/umount命令临时挂载

2. 通过修改/etc/fstab文件永久挂载

root@Ubuntu:~$ vi /etc/fstab
添加:/dev/mapper/data-data1 /data xfs defaults 0 2
(源地址 挂载地址 挂载格式 deaults 0 n)

3. 查看挂载信息

# 查看所有磁盘状态
root@Ubuntu:~$ fdisk -l

# 查看已挂载文件信息状态
root@Ubuntu:~$ df -t
root@Ubuntu:~$ df -kh

# 查看已挂载文件信息结构
root@Ubuntu:~$ lsblk -f

三、安装 NFS-server

1. NFS服务器简介

NFS(Network File System)系统允许通过挂载的方式在多台主机之间进行文件共享,是一个非常稳定的(可移植)网络文件系统,主要被使用于中小企业的后端文件共享。大型企业会采用更复杂的分布式存储。

2. Ubuntu系统安装NFS服务器:

# 安装服务器,安装后默认会自动启动服务
root@Ubuntu:~$ apt install nfs-kernel-server

# 查看nfs版本信息
root@Ubuntu:~$ cat /proc/fs/nfsd/versions

# 配置NFS服务器并创建共享目录
root@Ubuntu:~$ vi /etc/idmapd.conf
添加:Domain = test.com

root@Ubuntu:~$ mkdir /data
root@Ubuntu:~$ vi /etc/exports
添加:/data 192.168.17.132(rw, no_root_squash)
# 注:/data为共享文件目录,IP为客户端IP

# 重启服务
root@Ubuntu:~$ service nfs-kernel-server  restart

# 设置开机自启动
root@Ubuntu:~$ vi /etc/fstab
添加:nfsserver:/data /mnt nfs deaults 0 0

3. 客户端配置

# 安装服务器会将客户端一起安装
root@Ubuntu:~$ apt install nfs-kernel-server
# 或只安装客户端
root@Ubuntu:~$ apt install nfs-common

# 配置客户端:
root@Ubuntu:~$ vi /etc/idmapd.conf
添加:Domain = test.com

# 创建空的本地文件夹并将远程目录挂载到文件夹
root@Ubuntu:~$ mkdir -p ~/nfsdata
root@Ubuntu:~$ mount -t 192.168.17.131:/data ~/nfsdata

# 设置开机自启动
root@Ubuntu:~$ vi /etc/fstab
添加:nfsserver:192.168.17.131:/data ~/nfsdata nfs deaults 0 0

4. Windows10安装NFS服务器:

  1. 在Windows10中打开nfs服务:Win10安装NFS服务

  2. 在Windows上挂载:

C:\Users\root> mount 192.168.17.131:/data X:
  1. 会发现多了一个驱动硬盘X:,就是挂载成功的/data

在这里插入图片描述

四、iSCSI 块存储服务

1. 安装目标器服务器

方法一:

# 配置目标器服务器
# 安装
root@Ubuntu:~$ apt install tgt -y

# 修改目标器服务器配置文件
root@Ubuntu:~$ vi /etc/tgt/conf.d/iscsi.conf
添加:
<target iqn.2022-03.example.com:disk0>
  backing-store /dev/sdb
  initiator-address 192.168.17.132
  incominguser test1 123456
  outgoinguser test2 654321
</target>

# 重启服务并查看
root@Ubuntu:~$ systemctl restart tgt
root@Ubuntu:~$ tgtadm --mode target --op show

方法二:

# 新建一个目录用于存放虚拟磁盘文件
root@Ubuntu:~$ mkdir /var/lib/iscsi_disks
# 下载管理工具
root@Ubuntu:~$ apt install targetcli-fb
root@Ubuntu:~$ targetcli
/> cd /backstores/fileio
# 创建一个名为 disk01 的磁盘镜像文件,位于/var/lib/iscsi_disks/disk01.img,容量为 10G
/backstores/fileio> create disk01 /var/lib/iscsi_disks/disk01.img 10G
/backstores/fileio> cd /iscsi
/iscsi> create iqn.2020-02.cg.lzu.edu.cn:storage.target00
/iscsi> cd iqn.2020-02.cg.lzu.edu.cn:storage.target00
/iscsi/iqn.20...rage.target00> cd tpg1
/iscsi/iqn.20...target00/tpg1> cd acls
/iscsi/iqn.20...t00/tpg1/acls> create iqn.2020-02.cg.lzu.edu.cn
/iscsi/iqn.20...t00/tpg1/acls> cd iqn.2020-02.cg.lzu.edu.cn
/iscsi/iqn.20...cg.lzu.edu.cn> set auth userid=username
/iscsi/iqn.20...cg.lzu.edu.cn> set auth password=password
/iscsi/iqn.20...t00/tpg1/luns> cd /iscsi/iqn.2020-02.cg.lzu.edu.cn:storage.target00/tpg1/luns
/iscsi/iqn.20...t00/tpg1/luns> create /backstores/fileio/disk01
/iscsi/iqn.20...t00/tpg1/luns>cd /
/> ls
/> exit

# 查看3260端口是否在监听
root@Ubuntu:~$ ss -napt | grep 3260

# 启动target服务器
root@Ubuntu:~$ systemctl enable target

2. 在Ubuntu系统中安装启动器服务器

# 配置启动器服务器
# 安装
root@Ubuntu:~$ apt install open-iscsi -y

# 发现目标器服务器的共享目标
root@Ubuntu:~$ iscsiadm -m discovery -t st -p 192.168.17.131

# 修改配置
root@Ubuntu:~$ vi /etc/iscsi/initiatorname.iscsi
修改为刚才发现的共享目标名称:
InitiatorName=iqn.2022-03.example.com:disk0

# 修改节点登录信息
root@Ubuntu:~$ vi /etc/iscsi/nodes/iqn.2022-03.example.com\:disk0/192.168.17.131\,3260\,1/default
添加/修改:
node.startup = automatic
node.session.auth.authmethod = CHAP
node.session.auth.username = test1
node.session.auth.password = 123456
node.session.auth.username_in = test2
node.session.auth.password_in = 654321

# 重启服务器并查看状态
root@Ubuntu:~$ systemctl restart open-iscsi iscsid
root@Ubuntu:~$ systemctl status open-iscsi

# 查看连接
root@Ubuntu:~$ iscsiadm -m session -o show
root@Ubuntu:~$ lsblk
root@Ubuntu:~$ cat /proc/partitions

# 创建文件系统、格式化、挂载
root@Ubuntu:~$ fdisk -l /dev/sdb
root@Ubuntu:~$ mkfs.ext4 /dev/sdb1
root@Ubuntu:~$ mount /dev/sdb1 /mnt
root@Ubuntu:~$ df -kh

参考文章:如何在Ubuntu 20.04 LTS上设置iSCSI存储服务器

五、在Windows10上安装启动器服务器

参考文章:Windows10系统连接iscsi target(共享存储)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐