mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-07 14:15:18 +00:00
enable using a device for bluestore block db/wal
we reuse the 'journal_dev' parameter for bluestores block.db and add a new parameter 'wal_dev' for bluestores write ahead log if only journal_dev is given, use it for both db and wal Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
87eb0fc205
commit
8d64bd8c3b
@ -175,7 +175,12 @@ __PACKAGE__->register_method ({
|
|||||||
type => 'string',
|
type => 'string',
|
||||||
},
|
},
|
||||||
journal_dev => {
|
journal_dev => {
|
||||||
description => "Block device name for journal.",
|
description => "Block device name for journal (filestore) or block.db (bluestore).",
|
||||||
|
optional => 1,
|
||||||
|
type => 'string',
|
||||||
|
},
|
||||||
|
wal_dev => {
|
||||||
|
description => "Block device name for block.wal (bluestore only).",
|
||||||
optional => 1,
|
optional => 1,
|
||||||
type => 'string',
|
type => 'string',
|
||||||
},
|
},
|
||||||
@ -209,10 +214,23 @@ __PACKAGE__->register_method ({
|
|||||||
|
|
||||||
PVE::CephTools::setup_pve_symlinks();
|
PVE::CephTools::setup_pve_symlinks();
|
||||||
|
|
||||||
|
my $bluestore = $param->{bluestore} // 0;
|
||||||
|
|
||||||
my $journal_dev;
|
my $journal_dev;
|
||||||
|
my $wal_dev;
|
||||||
|
|
||||||
if ($param->{journal_dev} && ($param->{journal_dev} ne $param->{dev})) {
|
if ($param->{journal_dev} && ($param->{journal_dev} ne $param->{dev})) {
|
||||||
$journal_dev = PVE::Diskmanage::verify_blockdev_path($param->{journal_dev});
|
$journal_dev = PVE::Diskmanage::verify_blockdev_path($param->{journal_dev});
|
||||||
|
# if only journal is given, also put the wal there
|
||||||
|
$wal_dev = $journal_dev;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($param->{wal_dev} &&
|
||||||
|
($param->{wal_dev} ne $param->{dev}) &&
|
||||||
|
(!$param->{journal_dev} || $param->{wal_dev} ne $param->{journal_dev})) {
|
||||||
|
raise_param_exc({ 'wal_dev' => "can only be set with paramater 'bluestore'"})
|
||||||
|
if !$bluestore;
|
||||||
|
$wal_dev = PVE::Diskmanage::verify_blockdev_path($param->{wal_dev});
|
||||||
}
|
}
|
||||||
|
|
||||||
$param->{dev} = PVE::Diskmanage::verify_blockdev_path($param->{dev});
|
$param->{dev} = PVE::Diskmanage::verify_blockdev_path($param->{dev});
|
||||||
@ -255,20 +273,32 @@ __PACKAGE__->register_method ({
|
|||||||
my $cmd = ['ceph-disk', 'prepare', '--zap-disk',
|
my $cmd = ['ceph-disk', 'prepare', '--zap-disk',
|
||||||
'--cluster', $ccname, '--cluster-uuid', $fsid ];
|
'--cluster', $ccname, '--cluster-uuid', $fsid ];
|
||||||
|
|
||||||
if ($param->{bluestore}) {
|
if ($bluestore) {
|
||||||
print "create OSD on $devpath (bluestore)\n";
|
print "create OSD on $devpath (bluestore)\n";
|
||||||
push @$cmd, '--bluestore';
|
push @$cmd, '--bluestore';
|
||||||
|
|
||||||
|
if ($journal_dev) {
|
||||||
|
print "using device '$journal_dev' for block.db\n";
|
||||||
|
push @$cmd, '--block.db', $journal_dev;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($wal_dev) {
|
||||||
|
print "using device '$wal_dev' for block.wal\n";
|
||||||
|
push @$cmd, '--block.wal', $wal_dev;
|
||||||
|
}
|
||||||
|
|
||||||
|
push @$cmd, $devpath;
|
||||||
} else {
|
} else {
|
||||||
print "create OSD on $devpath ($fstype)\n";
|
print "create OSD on $devpath ($fstype)\n";
|
||||||
push @$cmd, '--filestore', '--fs-type', $fstype;
|
push @$cmd, '--filestore', '--fs-type', $fstype;
|
||||||
|
if ($journal_dev) {
|
||||||
|
print "using device '$journal_dev' for journal\n";
|
||||||
|
push @$cmd, '--journal-dev', $devpath, $journal_dev;
|
||||||
|
} else {
|
||||||
|
push @$cmd, $devpath;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($journal_dev) {
|
|
||||||
print "using device '$journal_dev' for journal\n";
|
|
||||||
push @$cmd, '--journal-dev', $devpath, $journal_dev;
|
|
||||||
} else {
|
|
||||||
push @$cmd, $devpath;
|
|
||||||
}
|
|
||||||
|
|
||||||
run_command($cmd);
|
run_command($cmd);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user