我有一个云服务器,我们还需要为磁盘 IO 使用付费。以下是统计数据的示例:
04/Sep/2013 07:24:19
04/Sep/2013 08:24:19
0,5 GB / 1 vCPU (0,08 Kr. per hour): Charge for 44.7578125GB disk I/O
Run Code Online (Sandbox Code Playgroud)
因此,一小时内,我们需要为大约 45 GB 的磁盘 I/O 付费。
对我来说,这听起来流量很大,我想自己做一些监控来检查。我知道诸如此类的工具dstat,sysstat但我没有找到任何显示一小时(或其他时间范围)总计的示例。大多数示例都是对结果求平均值,例如以下命令:
dstat -tdD total 60
Run Code Online (Sandbox Code Playgroud)
此处,它显示了 60 秒的磁盘 I/O 测量,但它是平均值。因此,如果我复制一个大文件,复制时我会看到数字增加,但一旦完成,数字就会再次减少。换句话说,我最终并没有得到那段时间的真实总数。
如何记录给定时间范围内的磁盘 I/O 总量?
我正在学习Linux下的文件操作调用。和许多其他功能使用缓存来提高性能,我知道可以read()将数据从缓存传输到磁盘设备。write()fsync()
但是,是否有任何命令或系统调用可以确定数据是否被缓存或写入磁盘?
如果我放入一个 USB 驱动器,它会自动挂载。我可以看到它lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 1 7,5G 0 disk
??sdb1 8:17 1 7,5G 0 part /media/user/usb-drive
Run Code Online (Sandbox Code Playgroud)
如果我用 umount 卸载它
umount /media/user/sdb1
Run Code Online (Sandbox Code Playgroud)
它仍然可以使用lsblk,但不再安装:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 1 7,5G 0 disk
??sdb1 8:17 1 7,5G 0 part
Run Code Online (Sandbox Code Playgroud)
但是如果我通过单击 Thunar(xfce 文件管理器)中的弹出图标来弹出它,它将从lsblk. 为什么呢?
解锁新格式化的 LUKS 卷时,我在内核日志中收到警告:
kernel: device-mapper: table: 253:14: adding target device sdk1 caused an alignment inconsistency: physical_block_size=4096, logical_block_size=512, alignment_offset=0, start=33553920
Run Code Online (Sandbox Code Playgroud)
根据另一个问题,错误警告是可能的,所以我确认这是一个真正的警告:33553920 不能被 4096 整除。我进一步使用 luksDump 来确认:
cryptsetup luksDump /dev/sdk1 | grep 'Payload offset'
Payload offset: 65535
Run Code Online (Sandbox Code Playgroud)
不是 8 的倍数 (4096 ÷ 512 = 8)
lsblk -t /dev/sdk 确认 Linux 了解对齐要求:
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
sdk 0 4096 33553920 4096 512 1 cfq 128 128 32M
??sdk1 0 4096 33553920 4096 512 1 …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种简单的解决方案来防止存储在各种驱动器上的数据发生随机位翻转(所谓的位腐烂)。它们不是磁盘阵列,只是单个磁盘,我每周备份一次。所以我不是在寻找冗余,而是为了文件完整性——即我想知道我很长时间没有访问过的文件是否被随机损坏,并希望在可能的情况下修复它们。
请注意,我想要一个通用的解决方案,我并不是在寻找像 ZFS 或 btrfs(我已经知道)之类的文件系统,部分原因是它们仅用于校验和的开销太大,而且它们太复杂了/ 不稳定(btrfs 情况)。
它不一定是自动的。也就是说,如果我必须运行一个命令来为新写入的文件生成校验和(可能还有恢复),那很好,但它应该易于使用,而不是像手动存储校验和并验证然后将坏文件复制回来等(我已经在做,这就是为什么我要求更简单,更少手动的东西)。
乍一看,SnapRAID似乎做我想做的,除了它是为磁盘阵列制作的,这是我的问题。我认为它可以只使用 1 个数据磁盘和 1 个奇偶校验磁盘,在这种情况下,奇偶校验磁盘可能是数据磁盘的镜像(备份),但我不确定。
除此之外,它可以满足我的需求:校验和文件,验证这一点的能力,甚至可以从备份(奇偶校验)中修复它们。我仍然会在外部媒体上每周运行一次备份,但是这个本地备份需要更少的手动操作,因为它开始变得难以管理。
是否还有其他工具,例如SnapRAID仅针对 1 个数据磁盘或文件系统而设计的工具,它们通过自动校验和/备份进行保护,还是我应该使用SnapRAID?只有 1 个磁盘可以正常工作吗?
因为它使用奇偶校验磁盘进行备份,所以在使用它之前我必须完全擦除我的本地备份磁盘SnapRAID,所以我犹豫是否只是为自己“测试”而无需确认。这样做的一个缺点是奇偶校验磁盘不能作为普通磁盘访问,即使在这种情况下它不是真正的奇偶校验磁盘而只是一个镜像。
因此,如果有另一个类似的易于使用的工具来处理1 个磁盘而不是磁盘阵列的文件的备份和完整性,我想知道。谢谢。
我希望克隆一个大磁盘(一个 500GB 的 SSD,物有所值),并且我倾向于使用cat,正如 Gilles在这里建议的那样。但是让我停下来的是我真的不知道cat读取错误时会发生什么。我知道dd在这些情况下的行为方式,即命令
dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress
Run Code Online (Sandbox Code Playgroud)
不会因读取错误而停止,并用零(sync选项)填充读取错误,以便数据保持同步。不幸的是,它是通过在要写入的块末尾填充零来实现的,因此早期 512 字节读取中的单个错误会弄乱整个 64K 数据(对于更大、更快的块大小更糟)。
所以我想知道:我可以做得更好/不同cat吗?或者我应该继续使用Clonezilla吗?
我正在寻找一种ssh工具来显示哪个进程正在读取/写入哪个文件。
示例输出:
pid(或类似 htop 命令)| 读取 mb/s | 写 mb/s | 路径/到/file.txt
我遇到了一个非常慢的 dnf 的奇怪问题,以至于在安装软件包期间计算机冻结了几秒钟。运行 Fedora 29,但这种情况已经发生多年了。否则计算机工作正常,永不崩溃,显然只有 dnf 击中了一些弱点。不仅“dnf升级”100个包需要一个小时,每年我升级Fedora时,我都会等待圣诞节假期,这样我就可以在周末没有电脑的情况下生活,因为3000多个包更新从周五晚上开始,周日结束。
根目录挂载在旧的SSD盘上,/home挂在新的经典盘(WD Caviar Black)上,还有另外一个盘用于备份(只是说明安装了多个盘)。我怀疑旧 SSD 行为不端,将根分区移动到经典磁盘之一,但并没有改善情况(甚至更慢)。
Journalctl 或 dmesg 或 /var/log/messages 不显示任何特殊内容。Sysbench 说每个安装的磁盘的磁盘性能都很好,就像在另一台(旧的)计算机上运行 Fedora 29 并且 dnf 很好(几分钟内升级,午餐期间每年发布升级)一样好。
有谁知道在哪里寻找正在发生的事情?
PS top, iotop, iostat, dmesg, journalctl,这些基本的东西都查了很多。iotop 在执行升级时显示 99.99% 的磁盘活动,但我想这是正常的。甚至 sysbench(如上所述)也显示磁盘比另一台轻松执行 dnf 的计算机要快一些。
对于品牌:i7-920 处理器,24 G RAM,无交换
磁盘标签的概念是什么意思?
它是否与分区表类型(MBR、GPT、循环等)相同?(正如我从 , 的以下输出parted以及我之前的帖子中所怀疑的那样)
或者它的意思是磁盘的名称?
谢谢。
$ sudo parted -l
Model: ATA TOSHIBA MQ01ABF0 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB fat32 EFI System Partition boot, esp
2 538MB 500GB 500GB lvm
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/lubuntu--vg-swap: 4295MB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags …Run Code Online (Sandbox Code Playgroud) 我有两个不同物理扇区大小的硬盘。我想用它们创建一个 LVM 卷组,但是,当我这样做时vgcreate,我收到一条警告,告诉我两个磁盘具有不同的物理扇区大小。有什么需要担心的吗?