标签: block-device

如何以编程方式确定根分区的设备名称/基本名称?

参考:下面的问题 驱动器名称?“/dev/sda”的“sda”部分的正确术语是什么?

鉴于:

  1. 我有一个系统(在本例中是 Raspberry Pi,但这可能与任何 'nix 系统相关。)
  2. 它正在运行一个 Linux 版本,并且可以假设所有正常的 Linux 命令都可以工作。
  3. 启动设备可以是 SD 卡或 USB 连接存储设备。
  4. 如果从连接的存储设备启动,则设备“基本名称”为 sd(x)
  5. 如果从 SD 卡启动,设备“basename”将变为类似“mm(xxxx)”

我想要做什么:我希望能够以编程方式(如果可能的话,在 shell 脚本中)启动它的设备类型,并根据启动设备更改某些特征。

简单的例子:

Boot device = "mmxxxxx"
   Print "Booted from SD card!"
Boot device = "sda"
   Print "Booted from Attached Storage!"
Run Code Online (Sandbox Code Playgroud)

我想要做的是提取(为了需要一个更好的术语)根分区派生的主要设备类型(即 sd”、“mm”或其他任何内容,具体取决于作为根安装的设备分割。)

我怀疑我可以以某种方式列出安装在 root 上的设备,而不列出 中的所有内容mount,然后提取最后一个斜杠后的前两个字母。。。

linux block-device root-filesystem usb-device

8
推荐指数
2
解决办法
1159
查看次数

GUID 分区表存储在设备上的什么位置?

我的一个朋友用我的 U 盘在他的 mac 上安装了新版本的 OS X。现在我找回了它,我想擦除它(我自己使用 Linux)。但是,我在这样做时遇到了一些麻烦。我做的第一件事是向它写一个 Fedora LiveCD,使用dd

# dd if=Fedora.iso of=/dev/sdb
Run Code Online (Sandbox Code Playgroud)

我认为,这会覆盖位于设备开头的分区表,从而删除 OS X 安装程序创建的分区。但是,我错了,分区仍然存在。因此,我查看了GUID 分区表,并意识到它们不仅在设备的开头添加了标头,还在设备的末尾添加了标头。所以我做了:

$ sudo dd if=/dev/zero of=/dev/sdb
dd: writing to `/dev/sdb': No space left on device
15687681+0 records in
15687680+0 records out
8032092160 bytes (8.0 GB) copied, 1354.82 s, 5.9 MB/s
Run Code Online (Sandbox Code Playgroud)

在此之后,我从计算机中取出 USB 记忆棒并将其重新插入。blkid现在运行不会在设备上产生任何分区。但是,再次写入 Fedora 映像后,OS X 分区又回来了:

$ sudo blkid
/dev/sdb1: LABEL="Fedora-17-x86_64-Live-Desktop.is" TYPE="iso9660" 
/dev/sdb2: SEC_TYPE="msdos" LABEL="EFI" UUID="B368-CE08" TYPE="vfat" 
/dev/sdb3: UUID="f92ff3eb-0250-303f-8030-7d063e302ccf" LABEL="Fedora 17" TYPE="hfsplus"
Run Code Online (Sandbox Code Playgroud)

我怀疑这与上面维基百科页面中的Protective MBR …

block-device gpt

7
推荐指数
1
解决办法
5080
查看次数

挂载新卷时运行 shell 脚本

我有兴趣在我的 Debian 机器上安装任何新卷时运行 rsync 脚本。侦听新卷挂载的潜在触发因素/策略有哪些?

linux debian mount block-device

7
推荐指数
1
解决办法
3403
查看次数

7
推荐指数
1
解决办法
453
查看次数

如何使用 blockdev 命令设置块大小

任何人都可以为我提供以下命令的任何测试用例: blockdev --setbsz BYTES设置/更改块大小。

我试过如下,但没有运气。

$ blockdev --setbsz 2048 /dev/sda5
blockdev: 2048: No such file or directory
Run Code Online (Sandbox Code Playgroud)

block-device

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

使用 /dev/sr0 设备虚拟挂载 ISO

我正在研究如何虚拟安装 CD-ROM,我所能找到的只是使用循环设备进行安装。

mount -o loop disk1.iso /mount-point
Run Code Online (Sandbox Code Playgroud)

这相当容易。

我知道这/dev/sr0是一个块设备,它指向内核中的某个缓冲区,内核设备驱动程序将文件系统(不管它放了什么我不确定)放在那个缓冲区中,当我们使用mount它时,将文件系统挂载到指定的挂载点.

但是我想知道我们是否可以像在 Vmware 和 Virtualbox 中那样disk1.iso通过使用 SCSI CD-ROM 设备/dev/sr0(无需更改内核中的任何内容)来安装我们选择的 ISO(例如),我们可以在其中指定 ISO 并自动模拟光驱硬件和ISO可以用mount/dev/sr0设备吗?

我在这里看到的主要问题是如何/dev/sr0/链接到iso?

iso mount devices block-device loop-device

7
推荐指数
1
解决办法
2万
查看次数

从命令行列出所有磁盘的分区类型 GUID?

我需要从命令行 列出分区类型 GUID 。

注意:这与分区 UUID 不同。

基本上我需要搜索具有 Ceph OSD 类型 GUID 的所有磁盘:

4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D
Run Code Online (Sandbox Code Playgroud)

目的是在 CoreOS 上的 bash 脚本中模拟使用 ceph-disk (python) 完成的一些操作。为什么?这样我就可以使用 ceph-docker 自动将它们安装到适当的位置。

command-line bash block-device disk

7
推荐指数
2
解决办法
8034
查看次数

dd 是否复制所有内容,包括所有元数据和所有“空”块

突然,我的分区出现了问题,或者只是一个分区。我有一个默认的 Ubuntu 安装,在金士顿 SSD 上,根文件系统用 LUKS 加密,(我认为使用 AES)。现在我正在尝试从 live cd 挂载分区,但没有运气。

我很害怕造成一些无法挽回的额外伤害。所以我想制作驱动器的精确副本。这意味着所有分区表,LUKS 分区的任何类型的元数据,以及我不知道的任何其他类型的元数据。我想我也希望所有的空块都绝对安全。

我知道dd if=/dev/sda of=/dev/sdb,但我不知道它是否会包含所描述的所有数据。

也许我需要用 指定块大小-b,但我不明白它是如何工作的以及为什么它是必要的(如果是的话)。而且我也不知道如何找到分区的块大小。

请告诉我它是否确实复制了所有数据,如果没有,是否还有其他方法。

dd block-device

7
推荐指数
2
解决办法
7047
查看次数

NVMe 存储设备的持久设备命名

Linux 内核对存储设备的简单命名(例如 /dev/sda、/dev/sdb)可以在启动时随机更改。NVMe 存储设备也是如此吗?这些名称有 /dev/nvme0n1p1 和 /dev/nvme0n1p2 等。

storage devices block-device

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

Linux 上文件缓存的合适块大小是多少?

设备块大小通常为 512 字节,而文件系统块大小通常为 4096 字节。他们为什么不同?为什么 512B 和 4KB 是设备和文件系统块大小的不错选择?什么块大小最适合缓存用户空间库中的磁盘读取?

filesystems cache block-device

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