问题标签 [disk-partitioning]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
winapi - 无文件系统 SD 卡分区框架
(这个项目可能会在 SuperUser 或 Electronics 网站上成为主题,但这个问题的重点是用于完成它的可编程软件。)
我有一个嵌入式系统,它以大约 100KB/s 的速度生成数据,这些数据需要存储并稍后在 Windows PC 上进行处理。串行流式传输有效,但内部存储具有明显的优势,即不需要在进行数据收集的房间内使用笔记本电脑和电缆。
我的电路板有一个 SD 卡插槽(SPI 连接),我之前曾尝试将文件写入 FAT 文件系统。但事实证明这是一个可怕的瓶颈,其中最重要的原因是,为了支持在任意时间增长的任意长度的多个文件,FAT 中的文件访问需要读取和写入多层元数据——分配表本身和目录——除了实际内容之外,这些不能完全适合微控制器 RAM,因此卡访问的数量被放大了。更糟糕的是,某些任务(例如寻找新的空闲块)在卡片大小上具有线性复杂性。
对 FAT 的另一个打击是,如果没有事先彻底卸载,它很容易在断电的情况下出现数据损坏,而且我的系统没有任何可以启动卸载的用户界面。我知道一些技术,包括断电中断和电容,可以让处理器和 SD 卡多运行几毫秒,但由于这些技术无论如何都无助于热移除,而且我现有的电路没有它们,我我试图实现一个只崩溃的存储设计。
所以我决定跳过文件系统,只使用卡作为原始块序列。但是,我不希望我的用户被邀请重新格式化包含数据的卡片
所以,我想对卡进行分区,并在前面放置一个操作系统可以识别的小 FAT 分区,并带有一个解释性测试文件。用户需要能够更换卡,因此我需要在我的 PC 应用程序中自动执行分区和格式化过程。
原始访问可以通过调用CreateFile("\\\\.\\PhysicalDisk3")
和类似路径实现,这可以在可移动磁盘上完成,无需管理员权限。尽管如此,这是我不想自己编写的代码。并且仍然必须告知操作系统在更改后重新扫描卷。
是否有 API 内置于 Windows 或第三方开源框架的一部分,用于对 SD 卡进行分区,而无需直接按位访问分区表?如果没有,我应该如何在更改分区后让 Windows 重新扫描卷?我更喜欢适用于 XP 和更新版本的方法。
winapi - 在 Windows 上获取卷的大小
我正在编写一个库来提取有关 Windows 系统(XP 或更高版本)上的物理磁盘、分区和卷的信息。
我正在尝试获取卷的容量。以下是我所知道的方法以及每种方法失败的原因:
GetDiskFreeSpaceEx
-- 受用户配额影响。IOCTL_DISK_GET_DRIVE_GEOMETRY_EX
-- 获取整个物理磁盘的大小,即使使用卷句柄调用也是如此。IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
-- 不考虑 RAID 开销。IOCTL_DISK_GET_LENGTH_INFO
-- 访问被拒绝而失败。(实际上,GENERIC_READ
与所有其他查询不同,它需要访问权限,并且GENERIC_READ
需要管理员访问权限。)IOCTL_STORAGE_READ_CAPACITY
-- 在 XP 上不可用,也共享 和 的IOCTL_DISK_GET_LENGTH_INFO
缺点IOCTL_DISK_GET_DRIVE_GEOMETRY_EX
FSCTL_GET_VOLUME_BITMAP
+GetFreeDiskSpace
表示集群大小——需要GENERIC_READ
(管理员访问权限)并给出文件系统数据区域的大小,而不是整个卷。IOCTL_DISK_GET_PARTITION_INFO
-- 需要GENERIC_READ
(管理员访问权限)并且在 USB 连接的磁盘上也失败(可能使用超级软盘分区)
奇怪的是,簇的数量 fromFSCTL_GET_VOLUME_BITMAP
和 WMI 的CIM_LogicalDisk.Size
属性一致,并且都比 from 的值小 4096 字节IOCTL_DISK_GET_LENGTH_INFO
。
获得卷容量的正确方法是什么?由于所有其他查询都无需管理员访问权限即可工作,因此我也在为此寻找最低权限的解决方案。
vbscript - 如何通过 Vbscript 克隆 Hyper V 2012 的 VHD?
我正在尝试使用 wim image 和 diskpart 命令克隆 Hyper V 2012 的 VHD 文件。我面临一个问题,因为 Hyper V 2012 的 VHD 包含 2 个分区。一个用于系统保留,第二个用于数据。我正在创建数据分区的 wim 映像并将此映像部署到新的 vhd 文件,但是当我尝试启动这个新的 vhd bootmgr 时发生丢失错误。如何将系统保留分区复制到相同的新 vhd 并使其工作?或者有任何其他方法可以使这个新的 VHD 工作。
perl - 用于图像和分区的 perl 脚本比 rsync 更快,它产生双向差异
sysadmin1138和Martin报告了在块设备(分区)上工作的rsync 的替代品。它基于 perl,但我想存储双向差异。
它将块设备中的更改应用于预先存在的过时备份映像。这是第二个最好的方法,在我没有使用的lvmsync之后,因为我的块设备不在 lvm 中。
但我也想单独收集更改,以便能够重新生成以前的备份映像(例如,恢复已删除的文件)。
当 rsync 替换运行时,以下代码确实收集了这些更改:
$rev
被初始化为长度为 1024 的标量字符串(我不知道如何使它变得更好)。
没有格式化和更多or die
,这是:
要应用前向或后向差异,我可以使用:
所以我成功地回答了这篇文章的第一个版本。这是在 200k 的示例上进行了一些修改的测试。
我对此代码有具体问题。
为什么使用原始示例read ARGV
,这是不好的做法吗?
我放了很多or die $!
,这是明智的还是只是破坏了可读性?
PREVIOUS
并且STDOUT
同一个文件是否打开了两次(以避免seek STDOUT,-1024,1
),这是否被认为是好的做法?
[从programmers.so手动迁移的问题]
amazon-ec2 - unable to resize root partition on EC2 centos
i created my EC2 Machine using Community Image of Centos 6.3 x64. i have added a 35 GB disk. Now when i do #df -h
my disk is 35GB but its showing 8 GB in root and 7 as tmpfs.
i tried to use resize2fs but it didnt work on centos. disk has ext4 partation..
or even if i tried resize2fs /dev/xvda1 it says device has nothing to do.
any idea or other way, its my root disk(/). so cant unmount it.
google-compute-engine - 如何在 Google Compute Engine 上获得更大的启动盘
默认图像有 10GB,但我需要更多(大约 30GB)。如果我使用其中一个默认映像创建 30GB 的磁盘,则可用空间为 10GB,而不是 30GB。我知道我可以使用 debootstrap 之类的工具安装发行版,但这似乎不必要地复杂。还有其他方法吗?
windows - 获取启动分区驱动器名称
我需要从 bat 脚本中获取引导分区的DRIVE NAME 。
我得到的引导分区号reagentc.exe /info
如下:
Windows RE location: \\?\GLOBALROOT\device\harddisk0\partition1\Recovery\WindowsRE
但我需要驱动器名称。怎么能从蝙蝠身上找回来?
windows - 如何通过 WMI 从扩展分区中获取所有未分配的空间?
我试图在磁盘上获取所有未分配的空间(作为 <offset,size> 对的列表)。一切都很好,只要磁盘上没有任何扩展分区 - 我只是列出Win32_DiskPartition
与选定的相关联的 sWin32_DiskDrive
并分析它们的偏移量和大小以找到它们之间的差距。
但是,如果有一个扩展分区,事情就会变得复杂——它就像一个黑盒子,内部分区不在与 my Win32_DiskDrive
. 我尝试列出扩展分区的关联对象,但没有“内部”Win32_DiskPartition
链接到扩展分区,只有Win32_LogicalDisk
s,但它们没有给我任何关于分区实际几何形状的信息
它尝试为此目的使用 diskpart,但它将所有分区大小四舍五入为 GB,我需要它们准确无误。它还依赖于语言环境,这使得它很难解析输出(我的应用程序需要尽可能独立于语言环境)
perl - 如何在 Perl 中使用文件作为读取另一个文件的负掩码?
我只想从原始分区映像 (EXT4) 的可用空间中提取垃圾数据。所以我有了这个想法,将可用空间归零,然后将结果用作掩码。
我有包含数据和可用空间的原始分区映像(14GB)以及相同的原始分区映像,可用空间为零。
我想在 Perl 中对这两个文件进行以下操作,对于它们的每个字节,为了获得处理后的原始分区图像,将只包含来自空闲空间的垃圾数据。
对于每个字节:RPM & !RPMz => RPMp
有人可以用 Perl 脚本或起点帮助我吗?
linux - 如何检查磁盘的分区以在 Linux 中的脚本中使用?
我正在为 Linux 系统编写 Bash 脚本。如何以稳健的方式检查磁盘的分区?
我可以使用grep
,awk
或sed
来解析 , 等的输出fdisk
,sfdisk
但这似乎不是一门精确的科学。
我还可以检查 中是否有分区/dev
,但也有可能分区存在并且尚未被探测(partprobe
例如,通过 )。
你会推荐什么?