V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  codehz  ›  全部回复第 42 页 / 共 133 页
回复总数  2660
1 ... 38  39  40  41  42  43  44  45  46  47 ... 133  
2022-07-27 21:58:50 +08:00
回复了 monetto 创建的主题 Linux 备份 Ext4 分区的正确姿势
@pagxir 要不你解释下 /sys/block/<块设备名字>/queue/read_ahead_kb 这个是放着干啥的(
另外这有一份解释 VFS 和块设备的 ppt
http://devarea.com/wp-content/uploads/2017/10/Linux-VFS-and-Block.pdf
这是 linux readahead 实现的相关代码
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/mm/readahead.c
以及 backing-dev.c filemap.c 等文件里( filemap 和 filesystem 毫无关联),搜索 ra_pages 就可以找到不少相关实现
除了同名系统调用的实现是在通知 vfs 之外(总不能让用户程序自己算文件在磁盘上的位置吧,所以这部分计算得委托给 vfs 实现),其他部分均与 vfs 无关,readahead 操作就是在块设备层面实现的
你定义里的裸磁盘也就是块设备,当然也会用到这里的 readahead 能力
2022-07-27 21:06:28 +08:00
回复了 monetto 创建的主题 Linux 备份 Ext4 分区的正确姿势
@documentzhangx66 很抱歉,dd 也只是单纯的用 open + read + seek + write 这四个 api 在做文件操作,除了 iflag 可以多指定一些打开参数之外,没有任何魔法 https://github.com/coreutils/coreutils/blob/master/src/dd.c 除了成片的参数解析代码之外,根本没有你所说的磁盘格式,分区,权限的处理(当然,还是有别的操作的,比如可以做编码转换,但是我相信你不会在备份的时候考虑这个吧),
我相信你肯定会读代码的吧
但是如果不会,可以考虑挂一个 strace 跟踪下到底运行了哪些系统调用,我这帮你列出来好了(除去周围 glibc 的调用,命令是 dd if=/dev/sda of=/tmp/x bs=512 count=1

openat(AT_FDCWD, "/dev/sda", O_RDONLY) = 3
dup2(3, 0) = 0
close(3) = 0
lseek(0, 0, SEEK_CUR) = 0
openat(AT_FDCWD, "/tmp/x", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
dup2(3, 1) = 1
close(3) = 0
read(0, "3\300\216\320\274\0|\216\300\216\330\276\0|\277\0\6\271\0\2\374\363\244Ph\34\6\313\373\271\4\0"..., 512) = 512
write(1, "3\300\216\320\274\0|\216\300\216\330\276\0|\277\0\6\271\0\2\374\363\244Ph\34\6\313\373\271\4\0"..., 512) = 512
close(0) = 0
close(1) = 0

你总不能说 dd 用了神奇的魔法,它既能在源代码中隐藏,也能在 strace 跟踪的时候消失,然后做你所说的那些操作吧)
2022-07-27 18:04:08 +08:00
回复了 monetto 创建的主题 Linux 备份 Ext4 分区的正确姿势
@pagxir 此外 5.14 内核已经彻底移除裸设备功能,有需要的只能通过 O_DIRECT 参数打开块设备
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git/commit/?h=char-misc-next&id=603e4922f1c81fc2ed3a87b4f91a8d3aafc7e093
2022-07-27 18:00:49 +08:00
回复了 monetto 创建的主题 Linux 备份 Ext4 分区的正确姿势
2022-07-27 17:54:33 +08:00
回复了 monetto 创建的主题 Linux 备份 Ext4 分区的正确姿势
@pagxir (建议复习 linux 基本知识,块设备和裸设备不是一个概念,而且磁盘必然是块设备,裸设备(实际属于字符设备)要手动绑定到块设备上才可以使用(裸设备和分区与否没有任何关系,如果有,一定是有人把 raw disk 翻译成裸设备了)可以参考部分发行版提供的 raw 命令的相关说明
预读显然也是块设备提供的基本功能(不妨看下 blockdev 命令),还有 page cache 也是,你甚至可以直接对块设备进行 mmap 操作
2022-07-27 17:26:58 +08:00
回复了 monetto 创建的主题 Linux 备份 Ext4 分区的正确姿势
@pagxir 哦,想起来了,你是在混淆裸设备和块设备,但是这里备份的是块设备,特别考虑的分区的话肯定不能是裸的)
2022-07-27 17:20:08 +08:00
回复了 monetto 创建的主题 Linux 备份 Ext4 分区的正确姿势
@pagxir 楼上不是都没参数的吗?我说 “这个用法” 有错吗?
此外块设备怎么就没预读了,你是不是自己运行了 blockdev --setra 0 /dev/sda 然后忘记了?
2022-07-27 17:06:53 +08:00
回复了 monetto 创建的主题 Linux 备份 Ext4 分区的正确姿势
@pagxir 谁和你说 dd 会增加缓存的??相反,你必须在 dd 中指定 iflag=direct 才可以“绕过”页面缓存(同时 bypass 预读),而多数程序实现的读取都不会用 direct io (因为很多文件系统根本不支持,加上通常只会减速,只有数据库这种特殊用例才会主动开选项去用 direct io ,普通程序自然也不会无故增加这种无聊的选项)
而且,如果你不加任何选项,dd 会使用非常小的块作为单位( 512 字节)进行读取,这显然多数情况都不是最优解(虽然影响也不是很大,只是会增加系统调用频率)
2022-07-27 16:26:51 +08:00
回复了 monetto 创建的主题 Linux 备份 Ext4 分区的正确姿势
@shijingshijing dd 又不会自动提权,gzip 也不会自己降低权限( dd 的这个用法根本毫无价值)
2022-07-27 15:58:06 +08:00
回复了 monetto 创建的主题 Linux 备份 Ext4 分区的正确姿势
所以为啥楼上非得加 dd ,直接 gzip -c /dev/sda1 > xxx.tar.gz 不就好了(
此外 ext4 并没有奇怪的特性导致需要真的全盘备份才能保持,所以可以按文件备份,直接 tar gz 的形式就不错
但是 tar 格式本身其实不太友好——特别是没法随机访问文件,所以可以换个文件系统,例如 squashfs (但是这个压缩比较慢),或者比较新且性能不错的 https://github.com/mhx/dwarfs 这类
2022-07-27 11:26:59 +08:00
回复了 bthulu 创建的主题 JavaScript class 里的继承方法改写, 要不要加 override?
@sjhhjx0122 typescript 也不是 javascript 啊(
ts 用 noImplicitOverride 就可以强制覆盖用 override
2022-07-27 11:00:02 +08:00
回复了 bthulu 创建的主题 JavaScript class 里的继承方法改写, 要不要加 override?
js 啥时候支持 override 关键词了?
2022-07-26 17:47:39 +08:00
回复了 hi20151215x 创建的主题 程序员 求助一下关于 react 更新 list 的一个疑问。
咦 ,
const [content, setContent] = useState()
const [size, setSize] = useState()
useEffect(()=>{
setContent(props.content)
setSize(props.size)
},[content,size])
这是在干啥
用内部的 state 作为 effect 的 deps 参数吗,那肯定不会更新啊(另外推荐开 eslint
直接在 jsx 里用 props 上的属性就可以了
2022-07-26 16:05:18 +08:00
回复了 hi20151215x 创建的主题 程序员 求助一下关于 react 更新 list 的一个疑问。
(你不会直接原地 push 到数组的吧
2022-07-25 13:06:40 +08:00
回复了 LuckyPocketWatch 创建的主题 C++ C++中的数组寻址,是线性时间还是固定时间
首先先明确一点,复杂度不反映实际情况,它也没必要反映现实,就像你做经典物理题目不应该考虑相对论。
复杂度显然是在抽象机器的模型上的描述,而且不同场景下抽象机器也可以完全不同,所以讨论复杂度的时候,显然要把采用的模型先作为共识,不然只能是鸡同鸭讲,结果自然没有任何意义。
讨论到寻址这一层的时候,自然要选取一个让结果不是常数的机器模型。但是这并不代表在讨论排序算法的时候,也需要用这样的机器模型,这是两件完全不同的事情,关注点根本不一样。
2022-07-20 11:13:49 +08:00
回复了 pytth 创建的主题 Python Python 实现这种跟随窗口移动的效果还有什么办法?
( win32 的话,其实还有更 cursed 的方法:把目标窗口嵌入到自己窗口里,然后自己处理窗口事件,这样还能支持最大化(
2022-07-19 17:49:20 +08:00
回复了 xjchenhao 创建的主题 分享发现 5G 移动和 4G 电信的差距就这么点?
测速本来就很消耗流量,而且速度越快消耗越多
2022-07-19 15:48:11 +08:00
回复了 bthulu 创建的主题 程序员 typescript 中声明一个类型, 是用 Interface 还是 Type 呢?
interface 可以多次合并,这种放在诸如 dom api 这种可能有多个不同声明文件的就非常合适(
但是 type 可以用 union 类型和 intersection 类型等高级类型,这个 interface 做不了(而且也不能“继承”这样的高级类型)
2022-07-19 12:51:32 +08:00
回复了 cwcc 创建的主题 宽带症候群 如何让两台设备在不同的局域网内互相寻找到对方
允许广播的话就发广播包)
不允许的话就扫描网段,自己找个特征端口做识别就好了)
2022-07-16 10:25:41 +08:00
回复了 xiaoyureed 创建的主题 Java 代码生成
我记得 gradle 可以指定源码读取的位置( maven 也可以)不需要手动复制)
1 ... 38  39  40  41  42  43  44  45  46  47 ... 133  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2929 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 03:12 · PVG 11:12 · LAX 19:12 · JFK 22:12
Developed with CodeLauncher
♥ Do have faith in what you're doing.