我正在使用targetcli来调整iSCSI目标的大小。 我创build了一个大的FILEIO后台,这是浪费资源。 是否有可能缩小文件大小而不会丢失数据?
您需要使用truncate命令。 认识到truncate会在指定的偏移量处截断文件的末尾,所以如果您没有首先调整iSCSI启动器端提供的LUN的文件系统大小,那么您将丢失超过该点的数据(以便其中包含的文件系统比你截断的要小)。
这是一个例子:
truncate -s SIZE /srv/totallyalun.img
对于G,T,P,E,Z,Y,SIZE可以是(或者可以是可选地跟随的整数)以下之一:KB 1000,K 1024,MB 1000 * 1000,M 1024 * 1024等等。
这将调整文件的大小。 如果该文件最初大于通过-s指定的大小,则truncate将截断该文件的末尾。 如果文件小于指定的大小,那么truncate会将您的支持文件细化,并将末尾区域的数据读取为零(因为它们是空洞)。
同样,如果您不确定文件(LUN)中的文件系统是否小于或等于您指定的支持存储的大小,则通过缩小这是丢失数据的好方法。
如果目标未configuration为专门locking文件,则可以在iscsi目标正在使用带有可立即读取结果的文件时执行此操作。
或者如果你不关心数据(或者不介意复制它),你可以使用稀疏分配创build一个新的精简文件并复制到这个文件中,以避免这个混乱。 精简分配确实有助于资源pipe理,特别是在处理软件定义的存储时。
在这种情况下,我最好坚持一个很好的旧数据迁移。
我已经尝试过 – 截断自己,但那次我从快照恢复结束。 最有可能的是,由于文件系统和逻辑卷大小不匹配。
例如,VMware开发了一套很好的工具,通过调整可用空间或清除零来缩小厚度或精细的虚拟磁盘。