据我了解,LTO 磁带以“包裹”形式写入数据,其中第一个包裹将磁带解卷到驱动器中,第二个包裹将其放回到盒式磁带中。这个过程会重复多次,其想法是一旦到达磁带的末端,所有的磁带都会回到盒式磁带中,只需稍微倒带就可以弹出。
但是我注意到,当您到达磁带的末尾时,驱动器听起来好像已经完成了最后一卷的一半,因此驱动器在弹出磁带之前会花一些时间倒带,即使它已经报告说已到达磁带末尾。
这是因为磁带上有一些保留容量,以便在不减少总容量的情况下重写失败的块或跳过磁带的坏部分吗?或者有什么其他原因导致磁带的这种明显提前完成?
我有一个 LTO4 驱动器,即使提供新的 LTO4 磁带,也只能向磁带写入大约 460GiB,即使磁带的未压缩容量应该是 800GB。
我注意到,在一个方向上,驱动器的写入速度接近于规定的 80MB/秒,但在相反的方向上,它只能接近 40MB/秒。
该驱动器是受支持的 HP 型号,需要我已完成的固件升级,但问题仍然存在。通过 HP Tape Tools 运行时,驱动器的自检失败,但是没有错误消息,只是在显示以不同磁带速度写入的数据量的行上显示警告。
什么可能导致这个问题?磁带电机听起来像是在两个方向上以相同的速度运行,所以我想知道以仅 40MB/秒的速度写入是否意味着驱动器遇到错误并且不得不再次写入数据,从而导致写入速度和容量的明显损失. 这可能吗?
有没有其他人知道什么会导致类似的问题,但 HP Tape Tools 驱动器评估是否恢复正常?
编辑:我试过加密打开(462GB)和关闭(467GB),我写的数据不是很可压缩,所以驱动器的压缩没有太大作用。
EDIT2:@Mark 我尝试使用 LTO3 磁带,但不是预期的 400GB,它只写入 296GiB。观察写入量,似乎在正向包装上写入 9GiB,但在反向包装上仅写入 4.4GiB,但电机以相同的速度运行。所以看起来你的理论是正确的,并且驱动器出现了很多写后验证错误并且不得不重写相当多的数据。有点奇怪,在任何磁带工具测试中都没有出现这个原因,他们都说磁头寿命非常好,没有问题,除了写入的数据量有问题(大约 2GB)在测试期间,但我只从其他驱动器的其他测试中知道这个数字通常在 6GB 左右。)
我已将单个磁盘导出为targetcliLinux 主机上使用的 iSCSI 目标。在远程计算机上,我已连接到该设备,并在其上放置了一个 ZFS 卷(作为带有 的复制目标zrepl)。
但是,每当我重新启动 iSCSI 目标计算机时,运行 ZFS 的启动器计算机就会失败并出现写入错误。经过一些研究后,这种类型的故障仅在 ZFS 向设备发送写入时发生,它被告知写入成功完成,但随后写入丢失。
这意味着 iSCSI 目标必须缓存写入并在实际写入磁盘之前返回成功,并且当计算机重新启动时,这些缓存的写入并不总是会被刷新。
有没有办法targetcli禁用此写入缓存,以便写入在实际写入物理磁盘之前不会成功返回?
我尝试将物理磁盘导出为pscsi后备存储,但这只会导致 iSCSI 目标内核在访问磁盘后立即崩溃。(没有使用虚拟机,只有两个本机 Linux 服务器,因此不应使用不常见的 SCSI 命令。)
/> ls
o- / .............................................................................................. [...]
o- backstores ................................................................................... [...]
| o- block ....................................................................... [Storage Objects: 1]
| | o- ar0 .......... [/dev/disk/by-id/ata-ST22000NT001-3LS101_ZX20XTYG (20.0TiB) write-thru activated]
| | o- alua ........................................................................ [ALUA Groups: 1]
| | o- default_tg_pt_gp ............................................ [ALUA state: Active/optimized]
| o- fileio ...................................................................... [Storage …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Linux 下的 LTO-4 驱动器上设置加密密钥。我成功地做到了一次,对驱动器重新通电,现在我无法让驱动器再次接受密钥。
我使用的命令是这样的:
$ stenc -f /dev/nst0 -a 1 -e on -k test.key
Provided key length is 256 bits.
Key checksum is 7a43.
Turning on encryption on device '/dev/nst0'...
Sense Code: Illegal Request (0x05)
ASC: 0x26
ASCQ: 0x00
Additional data: 0x00000000000000000000000000000000
Error: Turning encryption on for '/dev/nst0' failed!
Usage: stenc --version | -g <length> -k <file> [-kd <description>] | -f <device> [--detail] [-e <on/mixed/rawread/off> [-k <file>] [-kd <description>] [-a <index>] [--protect | --unprotect] [--ckod] ]
Type 'man …Run Code Online (Sandbox Code Playgroud) 一些安全更新刚刚发布,我想重建我的 Docker 镜像以利用这些更新。
但是,当我运行docker build .它时,它会立即完成而不更新任何内容,因为Dockerfile. 它甚至不会尝试apt-get update在我的Dockerfile.
apt-get update即使没有任何变化,我如何强制 Docker再次运行命令?
有一个--no-cache选项表示它不会在构建过程中使用缓存,但我希望它之前将缓存用于命令,apt-get update并且我希望将结果保存到缓存中以备下次运行(替换当前缓存的图像),所以我肯定想使用缓存。
我也无法docker rmi删除apt-get运行后生成的图像,因为它拒绝删除该图像作为image has dependent child images.