HP StorageWorks
X9000 File Serving Software CLI Reference
Guide
This document describes commands provided with X9000 File Serving Software. It is intended for system administrators
managing X9300 Network Storage Gateway systems, X9320 Network Storage Systems, and X9720 Network Storage Systems.
HP Part Number: TA768-96032
Published: April 2011
Edition: Fourth
Confidential computer software. Valid license from HP required for possession, use or copying. Consistent with FAR 12.211 and 12.212, Commercial
Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under
vendor's standard commercial license.
The information contained herein is subject to change without notice. The only warranties for HP products and services are set forth in the express
warranty statements accompanying such products and services. Nothing herein should be construed as constituting an additional warranty. HP shall
not be liable for technical or editorial errors or omissions contained herein.
Acknowledgments
Microsoft, Microsoft® and Windows® are U.S. registered trademarks of Microsoft Corporation.
UNIX® is a registered trademark of The Open Group.
Revision History
DateEdition
DescriptionSoftware
Version
Initial release of HP StorageWorks X9000 File Serving Software5.3.1November 2009First
5.4.0April 2010Second
Added or updated the following commands: ibrix_async_replicate,
The commands in “X9000 File Serving Software commands” (page 11) must be executed on the
management console host. Root privileges are required to run these commands.
The commands in “Commands for Linux X9000 clients and file serving nodes” (page 139) can be
executed on file serving nodes and/or Linux X9000 clients. Any user can run these commands.
All commands are run from the working directory /usr/local/ibrix/bin.
Command syntax
Names. When naming physical volumes, volume groups, logical volumes, file systems, and other
cluster entities, use only alphanumeric characters and the underscore ( _ ). Do not use any other
characters unless they are specifically required in the command syntax.
Lists. Use a comma to separate list items in a command. Spaces are not allowed. In the following
command, the -s option takes a list of items:
Ranges. Many commands allow a range of values instead of an explicit list of values. To enter a
range, enclose the pattern to be matched in square brackets. The range specified in the following
command matches all hosts from FSHOST10 to FSHOST15.
This chapter lists commands used to configure and manage X9000 File Serving Software. The
commands must be run on the management console host.
ibrix_activedirectory
Configures and lists Active Directory settings.
Description
Active Directory settings must be configured on the management console to allow Windows X9000
clients to query the Active Directory server when reading or writing on a file serving node. Windows
X9000 clients use the proxy user to query the Active Directory server to resolve UID/GID-to-Windows
SID mappings. If mappings cannot be resolved, the user named by the -W WIN_USER_NAME
option is displayed as the owner of the file.
Execute this command on every management console that Windows X9000 clients will need to
access.
Synopsis
Configure Active Directory for static user mapping:
For the -u option, enter the proxy user name in the format "domainname\username" where
domainname is the name of the NIS domain in Active Directory. The double quotes are required,
as shown below.
If Active Directory is running on Windows Server 2003 R2, the -E and -F options are required.
Configure Active Directory for automatic user mapping:
ibrix_activedirectory -A [-d DOMAIN_NAMES] [-L] [-W
DEFAULT_WIN_USER_NAME]
The -L option allows mapping of local users.
List Active Directory settings in effect on the management console:
ibrix_activedirectory -l
The output includes the domain name, domain server IP, proxy user name, default Windows user
name, and the UID and GID field names.
DescriptionOption
Configures automatic user mapping.-A
-E UID_FIELD_NAME
-F GID_FIELD_NAME
A UID field name. On Windows Server 2003 SP2, this is Read
msSFU30UidNumber. On Windows Server 2003 R2, it is Read UidNumber.
A GID field name. On Windows Server 2003 SP2 this is Read
msSFU30GidNumber. On Windows Server 2003 R2, it is Read gidNumber.
Allows local user mapping.-L
ibrix_activedirectory11
DescriptionOption
Configures static user mapping.-S
See also
-W WIN_USER_NAME
-u PROXY_USER
Sets the “Unknown” Windows user, who takes ownership of files when a mapping
cannot be resolved.
Identifies a fully qualified domain name.-d DOMAIN_NAME
The domain controller IP address.-i DOMAIN_CONTROLLER_IP
Displays Active Directory settings on this management console.-l
Sets the Active Directory proxy password.-p PROXY_PASSWORD
Sets the Active Directory proxy user name, specified in the format
"domainname\username".
Shows the usage for this command.-?
“Windows X9000 client” in the HP StorageWorks X9000 File Serving Software Installation Guide
12X9000 File Serving Software commands
ibrix_at
Schedules X9000 Software commands.
Description
The ibrix_at command is used to create a schedule that is applied to another X9000 Software
command. For example, ibrix_at can be used to create a schedule for automated snapshots.
The command has two parts, separated by a colon. The first part is a cron-like scheduling string.
The following web page explains how to write the string:
The second part of the ibrix_at command is the X9000 Software command to which the schedule
will be applied.
Currently, ibrix_at can be used with ibrix_snap to create a snapshot schedule and then start
the snapshots. The following command takes a snapshot at 11:30 a.m. on the 10th of every month.
The automated snapshot strategy, specified with the -n option, is monthly1.
File serving nodes that will be hosting CIFS, FTP, or HTTP shares must be configured to authenticate
with either local users and groups or your Active Directory domain.
IMPORTANT:To use Local Users authentication, your cluster must use the agile management
console configuration. See the HP StorageWorks File Serving Software File System User Guide for
more information.
In the command, DOMAIN_NAME is your Active Directory domain. AUTH_PROXY_USER_NAME is
the name of an AD domain user (typically a Domain Administrator) having privileges to join the
specified domain, and AUTH_PROXY_PASSWORD is the password for that account. To configure
Active Directory authentication on specific nodes, specify those nodes in HOSTLIST.
Options
For the -S option, enter the settings as settingname=value. Use commas to separate the
settings, and enclose the list in quotation marks. If there are multiple values for a setting, enclose
the values in square brackets. The users you specify must already exist. For example:
To remove a setting, enter settingname=.
All servers, or only the servers specified in HOSTLIST, will be joined to the specified Active
Directory domain.
Modify authentication settings and hosts:
ibrix_auth -t [-S SETTINGLIST] [-h HOSTLIST]
List default authentication settings:
ibrix_auth -L
The settings can be specified with the -S SETTINGLIST option.
Display current information about authentication:
ibrix_auth -i [-h HOSTLIST]
DescriptionOption
-A
AUTH_PROXY_USER_NAME
AUTH_PROXY_PASSWORD
14X9000 File Serving Software commands
Specifies the username of an account having privileges to join the Active Directory domain.
This is typically a Domain Administrator.
Displays default authentication settings.-L
Configures Local Users authentication.-N
Specifies the password for the proxy user account.-P
DescriptionOption
Specifies configuration parameters for Active Directory.-S SETTINGLIST
A list of file serving nodes.-h HOSTLIST
Specifies the domain name for Active Directory authentication.-n DOMAIN_NAME
Displays current information about authentication.-i
Modifies the authentication settings.-t
Shows the usage for this command.-?
ibrix_auth15
ibrix_autoconnect
Manages entries in the Autoconnect table.
Description
An X9000 Software autoconnection enables NFS clients to mount file systems automatically
whenever they are accessed. At the same time, Autoconnect manages how these connections are
distributed among file serving nodes. Autoconnect uses the Linux automount daemon; working
familiarity with automount is recommended.
Autoconnect accesses a user-edited script that directs NFS client file requests to the management
console, where they are checked against the database and matched to a mount string. The mount
string and any mount options are returned to the client along with the name of the file serving node
that the client should use for the mount.
Mountpoints are stored in the Autoconnect table in the configuration database. Each mountpoint
is described by a user-defined identifier (or key), the file system to mount, and any mount options.
Autoconnections are added to or deleted from the database using the ibrix_autoconnect -A
and -D commands. The ibrix_autoconnect -l command displays current autoconnect entries.
When setting up Autoconnect, you first need to add entries to the Autoconnect table as described
here. Next, customize an Autoconnect script (either a script provided with the X9000 Software or
a custom script) and then edit the auto.master file on NFS clients.
Synopsis
Options
Add an entry to the Autoconnect table:
ibrix_autoconnect -A -k KEY -f FSNAME [-o OPTIONS]
KEY is a user-defined value, FSNAME is the file-system name, and OPTIONS identify NFS mount
options as listed in the Linux mount man page.
Delete entries in the Autoconnect table:
ibrix_autoconnect -D -k KEYLISTThe command deletes entries matching the keys in KEYLIST.
List entries in the Autoconnect table:
ibrix_autoconnect -l
DescriptionOption
Adds a mountpoint to the Autoconnect table.-A
Deletes a mountpoint from the Autoconnect table.-D
One or more user-defined keys that represent a mountpoint.-f FSNAME
A key or list of keys.-k KEY or KEYLIST
Lists Autoconnect table entries.-l
Linux mount options as defined on the mount man page.-o OPTIONS
Shows the usage for this command.-?
See also
automount, mount
16X9000 File Serving Software commands
ibrix_certificate
Manages SSL certificates.
Description
Servers accepting FTPS and HTTPS connections typically provide an SSL certificate that verifies the
identity and owner of the web site being accessed. You can add your existing certificates to the
cluster, enabling file serving nodes to present the appropriate certificate to FTPS and HTTPS clients.
X9000 Software supports PEM certificates.
When you add an SSL certificate file to the cluster, the file must contain both the certificate contents
(the .crt file) and the private key (the .key file). The certificate file must use PEM encoding, must
include the headers and footers from the .crt and .key files, and cannot contain any extra
spaces. See the HP StorageWorks X9000 File Serving Software File System User Guide for details
about creating certificate files in the format required by X9000 Software.
When you configure the FTP share or the HTTP vhost, you can select the certificate to be used for
FTPS or HTTPS.
Synopsis
Add a certificate:
ibrix_certificate -a -c CERTNAME -p CERTPATH
For example:
# ibrix_certificate -a -c mycert -p
/usr/local/ibrix/httpd/conf/mycert.crt
Options
Run the command from the active management console. To add a certificate for a different node,
copy that certificate to the active management console and then add it to the cluster. For example,
if node ib87 is hosting the active management console and you have generated a certificate for
node ib86, copy the certificate to ib87:
scp server.pem ib87/tmp
Then, on node ib87, add the certificate to the cluster:
ibrix_certificate -a -c cert86 –p /tmp/server.pem
Delete a certificate:
ibrix_certificate -d -c CERTNAME
Display information about certificates:
ibrix_certificate -i [-c CERTNAME]
Export a certificate:
ibrix_certificate -e -c CERTNAME
This command displays the contents of the certificate. You can then copy and save the contents
for future use.
DescriptionOption
Adds a certificate.-a
Specifies the name of a certificate.-c CERTNAME
Deletes a certificate.-d
Exports a certificate.-e
ibrix_certificate17
See also
DescriptionOption
Shows information about a certificate.-i
Specifies the location of the certificate file.-p CERTPATH
NOTE:The -m and -S SETTINGLIST options shown in the command usage message are not
currently supported.
ibrix_ftpshare, ibrix_httpvhost
18X9000 File Serving Software commands
ibrix_cfrjob
Starts and stops the replication process and monitors the state of remote replication activity.
Description
NOTE:Remote replication must be configured before replication jobs can be started.
Remote replication provides a transparent method to replicate changes in a source file system on
one cluster to a target file system on either the same cluster or a second cluster. The remote
replication service has two modes: continuous and run-once. For detailed information about these
modes, see the HP StorageWorks File Serving Software File System User Guide.
Replication is started and stopped from the source cluster with ibrix_cfrjob -s. When a
replication job is started for a file system, ibrix_cfrjob dynamically generates a new job with
a unique job id for the replication instance.
Use the ibrix_cfrjob -o option for the run-once mode to synchronize single directories or
entire file systems on the source and target in a single pass.
Multiple run-once jobs can be started simultaneously. The jobs terminate on their own when the
synchronization is completed. Any job can be stopped manually if necessary.
While replication jobs ensure that file systems remain synchronized, run-once jobs can experience
small variations if there is I/O activity on the source during the job. For example, if the source file
foo.txt is written on the target and is then edited or deleted while the run-once job is still active,
the changes to foo.txt are not made on the target. The foo.txt file on the target remains as
written by the run-once job. When the job is completed, the directories containing foo.txt are
not fully synchronized.
Synopsis
NOTE:If a source or target file system is unmounted and ibrix_fsck is run to check it, a full
resynchronization is recommended.
Start a remote replication task to a remote cluster:
The -f option specifies the source file system to be replicated. The -C option specifies the target
cluster. If you are replicating to a directory on the target, -P specifies the target directory. If the
-P option is not used, the mount point of the target filesystem will be used as the root of the
replicated data.
Use the -o option for run-once jobs. This option can be used to synchronize single directories or
entire file systems on the source and target in a single pass. If you do not specify a source directory
with the -S option, the replication starts at the root of the file system. The run-once job terminates
after the replication is complete; however, the job can be stopped manually, if necessary.
The command starts a continuous or run-once intra-cluster replication task for file system
SRC_FSNAME. The -F option specifies the name of the target file system (the default is the same
as the source file system). The -P option specifies the target directory under the target file system
(the default is the root of the file system).
Use the -o option to start a run-once job. The -S option specifies a directory under the source file
system to synchronize with the target directory.
The -S option specifies the directory under the source file system to synchronize with the target
directory. The -P option specifies the target directory.
Stop a remote replication task:
ibrix_cfrjob -k –n TASKIDUse ibrix_task -l to obtain the appropriate ID.
Pause a remote replication task:
ibrix_cfrjob -p –n TASKIDUse ibrix_task -l to obtain the appropriate ID.
Resume a remote replication task:
ibrix_cfrjob -r –n TASKIDUse ibrix_task -l to obtain the appropriate ID.
List all running and stopped continuous replication jobs in the cluster:
You can limit the output to a specific file system or host name. The display shows the status of jobs
on each node, as well as job summary statistics (number of files in the queue, number of files
processed). The query also indicates whether scanning is in progress on a given file serving node
and lists any error conditions.
Print detailed information about continuous replication tasks that match the specified task IDs:
If the command is executed from the source side, that management console answers the query with
information gathered from the ibrcfrd daemons on the source-side file serving nodes.
DescriptionOption
The remote cluster name.-C SRC_CLUSTERNAME
The target file-system name.–F TGT_FSNAME
A directory under the target file system.-P TGTDIR
-S SRC_DIR
Identifies the source directory where replication starts. This option is valid only when
used within the -o option, where SRC_DIR specifies a particular directory. The target
directory pathname is assumed to be the same as that of the source path.
The source file-system name.-f SRC_FSNAME
The name of the file serving node.–h HOSTNAME
Displays detailed information about continuous and run-once replication tasks.-i
Stops a remote replication task.-k
Lists all running and stopped continuous replication jobs.-l
The ID of a continuous replication or run-once task.-n TASKID
20X9000 File Serving Software commands
DescriptionOption
Identifies this job as a run-once action that synchronizes a particular directory.-o
Pauses the specified remote replication task.-p
Resumes the specified remote replication task.-r
Starts a remote replication task for the specified file system.-s
Shows the usage for this command.-?
ibrix_cfrjob21
ibrix_cifs
Manages CIFS shares.
NOTE:Be sure to use the ibrix_cifs command located in <installdirectory>/bin.
The ibrix_cifs command located in /usr/local/bin/init is used internally by X9000
Software and should not be run directly.
Description
CIFS is the file-sharing protocol used in Windows-based networks. Use the ibrix_cifs command
to configure CIFS shares. The maximum number of shares is 3000.
Access-based enumeration can be applied to a CIFS share. When this feature is in effect, users
can see only the files and folders to which they have been allowed access on the CIFS share.
The share can be added at the specified path on all file serving nodes or only the nodes specified
in HOSTLIST. To specify a setting, enter settingname=value. Use commas to separate the
settings, and enclose the list in quotation marks (for example, “read only=yes,access basedenumeration=true”).
The share can be modified on all file serving nodes or only the nodes specified in HOSTLIST. To
modify CIFS settings, include the -S SETTINGLIST option and supply the new values. To delete
a setting, enter settingname= with no value (for example, read only=). To list the valid CIFS
share settings, use ibrix_cifs -L.
Delete a CIFS share:
ibrix_cifs -d -s SHARENAME [-h HOSTLIST]
The share can be deleted from either all file serving nodes or only the nodes specified in HOSTLIST.
Delete all CIFS shares associated with the specified file system:
ibrix_cifs -d -f FSNAME
Display information about CIFS shares:
ibrix_cifs -i [-h HOSTLIST]
You can list information for all file serving nodes or only the nodes specified in HOSTLIST.
List valid CIFS share settings:
ibrix_cifs -L
-S SETTINGLIST
22X9000 File Serving Software commands
DescriptionOption
Lists valid CIFS share settings.-L
Specifies CIFS settings. Use commas to separate the settings, and enclose the
list in quotation marks (for example, “read only=yes,access basedenumeration=true”).
Adds a CIFS share.-a
See also
DescriptionOption
Deletes a CIFS share.-d
A file system.–f FSNAME
One or more file serving nodes.-h HOSTLIST
Displays information about CIFS shares.-i
Modifies a share.-m
The path to a shared directory.-p SHAREPATH
The name of a shared directory.-s SHARENAME
Shows the usage for this command.-?
ibrix_cifsconfig
ibrix_cifs23
ibrix_cifsconfig
Configures global settings for CIFS.
Description
The ibrix_cifsconfig command configures global settings for CIFS operations. The settings
apply to all CIFS shares configured in the cluster.
For the -S SETTINGLIST option, enclose the list of settings in quotation marks, and use commas
to separate the settings. For example, the following command sets SMB signing to enabled and
required:
Clients will experience a temporary interruption in service during the restart.
Display current information about global CIFS settings:
ibrix_cifsconfig -i [-h HOSTLIST]
List default global CIFS configuration settings:
ibrix_cifsconfig -L
DescriptionOption
Lists default global CIFS configuration settings.-L
-S SETTINGLIST
Specifies global CIFS settings. Use commas to separate the settings, and enclose
the list in quotation marks (for example,
"smb_signing_enabled=1,smb_signing_required=0").
24X9000 File Serving Software commands
Specifies one or more file serving nodes.-h
Displays current information about global CIFS settings.-i
Configures global CIFS settings.-t
Shows the usage for this command.-?
See also
ibrix_cifs
ibrix_cifsconfig25
ibrix_client
Performs management and control procedures for X9000 clients.
Description
ibrix_client enables the following X9000 client procedures:
•Registers a Linux X9000 client with a management console. Clients that are to communicate
•Sets a preferred user interface for an X9000 client. (To prefer a user interface for a hostgroup,
•Unprefers a user interface for an X9000 client. (To unprefer an interface for a hostgroup, use
•Lists client information.
•Deletes X9000 clients from the configuration database.
X9000 clients use the cluster interface by default. It is not necessary to prefer a user interface for
NFS or CIFS clients because they use client-side information to select a user interface when they
mount a file system.
When a user interface has been preferred for traffic from a source host to a destination host, traffic
in the reverse direction remains defaulted to the cluster interface.
The network interface preference for an X9000 client is stored in the management console. When
X9000 Software services start on the client, the client queries the management console for its
preferred network interface and then starts using it. If X9000 Software services are already running
on a client, you can force the client to query the management console. To do this, run
ibrix_client or ibrix_lwhost --a, or reboot the client.
with multiple management consoles must be registered on each console. (To register a Windows
X9000 client, use the Windows X9000 client GUI.)
use ibrix_hostgroup.)
ibrix_hostgroup.)
Synopsis
Register a Linux X9000 client at an IP address:
ibrix_client -a -h CLIENT -e IPADDRESS
Execute this command on every management console with which the client will communicate.
Delete X9000 clients from the configuration database:
ibrix_client -d -h CLIENTLIST
Display operational and configuration information for X9000 clients:
ibrix_client -i [-h CLIENTLIST]
To see all clients, omit the -h option.
List X9000 client host names, IP addresses, and IDs:
ibrix_client -l [-h CLIENTLIST] [-v]
To see all clients, omit the -h option. To also list IAD, kernel, and file-system version information,
include the -v option.
Set a preferred network interface for an X9000 client:
ibrix_client -n -h SRCCLIENT -A DESTSERVER/IFNAME
The command sets interface IFNAME for traffic from source client SRCCLIENT to destination server
DESTSERVER. (To prefer a network interface for a hostgroup, use ibrix_hostgroup.)
Delete the established network interface preference for an X9000 client:
ibrix_client -n -h SRCHOST -D DESTSERVER
26X9000 File Serving Software commands
Options
When the command has completed, the default cluster interface will be used to communicate from
the client to the DESTSERVER.
DescriptionOption
Assigns a preferred NIC.-A
See also
-D DESTSERVER
Deletes the network interface preference established between the source client and the
destination server.
Adds an X9000 client.-a
Deletes a client from the configuration database.-d
Specifies the IP address for a client.-e IPADDRESS
One or more clients (specify as CLIENT1,CLIENT2,CLIENT3,...).-h CLIENTLIST
Provides detailed information for one or more clients.-i
Lists clients.-l
Sets a preferred network interface.-n
When used with -l, reports version information for the file system, IAD, and kernel.-v
Shows the usage for this command.-?
ibrix_hostgroup, ibrix_lwhost
ibrix_client27
ibrix_cluster
Registers source and target clusters for remote replication.
Description
A cluster must be registered before other remote replication commands can use it as a target.
For each remote replication pair, cluster A must be registered with cluster B, and cluster B must be
separately registered with cluster A. Run this command on both management consoles, so each
cluster knows about its remote partner. You will need to run the command only once per source
or target.
Synopsis
Register source and target clusters:
ibrix_cluster -r -C CLUSTERNAME -H REMOTE_FM_HOST
CLUSTERNAME is the name of the management console for a cluster. If the cluster is using an agile
management console configuration, specify the clusterName displayed by the ibrix_fm_tune
-l command, and enter the IP address of the cluster VIF.
Deregister a remote replication cluster:
ibrix_cluster -d -C CLUSTERNAME
List clusters registered on this management console:
ibrix_cluster -l
Options
See also
DescriptionOption
Deregisters a remote replication cluster.-d
Lists clusters registered on this management console.-l
Registers source and target clusters.-r
Name of the target cluster being registered or deregistered.-C CLUSTER_NAME
Name or IP address of the host where the target cluster’s management console is running.-H REMOTE_FM_HOST
Shows the usage for this command.-?
ibrix_cfrjob, ibrix_exportcfr
28X9000 File Serving Software commands
ibrix_clusterconfig
Sets or displays cluster configuration parameters.
Description
Configures cluster configuration settings such as the default gateway and time zone. The settings
are used during cluster setup and can also be used to update the configuration of existing systems.
If SETUP is bond, slaves must be defined. RANGE is a comma-delimited list of ranges in the form
[nnn.nnn.nnn.nnn-nnn.nnn.nnn.nnn]. OPTIONS is a list of option=value pairs, delimited
by commas.
Remove a network configuration:
ibrix_clusterconfig -d -W DEV
Erase all addresses allocated for a network:
ibrix_clusterconfig -e -L DEV
Show allocated addresses for a network:
ibrix_clusterconfig -i -L DEV
Create or update an allocated address:
ibrix_clusterconfig -c -L DEV -I ADDRESS [-C MAC] [-h HOSTNAME]
ibrix_clusterconfig -s [-P] [-O] [-o keyword] [-h HOSTLIST]
Use -P to synchronize cluster parameters such as DNS and NTP. Use -O to synchronize OS tunings.
DescriptionOption
Host address aliases.-A
MAC address.-C
Sets DNS domains.–D DOMAIN1[,...,DOMAINn]
IP address [nnn.nnn.nnn.nnn].–I ADDRESS
Allocated addresses.-L DEV
Netmask [nnn.nnn.nnn.nnn].–M NETMASK
NTP servers.–N SERVER1[,...,SERVERn]
OS parameters and tunings.–O KEY=VALUE,[...KEY=VALUE]
Named configuration parameters.–P
Queries OS parameters and tunings.–Q
Address range [nnn.nnn.nnn.nnn-nnn.nnn.nnn.nnn].–R RANGE
DNS servers.–S SERVER1[,...,SERVERn]
Network setup type.–T SETUP
Bonded slave devices (DEV1,DEV2,...).–V SLAVES
Preconfigured networks.–W DEV
Network category (cluster or user).–Y CATEGORY
Changes the stored configuration.–c
Deletes the stored configuration.-d
30X9000 File Serving Software commands
Erases address allocations.–e
A list of one or more hosts (HOST1,HOST2,HOST3,...).–h
Shows the stored configuration.–i
Option list.–o keyword
Synchronizes settings on file serving nodes.-s
Shows the usage for this command.?
Loading...
+ 120 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.