如何进行分区和格式化在Linux中DigitalOcean块存储卷

DigitalOcean块存储卷提供调整提供给一个Droplet的存储空间的一种简单的方法。创建和卷附着到使用DigitalOcean控制面板或API一个Droplet之后,原始的存储空间必须分区,格式化,和安装才能使用它。本指南将介绍如何用卷时完成这些步骤。

介绍

DigitalOcean块存储卷提供了一种调整Droplet可用存储空间的简单方法。 使用DigitalOcean控制面板或API创建卷并将卷附加到Droplet后,原始存储空间必须在可以使用之前进行分区,格式化和挂载。

本指南将介绍如何在使用卷时完成这些步骤。 对于更广泛的指导分区和格式化的存储空间,请按照本指南

先决条件

在完成本指南之前,应该向DigitalOcean Droplet附加一个音量。 按照我们的指导上使用DigitalOcean的块存储上手。 该指南还包括快速启动分区和格式化指令,如果你只是想要一个基本的,可用的配置。

当你准备开始时,登录到Droplet作为root用户或与用户sudo权限。

使用DigitalOcean上的卷

DigitalOcean卷在Droplet的操作系统中表示为原始存储设备。 这意味着您可以使用常规工具准备要使用的卷。 但是,有一些特定于平台的详细信息对于了解使用DigitalOcean卷时非常有用。

需要注意的一点是,卷名称对操作系统如何表示设备有影响。 在Linux中,硬件设备通常由特殊的内部文件中表示/dev像名字目录sdasdb 在子目录中/dev/disk目录中包含以利于设备标识与更具描述性的名称方便的符号链接。

在内部链接/dev/disk/by-id目录中传统的硬件序列号相关联,但Droplet的链接名称被追加卷的名称,将创建的scsi-0DO_Volume_前缀。 上卷分区组成此卷标识符和进一步的-part #Stapling。 这意味着该内的链接/dev/disk/by-id目录是可以预见和跨靴可靠。 由于这些优势, 中的链接/dev/disk/by-id的建议DigitalOcean卷及其分区标识符

大部分工具可以把这些标识符作为输入,但会使用传统/dev/sd*名字在他们的输出。 要查看如何/dev/disk/by-id链接映射到它们的相关名称,可以阅读链接目标。 file实用程序可以清晰地显示这一点:

file /dev/disk/by-id/*
/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

由于/dev/sd*名称可以靴子之间切换,则需要每次开机后再次检查链接。

卷所需的进程

准备要在Linux服务器上使用的卷所需的进程取决于卷是否先前已经分区和格式化。

准备新卷以在Linux服务器中使用

在开始使用新的DigitalOcean卷之前,需要执行以下步骤:

  • 分区卷
  • 格式化分区
  • 创建安装点
  • 装载文件系统
  • 调整/etc/fstab的文件在随后启动自动应用的坐骑

准备先前格式化的卷以在Linux服务器中使用

如果您的卷是以前使用的,并且已经被分区和格式化,您将需要执行上述操作的一个子集。 要在不同的Droplet上设置音量,您需要:

  • 创建安装点
  • 装载文件系统
  • 调整/etc/fstab的文件在随后启动自动应用的坐骑

分区和格式化都是破坏性操作,因此您不应在现有卷上尝试这些步骤,除非您希望完全擦除其内容。

分区卷

分区允许您将单个存储设备划分为可以单独管理的更小单元。 多个文件系统可以写入单个设备,空间可以沿功能线分段。

警告
如果已经对卷进行了分区和格式化,再次执行这些操作可能会导致数据丢失。 除非你想删除的卷的内容不要执行现有卷分区和格式化步骤。 跳到节上挂载文件系统如果卷已经格式化。

某些工具希望在分区表中组织磁盘空间,无论是否需要分段功能。 将分区表写入大多数卷通常是个好主意,尤其是在将来可能需要在Droplet之间移动它们时。 现有的分区表使得一目了然地有可能将数据写入卷更加明显。 如果不需要存储分段,可以轻松编写跨整个卷的单个分区。

最常见的两种分区系统是传统的主引导记录,或MBR,格式,以及更现代的GUID分区表,或GPT。 MBR格式有一些固有的限制,特别是关于可以创建的分区的数量和大小。 如果没有专门的需求,GPT是建议的现代分区格式。

有很多分区工具可用于Linux。 一些特定于MBR或GPT,而其他处理这两种格式。 这些工具的版本也会显着影响可用功能。 对于GPT分区, partedgdisk将有可能被默认安装。 一般情况下, parted将成为非交互式划分一个更好的选择,而gdisk有互动环节更强大的菜单驱动界面。

分区与分离

如果你要分区非交互方式或从脚本, parted通常是你最好的选择。 通于-s选项,如果从脚本操作来关闭确认提示。

您可以通过该装置传递给写一个光秃秃的GPT分区表到卷parted命令和mklabel gpt子命令:

sudo parted /dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01 mklabel gpt

接下来,您可以开始编写分区。

虽然parted是很能干的GPT分区格式的工作,论证结构仍然反映了MBR的起源。 因此,您仍然需要传递您正在写“主”分区,即使GPT不使用这些指定。

您需要传递的其他参数是分区的开始和结束位置。 这些可以采取各种单元,如GB ,扇区或百分比。 使用百分比并传入-a opt选项将允许parted自动分区对齐到基础行业,这是正确的表现非常重要。

要创建跨整个卷的单个分区,请键入:

sudo parted -a opt /dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01 mkpart primary 0% 100%

要改为创建两个大小相等的分区,可以使用以下命令:

sudo parted -a opt /dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01 mkpart primary 0% 50%
sudo parted -a opt /dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01 mkpart primary 50% 100%

不幸的是, parted只能通过提供一个明确的开始和结束点处理绝对定位。 例如,您不能给出起始位置和分区的总大小来自动计算终点。 而是必须通过将起始位置偏移量与所需的总大小组合来手动计算并提供结束位置。

使用gdisk分区

gdisk实用程序可能是菜单驱动的GPT分区的最佳选择。

要开始使用卷标识符作为参数传递给gdisk

sudo gdisk /dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01

该实用程序将扫描设备以尝试找到现有结构。 然后它会将您转换为交互式提示:

GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help):

为了让您的轴承,在提示符下键入打印可用的命令

?
b   back up GPT data to a file
c   change a partition's name
d   delete a partition
i   show detailed information on a partition
l   list known partition types
n   add a new partition
o   create a new empty GUID partition table (GPT)
p   print the partition table
q   quit without saving changes
r   recovery and transformation options (experts only)
s   sort partitions
t   change a partition's type code
v   verify disk
w   write table to disk and exit
x   extra functionality (experts only)
?   print this menu

写一个新的分区表的磁盘,请使用-o选项:

o

系统将提示您确认操作。 借此机会仔细检查您使用正确的卷:

This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N):

接下来,通过使用n选项创建分区:

n

您将通过一系列的提示采取要求您选择分区号,第一个部门,最后部门大小,以及的GUID分区类型:

Partition number (1-128, default 1): 
First sector (34-209715166, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-209715166, default = 209715166) or {+-}size{KMGTP}: +10G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

您可以只需点击进入 ,接受建议的默认值。 这通常对关于分区号,第一个扇区和当前GUID类型的提示有意义。 对于最后一个扇区或大小提示,请注意,您可以使用“+”号来表示相对大小。 这意味着,你可以通过分区大小直接而无需计算终点位置与作为是必要的parted

您可以通过使用-p选项显示分区:

p
[custom_prefix Output]
Disk /dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01: 209715200 sectors, 100.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 19252774-25E2-4899-96CD-DCFE3B846DCC
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 209715166
Partitions will be aligned on 2048-sector boundaries
Total free space is 188743613 sectors (90.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        20973567   10.0 GiB    8300  Linux filesystem

正如你可以看到,传递总分区大小完全符合它应该。

如果您返回创建另一个分区,默认值将更改为反映当前最佳推荐选项:

n
Partition number (2-128, default 2): 
First sector (34-209715166, default = 20973568) or {+-}size{KMGTP}: 
Last sector (20973568-209715166, default = 209715166) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

写表体积和退出该实用程序,使用w选项:

w

再次提示您查看更改:

[secondary_prompt gdisk partition writing confirmation]
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): 

当你有一定的变更,键入Y写分区音量。

格式化分区

警告
如果已经对卷进行了分区和格式化,再次执行这些操作可能会导致数据丢失。 除非你想删除的卷的内容不要执行现有卷分区和格式化步骤。 跳到节上挂载文件系统如果卷已经格式化。

分区后,必须通过将文件系统写入每个存储段来格式化分区。 文件系统负责管理文件级交互,并提供在磁盘上写入和检索信息的可靠方法。 有许多不同类型的文件系统可以与Linux系统一起使用,每个都有自己的权衡。

一些更流行的Linux文件系统有:

  • EXT4:最流行的默认文件系统EXT4是,或扩展文件系统的第四个版本。 Ext4文件系统是日志记录,向后兼容传统系统,非常稳定,并具有成熟的支持和工具。 如果您没有专门的需求,这是一个不错的选择。
  • XFS:XFS专业性能和大型数据文件。 它格式化快,并且在处理大文件和使用大磁盘时具有良好的吞吐量特性。 它还具有实时快照功能。 XFS使用元数据日记,而不是记录元数据和数据。 这提供了快速的性能,但是可能导致在突然断电的情况下数据损坏。
  • BTRFS:BTRFS是现代的,功能丰富的写入时复制文件系统。 这种架构允许将一些卷管理功能集成到文件系统层中,包括快照,克隆,卷等。当处理完整磁盘时,Btrfs仍然遇到一些问题。 对于生产工作负载的准备情况有一些争论,许多系统管理员正在等待文件系统达到更高的成熟度。
  • ZFS:ZFS是一个写入时复制的文件系统和卷管理器有一个强大的和成熟的功能集。 它具有出色的数据完整性功能,可以处理大文件系统大小,具有典型的卷功能,如快照和克隆,并且可以将卷组织为RAID和RAID类阵列,以实现冗余和性能目的。 在Linux上的使用方面,由于许可问题,ZFS有一个有争议的历史。 Ubuntu现在为它提供了一个二进制内核模块,而Debian在其存储库中包含了源代码。 对其他分布的支持还有待确定。

分发通常促使Ext4或XFS作为通用计算的默认选择。 这两个文件系统的工具通常是默认安装的,这意味着格式化和管理这些文件系统是直接的。

大多数Linux文件系统使用的是开头的工具格式化mkfs.其次是小写的文件系统的名称。 例如,的Ext4文件系统可以用来创建mkfs.ext4和XFS文件系统可以用制成mkfs.xfs

虽然许多选项可用于这些格式化工具,但默认设置通常是您需要的。 默认情况下,它将创建一个文件系统,填充传递给它的整个块设备。 你可能想增加一个选项是-L选项,允许您使用一个永久名称标记分区。 这可以用来作为永久替代/dev/disk/by-id的名称,并且可以更容易记住。

警告
要确保你在你卷的全卷本身的分区和不及格。 格式化整个卷将覆盖在上一节中创建的分区方案。 请记住,使用时/dev/disk/by-id标识,分区结束-part #

要使用Ext4文件系统格式化第一个分区,请键入:

sudo mkfs.ext4 /dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01-part1
mke2fs 1.42.13 (17-May-2015)
Discarding device blocks: done                            
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: 37858ba9-c2f3-4afe-9013-83111111e862
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

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

要将第二个分区格式化为XFS,可以使用如下命令:

sudo mkfs.xfs /dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01-part2
meta-data=/dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01-part2 isize=512    agcount=4, agsize=5898175 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0
data     =                       bsize=4096   blocks=23592699, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=11519, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

安装文件系统

一旦一个分区被格式化,它可被安装。 安装是挂钩文件系统到现有的文件层次结构,以便它可以由用户和系统过程中使用的过程。

您可以通过检查写入你的分区文件系统lsblk工具。 大多数现代变种有--fs其中显示文件系统相关的信息的选项:

sudo lsblk --fs
NAME   FSTYPE LABEL  UUID                                 MOUNTPOINT
sda                                                       
├─sda1 ext4          37858ba9-c2f3-4afe-9013-83111111e862 
└─sda2 xfs           5d141215-7473-4100-a0e2-e69d23d89ec5 
vda                                                       
└─vda1 ext4   DOROOT bc8ce2bd-8c5f-430d-9ae3-0b874736e7e4 /

如果您使用的是旧版本,您可以手动使用复制输出-o NAME,FSTYPE,LABEL,UUID,MOUNTPOINT代替:

sudo lsblk -o NAME,FSTYPE,LABEL,UUID,MOUNTPOINT
NAME   FSTYPE LABEL  UUID                                 MOUNTPOINT
sda                                                       
├─sda1 ext4          37858ba9-c2f3-4afe-9013-83111111e862 
└─sda2 xfs           5d141215-7473-4100-a0e2-e69d23d89ec5 
vda                                                       
└─vda1 ext4   DOROOT bc8ce2bd-8c5f-430d-9ae3-0b874736e7e4 /

挂载文件系统所需的最低限度是:

  • 要安装的文件系统设备
  • 安装点

挂载点是所在分区的文件系统,以使其它的数据可以被访问的目录。 这应该几乎总是一个空目录,但否则是一个相当任意的选择。

文件系统层次标准建议使用/mnt或临时安装的文件系统下,它的子目录。 如果这符合你的用例,这可能是最好的地方挂载它。 它不建议在哪里挂载更永久的存储,所以你可以选择你想要的方案。 在许多情况下, /mnt/mnt子目录用于更永久存储。

为了便于识别,通常最好创建子目录下/mnt可以很容易地连接到它的目的是房子的文件系统。 举例来说,如果你有一个名为量两个分区volume-nyc1-01 ,您可能希望创建这两个安装点:

sudo mkdir /mnt/volume-nyc1-01-part1
sudo mkdir /mnt/volume-nyc1-01-part2

安装时可以启用许多选项。 常规选项可以在在文件系统无关的挂载选项一节中找到man mount手册。 针对特定的文件系统类型的选项可以通过文件系统中的特定挂载选项部分的文件系统类型组织中找到。

适当命名的defaults选项是一个很好的起点。 它翻译为:

  • rw :将带有阅读量和可写访问
  • suid :允许使用所设置的用户识别符,并设置组标识符位,其可被用于允许一个程序作为应用程序的所有者,而不是主叫用户或组运行的。
  • dev :允许特殊设备文件被文件系统上的解释。
  • exec :允许程序从文件系统中执行。
  • auto :在当文件系统将自动挂载mount -a给出命令或在系统启动时。
  • nouser :只允许超级用户挂载文件系统。
  • async :磁盘I / O将被异步完成。

DigitalOcean卷由SSD支持。 这使得discard选项,这使得在设备上连续TRIM操作,可能的良好的除此列表。 对于推荐连续TRIM的性能和完整性影响存在一些争论,而不是建立一个自动化任务来定期执行TRIM。 比如Ubuntu发行版都有一个cron默认情况下,提供定期的修剪操作,这使得使工作discard选项略显多余。

当您决定适当的装载选项时,可以使用此语法装载文件系统。 请务必调整选项以符合您的偏好设定:

sudo mount -o defaults,discard /dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01-part1 /mnt/volume-nyc1-01-part1
sudo mount -o defaults,discard /dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01-part2 /mnt/volume-nyc1-01-part2

检查服务器看到与额外的空间df命令:

df -h -x tmpfs -x devtmpfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G  1.2G   18G   6% /
/dev/sda1       9.8G   23M  9.2G   1% /mnt/volume-nyc1-01-part1
/dev/sda2        90G   33M   90G   1% /mnt/volume-nyc1-01-part2

您还可以通过简单的测试来检查写入和读取功能:

echo "success" | sudo tee /mnt/volume-nyc1-01-part1/test_file
cat /mnt/volume-nyc1-01-part1/test_file
success

如果文件可以写入文件系统或从文件系统读取,您可以相信它是按预期工作。 随意删除测试文件清理:

sudo rm /mnt/volume-nyc1-01-part1/test_file

设置持久安装

操作系统使用中的条目/etc/fstab的文件来决定哪些文件系统在开机自动挂载。

调整/etc/fstab的文件来配置此功能:

sudo nano /etc/fstab

此文件中的条目由空格分隔的字段组成,表示:

  • 文件系统的挂载 :这是应该被安装在分区
  • 安装点 :这是在文件系统应附的文件层次结构中的位置。
  • 文件系统的类型 :这定义的文件系统的类型,小写。 例如, ext4 ,或xfs
  • 挂载选项 :这个定义应该使用的安装选项。 作为本指南的一节中提到,检查一般和特殊文件系统挂载选项部分man mount可用的选择。
  • 文件转储 :由所使用的dump工具来知道是否要在文件系统中进行操作。 通常,这应该设置为“0”以禁用此功能。
  • fsck的排序 :告诉fsck实用工具,命令文件系统的检查。 根文件系统应设置为“1”。 其他文件系统可以设置为“2”启用检查或“0”禁用检查。

要添加到一个特别有用的选项/etc/fstab处理卷时,文件nofail 如果无法找到文件系统,这将允许操作系统继续引导序列,这在卷将来分离的情况下很重要。

假设我们的第一个分区格式化为Ext4,第二个分区是XFS,条目可能如下所示:

/ etc / fstab
. . .

/dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01-part1 /mnt/volume-nyc1-01-part1 ext4 defaults,nofail,discard 0 2
/dev/disk/by-id/scsi-0DO_Volume_volume-nyc1-01-part2 /mnt/volume-nyc1-01-part2 xfs defaults,nofail,discard 0 2

保存并在完成后关闭文件。

现在,我们可以测试条目可以正确解释。 如果你的文件系统已经安装,您可以用卸装umount命令:

cd ~
sudo umount /mnt/volume-nyc1-01-part1
sudo umount /mnt/volume-nyc1-01-part2

检查卷文件系统是否不再可用:

df -h -x tmpfs -x devtmpfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G  1.2G   18G   6% /

现在,通过键入以下内容来检查自动安装是否正确:

sudo mount -a

检查文件系统是否已重新安装:

df -h -x tmpfs -x devtmpfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G  1.2G   18G   6% /
/dev/sda1       9.8G   23M  9.2G   1% /mnt/volume-nyc1-01-part1
/dev/sda2        90G   33M   90G   1% /mnt/volume-nyc1-01-part2

结论

DigitalOcean的块存储为您的项目分配存储时提供了灵活性。 学习将原始卷转换为可用空间所需的过程将帮助您快速启动和运行,让您将精力集中在更重要的任务上。