标签: disk

是否可以删除大文件的两端而不复制?

我想知道是否有可能使用Windows和c ++来获取大型视频文件(长度为几千兆字节)并"就地"删除它的第一个和最后几百兆字节.

将有用数据复制到新文件的传统方法通常需要超过20分钟的看似不必要的复制.

有没有什么聪明可以用磁盘做低级别来实现这一点?

c windows file disk

3
推荐指数
1
解决办法
241
查看次数

Logback有时不会写入日志文件,有时也不会滚动日志文件

有时当我启动我的java应用程序时,logback拒绝向我的日志文件写入任何内容.有时它也拒绝在午夜(或午夜之后的第一个日志记录事件)滚动日志文件,这导致日志记录事件丢失到空白.当我在logbacks无法滚动日志时查看我的主日志文件时,它将有23:59的时间,与昨天的日期一样,并且在此之后的任何和所有日志记录语句将无法挽回地丢失.我有一个相当简单的配置文件,看起来是正确的.它当然应该是正确的,因为它在大多数时间都有效.

这是我的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!--See http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
    <!--and http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy-->
    <!--for further documentation-->
    <append>true</append>
    <File>aggregator.log</File>
    <encoder>
        <!-- was: %d{yyyy-MM-dd HH:mm:ss}%5p [%t] (%F:%L) - %msg%n -->
      <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] \(%class{25}:%line\) - %msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- By setting the name to .gz here, we get free compression. -->
      <fileNamePattern>aggregator.log.%d{yyyy-MM-dd}.gz</fileNamePattern>
    </rollingPolicy>
  </appender>
  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] \(%class{25}:%line\) - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="DEBUG">
    <appender-ref ref="file"/>
    <appender-ref ref="console"/>
  </root>
</configuration>
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法可靠地重现此错误,因此调试它有点困难.有人能告诉我我做错了什么,或者其他可能是什么问题?如果它有任何帮助,我将STDOUT和STDERR重定向到/ dev/null(我在linux上运行,顺便说一句).

java logging file disk logback

3
推荐指数
1
解决办法
8705
查看次数

计算硬盘容量

考虑具有以下特征的磁盘:
表面
数16 扇区数/圆柱
数4096 每个表面的磁道数2048
每个扇区的字节数512

1)磁盘有多少个模式?
我得到:曲面数/ 2 = 8

2)每钉多少个部门?
我得到:每个圆柱的轨道数=每个表面的轨道*曲面
= 2048 * 16 = 32,768
每个轨道的扇区数=每个圆柱的轨道数/每个圆柱的扇区数

        = 32, 768 / 4096 
        = 8  
Run Code Online (Sandbox Code Playgroud)

3)
我得到的此磁盘的总大小是多少:总大小=圆柱体*表面*每磁道扇区* 512字节

    = 32,768 * 16 * 8 * 512  
    = 2, 147, 483, 648 bytes  
    = 2, 097, 152 Mb  
    = 2, 048 Gb  
Run Code Online (Sandbox Code Playgroud)

问题是,我不知道这是否是正确的解决方案

diskspace disk

3
推荐指数
1
解决办法
4万
查看次数

Delphi THandleStream中的CreateFile Windows错误

我有一个从THandleStream派生的简单类,我用它来编辑原始卷.我调用Windows createfile()函数来打开一个驱动器,但该函数永远不会返回一个有效的句柄,而是一个奇特的错误代码(在调试时间为348,在运行时为304,但是没有引发错误,这只是句柄值看起来很奇怪).这就是我正在做的事情:

Constructor TDiskStream.Create(Const aDrive: String);
Var
  Hdl: Cardinal;
  A,B: Int64;
Begin

  Hdl := CreateFile( PChar(ADrive), 
                     GENERIC_WRITE, 
                     FILE_SHARE_READ Or FILE_SHARE_WRITE, 
                     0, OPEN_EXISTING, 0, 0);

  Inherited Create( Hdl );
  GetDiskFreeSpaceEx( PChar( RightStr(ADrive,2) + '\'), A, FSize, @B );

End;
Run Code Online (Sandbox Code Playgroud)

句柄值与msdn上描述为ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING的错误代码匹配,但它似乎非常罕见.所述aDrive参数设置是否正确(在格式\\ \×: ).

这里有什么问题,我怎样才能设法获得有效的文件处理?

delphi winapi disk stream

3
推荐指数
1
解决办法
2582
查看次数

如何使用Delphi 7检索Windows中所有磁盘的磁盘签名?

在Windows> = XP上使用Delphi 7,如何从计算机中检索每个磁盘的磁盘签名?最好不使用WMI或Diskpart。

如果可能的话,也要快一点。

谢谢。

以后编辑:

Documentation: http://pcsupport.about.com/od/termsd/g/disk-signature.htm
MBR disks: http://diddy.boot-land.net/firadisk/files/signature.htm
GPT disks: http://thestarman.pcministry.com/asm/mbr/GPT.htm

How to get it with DiskPart (method found on Google when searching "disk signature"):
Diskpart >> list disk >> select disk [n] >>
detail disk >> Disk ID: 0E35445B for MBR disks
and GUID: 55FD03F2-6B11-49DF-8167-D30B94A4509D for GPT Disks
Run Code Online (Sandbox Code Playgroud)

windows delphi disk delphi-7 signature

3
推荐指数
1
解决办法
7450
查看次数

在磁道磁盘上写入磁道/磁头/磁柱

我正在开发一个高性能数据库,我想直接写入具有多个磁头的特定磁道/磁道.如何通过SATA总线在带有SATA磁盘的Linux中完成?您可以推荐哪些文档,示例?

c disk linux-kernel sata

3
推荐指数
1
解决办法
105
查看次数

在Linux和Mac OS X上检测已安装的驱动器

我正在使用QDir::drives()驱动器列表.它在Windows上运行良好,但在Linux和Mac上它只返回单个项目"/",即root.这是预期的行为,但我怎样才能获得Mac和Linux上的驱动器列表?

非Qt原生API解决方案也受到欢迎.

关于"驱动器"定义的澄清:我想得到一个在Finder或Linux内置文件管理器中作为"驱动器"可见的挂载点列表.

c++ linux macos qt disk

3
推荐指数
2
解决办法
7178
查看次数

我可以期待grep对10 TB文件有多长时间?

我有一个10 TB的文件,里面有来自多本书的单词,我正在尝试grep一些不常见的字符串(没有正则表达式).例如:

grep "cappucino" filename

我想估计这需要多长时间.我不是真的在寻找它是否是正确的方法.当我打电话给grep时,我想了解更多关于幕后真正发生的事情.

如果我错了,请纠正我:

我使用机械硬盘驱动器,读取速度大约为200 MB/s,因此需要大约1000万/ 200 = 50000秒= 14小时才能完成.这是一个准确的估计吗?

memory performance grep disk hard-drive

3
推荐指数
1
解决办法
2408
查看次数

为什么linux在系统内存大于8GB时禁用磁盘写缓冲区?

背景:

我试图ubuntu在台式计算机上设置一台机器.整个过程耗费了一整天,包括安装操作系统和软件.不过,我并没有考虑太多.

然后我尝试使用新机器完成我的工作,它比我的笔记本电脑慢得多,这很奇怪.

我做了iotop,发现解压缩包时的磁盘流量大约是1-2MB/s,这肯定是不正常的.

然后,经过数小时的研究,我发现这篇文章描述了完全相同的问题,并提供了一个丑陋的解决方案:

我们最近在一些系统上遇到了一个主要的性能问题,其中磁盘写入速度非常慢(~1 MB/s - 正常性能为150 + MB/s).

...

编辑:解决这个问题,要么删除足够的RAM,要么添加"mem = 8G"作为内核启动参数(例如在Ubuntu上的/ etc/default/grub中 - 不要忘记运行update-grub!)

我也看过这篇文章

https://lonesysadmin.net/2013/12/22/better-linux-disk-caching-performance-vm-dirty_ratio/

并做到了

cat /proc/vmstat | egrep "dirty|writeback"
Run Code Online (Sandbox Code Playgroud)

输出是:

nr_dirty 10
nr_writeback 0
nr_writeback_temp 0  
nr_dirty_threshold 0  // and here
nr_dirty_background_threshold 0 // here
Run Code Online (Sandbox Code Playgroud)

这些值是82234111何时mem=8g设置.

因此,它基本上显示当系统内存大于8GB(在我的情况下为32GB)时,无论vm.dirty_background_ratiovm.dirty_ratio设置如何(在我的情况下为 5%和10%),实际的脏阈值变为0并且写入缓冲区被禁用?

为什么会这样?

这是内核中还是其他地方的错误?

除了拔掉RAM或使用"mem = 8g"之外,还有解决方案吗?

更新:我正在使用32位的ubuntu 12.04运行3.13.0-53通用内核,所以这可能只发生在32位系统上.

linux disk linux-kernel

3
推荐指数
1
解决办法
1988
查看次数

Google Compute Engine VM实例:VFS:无法在未知块上挂载根fs

由于某些启动顺序问题,我在Google Compute Engine上的实例无法启动。

因此,我创建了另一个实例并重新配置了我的机器。

我的问题:

  1. 托管一些网站时如何处理这些问题?
  2. 如何从旧磁盘恢复数据?

日志

  

    [0.348577]密钥类型可信注册
    [0.349232]密钥类型已加密注册
    [0.349769] AppArmor:启用了AppArmor sha1策略哈希
    [0.350351] ima:未找到TPM芯片,正在激活TPM旁路!
    [0.351070] EVM:HMAC属性:0x1
    [0.351549]幻数:11:333:138
    [0.352077]块ram3:哈希匹配
    [0.352550] rtc_cmos 00:00:将系统时钟设置为2015-12-19 17:06:53 UTC(1450544813)
    [0.353492] BIOS EDD设备v0.16 2004年6月25日,找到0个设备
    [0.354108] EDD信息不可用。
    [0.536267]输入:AT Translated Set 2键盘为/ devices / platform / i8042 / serio0 / input / input2
    [0.537862] md:在自动检测之前,等待所有设备可用
    [0.538979] md:如果您不使用raid,请使用raid = noautodetect
    [0.539969] md:自动检测RAID阵列。
    [0.540699] md:已扫描0,并添加了0个设备。
    [0.541565] md:自动运行...
    [0.542093] md:...自动运行完成。
    [0.542723] VFS:无法打开根设备“ sda1”或未知块(0,0):错误-6
    [0.543731]请附加正确的“ root =”引导选项;这是可用的分区:
    [0.545011]内核崩溃-不同步:VFS:无法在未知块(0,0)上安装根fs
    [0.546199] CPU:0 PID:1 Comm:swapper / 0未污染3.19.0-39-generic#44〜14.04.1-Ubuntu
    [0.547579]硬件名称:Google Google,BIOS Google 01/01/2011
    [0.548728] ffffea00008ae140 ffff880024ee7db8 ffffffff817af92b …

filesystems boot disk google-compute-engine

3
推荐指数
1
解决办法
1334
查看次数