From e885e5ead4d5c5ddfa33f2f77740d4a931c71b84 Mon Sep 17 00:00:00 2001 From: Lisandro Pin Date: Thu, 12 Feb 2026 00:22:42 +0100 Subject: [PATCH 1/2] Updated weed shell (markdown) --- weed-shell.md | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/weed-shell.md b/weed-shell.md index e7a62e1..df34198 100644 --- a/weed-shell.md +++ b/weed-shell.md @@ -9,17 +9,22 @@ Type: "help " for help on . Most commands support " - cluster.raft.add # add a server to the raft cluster cluster.raft.ps # check current raft cluster status cluster.raft.remove # remove a server from the raft cluster + cluster.raft.transferLeader # transfer raft leadership to another master server + cluster.status # outputs a quick overview of the cluster status collection.delete # delete specified collection collection.list # list all collections ec.balance # balance all ec shards among all racks and volume servers ec.decode # decode a erasure coded volume into a normal volume ec.encode # apply erasure coding to a volume ec.rebuild # find and rebuild missing ec shards among volume servers + ec.scrub # scrubs EC volume contents on volume servers. fs.cat # stream the file content on to the screen fs.cd # change directory to a directory /path/to/dir fs.configure # configure and apply storage options for each location fs.du # show disk usage + fs.log.purge # purge filer logs fs.ls # list all files under a directory + fs.mergeVolumes # re-locate chunks into target volumes and try to clear lighter volumes. fs.meta.cat # print out the meta data content for a file or directory fs.meta.changeVolumeId # change volume id in existing metadata. fs.meta.load # load saved filer meta data to restore the directory and file structure @@ -33,9 +38,15 @@ Type: "help " for help on . Most commands support " - fs.verify # recursively verify all files under a directory lock # lock in order to exclusively manage the cluster mount.configure # configure the mount on current server + mq.balance # balance topic partitions + mq.topic.compact # compact the topic storage into parquet format + mq.topic.configure # configure a topic with a given name + mq.topic.describe # describe a topic mq.topic.list # print out all topics - remote.cache # cache the file content for mounted directories or files + mq.topic.truncate # clear all data from a topic while preserving topic structure + remote.cache # comprehensive synchronization and caching between local and remote storage remote.configure # remote storage configuration + remote.copy.local # copy local files to remote storage remote.meta.sync # synchronize the local file meta data with the remote file metadata remote.mount # mount remote storage and pull its metadata remote.mount.buckets # mount all buckets in remote storage and pull its metadata @@ -44,11 +55,18 @@ Type: "help " for help on . Most commands support " - s3.bucket.create # create a bucket with a given name s3.bucket.delete # delete a bucket by a given name s3.bucket.list # list all buckets + s3.bucket.lock # view or enable Object Lock for an S3 bucket + s3.bucket.owner # view or change the owner of an S3 bucket s3.bucket.quota # set/remove/enable/disable quota for a bucket s3.bucket.quota.enforce # check quota for all buckets, make the bucket read only if over the limit s3.circuitBreaker # configure and apply s3 circuit breaker options for each bucket s3.clean.uploads # clean up stale multipart uploads s3.configure # configure and apply s3 options for each bucket + s3.policy # manage s3 policies + s3tables.bucket # manage s3tables table buckets + s3tables.namespace # manage s3tables namespaces + s3tables.table # manage s3tables tables + s3tables.tag # manage s3tables tags unlock # unlock the cluster-wide lock volume.balance # balance all volumes among volume servers volume.check.disk # check all replicated volumes to find and fix inconsistencies. It is optional and resource intensive. @@ -57,11 +75,13 @@ Type: "help " for help on . Most commands support " - volume.delete # delete a live volume from one volume server volume.deleteEmpty # delete empty volumes from all volume servers volume.fix.replication # add or remove replicas to volumes that are missing replicas or over-replicated - volume.fsck # check all volumes to find entries not used by the filer + volume.fsck # check all volumes to find entries not used by the filer. It is optional and resource intensive. + volume.grow # grow volumes volume.list # list all volumes volume.mark # Mark volume writable or readonly from one volume server volume.mount # mount a volume from one volume server volume.move # move a live volume from one volume server to another volume server + volume.scrub # scrubs volume contents on volume servers. volume.tier.download # download the dat file of a volume from a remote tier volume.tier.move # change a volume from one disk type to another volume.tier.upload # upload the dat file of a volume to a remote tier From d184e6123f400aa1e65f251133935465733562ff Mon Sep 17 00:00:00 2001 From: Lisandro Pin Date: Thu, 12 Feb 2026 00:40:36 +0100 Subject: [PATCH 2/2] Document volume server maintenance mode for https://github.com/seaweedfs/seaweedfs/issues/7977 --- Volume-Management.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Volume-Management.md b/Volume-Management.md index 5fb0f2d..65a8b36 100644 --- a/Volume-Management.md +++ b/Volume-Management.md @@ -66,3 +66,26 @@ The balancing plan will try to evenly spread the number of writable and readonly Run `weed shell` and `volume.mount -node : -volumeId ` to mount a volume file. To mount all new volume files you can send a hang-up signal to the volume server causing a reload with a command such as `pkill -HUP -f "weed volume"`. + +## Servicing live volumes + +When dealing with hardware storage issues, it can be useful to prevent writes to volume servers _without_ stopping the service altogether - f.ex. on volumes with RAID storage backends. Volume servers support a maintenance mode for this: when enabled, the server becomes read-only. Reads will succeed, but any write attempt will error out. + +Maintenance mode can be managed via the `volumeServer.state` shell command: + +``` +> volumeServer.state +192.168.10.111:9007 -> Maintenance mode: no +192.168.10.111:9008 -> Maintenance mode: no +192.168.10.111:9009 -> Maintenance mode: no + +> volumeServer.state --nodes 192.168.10.111:9009 --maintenanceOn +192.168.10.111:9009 -> Maintenance mode: yes + +> volumeServer.state +192.168.10.111:9007 -> Maintenance mode: no +192.168.10.111:9008 -> Maintenance mode: no +192.168.10.111:9009 -> Maintenance mode: yes +``` + +Maintenance mode is a sticky server state flag. Changes are effective immediately, and will persist even if the server is restarted. \ No newline at end of file