-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathstorage.txt
98 lines (75 loc) · 6.95 KB
/
storage.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# 存储硬件 or 存储产品相关
# storage hardware or production related
1、 NoF(NVMe over Fabrics)的实现中和本地NVMe访问有哪些区别
(tips: 从如下几点来分析
(1) 设备的识别,本地盘通过总线系统和完成,而NoF则需要NVMe Qualified Name即NQN来识别
(2) 设备的发现,本地盘通过总线通知,而NoF需要一种协议模式来发现和连接,有点像TCP
(3) 存储命令的排队模型,本地盘直接使用基于内存的Queue,但是NoF则需要一个Message-based的排队系统
(4) 数据传输方面,本地盘直接使用PCIe协议中的Physical Region Page,而NoF需要Scatter-Gather List的支持)
2、SATA3.0 的最大传输速度为6G,但是SAS3.0支持12G,如果直接在SAS口上链接SATA盘,会有带宽浪费的问题
所以在SCSI协议层支持多路复用,最大化带宽利用
3、当前的深度归档实现的思想在20年前就有了,即MAID(Massive Arrays of idle disk),实现的难点在于
调度
4、怎么应对磁盘盘符漂移
(tips:使用e2label程序为某个盘写入label,然后在挂载时,按照label挂载;如果要
自动挂载,则将这些信息写入/etc/fstab文件中;
另,同样可以使用by UUID的方式来)
5、ext2 ext3 ext4的super block中有字段 s_volume_name 用来保存设置的label,最长16个字节
6、当前的FaultTolerant部署模式为啥不采用Active-Active的模式?
7、SSD的Read Disturb问题
(tips:SSD由于其自身电器属性,在读取一个paeg时,会影响其他page上的数据,有可能造成bit 翻转等错误
解决方法是从硬件层面引入类似RAID方法来在错误出现时纠错
另一方变是引入统计信息,统计某一个page或者block的读次数,到达上限后,进行回收)
8、https://ma.ttias.be/change-reserved-blocks-ext3-ext4-filesystem-linux 根据这里的描述,对于
当前越来越大的磁盘来讲,5%的预留空间太大了,可以考虑调小
可以继续看下动态调整的影响面
9、机械硬盘的磁头旋转角速度固定,单位时间内,可以读取的外道长度较长,读取速度更快;
早期生产商将外道的磁密度降低来平衡这种差异。
但是上述做法的一个缺陷是浪费了磁盘track空间(外圈的sector数量和内圈保持一致)。
ZBR(Zone Bit Recording)将单位角度内,具有相同数量sector的track组成一个zone,这样外圈的磁密度和内圈保持一致,
这样做的效果就是数据存储在外圈访问速度高。
10、磁盘中可能有多个碟片,但是有一个碟片的一个面是不能保存数据的,生产商用这一面来存储一些硬件信息。
例如有两个碟片的磁盘,那么可以用作数据存储只有三个面。
11、从2010年起,IDEMA组织完成了 Advanced Format标准的制定,磁盘的physical sector size值扩大到4096 bytes,即4K
用 hdparm -I /dev/sda 也能查看这一信息
使用了上述标准的磁盘,数据读写的最小单位为4K,即小于4K的,写入时,需要考虑Read-Modify-Write带来的放大
fdisk -l /dev/sda 可以看到一个logical/phsical sector size 的输出,这些内容实际上也是读取的磁盘上的数据
在scsi驱动代码中可以看到 blk_queue_logical_block_size -> read_capacity_16 进而发送SAI_READ_CAPACITY_16的
scsi命令给磁盘,获取 logical_block_size 和 physical_block_size,这两个值怎么理解呢,logical表示磁盘当前可以
寻址的最小单位,而physical则表示真实的可以操作数据的最小单位,其他导出的信息还有minimum_io_size
业界之所以选择4KB sector主要有以下几点考虑
(1)大容量磁盘背景下,sector越多元数据越多,管理越复杂
(2)上层业务使用的文件size也变得越来越大
(3)4KB的sector可以应用更加高效的数据检测与恢复算法
12、hdparm -I /dev/sda 的输出中 IORDY 表示一种硬件层面的流控策略,如果不使用,那么在 fast PIO模式下,可能会有
数据损坏。
13、可以通过命令 dd if=/dev/sda of=/root/mymbr bs=512 count=1 <Enter> 来获取磁盘中第一个sector的数据,
里面保存有MBR信息,使用 file /root/mymbr 命令可以查看
14、MBR 格式的partition table占用64字节,每个partition table entry 占用16字节,所以一个磁盘只能划分出4个parimary partition
如果要划分多余4个分区,则需要将一个parimary partition格式化为extended partition,然后在这个扩展分区中再划分出
多个逻辑分区,且只有逻辑分区可以读写文件
15、因为MBR格式中,partition table entry中记录sector数量的是一个4bytes整数,即32bits,那么一个partition最大
512 * 2^32 = 512GB,如果有4个partition,那么磁盘最大容量为2TB。
所以在当前大容量磁盘广泛使用的今天,MBR格式不再使用,取而代之的是GPT(GUID Partition table)
16、关于块大小的选择,业界有个1%的阈值,即块寻址的时间占整个写入时间的1%;如果块切分的比较小,那么对应的meta数据多,
查询空闲块的时间消耗大,如果块很大,则又有内碎片问题
当前磁盘的寻址时间普遍在 10ms左右,那么以100MB的速度写入的话,可能的最优块大小即为100M,再考虑2的次方对齐,即
128MB
17、hot spare disk(热备盘)在RAID组中个别盘不可服务时,可以快速替换出问题的盘,保证业务连续性
18、PMR 和 CMR含义相同,都表示传统的垂直记录磁盘,特点是磁道与磁道独自;但是磁盘写入时需要的磁场强度高于读取,所以
一般情况下写磁头的宽度要大于读磁头,而SMR就刚好利用了这一特点,将相隔的两个磁道进行物理上的重叠,
这样在相同磁盘尺寸的情况下,可以存储更多的数据
19、在数据中心成本计算中,设备(包括存储设置)占用的机架空间也需要考虑
20、在文章《Flash Reliability in Production: The Expected and the Unexpected》中,作者提出了如下几个观点
(1)SLC的可靠性并不比MLC高
(2)RBER比UBER能更好的预测错误
(3)RBER和UE(uncorrectable errors)的数量会随着PE的增长而增长
RBER(Raw Bit Error Rate)
UBER(Uncorrectable Bit Error Rate)
21、影响SSD可靠性的因素有如下几个
(1)耐久性,随着SSD PE(program/erase)次数的增加,整个盘的持久性会降低
(2)Data Retention,即数据保持能力,如果发生电荷泄漏,那么就会导致Read Error
(3)Data disturb,目标cell读取多次后,再次读取时,需要对临近的cell同步施加一个电压,
但这会造成电荷泄漏,导致Read Fail
22、在使用 smartctl 查询不到对应nvme设备的 smart-log 后,可以尝试使用 sudo nvme smart-log /dev/nvme 查看
23、当前3D TLC是企业级固态存储的主要介质选择