我使用target iSCSI来调整iSCSI目标的大小。我创建了一个大型的FILEIO回收站,这是资源的浪费。是否有可能在不丢失数据的情况下缩小文件大小?
发布于 2016-09-24 01:59:29
为此,需要使用truncate命令。请注意,截断将在指定的偏移量处截断文件的末尾,因此,如果您没有首先调整LUN在iSCSI启动器端提供的文件系统的大小(因此其中包含的文件系统比您要截断的文件系统的大小),那么您将在该点之后丢失数据。
这方面的例子如下:
truncate -s SIZE /srv/totallyalun.img
对于G、T、P、E、Z、Y,大小可以是(或可以是整数)之一: KB 1000、K 1024、MB 1000*1000、M 1024*1024等等。
这将调整文件的大小。如果该文件最初大于通过-s指定的大小,则截断将截断它的末尾。如果文件小于指定的大小,则truncate将稀疏地扩展备份文件,末端区域的数据将被读取为零(因为它们将是洞)。
同样,如果不确保文件(LUN)中的文件系统较小或与通过截断指定备份存储的大小完全相等,则收缩--这是丢失数据的好方法。
当iscsi目标使用具有立即可读结果的文件时,您可以这样做,只要目标没有配置为独占锁定文件。
或者,如果您不关心数据(或者不介意复制数据),您可以使用稀疏分配创建一个新的瘦文件,并将其复制到该文件中,以避免这种混乱。瘦分配确实有助于资源管理,特别是在处理软件定义的存储时。
发布于 2016-09-27 13:03:59
在这种情况下,我最好坚持一个好的旧数据迁移。
我自己也尝试过-truncate,但那一次我以从快照恢复而结束。很可能是由于文件系统和逻辑卷大小不匹配造成的。
例如,VMware开发了一套很好的工具,可以通过对空闲空间进行零化或移除零来缩小厚或薄的虚拟磁盘。
https://serverfault.com/questions/805052
复制相似问题