markdownlint: enable rule MD005
MD005 - Inconsistent indentation for list items at the same level Fixed all MD005 errors Signed-off-by: wawryk <maciejx.wawryk@intel.com> Change-Id: If6a12d6dab938094394a72c804f2a028f1c40f45 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8995 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
e5b5eabe82
commit
1df1583be5
116
CHANGELOG.md
116
CHANGELOG.md
@ -1385,11 +1385,11 @@ of logical blocks for write operation.
|
|||||||
|
|
||||||
New zone-related fields were added to the result of the `get_bdevs` RPC call:
|
New zone-related fields were added to the result of the `get_bdevs` RPC call:
|
||||||
|
|
||||||
- `zoned`: indicates whether the device is zoned or a regular
|
- `zoned`: indicates whether the device is zoned or a regular
|
||||||
block device
|
block device
|
||||||
- `zone_size`: number of blocks in a single zone
|
- `zone_size`: number of blocks in a single zone
|
||||||
- `max_open_zones`: maximum number of open zones
|
- `max_open_zones`: maximum number of open zones
|
||||||
- `optimal_open_zones`: optimal number of open zones
|
- `optimal_open_zones`: optimal number of open zones
|
||||||
|
|
||||||
The `zoned` field is a boolean and is always present, while the rest is only available for zoned
|
The `zoned` field is a boolean and is always present, while the rest is only available for zoned
|
||||||
bdevs.
|
bdevs.
|
||||||
@ -2109,19 +2109,19 @@ for which the memory is contiguous in the physical memory address space.
|
|||||||
|
|
||||||
The following functions were removed:
|
The following functions were removed:
|
||||||
|
|
||||||
- spdk_pci_nvme_device_attach()
|
- spdk_pci_nvme_device_attach()
|
||||||
- spdk_pci_nvme_enumerate()
|
- spdk_pci_nvme_enumerate()
|
||||||
- spdk_pci_ioat_device_attach()
|
- spdk_pci_ioat_device_attach()
|
||||||
- spdk_pci_ioat_enumerate()
|
- spdk_pci_ioat_enumerate()
|
||||||
- spdk_pci_virtio_device_attach()
|
- spdk_pci_virtio_device_attach()
|
||||||
- spdk_pci_virtio_enumerate()
|
- spdk_pci_virtio_enumerate()
|
||||||
|
|
||||||
They were replaced with generic spdk_pci_device_attach() and spdk_pci_enumerate() which
|
They were replaced with generic spdk_pci_device_attach() and spdk_pci_enumerate() which
|
||||||
require a new spdk_pci_driver object to be provided. It can be one of the following:
|
require a new spdk_pci_driver object to be provided. It can be one of the following:
|
||||||
|
|
||||||
- spdk_pci_nvme_get_driver()
|
- spdk_pci_nvme_get_driver()
|
||||||
- spdk_pci_ioat_get_driver()
|
- spdk_pci_ioat_get_driver()
|
||||||
- spdk_pci_virtio_get_driver()
|
- spdk_pci_virtio_get_driver()
|
||||||
|
|
||||||
spdk_pci_hook_device() and spdk_pci_unhook_device() were added. Those allow adding a virtual
|
spdk_pci_hook_device() and spdk_pci_unhook_device() were added. Those allow adding a virtual
|
||||||
spdk_pci_device into the SPDK PCI subsystem. A virtual device calls provided callbacks for
|
spdk_pci_device into the SPDK PCI subsystem. A virtual device calls provided callbacks for
|
||||||
@ -2300,12 +2300,12 @@ Dropped support for DPDK 16.07 and earlier, which SPDK won't even compile with r
|
|||||||
|
|
||||||
The following RPC commands deprecated in the previous release are now removed:
|
The following RPC commands deprecated in the previous release are now removed:
|
||||||
|
|
||||||
- construct_virtio_user_scsi_bdev
|
- construct_virtio_user_scsi_bdev
|
||||||
- construct_virtio_pci_scsi_bdev
|
- construct_virtio_pci_scsi_bdev
|
||||||
- construct_virtio_user_blk_bdev
|
- construct_virtio_user_blk_bdev
|
||||||
- construct_virtio_pci_blk_bdev
|
- construct_virtio_pci_blk_bdev
|
||||||
- remove_virtio_scsi_bdev
|
- remove_virtio_scsi_bdev
|
||||||
- construct_nvmf_subsystem
|
- construct_nvmf_subsystem
|
||||||
|
|
||||||
### Miscellaneous
|
### Miscellaneous
|
||||||
|
|
||||||
@ -2489,11 +2489,11 @@ respectively.
|
|||||||
|
|
||||||
The following RPC commands have been deprecated:
|
The following RPC commands have been deprecated:
|
||||||
|
|
||||||
- construct_virtio_user_scsi_bdev
|
- construct_virtio_user_scsi_bdev
|
||||||
- construct_virtio_pci_scsi_bdev
|
- construct_virtio_pci_scsi_bdev
|
||||||
- construct_virtio_user_blk_bdev
|
- construct_virtio_user_blk_bdev
|
||||||
- construct_virtio_pci_blk_bdev
|
- construct_virtio_pci_blk_bdev
|
||||||
- remove_virtio_scsi_bdev
|
- remove_virtio_scsi_bdev
|
||||||
|
|
||||||
The `construct_virtio_*` ones were replaced with a single `construct_virtio_dev`
|
The `construct_virtio_*` ones were replaced with a single `construct_virtio_dev`
|
||||||
command that can create any type of Virtio bdev(s). `remove_virtio_scsi_bdev`
|
command that can create any type of Virtio bdev(s). `remove_virtio_scsi_bdev`
|
||||||
@ -2510,12 +2510,12 @@ Added jsonrpc-client C library intended for issuing RPC commands from applicatio
|
|||||||
|
|
||||||
Added API enabling iteration over JSON object:
|
Added API enabling iteration over JSON object:
|
||||||
|
|
||||||
- spdk_json_find()
|
- spdk_json_find()
|
||||||
- spdk_json_find_string()
|
- spdk_json_find_string()
|
||||||
- spdk_json_find_array()
|
- spdk_json_find_array()
|
||||||
- spdk_json_object_first()
|
- spdk_json_object_first()
|
||||||
- spdk_json_array_first()
|
- spdk_json_array_first()
|
||||||
- spdk_json_next()
|
- spdk_json_next()
|
||||||
|
|
||||||
### Blobstore
|
### Blobstore
|
||||||
|
|
||||||
@ -3282,33 +3282,33 @@ in app/iscsi_tgt and a documented configuration file can be found at etc/spdk/sp
|
|||||||
|
|
||||||
This release also significantly improves the existing NVMe over Fabrics target.
|
This release also significantly improves the existing NVMe over Fabrics target.
|
||||||
|
|
||||||
- The configuration file format was changed, which will require updates to
|
- The configuration file format was changed, which will require updates to
|
||||||
any existing nvmf.conf files (see `etc/spdk/nvmf.conf.in`):
|
any existing nvmf.conf files (see `etc/spdk/nvmf.conf.in`):
|
||||||
- `SubsystemGroup` was renamed to `Subsystem`.
|
- `SubsystemGroup` was renamed to `Subsystem`.
|
||||||
- `AuthFile` was removed (it was unimplemented).
|
- `AuthFile` was removed (it was unimplemented).
|
||||||
- `nvmf_tgt` was updated to correctly recognize NQN (NVMe Qualified Names)
|
- `nvmf_tgt` was updated to correctly recognize NQN (NVMe Qualified Names)
|
||||||
when naming subsystems. The default node name was changed to reflect this;
|
when naming subsystems. The default node name was changed to reflect this;
|
||||||
it is now "nqn.2016-06.io.spdk".
|
it is now "nqn.2016-06.io.spdk".
|
||||||
- `Port` and `Host` sections were merged into the `Subsystem` section
|
- `Port` and `Host` sections were merged into the `Subsystem` section
|
||||||
- Global options to control max queue depth, number of queues, max I/O
|
- Global options to control max queue depth, number of queues, max I/O
|
||||||
size, and max in-capsule data size were added.
|
size, and max in-capsule data size were added.
|
||||||
- The Nvme section was removed. Now a list of devices is specified by
|
- The Nvme section was removed. Now a list of devices is specified by
|
||||||
bus/device/function directly in the Subsystem section.
|
bus/device/function directly in the Subsystem section.
|
||||||
- Subsystems now have a Mode, which can be Direct or Virtual. This is an attempt
|
- Subsystems now have a Mode, which can be Direct or Virtual. This is an attempt
|
||||||
to future-proof the interface, so the only mode supported by this release
|
to future-proof the interface, so the only mode supported by this release
|
||||||
is "Direct".
|
is "Direct".
|
||||||
- Many bug fixes and cleanups were applied to the `nvmf_tgt` app and library.
|
- Many bug fixes and cleanups were applied to the `nvmf_tgt` app and library.
|
||||||
- The target now supports discovery.
|
- The target now supports discovery.
|
||||||
|
|
||||||
This release also adds one new feature and provides some better examples and tools
|
This release also adds one new feature and provides some better examples and tools
|
||||||
for the NVMe driver.
|
for the NVMe driver.
|
||||||
|
|
||||||
- The Weighted Round Robin arbitration method is now supported. This allows
|
- The Weighted Round Robin arbitration method is now supported. This allows
|
||||||
the user to specify different priorities on a per-I/O-queue basis. To
|
the user to specify different priorities on a per-I/O-queue basis. To
|
||||||
enable WRR, set the `arb_mechanism` field during `spdk_nvme_probe()`.
|
enable WRR, set the `arb_mechanism` field during `spdk_nvme_probe()`.
|
||||||
- A simplified "Hello World" example was added to show the proper way to use
|
- A simplified "Hello World" example was added to show the proper way to use
|
||||||
the NVMe library API; see `examples/nvme/hello_world/hello_world.c`.
|
the NVMe library API; see `examples/nvme/hello_world/hello_world.c`.
|
||||||
- A test for measuring software overhead was added. See `test/lib/nvme/overhead`.
|
- A test for measuring software overhead was added. See `test/lib/nvme/overhead`.
|
||||||
|
|
||||||
## v16.06: NVMf userspace target
|
## v16.06: NVMf userspace target
|
||||||
|
|
||||||
@ -3336,13 +3336,13 @@ user code.
|
|||||||
supported on any attached controller.
|
supported on any attached controller.
|
||||||
- Added support for the Write Zeroes command.
|
- Added support for the Write Zeroes command.
|
||||||
- `examples/nvme/perf` can now report I/O command latency from the
|
- `examples/nvme/perf` can now report I/O command latency from the
|
||||||
the controller's viewpoint using the Intel vendor-specific read/write latency
|
the controller's viewpoint using the Intel vendor-specific read/write latency
|
||||||
log page.
|
log page.
|
||||||
- Added namespace reservation command support, which can be used to coordinate
|
- Added namespace reservation command support, which can be used to coordinate
|
||||||
sharing of a namespace between multiple hosts.
|
sharing of a namespace between multiple hosts.
|
||||||
- Added hardware SGL support, which enables use of scattered buffers that
|
- Added hardware SGL support, which enables use of scattered buffers that
|
||||||
don't conform to the PRP list alignment and length requirements on supported
|
don't conform to the PRP list alignment and length requirements on supported
|
||||||
NVMe controllers.
|
NVMe controllers.
|
||||||
- Added end-to-end data protection support, including the ability to write and
|
- Added end-to-end data protection support, including the ability to write and
|
||||||
read metadata in extended LBA (metadata appended to each block of data in the
|
read metadata in extended LBA (metadata appended to each block of data in the
|
||||||
buffer) and separate metadata buffer modes.
|
buffer) and separate metadata buffer modes.
|
||||||
|
52
doc/iscsi.md
52
doc/iscsi.md
@ -45,11 +45,11 @@ The iSCSI target is configured via JSON-RPC calls. See @ref jsonrpc for details.
|
|||||||
|
|
||||||
### Portal groups
|
### Portal groups
|
||||||
|
|
||||||
- iscsi_create_portal_group -- Add a portal group.
|
- iscsi_create_portal_group -- Add a portal group.
|
||||||
- iscsi_delete_portal_group -- Delete an existing portal group.
|
- iscsi_delete_portal_group -- Delete an existing portal group.
|
||||||
- iscsi_target_node_add_pg_ig_maps -- Add initiator group to portal group mappings to an existing iSCSI target node.
|
- iscsi_target_node_add_pg_ig_maps -- Add initiator group to portal group mappings to an existing iSCSI target node.
|
||||||
- iscsi_target_node_remove_pg_ig_maps -- Delete initiator group to portal group mappings from an existing iSCSI target node.
|
- iscsi_target_node_remove_pg_ig_maps -- Delete initiator group to portal group mappings from an existing iSCSI target node.
|
||||||
- iscsi_get_portal_groups -- Show information about all available portal groups.
|
- iscsi_get_portal_groups -- Show information about all available portal groups.
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
/path/to/spdk/scripts/rpc.py iscsi_create_portal_group 1 10.0.0.1:3260
|
/path/to/spdk/scripts/rpc.py iscsi_create_portal_group 1 10.0.0.1:3260
|
||||||
@ -57,10 +57,10 @@ The iSCSI target is configured via JSON-RPC calls. See @ref jsonrpc for details.
|
|||||||
|
|
||||||
### Initiator groups
|
### Initiator groups
|
||||||
|
|
||||||
- iscsi_create_initiator_group -- Add an initiator group.
|
- iscsi_create_initiator_group -- Add an initiator group.
|
||||||
- iscsi_delete_initiator_group -- Delete an existing initiator group.
|
- iscsi_delete_initiator_group -- Delete an existing initiator group.
|
||||||
- iscsi_initiator_group_add_initiators -- Add initiators to an existing initiator group.
|
- iscsi_initiator_group_add_initiators -- Add initiators to an existing initiator group.
|
||||||
- iscsi_get_initiator_groups -- Show information about all available initiator groups.
|
- iscsi_get_initiator_groups -- Show information about all available initiator groups.
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
/path/to/spdk/scripts/rpc.py iscsi_create_initiator_group 2 ANY 10.0.0.2/32
|
/path/to/spdk/scripts/rpc.py iscsi_create_initiator_group 2 ANY 10.0.0.2/32
|
||||||
@ -68,10 +68,10 @@ The iSCSI target is configured via JSON-RPC calls. See @ref jsonrpc for details.
|
|||||||
|
|
||||||
### Target nodes
|
### Target nodes
|
||||||
|
|
||||||
- iscsi_create_target_node -- Add an iSCSI target node.
|
- iscsi_create_target_node -- Add an iSCSI target node.
|
||||||
- iscsi_delete_target_node -- Delete an iSCSI target node.
|
- iscsi_delete_target_node -- Delete an iSCSI target node.
|
||||||
- iscsi_target_node_add_lun -- Add a LUN to an existing iSCSI target node.
|
- iscsi_target_node_add_lun -- Add a LUN to an existing iSCSI target node.
|
||||||
- iscsi_get_target_nodes -- Show information about all available iSCSI target nodes.
|
- iscsi_get_target_nodes -- Show information about all available iSCSI target nodes.
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
/path/to/spdk/scripts/rpc.py iscsi_create_target_node Target3 Target3_alias MyBdev:0 1:2 64 -d
|
/path/to/spdk/scripts/rpc.py iscsi_create_target_node Target3 Target3_alias MyBdev:0 1:2 64 -d
|
||||||
@ -274,20 +274,22 @@ sde
|
|||||||
At the iSCSI level, we provide the following support for Hotplug:
|
At the iSCSI level, we provide the following support for Hotplug:
|
||||||
|
|
||||||
1. bdev/nvme:
|
1. bdev/nvme:
|
||||||
At the bdev/nvme level, we start one hotplug monitor which will call
|
|
||||||
spdk_nvme_probe() periodically to get the hotplug events. We provide the
|
At the bdev/nvme level, we start one hotplug monitor which will call
|
||||||
private attach_cb and remove_cb for spdk_nvme_probe(). For the attach_cb,
|
spdk_nvme_probe() periodically to get the hotplug events. We provide the
|
||||||
we will create the block device base on the NVMe device attached, and for the
|
private attach_cb and remove_cb for spdk_nvme_probe(). For the attach_cb,
|
||||||
remove_cb, we will unregister the block device, which will also notify the
|
we will create the block device base on the NVMe device attached, and for the
|
||||||
upper level stack (for iSCSI target, the upper level stack is scsi/lun) to
|
remove_cb, we will unregister the block device, which will also notify the
|
||||||
handle the hot-remove event.
|
upper level stack (for iSCSI target, the upper level stack is scsi/lun) to
|
||||||
|
handle the hot-remove event.
|
||||||
|
|
||||||
2. scsi/lun:
|
2. scsi/lun:
|
||||||
When the LUN receive the hot-remove notification from block device layer,
|
|
||||||
the LUN will be marked as removed, and all the IOs after this point will
|
When the LUN receive the hot-remove notification from block device layer,
|
||||||
return with check condition status. Then the LUN starts one poller which will
|
the LUN will be marked as removed, and all the IOs after this point will
|
||||||
wait for all the commands which have already been submitted to block device to
|
return with check condition status. Then the LUN starts one poller which will
|
||||||
return back; after all the commands return back, the LUN will be deleted.
|
wait for all the commands which have already been submitted to block device to
|
||||||
|
return back; after all the commands return back, the LUN will be deleted.
|
||||||
|
|
||||||
@sa spdk_nvme_probe
|
@sa spdk_nvme_probe
|
||||||
|
|
||||||
|
20
doc/nvme.md
20
doc/nvme.md
@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
# In this document {#nvme_toc}
|
# In this document {#nvme_toc}
|
||||||
|
|
||||||
* @ref nvme_intro
|
- @ref nvme_intro
|
||||||
* @ref nvme_examples
|
- @ref nvme_examples
|
||||||
* @ref nvme_interface
|
- @ref nvme_interface
|
||||||
* @ref nvme_design
|
- @ref nvme_design
|
||||||
* @ref nvme_fabrics_host
|
- @ref nvme_fabrics_host
|
||||||
* @ref nvme_multi_process
|
- @ref nvme_multi_process
|
||||||
* @ref nvme_hotplug
|
- @ref nvme_hotplug
|
||||||
* @ref nvme_cuse
|
- @ref nvme_cuse
|
||||||
|
|
||||||
# Introduction {#nvme_intro}
|
# Introduction {#nvme_intro}
|
||||||
|
|
||||||
@ -124,8 +124,8 @@ io flag set, and the next one should have the SPDK_NVME_IO_FLAGS_FUSE_SECOND.
|
|||||||
|
|
||||||
In addition, the following rules must be met to execute two commands as an atomic unit:
|
In addition, the following rules must be met to execute two commands as an atomic unit:
|
||||||
|
|
||||||
- The commands shall be inserted next to each other in the same submission queue.
|
- The commands shall be inserted next to each other in the same submission queue.
|
||||||
- The LBA range, should be the same for the two commands.
|
- The LBA range, should be the same for the two commands.
|
||||||
|
|
||||||
E.g. To send fused compare and write operation user must call spdk_nvme_ns_cmd_compare
|
E.g. To send fused compare and write operation user must call spdk_nvme_ns_cmd_compare
|
||||||
followed with spdk_nvme_ns_cmd_write and make sure no other operations are submitted
|
followed with spdk_nvme_ns_cmd_write and make sure no other operations are submitted
|
||||||
|
@ -77,13 +77,13 @@ directory and include the headers by prefixing `spdk/` like this:
|
|||||||
Most of the headers here correspond with a library in the `lib` directory. There
|
Most of the headers here correspond with a library in the `lib` directory. There
|
||||||
are a few headers that stand alone, however. They are:
|
are a few headers that stand alone, however. They are:
|
||||||
|
|
||||||
- `assert.h`
|
- `assert.h`
|
||||||
- `barrier.h`
|
- `barrier.h`
|
||||||
- `endian.h`
|
- `endian.h`
|
||||||
- `fd.h`
|
- `fd.h`
|
||||||
- `mmio.h`
|
- `mmio.h`
|
||||||
- `queue.h` and `queue_extras.h`
|
- `queue.h` and `queue_extras.h`
|
||||||
- `string.h`
|
- `string.h`
|
||||||
|
|
||||||
There is also an `spdk_internal` directory that contains header files widely included
|
There is also an `spdk_internal` directory that contains header files widely included
|
||||||
by libraries within SPDK, but that are not part of the public API and would not be
|
by libraries within SPDK, but that are not part of the public API and would not be
|
||||||
|
@ -90,13 +90,13 @@ physically-discontiguous regions and Vhost-user specification puts a limit on
|
|||||||
their number - currently 8. The driver sends a single message for each region with
|
their number - currently 8. The driver sends a single message for each region with
|
||||||
the following data:
|
the following data:
|
||||||
|
|
||||||
* file descriptor - for mmap
|
- file descriptor - for mmap
|
||||||
* user address - for memory translations in Vhost-user messages (e.g.
|
- user address - for memory translations in Vhost-user messages (e.g.
|
||||||
translating vring addresses)
|
translating vring addresses)
|
||||||
* guest address - for buffers addresses translations in vrings (for QEMU this
|
- guest address - for buffers addresses translations in vrings (for QEMU this
|
||||||
is a physical address inside the guest)
|
is a physical address inside the guest)
|
||||||
* user offset - positive offset for the mmap
|
- user offset - positive offset for the mmap
|
||||||
* size
|
- size
|
||||||
|
|
||||||
The Master will send new memory regions after each memory change - usually
|
The Master will send new memory regions after each memory change - usually
|
||||||
hotplug/hotremove. The previous mappings will be removed.
|
hotplug/hotremove. The previous mappings will be removed.
|
||||||
@ -108,11 +108,11 @@ as they use common SCSI I/O to inquiry the underlying disk(s).
|
|||||||
Afterwards, the driver requests the number of maximum supported queues and
|
Afterwards, the driver requests the number of maximum supported queues and
|
||||||
starts sending virtqueue data, which consists of:
|
starts sending virtqueue data, which consists of:
|
||||||
|
|
||||||
* unique virtqueue id
|
- unique virtqueue id
|
||||||
* index of the last processed vring descriptor
|
- index of the last processed vring descriptor
|
||||||
* vring addresses (from user address space)
|
- vring addresses (from user address space)
|
||||||
* call descriptor (for interrupting the driver after I/O completions)
|
- call descriptor (for interrupting the driver after I/O completions)
|
||||||
* kick descriptor (to listen for I/O requests - unused by SPDK)
|
- kick descriptor (to listen for I/O requests - unused by SPDK)
|
||||||
|
|
||||||
If multiqueue feature has been negotiated, the driver has to send a specific
|
If multiqueue feature has been negotiated, the driver has to send a specific
|
||||||
*ENABLE* message for each extra queue it wants to be polled. Other queues are
|
*ENABLE* message for each extra queue it wants to be polled. Other queues are
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
all
|
all
|
||||||
exclude_rule 'MD003'
|
exclude_rule 'MD003'
|
||||||
exclude_rule 'MD004'
|
exclude_rule 'MD004'
|
||||||
exclude_rule 'MD005'
|
|
||||||
exclude_rule 'MD006'
|
exclude_rule 'MD006'
|
||||||
exclude_rule 'MD007'
|
exclude_rule 'MD007'
|
||||||
exclude_rule 'MD009'
|
exclude_rule 'MD009'
|
||||||
|
@ -49,34 +49,34 @@ To create the VM image manually use following steps:
|
|||||||
|
|
||||||
1. Create an image file for the VM. It does not have to be large, about 3.5G should suffice.
|
1. Create an image file for the VM. It does not have to be large, about 3.5G should suffice.
|
||||||
2. Create an ssh keypair for host-guest communications (performed on the host):
|
2. Create an ssh keypair for host-guest communications (performed on the host):
|
||||||
- Generate an ssh keypair with the name spdk_vhost_id_rsa and save it in `/root/.ssh`.
|
- Generate an ssh keypair with the name spdk_vhost_id_rsa and save it in `/root/.ssh`.
|
||||||
- Make sure that only root has read access to the private key.
|
- Make sure that only root has read access to the private key.
|
||||||
3. Install the OS in the VM image (performed on guest):
|
3. Install the OS in the VM image (performed on guest):
|
||||||
- Use the latest Fedora Cloud (Currently Fedora 32).
|
- Use the latest Fedora Cloud (Currently Fedora 32).
|
||||||
- When partitioning the disk, make one partion that consumes the whole disk mounted at /. Do not encrypt the disk or enable LVM.
|
- When partitioning the disk, make one partion that consumes the whole disk mounted at /. Do not encrypt the disk or enable LVM.
|
||||||
- Choose the OpenSSH server packages during install.
|
- Choose the OpenSSH server packages during install.
|
||||||
4. Post installation configuration (performed on guest):
|
4. Post installation configuration (performed on guest):
|
||||||
- Run the following commands to enable all necessary dependencies:
|
- Run the following commands to enable all necessary dependencies:
|
||||||
~~~{.sh}
|
~~~{.sh}
|
||||||
sudo dnf update
|
sudo dnf update
|
||||||
sudo dnf upgrade
|
sudo dnf upgrade
|
||||||
sudo dnf -y install git sg3_utils bc wget libubsan libasan xfsprogs btrfs-progs ntfsprogs ntfs-3g
|
sudo dnf -y install git sg3_utils bc wget libubsan libasan xfsprogs btrfs-progs ntfsprogs ntfs-3g
|
||||||
git clone https://github.com/spdk/spdk.git
|
git clone https://github.com/spdk/spdk.git
|
||||||
./spdk/scripts/pkgdep.sh -p -f -r -u
|
./spdk/scripts/pkgdep.sh -p -f -r -u
|
||||||
~~~
|
~~~
|
||||||
- Enable the root user: "sudo passwd root -> root".
|
- Enable the root user: "sudo passwd root -> root".
|
||||||
- Enable root login over ssh: vim `/etc/ssh/sshd_config` -> PermitRootLogin=yes.
|
- Enable root login over ssh: vim `/etc/ssh/sshd_config` -> PermitRootLogin=yes.
|
||||||
- Change the grub boot options for the guest as follows:
|
- Change the grub boot options for the guest as follows:
|
||||||
- Add "console=ttyS0 earlyprintk=ttyS0" to the boot options in `/etc/default/grub` (for serial output redirect).
|
- Add "console=ttyS0 earlyprintk=ttyS0" to the boot options in `/etc/default/grub` (for serial output redirect).
|
||||||
- Add "scsi_mod.use_blk_mq=1" to boot options in `/etc/default/grub`.
|
- Add "scsi_mod.use_blk_mq=1" to boot options in `/etc/default/grub`.
|
||||||
~~~{.sh}
|
~~~{.sh}
|
||||||
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
|
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
|
||||||
~~~
|
~~~
|
||||||
- Reboot the VM.
|
- Reboot the VM.
|
||||||
- Remove any unnecessary packages (this is to make booting the VM faster):
|
- Remove any unnecessary packages (this is to make booting the VM faster):
|
||||||
~~~{.sh}
|
~~~{.sh}
|
||||||
sudo dnf clean all
|
sudo dnf clean all
|
||||||
~~~
|
~~~
|
||||||
5. Install fio:
|
5. Install fio:
|
||||||
~~~
|
~~~
|
||||||
./spdk/test/common/config/vm_setup.sh -t 'fio'
|
./spdk/test/common/config/vm_setup.sh -t 'fio'
|
||||||
|
Loading…
Reference in New Issue
Block a user