deep_scrub_choked
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
[Unit]
|
||||
Description=NFS-Ganesha file server
|
||||
Documentation=http://github.com/nfs-ganesha/nfs-ganesha/wiki
|
||||
{% if container_binary == 'docker' %}
|
||||
After=docker.service network-online.target local-fs.target time-sync.target
|
||||
Requires=docker.service
|
||||
{% else %}
|
||||
After=network-online.target local-fs.target time-sync.target
|
||||
{% endif %}
|
||||
Wants=network-online.target local-fs.target time-sync.target
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=-/etc/environment
|
||||
{% if container_binary == 'podman' %}
|
||||
ExecStartPre=-/usr/bin/rm -f /%t/%n-pid /%t/%n-cid
|
||||
ExecStartPre=-/usr/bin/{{ container_binary }} rm --storage ceph-nfs-%i
|
||||
ExecStartPre=-/usr/bin/mkdir -p /var/log/ceph /var/log/ganesha
|
||||
{% endif %}
|
||||
ExecStartPre=-/usr/bin/{{ container_binary }} rm ceph-nfs-%i
|
||||
ExecStartPre={{ '/bin/mkdir' if ansible_facts['os_family'] == 'Debian' else '/usr/bin/mkdir' }} -p /etc/ceph /etc/ganesha /var/lib/nfs/ganesha /var/log/ganesha
|
||||
ExecStart=/usr/bin/{{ container_binary }} run --rm --net=host \
|
||||
{% if container_binary == 'podman' %}
|
||||
-d --log-driver journald --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \
|
||||
{% endif %}
|
||||
--pids-limit={{ 0 if container_binary == 'podman' else -1 }} \
|
||||
-v /etc/ceph:/etc/ceph:z \
|
||||
-v /var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_facts['hostname'] }}/keyring:/var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_facts['hostname'] }}/keyring:z \
|
||||
-v /var/lib/ceph/radosgw/{{ cluster }}-nfs.{{ ansible_facts['hostname'] }}/keyring:/etc/ceph/keyring:z \
|
||||
-v /etc/ganesha:/etc/ganesha:z \
|
||||
-v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket \
|
||||
-v /var/run/ceph:/var/run/ceph:z \
|
||||
-v /var/log/ceph:/var/log/ceph:z \
|
||||
-v /var/log/ganesha:/var/log/ganesha:z \
|
||||
-v /etc/localtime:/etc/localtime:ro \
|
||||
{{ ceph_nfs_docker_extra_env }} \
|
||||
--entrypoint=/usr/bin/ganesha.nfsd \
|
||||
--name=ceph-nfs-{{ ceph_nfs_service_suffix | default(ansible_facts['hostname']) }} \
|
||||
{{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} \
|
||||
-F -L STDOUT
|
||||
{% if container_binary == 'podman' %}
|
||||
ExecStop=-/usr/bin/sh -c "/usr/bin/{{ container_binary }} rm -f `cat /%t/%n-cid`"
|
||||
{% else %}
|
||||
ExecStopPost=-/usr/bin/{{ container_binary }} stop ceph-nfs-%i
|
||||
{% endif %}
|
||||
KillMode=none
|
||||
Restart=always
|
||||
RestartSec=10s
|
||||
TimeoutStartSec=120
|
||||
TimeoutStopSec=15
|
||||
{% if container_binary == 'podman' %}
|
||||
Type=forking
|
||||
PIDFile=/%t/%n-pid
|
||||
{% endif %}
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -0,0 +1,124 @@
|
||||
#jinja2: trim_blocks: "true", lstrip_blocks: "true"
|
||||
# {{ ansible_managed }}
|
||||
|
||||
{% if ceph_nfs_dynamic_exports | bool and not ceph_nfs_rados_backend | bool %}
|
||||
%include /etc/ganesha/export.d/INDEX.conf
|
||||
{% endif %}
|
||||
|
||||
NFS_Core_Param
|
||||
{
|
||||
{% if ceph_nfs_bind_addr is defined %}
|
||||
Bind_Addr={{ ceph_nfs_bind_addr }};
|
||||
{% endif %}
|
||||
{{ ganesha_core_param_overrides | default(None) }}
|
||||
}
|
||||
|
||||
{% if ceph_nfs_disable_caching | bool or nfs_file_gw | bool %}
|
||||
EXPORT_DEFAULTS {
|
||||
Attr_Expiration_Time = 0;
|
||||
}
|
||||
|
||||
CACHEINODE {
|
||||
Dir_Chunk = 0;
|
||||
|
||||
NParts = 1;
|
||||
Cache_Size = 1;
|
||||
}
|
||||
{% endif %}
|
||||
|
||||
{% if ceph_nfs_rados_backend | bool %}
|
||||
RADOS_URLS {
|
||||
ceph_conf = '/etc/ceph/{{ cluster }}.conf';
|
||||
userid = "{{ ceph_nfs_ceph_user }}";
|
||||
}
|
||||
%url rados://{{ cephfs_data_pool.name }}/{{ ceph_nfs_rados_export_index }}
|
||||
|
||||
NFSv4 {
|
||||
RecoveryBackend = 'rados_kv';
|
||||
IdmapConf = "{{ ceph_nfs_idmap_conf }}";
|
||||
}
|
||||
RADOS_KV {
|
||||
ceph_conf = '/etc/ceph/{{ cluster }}.conf';
|
||||
userid = "{{ ceph_nfs_ceph_user }}";
|
||||
pool = "{{ cephfs_data_pool.name }}";
|
||||
}
|
||||
{% endif %}
|
||||
|
||||
{% if nfs_file_gw | bool %}
|
||||
EXPORT
|
||||
{
|
||||
Export_id={{ ceph_nfs_ceph_export_id }};
|
||||
|
||||
Path = "/";
|
||||
|
||||
Pseudo = {{ ceph_nfs_ceph_pseudo_path }};
|
||||
|
||||
Access_Type = {{ ceph_nfs_ceph_access_type }};
|
||||
|
||||
Protocols = {{ ceph_nfs_ceph_protocols }};
|
||||
|
||||
Transports = TCP;
|
||||
|
||||
SecType = {{ ceph_nfs_ceph_sectype }};
|
||||
|
||||
Squash = {{ ceph_nfs_ceph_squash }};
|
||||
|
||||
Attr_Expiration_Time = 0;
|
||||
|
||||
FSAL {
|
||||
Name = CEPH;
|
||||
User_Id = "{{ ceph_nfs_ceph_user }}";
|
||||
}
|
||||
|
||||
{{ ganesha_ceph_export_overrides | default(None) }}
|
||||
}
|
||||
{% endif %}
|
||||
{% if nfs_obj_gw | bool %}
|
||||
EXPORT
|
||||
{
|
||||
Export_id={{ ceph_nfs_rgw_export_id }};
|
||||
|
||||
Path = "/";
|
||||
|
||||
Pseudo = {{ ceph_nfs_rgw_pseudo_path }};
|
||||
|
||||
Access_Type = {{ ceph_nfs_rgw_access_type }};
|
||||
|
||||
Protocols = {{ ceph_nfs_rgw_protocols }};
|
||||
|
||||
Transports = TCP;
|
||||
|
||||
SecType = {{ ceph_nfs_rgw_sectype }};
|
||||
|
||||
Squash = {{ ceph_nfs_rgw_squash }};
|
||||
|
||||
FSAL {
|
||||
Name = RGW;
|
||||
User_Id = "{{ ceph_nfs_rgw_user }}";
|
||||
Access_Key_Id ="{{ ceph_nfs_rgw_access_key }}";
|
||||
Secret_Access_Key = "{{ ceph_nfs_rgw_secret_key }}";
|
||||
}
|
||||
|
||||
{{ ganesha_rgw_export_overrides | default(None) }}
|
||||
|
||||
}
|
||||
|
||||
RGW {
|
||||
ceph_conf = "/etc/ceph/{{ cluster }}.conf";
|
||||
cluster = "{{ cluster }}";
|
||||
name = "{{ rgw_client_name }}";
|
||||
{{ ganesha_rgw_section_overrides | default(None) }}
|
||||
}
|
||||
{% endif %}
|
||||
|
||||
LOG {
|
||||
Facility {
|
||||
name = FILE;
|
||||
destination = "{{ ceph_nfs_log_file }}";
|
||||
enable = active;
|
||||
}
|
||||
|
||||
{{ ganesha_log_overrides | default(None) }}
|
||||
}
|
||||
|
||||
{{ ganesha_conf_overrides | default(None) }}
|
||||
@@ -0,0 +1,137 @@
|
||||
[General]
|
||||
#Verbosity = 0
|
||||
# The following should be set to the local NFSv4 domain name
|
||||
# The default is the host's DNS domain name.
|
||||
#Domain = local.domain.edu
|
||||
|
||||
# In multi-domain environments, some NFS servers will append the identity
|
||||
# management domain to the owner and owner_group in lieu of a true NFSv4
|
||||
# domain. This option can facilitate lookups in such environments. If
|
||||
# set to a value other than "none", the nsswitch plugin will first pass
|
||||
# the name to the password/group lookup function without stripping the
|
||||
# domain off. If that mapping fails then the plugin will try again using
|
||||
# the old method (comparing the domain in the string to the Domain value,
|
||||
# stripping it if it matches, and passing the resulting short name to the
|
||||
# lookup function). Valid values are "user", "group", "both", and
|
||||
# "none". The default is "none".
|
||||
#No-Strip = none
|
||||
|
||||
# Winbind has a quirk whereby doing a group lookup in UPN format
|
||||
# (e.g. staff@americas.example.com) will cause the group to be
|
||||
# displayed prefixed with the full domain in uppercase
|
||||
# (e.g. AMERICAS.EXAMPLE.COM\staff) instead of in the familiar netbios
|
||||
# name format (e.g. AMERICAS\staff). Setting this option to true
|
||||
# causes the name to be reformatted before passing it to the group
|
||||
# lookup function in order to work around this. This setting is
|
||||
# ignored unless No-Strip is set to either "both" or "group".
|
||||
# The default is "false".
|
||||
#Reformat-Group = false
|
||||
|
||||
# The following is a comma-separated list of Kerberos realm
|
||||
# names that should be considered to be equivalent to the
|
||||
# local realm, such that <user>@REALM.A can be assumed to
|
||||
# be the same user as <user>@REALM.B
|
||||
# If not specified, the default local realm is the domain name,
|
||||
# which defaults to the host's DNS domain name,
|
||||
# translated to upper-case.
|
||||
# Note that if this value is specified, the local realm name
|
||||
# must be included in the list!
|
||||
#Local-Realms =
|
||||
|
||||
[Mapping]
|
||||
|
||||
#Nobody-User = nobody
|
||||
#Nobody-Group = nobody
|
||||
|
||||
[Translation]
|
||||
|
||||
# Translation Method is an comma-separated, ordered list of
|
||||
# translation methods that can be used. Distributed methods
|
||||
# include "nsswitch", "umich_ldap", and "static". Each method
|
||||
# is a dynamically loadable plugin library.
|
||||
# New methods may be defined and inserted in the list.
|
||||
# The default is "nsswitch".
|
||||
#Method = nsswitch
|
||||
|
||||
# Optional. This is a comma-separated, ordered list of
|
||||
# translation methods to be used for translating GSS
|
||||
# authenticated names to ids.
|
||||
# If this option is omitted, the same methods as those
|
||||
# specified in "Method" are used.
|
||||
#GSS-Methods = <alternate method list for translating GSS names>
|
||||
|
||||
#-------------------------------------------------------------------#
|
||||
# The following are used only for the "static" Translation Method.
|
||||
#-------------------------------------------------------------------#
|
||||
[Static]
|
||||
|
||||
# A "static" list of GSS-Authenticated names to
|
||||
# local user name mappings
|
||||
|
||||
#someuser@REALM = localuser
|
||||
|
||||
|
||||
#-------------------------------------------------------------------#
|
||||
# The following are used only for the "umich_ldap" Translation Method.
|
||||
#-------------------------------------------------------------------#
|
||||
|
||||
[UMICH_SCHEMA]
|
||||
|
||||
# server information (REQUIRED)
|
||||
LDAP_server = ldap-server.local.domain.edu
|
||||
|
||||
# the default search base (REQUIRED)
|
||||
LDAP_base = dc=local,dc=domain,dc=edu
|
||||
|
||||
#-----------------------------------------------------------#
|
||||
# The remaining options have defaults (as shown)
|
||||
# and are therefore not required.
|
||||
#-----------------------------------------------------------#
|
||||
|
||||
# whether or not to perform canonicalization on the
|
||||
# name given as LDAP_server
|
||||
#LDAP_canonicalize_name = true
|
||||
|
||||
# absolute search base for (people) accounts
|
||||
#LDAP_people_base = <LDAP_base>
|
||||
|
||||
# absolute search base for groups
|
||||
#LDAP_group_base = <LDAP_base>
|
||||
|
||||
# Set to true to enable SSL - anything else is not enabled
|
||||
#LDAP_use_ssl = false
|
||||
|
||||
# You must specify a CA certificate location if you enable SSL
|
||||
#LDAP_ca_cert = /etc/ldapca.cert
|
||||
|
||||
# Objectclass mapping information
|
||||
|
||||
# Mapping for the person (account) object class
|
||||
#NFSv4_person_objectclass = NFSv4RemotePerson
|
||||
|
||||
# Mapping for the nfsv4name attribute the person object
|
||||
#NFSv4_name_attr = NFSv4Name
|
||||
|
||||
# Mapping for the UID number
|
||||
#NFSv4_uid_attr = UIDNumber
|
||||
|
||||
# Mapping for the GSSAPI Principal name
|
||||
#GSS_principal_attr = GSSAuthName
|
||||
|
||||
# Mapping for the account name attribute (usually uid)
|
||||
# The value for this attribute must match the value of
|
||||
# the group member attribute - NFSv4_member_attr
|
||||
#NFSv4_acctname_attr = uid
|
||||
|
||||
# Mapping for the group object class
|
||||
#NFSv4_group_objectclass = NFSv4RemoteGroup
|
||||
|
||||
# Mapping for the GID attribute
|
||||
#NFSv4_gid_attr = GIDNumber
|
||||
|
||||
# Mapping for the Group NFSv4 name
|
||||
#NFSv4_group_attr = NFSv4Name
|
||||
|
||||
# Mapping for the Group member attribute (usually memberUID)
|
||||
# The value of this attribute must match the value of NFSv4_acctname_attr
|
||||
#NFSv4_member_attr = memberUID
|
||||
@@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
T=$1
|
||||
N=$2
|
||||
|
||||
# start nfs-ganesha
|
||||
/usr/bin/{{ container_binary }} run --rm --net=host \
|
||||
{% if container_binary == 'podman' %}
|
||||
-d --log-driver journald --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \
|
||||
{% endif %}
|
||||
--pids-limit={{ 0 if container_binary == 'podman' else -1 }} \
|
||||
-v /var/lib/ceph:/var/lib/ceph:z \
|
||||
-v /etc/ceph:/etc/ceph:z \
|
||||
-v /var/lib/nfs/ganesha:/var/lib/nfs/ganesha:z \
|
||||
-v /etc/ganesha:/etc/ganesha:z \
|
||||
-v /var/run/ceph:/var/run/ceph:z \
|
||||
-v /var/log/ceph:/var/log/ceph:z \
|
||||
-v /var/log/ganesha:/var/log/ganesha:z \
|
||||
{% if ceph_nfs_dynamic_exports | bool %}
|
||||
--privileged \
|
||||
-v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket \
|
||||
{% endif -%}
|
||||
-v /etc/localtime:/etc/localtime:ro \
|
||||
{{ ceph_nfs_docker_extra_env }} \
|
||||
--entrypoint=/usr/bin/ganesha.nfsd \
|
||||
--name=ceph-nfs-{{ ceph_nfs_service_suffix | default(ansible_facts['hostname']) }} \
|
||||
{{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }}
|
||||
-F -L STDOUT "${GANESHA_EPOCH}"
|
||||
Reference in New Issue
Block a user