介绍
DigitalOcean的块存储允许您创建并附加额外的存储卷到您的DigitalOcean Droplet。 卷是一种独立的资源,可以轻松地从同一数据中心内的一个Droplet移动到另一个。 附加卷功能类似本地连接的存储驱动器,允许您使用熟悉的工具和技术管理存储。
在本指南中,我们将介绍以下主题:
- 什么是DigitalOcean块存储?
- 有什么方法使用块存储?
- 如何创建卷并将其附加到Droplet
- 如何分区和格式化卷
- 如何删除和分离卷
- 用于管理卷的其他接口
什么是DigitalOcean块存储?
DigitalOcean块存储是一种灵活,方便的方式来管理您的DigitalOcean Droplet的附加存储。 块存储在被称为卷单位提供。 卷作为块设备,意味着它们在操作系统中显示为本地连接的存储驱动器,可以根据需要进行分区和格式化。
关于DigitalOcean上的Block Storage的一些事情:
- 价格 :
- 的卷为$ 0.10元每月的速度每GB收费。 例如,如果您创建了100GB的卷,则每月会收取额外的$ 10。
- 从创建时刻开始,直到删除时刻为止,每小时都会收取一个卷,就像Droplet一样。
- 存储介质 :Droplet,存储卷是由固态硬盘的支持。
- 可选尺寸 :存储卷可以在尺寸范围从1GB到16TB创建。
- 西部地区的支持 :目前,卷在NYC1,SFO2和FRA1可用。
- 其他详细信息 :
- 卷是特定于区域的资源。 卷可以在该区域内的Droplet之间自由移动。
- 一个卷只能一次连接到一个Droplet。 但是,最多可以将五个卷连接到单个Droplet。
我应该在什么时候使用块存储?
在需要更多存储空间但不需要更大Droplet提供的额外处理能力或内存的情况下,块存储是一个很好的解决方案。 块可以根据需要更改创建,销毁或扩展存储卷,简化存储要求的初始规划。
由于DigitalOcean卷用作通用块设备,因此它们可以在大量上下文中使用。 几个例子是:
- 作为Web服务器的文档根目录或媒体上传目录
- 要存储数据库服务器的数据库文件
- 作为备份的目标位置
- 作为个人文件托管平台的扩展存储,如ownCloud
- 作为构建更高级存储解决方案(如RAID阵列)的组件
由于块存储不是高度专门化的资源,它可以用于任何将受益于额外磁盘空间的东西。
考虑到这些要点,让我们看看如何使用DigitalOcean块存储。
创建和附加卷
为创建和连接DigitalOcean卷的主界面是通过在DigitalOcean控制面板中的Droplet的详细信息页面的卷部分。 此菜单部分将在具有卷支持的区域(当前仅包括NYC1,SFO2和FRA1)中可用。
您可以通过单击主界面中的Droplet名称来访问Droplet的详细信息页面:
如果Droplet在支持的地区之一,侧边菜单将有一个卷项目:
点击卷项目。 您将被带到一个区域,您可以在其中创建并将卷添加到Droplet:
创建和附加新卷
要创建一个新卷,通过点击连接音量按钮启动:
您将可以选择创建新卷或附加现有卷。 默认选择将创建一个新卷。
选择要用于识别的新卷的名称。 然后,选择一个预配置的大小选项,或输入您自己的1GB和16TB之间的自定义大小:
您作出选择后,点击底部的创建按钮。
您的新卷将创建并附加到您的Droplet。 现在,您可以从Droplet中进行分区和格式化新卷,下面将对此进行介绍。
附加现有的未附加卷
要附加现有的,独立的音量,而不是创建新卷,点击附加一个音量按钮,然后单击顶部的未附加卷选项卡。 您将在Droplet的区域中看到所有可用的未附加卷的列表:
选择要附加到Droplet的音量。 当你完成后,点击底部的连接按钮。
您选择的音量将被附加到您的Droplet,并将立即可见的Droplet的操作系统。 要开始,您只需要配置新的存储空间。 如果已经将文件系统写入卷,则可以挂载文件系统并开始使用它。 如果您尚未格式化空间,请按照以下步骤操作。
准备要在Linux中使用的卷
将卷附加到Droplet后,必须准备要使用的卷,就像在Linux中使用任何新磁盘一样。 所需的步骤将取决于您是使用新创建的卷还是在新服务器上设置现有卷。
首先,登录到与用户的Dropletsudo
特权或root
。
准备新创建的卷
新创建的卷需要一些准备,然后服务器才能开始利用额外的空间。 卷必须使用文件系统进行分区,格式化,并装载。 大多数的时候, /etc/fstab
的文件应修改为好,这样的安装将在系统启动时自动发生。
虽然此过程可以根据您的需要进行大幅修改,并且可能会根据Linux发行版稍有不同,但在大多数情况下可以使用以下过程快速启动和运行。 我们对文章的分区和格式化DigitalOcean卷 ,如果需要提供更深入的说明。
这些命令将:
- 创建跨越整个卷的单个GPT分区(某些工具需要某种类型的分区表)
- 使用Ext4文件系统格式化分区
- 创建下一个挂载点
/mnt
目录 - 调整
/etc/fstab
的文件来定义一个持久性装载 - 挂载文件系统
当运行命令,更改高亮显示volume-nyc1-01
给你给你的卷的名称引用。 在/dev/disk/by-id
标识的使用,因为它们是可预测的基础上,卷名,将永远指向正确的音量,甚至重新启动后:
sudo parted /dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01 mklabel gpt
sudo parted -a opt /dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01 mkpart primary ext4 0% 100%
sudo mkfs.ext4 /dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01-part1
sudo mkdir -p /mnt/volume-nyc1-01-part1
echo '/dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01-part1 /mnt/volume-nyc1-01-part1 ext4 defaults,nofail,discard 0 2' | sudo tee -a /etc/fstab
sudo mount -a
完成后,跳过下一个要测试的部分以确保卷正常工作。
准备现有的格式化卷
附加先前已分区和格式化现有卷后,您将需要确定文件系统可用,安装它们,并有可能调整/etc/fstab
的持久性文件。
识别过程包括:
- 发现可用的分区和文件系统
- 将分区名称映射到稳定的标识符,以便它们可以可靠地安装
要发现一个卷上的分区和文件系统,通过卷标识符到lsblk
命令。 在/dev/disk/by-id
标识是字符串组合/dev/disk/by-id/scsi-0DO_Volume_
(静态前缀)和卷的名称。 请求与特定的输出领域-o
选项:
lsblk -o NAME,FSTYPE,SIZE,TYPE,MOUNTPOINT /dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01
OutputNAME FSTYPE SIZE TYPE MOUNTPOINT
sda 100G disk
└─sda1 ext4 100G part
映射/dev/sd*
中所使用的命名方案lsblk
输出到/dev/disk/by-id
命名来可靠地识别DigitalOcean卷和分区,使用计划file
的命令:
file /dev/disk/by-id/*
Output/dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01: symbolic link to ../../sda
/dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01-part1: symbolic link to ../../sda1
在此示例中,磁盘由跨整个卷的单个100G分区组成。 它使用Ext4文件系统格式化。 纵观映射,我们可以看到,这个分区的ext4稳定的标识符是/dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01-part1
。 有了这些信息,我们可以可靠地安装文件系统。
创建挂接点以附加卷:
sudo mkdir /mnt/volume-nyc1-01-part1
添加条目添加到/etc/fstab
与您发现的文件系统类型相应的选项文件:
sudo nano /etc/fstab
在这个例子中,我们发现的分区是使用Ext4文件系统:
. . .
/dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01-part1 /mnt/volume-nyc1-01-part1 ext4 defaults 0 2
保存并在完成后关闭文件。
您可以键入以下命令来挂载卷:
sudo mount -a
继续下面以测试文件系统是否正确安装。
测试挂接的文件系统
检查安装是通过将挂载点成功findmnt
:
findmnt /mnt/volume-nyc1-01-part1
您应该看到表明当前已安装的输出:
OutputTARGET SOURCE FSTYPE OPTIONS
/mnt/volume-nyc1-01-part1 /dev/sda1 ext4 rw,relatime,data=ordered
如果列出目录的内容,你应该看到lost+found
目录,如果您使用的ext4文件系统:
ls /mnt/volume-nyc1-01-part1
Outputlost+found
仔细检查新的存储空间是否可写:
echo 'success' | sudo tee /mnt/volume-nyc1-01-part1/test_file
现在读取文件:
cat /mnt/volume-nyc1-01-part1/test_file
Outputsuccess
如果安装工作正常,请删除测试文件:
sudo rm /mnt/volume-nyc1-01-part1/test_file
删除和分离卷
要从Droplet中删除卷,您可以删除或分离该卷。
- 删除卷 :永久破坏的数量和它的内容。 此操作无法撤消。
- 拆卷 :只是从目前的Droplet体积。 卷和其所有内容可以随后根据需要附加到不同的Droplet。
为了避免Droplet中的操作系统错误,重要的是要确保在执行这些操作之前不使用卷。
确保卷未使用
分离或删除卷的第一步是确保卷在服务器中未被有效使用。 最好的方法是登录到您的服务器并卸载相关的文件系统。
你可以,如果任何进程正在使用安装的文件系统通过将挂载点看到lsof
:
cd ~
sudo lsof +f -- /mnt/volume-nyc1-01-part1
如果命令显示任何输出,则必须在卸载文件系统之前停止列出的进程。
一旦解决了访问已挂接文件系统的任何进程,请卸载它:
sudo umount /mnt/volume-nyc1-01-part1
如果你将不会被重新连接音量,调整/etc/fstab
文件,删除引用卷的任何条目:
sudo nano /etc/fstab
如果不再使用安装点,您可能还希望删除该安装点:
sudo rmdir /mnt/volume-nyc1-01-part1
从这里,您可以安全地从DigitalOcean控制面板分离或删除音量。
使用控制面板删除卷
为了彻底摧毁卷及其所有内容,请访问Droplet的详细信息页面的卷部分。
您可以通过单击主界面中的Droplet名称来访问Droplet的详细信息页面:
点击侧边菜单中的项目卷 :
您将被带到一个可以看到当前附加到Droplet的卷的区域:
在要删除的卷的详细菜单,选择删除选项:
卷及其内容将被完全删除。 此操作是不可逆的。
使用控制面板拆离卷
要分离附加卷,请访问Droplet的详细信息页面的卷部分。 您可以通过单击主界面中的Droplet名称来访问Droplet的详细信息页面:
点击侧边菜单中的项目卷 :
您将被带到一个可以看到当前附加到Droplet的卷的区域:
在要分离的卷的详细菜单中,选择分离选项:
您现在可以根据需要将卷附加到不同的Droplet。
调整卷大小
可以增加现有卷的大小,以便自己访问额外的容量。 此过程涉及在控制面板中调整卷本身的大小,然后调整卷上的分区和文件系统以利用额外的空间。
阅读我们的指南上增加一个块存储卷的大小来学习如何调整现有卷。
其他接口来管理卷
虽然Droplet内卷的菜单是卷的主要管理界面,还有其他地方卷可以查看和管理。
卷索引页
Droplet索引页包含一个链接,位于顶部的卷索引页:
卷索引页面可用于获取当前与您的帐户相关联的所有卷的概述:
此接口可用于附加,分离或删除任何卷。 此接口主要用于提供卷资源的帐户级管理。
Droplet创建期间的“添加卷”选项
也可以创建或使用在Droplet创建过程的添加块存储部分连接到一个Droplet体积:
点击添加音量按钮会给你创建一个卷或附加独立的卷的选项。 这允许您在创建Droplet时做出存储决策:
在创建期间使用卷功能将过滤可用的Droplet区域,并自动分配卷名称。
DigitalOcean API
DigitalOcean API还可用于块存储管理任务。 当使用API超出范围本指南,你可以了解更多关于如何通过查看我们的编程控制存储资源的API文档 。
doctl:DigitalOcean的官方命令行工具
直接使用DigitalOcean的API另一种方法是使用doctl
,该DigitalOcean命令行客户端。 块存储卷可以被创建,删除,并与管理doctl
在大致相同的方式,其他DigitalOcean资源。 你可以通过阅读我们的导游了解更多使用doctl
管理DigitalOcean资源 。
结论
您现在应该基本了解DigitalOcean块存储如何工作,以及如何在帐户中创建和管理卷。 通过利用块存储,您现在可以更灵活地管理存储要求。