小编tts*_*ras的帖子

从坏扇区到“损坏的文件” - 是为 Linux/ext3 做的,我可以为 Windows/NTFS 做吗?

当对磁盘的 SMART 检查报告坏扇区时,重要的是能够识别具有坏扇区的文件 - 并从备份中恢复它。下面,我展示了我是如何为我的 Linux/ext3 VMWARE 服务器做到这一点的——但有没有人知道这是否可以为 Windows/NTFS 做到这一点?

以下是我为 Linux/ext3 所做的:我首先要求驱动器进行硬件表面扫描(低于操作系统级别,使用驱动器上的 SMART 电路):

vserver:~# smartctl -t long /dev/sdc
Run Code Online (Sandbox Code Playgroud)

我看了结果:

vserver:~# smartctl -a /dev/sdc
...
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       1
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       9
...
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       90%     27679         591363172
Run Code Online (Sandbox Code Playgroud)

因此,一个扇区已经被标记为坏,9 个被标记为从“暂存”扇区空间替换。更重要的是,第一个不可读的逻辑块地址 (LBA) 是 591363172。

我找到了这个数字“转换”为的分区(以及其中的偏移量):

vserver:~# fdisk -lu /dev/sdc
Device Boot      Start         End      Blocks   Id  System …
Run Code Online (Sandbox Code Playgroud)

backup ext3 ntfs bad-blocks

18
推荐指数
1
解决办法
4665
查看次数

Nginx 和大响应的缓冲

在我们应用程序的配置中,nginx 在gunicorn.

我们的应用程序以一般来说较小的响应来回复前端请求……但某些端点生成的响应大于一个内存页 (4K)。

发生这种情况时,nginx 会记录此警告:

an upstream response is buffered to a temporary file 
/path/to/nginx/proxy_temp/4/86/0000000864 while reading upstream, 
client: 1.2.3.4, server: api.ourdomain.com, request: "GET /pdf/..."
Run Code Online (Sandbox Code Playgroud)

我们的 nginx 日志最终充斥着这个警告——据我所知,使这个警告从我们的日志中消失的唯一解决方案是糟糕的解决方案

  • 我可以将 nginx 设置proxy_max_temp_file_size为 0 - 基本上禁用大型响应的缓冲。这将停止对文件的缓冲——但这也意味着对于生成大量响应的端点(例如,生成 1-2MB 响应的 PDF 生成的端点),一个缓慢消耗的客户端会拖延相应的 gunicorn 工人......事实上,如果有是 N 个 gunicorn 工人,只需要 N 个客户端在慢速网络连接后生成 PDF,我们的应用程序就会关闭......

  • 我可以将其proxy_buffer_size增加到 4K 以上(即一个内存页)。我很确定这会对 nginx 性能产生严重影响 - 我们 70% 的响应确实适合 4K,我们会强制 nginx 分配......什么?他们每个人都有 2MB 的缓冲区,只是为偶尔的 PDF 生成请求做好准备? 编辑:事实上,这根本不是一个选项——迈克尔(下面)评论说,唯一允许的值是 4K 和 8K。

  • 我可以proxy_buffering关闭 …

nginx

6
推荐指数
1
解决办法
9780
查看次数

标签 统计

backup ×1

bad-blocks ×1

ext3 ×1

nginx ×1

ntfs ×1