Stratis在其官方网站上被描述为“易于使用的Linux本地存储管理”。看看这个短视频快速演示基础知识。本视频是在RedHatEnterpriseLinux8系统上录制的。视频中展示的概念也适用于Fedora中的Stratis。Stratis2.1版引入了对加密的支持。继续阅读以了解如何开始使用Stratis进行加密。先决条件加密需要Stratis2.1或更高版本。本文中的示例使用Fedora33的预发布版本。Stratis2.1将在Fedora33的最终版本中使用。您还需要至少一个可用的块设备来创建加密池。下面的示例是在具有5GB虚拟磁盘驱动器(/dev/vdb)的KVM虚拟机上完成的。在内核密钥环中创建密钥Linux内核密钥环密钥环用于存储加密密钥。有关内核密钥环的更多信息,请参阅密钥环手册页(mankeyrings)。使用stratiskeyset命令设置内核密钥环中的密钥。您必须指定从何处读取密钥。要从标准输入读取密钥,请使用-capture-key选项。要从文件中读取密钥,请使用-keyfile-path选项。最后一个参数是关键描述。稍后创建加密的Stratis池时将使用它。例如,要创建一个描述为pool1key的密钥,并从标准输入中读取密钥,您可以输入:#stratiskeyset--capture-keypool1keyEnterdesiredkeydatafollowedbyreturnkey:Thiscommandpromptsusforthekeykey数据/密码,密钥在内核密钥环中创建。要验证密钥是否已创建,请运行stratiskeylist:#stratiskeylistKey说明pool1key这将验证pool1key是否已创建。请注意,这些键不是持久的。如果主机重新启动,则需要在访问加密的Stratis池之前再次提供密钥(此过程将在后面描述)。如果您有多个加密池,它们可以有一个单独的密钥或共享相同的密钥。也可以使用下面的keyctl命令查看key:#keyctlget_persistent@s318044983#keyctlshowSessionKeyring701701270--alswrv00keyring:_ses649111286--alswrv065534\_keyring:_uid.03180449830---lskeyring:_persistent.01051260141--alswrv00\_user:stratis-1-key-pool1key创建一个加密的Stratis池现在已经为Stratis创建了一个密钥,下一步是创建一个加密的Stratis池。加密池只能在池创建时完成。目前无法加密现有池。使用stratispoolcreate命令创建池。使用您在上一步(pool1key)中提供的密钥描述添加-key-desc。这将向Stratis发出信号,表明池应该使用提供的密钥进行加密。以下示例在/dev/vdb上创建一个Stratis池并将其命名为pool1。确保在您的系统上指定一个空的/可用的设备。#stratispoolcreate--key-descpool1keypool1/dev/vdb您可以使用stratispoollist命令验证池是否已创建:#stratispoollistNameTotalPhysicalPropertiespool14.98GiB/37.63MiB/4.95GiB~Ca,Crontop在显示的示例输出中,~Ca指示缓存已禁用(~否定该属性)。Cr表示已启用加密。请注意,缓存和加密是互斥的。这两个功能不能同时启用。接下来,创建一个文件系统。以下示例演示了创建一个名为filesystem1的文件系统,将其挂载到/filesystem1挂载点,并在新文件系统中创建一个测试文件:#stratisfilesystemcreatepool1filesystem1#mkdir/filesystem1#mount/stratis/pool1/filesystem1/filesystem1#cd/filesystem1#echo"thisisatestfile">testfile重启后访问加密池重启时,你会发现Stratis不再显示你的加密池或者它的块设备:#stratispoollistNameTotalPhysicalProperties#stratisblockdevlistPoolName设备节点物理大小层要访问加密池,首先使用之前使用的相同密钥描述和密钥数据/密码重新创建密钥:#stratiskeyset--capture-keypool1keyEnterdesiredkeydatafollowedbythereturnkey:Next,runstratispoolunlock命令,并验证您现在可以看到池及其块设备:#stratispoolunlock#stratispoollistNameTotalPhysicalPropertiespool14.98GiB/583.65MiB/4.41GiB~Ca,Cr#stratisblockdevlistPoolNameDeviceNodePhysicalSizeTierpool1/dev/dm-24.98GiBData接下来,挂载文件系统并验证之前创建的测试文件是否可访问:#mount/stratis/pool1/filesystem1/filesystem1/#cat/filesystem1/testfilethisisatestfileusingasystemdunitfiletoautomaticallyunlockaStratispoolatboottime可以在启动时自动解锁Stratis池,无需手动干预,但是,必须有一个包含密钥的文件。在某些环境中,将密钥存储在文件中可能是一个安全问题。下面显示的systemd单元文件提供了一种在启动时解锁Stratis池和挂载文件系统的简单方法。欢迎提供有关更好/替代方法的反馈。大家可以在文末评论区提出建议。首先使用以下命令创建您的密钥文件。确保用您之前输入的相同密钥数据/密码替换密码。#echo-npassphrase>/root/pool1key确保文件只能由root读取:#chmod400/root/pool1key#chownroot:root/root/pool1keycreatedin/etc/systemd/system/stratis-filesystem1.service具有以下内容的systemd单元文件:[Unit]Description=stratismountpool1filesystem1filesystemAfter=stratisd.service[Service]ExecStartPre=sleep2ExecStartPre=stratiskeyset--keyfile-path/root/pool1keypool1keyExecStartPre=stratispoolunlockExecStartPre=sleep3ExecStart=mount/stratis/pool1/filesystem1/filesystem1RemainAfterExit=yes[Install]WantedBy=multi-user.target接下来,使服务在开机时运行:#systemctlenablestratis-filesystem1.service现在重启并验证Stratis是否池自动解锁并挂载其文件系统。结论在当今的环境中,加密是许多人和组织的必修课。本文演示如何在Stratis2.1中启用加密。