LUKS加密文本文件出现乱码

LUKS加密文本文件出现乱码

我有一个加密的 USB 磁盘卢克斯。今天安装磁盘后,我立即发现最近编辑的文本文件包含看似随机的字符。我检查过的所有其他文件以及目录层次结构似乎都正常。

是什么原因导致这种情况,这样的文件可以恢复吗?

我确实有整个磁盘的最新备份,并且文本文件的最新版本已提交到 Git 存档。然而,我对解决方案以及预防性指导感兴趣。

答案1

这是一个用“C”编写的快速内存测试。如果磁盘损坏是由于内存故障引起的,这可能是一种简单的检查方法。

当心,这会锁定你的计算机(虚拟内存抖动)如果您尝试测试比可用内存多得多的内存。

time { make -s CFLAGS="-Wall -Werror -std=c99" mymemtest && free -m && ./mymemtest && free -m && echo "PASS" || echo "FAIL" ; }

   #include <stdio.h>
   #include <stdlib.h>
   #include <stdint.h>
   #include <assert.h>

int main()
   {
   fprintf(stderr,"\n");
   fprintf(stderr,"sizeof(int)=%ld, sizeof(void*)=%ld\n", sizeof(int), sizeof(void*) );

   double TESTSIZE = 2.2; // amount of memory to test in GB
   uint64_t K=1024; // used to define a GB

   typedef uint64_t T;
   uint64_t sizebytes=TESTSIZE*K*K*K;
   uint64_t size = sizebytes/sizeof(T);
   T * a = malloc(sizebytes);
   assert( a != NULL );
   fprintf(stderr,"sizebytes=%ld, size=%ld, chunk size=%ld, test size=%g GB\n", sizebytes, size, sizeof(T), sizebytes/(double)(K*K*K) );

   fprintf(stderr,"writing...\n");  for ( uint64_t i=0; i<size; i++ ) a[i] = i;
   fprintf(stderr,"checking...\n"); for ( uint64_t i=0; i<size; i++ ) assert( a[i] == (T)i );

   fprintf(stderr,"writing...\n");  for ( uint64_t i=0; i<size; i++ ) a[i] = 0;
   fprintf(stderr,"checking...\n"); for ( uint64_t i=0; i<size; i++ ) assert( a[i] == (T)0 );

   fprintf(stderr,"writing...\n");  for ( uint64_t i=0; i<size; i++ ) a[i] = -1;
   fprintf(stderr,"checking...\n"); for ( uint64_t i=0; i<size; i++ ) assert( a[i] == (T)-1 );

   fprintf(stderr,"writing...\n");  for ( uint64_t i=0; i<size; i++ ) a[i] = 0x5A5A5A5A5A5A5A5AUL;
   fprintf(stderr,"checking...\n"); for ( uint64_t i=0; i<size; i++ ) assert( a[i] == (T)0x5A5A5A5A5A5A5A5AUL );

   fprintf(stderr,"writing...\n");  for ( uint64_t i=0; i<size; i++ ) a[i] = 0xA5A5A5A5A5A5A5A5UL;
   fprintf(stderr,"checking...\n"); for ( uint64_t i=0; i<size; i++ ) assert( a[i] == (T)0xA5A5A5A5A5A5A5A5UL );

   free(a);
   fprintf(stderr,"\n");
   return 0;
   }

答案2

挂起后文件系统混乱(Ubuntu 13.10)

我隔离了反复出现的文件系统问题,这些问题与挂载 LUKS 加密 USB 磁盘时挂起笔记本电脑相关。通常,它认为我在终端中打开的任何目录在从挂起恢复后现在都是空的。将文件保存到这样的目录似乎可能会导致损坏(但这种情况只发生过一次)。我典型的解决方案是在挂起之前卸载磁盘,但有时我会忘记这样做。

我发现清除缓存恢复后修复文件系统:

sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'

sync在暂停之前运行可能仍然是明智的...

相关内容