"BTRFS를 사용한 Debian 12 Bookworm 최소 설치"작성자: JustAGuy Linux 시간: 8:28SSD 옵션을 설정했는데,
mount -o ... ssd ...
옵션은 무엇입니까 ssd
? 언제 사용해야 하고 언제 사용해서는 안 됩니까? 에 문서화된 것을 보지 못했지만 man mount
온라인에서 찾았습니다.https://btrfs.readthedocs.io/en/latest/btrfs-man5.html
그것은 말한다,
4.14부터 블록 레이아웃 최적화가 제거되었습니다. 이는 1세대 SSD 장치를 지원하는 데 사용되었습니다. FTL(Flash Translation Layer)은 잘 작동하지 않으며 최적화는 블록을 더 잘 정렬하여 마모를 개선하는 것을 목표로 합니다. 최신 SSD 장치에서는 더 이상 그렇지 않으며 최적화로 인한 실질적인 이점이 없습니다. 게다가 조각화도 증가합니다.ssd_spread 옵션의 레이아웃 조정은 변경되지 않습니다.
"블록 레이아웃 최적화" 없이 SSD 옵션이 "SSD 할당 체계 제어"를 위해 또 무엇을 할 수 있습니까?
답변1
Linux 6.5-rc3에서는 SSD 옵션이 세 번만 언급됩니다.
존재하다fetch_cluster_info
, SSD 옵션은 더 큰 클러스터를 할당합니다.
if (space_info->flags & BTRFS_BLOCK_GROUP_METADATA) {
ret = &fs_info->meta_alloc_cluster;
if (btrfs_test_opt(fs_info, SSD))
*empty_cluster = SZ_2M;
else
*empty_cluster = SZ_64K;
} else if ((space_info->flags & BTRFS_BLOCK_GROUP_DATA) &&
btrfs_test_opt(fs_info, SSD_SPREAD)) {
*empty_cluster = SZ_2M;
ret = &fs_info->data_alloc_cluster;
}
존재하다btrfs_find_space_cluster
, SSD 옵션은 조각화를 허용하지 않습니다.
/*
* Choose the minimum extent size we'll require for this
* cluster. For SSD_SPREAD, don't allow any fragmentation.
* For metadata, allow allocates with smaller extents. For
* data, keep it dense.
*/
if (btrfs_test_opt(fs_info, SSD_SPREAD)) {
cont1_bytes = bytes + empty_size;
min_bytes = cont1_bytes;
} else if (block_group->flags & BTRFS_BLOCK_GROUP_METADATA) {
cont1_bytes = bytes;
min_bytes = fs_info->sectorsize;
} else {
cont1_bytes = max(bytes, (bytes + empty_size) >> 2);
min_bytes = fs_info->sectorsize;
}
존재하다btrfs_sync_log
:
/* when we're on an ssd, just kick the log commit out */
if (!btrfs_test_opt(fs_info, SSD) &&
test_bit(BTRFS_ROOT_MULTI_LOG_TASKS, &root->state)) {
mutex_unlock(&root->log_mutex);
schedule_timeout_uninterruptible(1);
mutex_lock(&root->log_mutex);
}
참고로 이 질문은2020년 3월 26일 메일링 리스트에 한 번 나타났습니다..