参考:下面的问题 驱动器名称?“/dev/sda”的“sda”部分的正确术语是什么?
鉴于:
我想要做什么:我希望能够以编程方式(如果可能的话,在 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,然后提取最后一个斜杠后的前两个字母。。。
我的一个朋友用我的 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 …
我有兴趣在我的 Debian 机器上安装任何新卷时运行 rsync 脚本。侦听新卷挂载的潜在触发因素/策略有哪些?
任何人都可以为我提供以下命令的任何测试用例:
blockdev --setbsz BYTES设置/更改块大小。
我试过如下,但没有运气。
$ blockdev --setbsz 2048 /dev/sda5
blockdev: 2048: No such file or directory
Run Code Online (Sandbox Code Playgroud) 我正在研究如何虚拟安装 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?
我需要从命令行 列出分区类型 GUID 。
注意:这与分区 UUID 不同。
基本上我需要搜索具有 Ceph OSD 类型 GUID 的所有磁盘:
4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D
Run Code Online (Sandbox Code Playgroud)
目的是在 CoreOS 上的 bash 脚本中模拟使用 ceph-disk (python) 完成的一些操作。为什么?这样我就可以使用 ceph-docker 自动将它们安装到适当的位置。
突然,我的分区出现了问题,或者只是一个分区。我有一个默认的 Ubuntu 安装,在金士顿 SSD 上,根文件系统用 LUKS 加密,(我认为使用 AES)。现在我正在尝试从 live cd 挂载分区,但没有运气。
我很害怕造成一些无法挽回的额外伤害。所以我想制作驱动器的精确副本。这意味着所有分区表,LUKS 分区的任何类型的元数据,以及我不知道的任何其他类型的元数据。我想我也希望所有的空块都绝对安全。
我知道dd if=/dev/sda of=/dev/sdb,但我不知道它是否会包含所描述的所有数据。
也许我需要用 指定块大小-b,但我不明白它是如何工作的以及为什么它是必要的(如果是的话)。而且我也不知道如何找到分区的块大小。
请告诉我它是否确实复制了所有数据,如果没有,是否还有其他方法。
Linux 内核对存储设备的简单命名(例如 /dev/sda、/dev/sdb)可以在启动时随机更改。NVMe 存储设备也是如此吗?这些名称有 /dev/nvme0n1p1 和 /dev/nvme0n1p2 等。
设备块大小通常为 512 字节,而文件系统块大小通常为 4096 字节。他们为什么不同?为什么 512B 和 4KB 是设备和文件系统块大小的不错选择?什么块大小最适合缓存用户空间库中的磁盘读取?
block-device ×10
devices ×2
linux ×2
mount ×2
bash ×1
cache ×1
command-line ×1
dd ×1
debian ×1
disk ×1
filesystems ×1
gpt ×1
iso ×1
loop-device ×1
storage ×1
usb-device ×1