如何正确拔出(移除)和稍后插入(插入)带有 LVM2 的可移动(热插拔、USB 等)存储设备?
我找到了这个笔记
移除(拔下、弹出):
lvchange -an /dev/your_volume_group_name
vgexport -a
Run Code Online (Sandbox Code Playgroud)
插入(插头):
vgimport -a
lvchange -ay /dev/your_volume_group_name
Run Code Online (Sandbox Code Playgroud)
但我不确定使用“全部”选项-a是否过大?
另一件事,我想知道在某些情况下是否需要vgscan pvscan在这种情况下使用?我正在考虑自动化解决方案。
最近看到一个问题,引发了这个想法。无法在这里或通过 Google 机器真正找到答案。基本上,我很想知道内核 I/O 架构是如何分层的。例如,是kjournald派遣到pdflush还是相反?我的假设是pdflush(对于大容量存储 I/O 更通用)将位于较低级别并触发 SCSI/ATA/实际执行写入所需的任何命令,并kjournald在写入之前处理更高级别的文件系统数据结构。不过,我也可以反过来看,kjournald直接与文件系统数据结构和pdflush时不时醒来,通过以下方式将脏页缓存页面写入设备kjournald. 也有可能由于其他原因,两者根本不互动。
基本上:我需要某种方式来可视化(图形或只是解释)用于将 I/O 分派到 Linux 内核中的大容量存储的基本架构。
我将数千个文件复制到 exFAT MicroSD 卡中。
文件数和字节数相同,但如何知道数据是否损坏?
如果 JackPal Android 终端也支持该命令就好了。
我有一个 Godaddy 专用服务器,我想取消它。在我这样做之前,我想在服务器上做一个干净的格式,以确保下一个获得服务器的人无法取消删除任何东西(我不知道 Godaddy 在重新格式化之前有多彻底将磁盘交给其他人。)
我当然没有对机器的物理访问权限,所以无论我做什么我都必须通过 ssh 来做。我真的不确定我能做什么。
我将外置硬盘插入我的笔记本电脑。我尝试通过以下方式找出信息
$ udevadm info -a -n /dev/sdb
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host10/target10:0:0/10:0:0:0/block/sdb':
KERNEL=="sdb"
SUBSYSTEM=="block"
DRIVER==""
ATTR{range}=="16"
ATTR{ext_range}=="256"
ATTR{removable}=="0"
ATTR{ro}=="0"
ATTR{size}=="312581808"
ATTR{alignment_offset}=="0"
ATTR{discard_alignment}=="0"
ATTR{capability}=="50"
ATTR{stat}==" 322 11207 …Run Code Online (Sandbox Code Playgroud) 我有一个存储大量数据的服务器,我保留了许多嵌套目录,其中包含数百万个文件。
在尝试将一个大目录 (~700GB) 从一个磁盘移动到另一个磁盘时,我收到一个错误:
mv /media/storage3/dir /media/storage4/
"No space left on device"
Run Code Online (Sandbox Code Playgroud)
此外,尝试在磁盘上创建一个小的 txt 文件不起作用:
Error opening file '/media/storage4/Untitled Document': No space left on device
Run Code Online (Sandbox Code Playgroud)
我在网上查了很多选项,都没有用。
df -h 输出:
Filesystem Size Used Avail Use% Mounted on
/dev/sdg7 77G 9.2G 64G 13% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 32G 4.0K 32G 1% /dev
tmpfs 6.3G 1.4M 6.3G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 32G 76K 32G 1% /run/shm
none 100M 48K 100M 1% /run/user
/dev/sdg6 19G …Run Code Online (Sandbox Code Playgroud) 我试图理解这些东西。我有一台80G存储的机器。它看起来像这样:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 7.1G 43G 15% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 1.4M 3.9G 1% /dev/shm
tmpfs 3.9G 409M 3.5G 11% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 494M 125M 370M 26% /boot
/dev/mapper/centos-home 26G 23G 3.5G 87% /home
tmpfs 782M 0 782M 0% /run/user/0
Run Code Online (Sandbox Code Playgroud)
现在,从我读到的 tmpfs 不占用物理存储,而是使用机器的虚拟内存。这是正确的吗?它是否以任何方式影响物理存储?
是否存在将 tmpfs 写入物理存储的现实?接下来,所有已安装的(/dev/sda1、/dev/sda1 等...)目录是否共享 tmpfs?或者他们每个人都会得到不同的?
另外,我尝试调整 tmpfs 的大小。我做了:
mount -o remount,size=1G /dev/shm
Run Code Online (Sandbox Code Playgroud)
重新启动后,它又回到了原来的大小。我像这样更改了 /etc/fstab:
tmpfs /dev/shm tmpfs defaults,size=1G
Run Code Online (Sandbox Code Playgroud)
进而:
mount -o …Run Code Online (Sandbox Code Playgroud) 如何用零清除未使用的空间?(我要求用于btrfs文件系统的工具)
我正在寻找比它更聪明的东西
cat /dev/zero > /mnt/X/big_zero ; sync; rm /mnt/X/big_zero
Run Code Online (Sandbox Code Playgroud)
就像FSArchiver正在寻找“已用空间”并忽略未使用但相反的站点。
目的:我想压缩分区图像,因此强烈建议用零填充未使用的空间。
顺便提一句。对于 ext3,ext4 :用零 (ext3,ext4) 清除未使用的空间。我在这里要求 btrfs
澄清“更智能的算法”:我看到“更智能的算法”会导致混淆,在这里我终于决定添加一行。亲爱的读者,请将文件系统视为数据结构。为简单起见,让我们想象一下自平衡红黑树持有映射,用作关联键->值数组,其中值是整数。目标是用零清除所有负值。“不智能”算法将迭代它并将键:值对添加到新映射(最终将负值更改为零)。智能算法只会检测存储负值的位置并就地清除它们。
如何安全可靠地恢复使用或完成的将文件复制$A到备份位置的过程?$Bpv "$A" > "$B"cat "$A" > "$B"
(假设文件$A很大,例如 LVM2 快照文件)
它可以实现dd吗?
首选:bash 或 python(最好是 python3)解决方案。
示例场景:pv "$A" > "$B"复制 90% 后中断。如何恢复它,以完成复制过程而不是再次重复整个工作?
我在我的 PC 上运行 Kubuntu 12.04。我想让我电脑上的一个 USB 端口看起来就像是其他设备的 USB 大容量存储设备。换句话说,连接到这个 USB 端口的东西会认为我的整个 PC 只是一个外部硬盘驱动器或媒体播放器或其他一些 USB 大容量存储设备。这可能吗?如果是这样,我该怎么做?