Articles of 磁盘

使用C从Linux中的现有文件获取硬件信息

我使用execv运行lshw命令来获取C代码中的CPU,磁盘和内存。 但我想寻找另一个解决scheme来从/proc或任何其他现有的数据获取这些信息。 有什么build议吗? 这是我的代码: char *params[9] = {"/usr/bin/lshw", "-short", "-c", "disk", "-c", "memory", "-c", "processor", 0}; //cmd params filled execv(params[0], params); Linux命令: $ sudo lshw -short -c disk -c processor -c memory $ sudo lshw -short -c disk -c processor -c memory H/W path Device Class Description ====================================================== /0/0 memory 64KiB BIOS /0/22 memory 16GiB […]

确定拥有磁盘的Linux驱动程序

我正在尝试debugging硬件上的SSD未被正确的设备驱动程序检测到的情况。 应该拥有SSD的设备驱动程序是一个软件RAID驱动程序(megasr),它将以镜像模式自动configuration2个SSD。 我非常肯定,megasr驱动程序没有检测/拥有SSD,但我不确定哪个驱动程序实际检测到它们。 在Linux中有没有办法可以确定哪个设备驱动程序拥有/ dev目录中的特定磁盘。 所以我想确定哪个驱动程序拥有设备/ dev / sda,例如。 操作系统是RHEL 6.x. 非常感谢。

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

背景: 我试图在我的台式电脑上安装一个ubuntu机器。 整个过程需要一整天的时间,包括安装操作系统和软件。 不过,我没有多想。 然后我试着用新机器做我的工作,而且比我的笔记本慢得多,这很奇怪。 我做了iotop ,发现解压缩包时的磁盘stream量大概在1-2MB / s左右,肯定是不正常的。 然后,经过几个小时的研究,我发现这篇文章描述了完全相同的问题,并提供了一个难看的解决scheme: 我们最近在一些系统上出现了一个主要的性能问题,其中磁盘写入速度非常慢(〜1MB / s,正常性能为150 + MB / s)。 … 编辑:解决这个问题, 要么删除足够的RAM,要么添加“mem = 8G”作为内核启动参数 (例如在Ubuntu的/ etc / default / grub中 – 不要忘记运行update-grub!) 我也看了这个post Better Linux Disk Caching & Performance with vm.dirty_ratio & vm.dirty_background_ratio 做了 cat /proc/vmstat | egrep "dirty|writeback" 输出是: nr_dirty 10 nr_writeback 0 nr_writeback_temp 0 nr_dirty_threshold […]

创build一个caching文件,当libc(所有文件系统)或ext4中的分区几乎满时会自动删除它?

在编写需要在磁盘上caching数据的软件时,有没有libc的方法,或某种文件系统特有的方式(如ext4),创build一个文件并将其标记为适合自动删除的内核)如果分区几乎变满了? 内存页面有类似的东西: madvise(…, MADV_FREE) 。 一些系统通过编写一个守护进程来实现这一点,该守护进程监视分区的完整性,并在超过某个填充级别时手动删除某些预定义的path。 如果可能的话,我想避免这种情况,因为它不具有可伸缩性:每个应用程序在创build新cachingpath时都必须通知守护进程,这可能会经常发生。 如果这是在内核中,可以在每个inode上保存一个标志,指示它是否是caching文件。 有一个标准化的守护进程也是可以接受的。 目前看来,不同的主要系统集成商都在发明自己的产品。

动物园pipe理员高磁盘IO

目前,我们在EC2上运行的3个zookeeper实例在高端磁盘IO(cpu在top命令中等待50%)。 我们的磁盘是80G EBS,可以得到240 4k IOPS 我iotop zookeeper进程显示磁盘写入900K /秒 不过我也试过sysdig,它只显示了zookeeper以40KB / s的速度写的事务日志 sudo sysdig -pc -c topfiles_bytes sysdig -c topfiles_bytes proc.name=java 而且我确认对动物园pipe理员的写操作大概是300次/秒,而这个操作永远不会达到900K /秒 有没有人遇到这样的问题? 我如何利用动物园pipe理员的IO负载?

Python打开一个文件,正在读取它的数据,为什么python仍然可以读取它的数据,即使我删除这个文件?

我的python程序是从txt文件中读取数据并将数据插入到我的postgre数据库中。 该程序已经开始并继续运行。 然后我不小心删除了磁盘上的文件,但程序仍然继续运行,并将数据插入数据库。 那是因为当python打开一个文件时,它将文件加载到内存中,这样即使我删除了磁盘上的文件,也不会影响正在运行的程序吗? 但是我的文件超过3GB,python是否真的把我的文件加载到内存中? 我担心数据库中的数据是否正确。 这是我的代码,打开文件: f = open("/home/minjian/Documents/tweets2009-07.txt") 我的操作系统是: Linux minjian-OptiPlex-9020 3.16.0-46-generic #62~14.04.1-Ubuntu SMP Tue Aug 11 16:27:16 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

当我们看到kb或mb时,如何确定大小是基于1000还是1024

在Linux中有很多程序会显示一个文件的大小,其中一些显示为块,一些显示为字节。 但是,当涉及到一些人类可读的forms,如ls -sh,lvs,dd bs = size等等,当我们看到kb,KB,mB,MB,K时,我们如何判断它是1024或1000的倍数,G等,有些像lvs这样的大写字母,有些像dd这样的不同的字符,但是,这些东西有一个通用的规则,因为目前我找不到。 谢谢。

调整顺序磁盘读取的性能

我正在从磁盘顺序读取一个大文件,并试图了解读取过程中的iostat输出。 文件大小:10 GB 读取缓冲区:4 KB 预读(/ sys / block / sda / queue / read_ahead_kb):128 KB iostat输出如下 Device: rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 0.00 833.00 14.00 103.88 0.05 251.30 6.07 5.69 2.33 205.71 1.18 100.00 计算I / O请求的平均大小=(rMB / s除以r / s)给出了〜128KB,这是预读值。 这似乎表明,当读系统调用指定了一个4KB的缓冲区时,实际的磁盘I / O按照预读值发生。 当我将预读值增加到256KB时,iostat输出如下 Device: […]

如何在Linux中显示哪个进程拥有磁盘空间

我已经运行这些命令来确定我的Linux系统上的磁盘空间使用情况。 Filesystem Size Used Avail Use% Mounted on /dev/mapper/foovg-foo 326G 202G 108G 66% /export/data/foo du -sk * | awk '{sum += $1}END{print sum}' du -sk * | awk '{sum += $1}END{print sum}' 132161064〜126GB 那么,202G – 126G = 76G的差异。 76G磁盘空间在哪里? 我怎样才能找出哪个进程持有文件句柄? 什么是文件名删除? 在Linux中, /proc/pid/fd/下的文件描述符是实际文件的软链接。

在“磁盘睡眠”过程中线程是否仍在运行?

当一个进程进入特殊types的睡眠,在Linux中被称为“D”或“磁盘睡眠”,其子线程是否仍然正常运行? 所以线程可以告诉我进程处于“磁盘睡眠”状态。 关于“D”状态 顺便说一句:对不起,我可怜的英语,谢谢大家。