我在 XFS 文件系统上设置了配额,用户可以在该服务器上运行它来获取配额报告:
xfs_quota -c 'quota -hu user' /xfs_partition
不过,我希望用户能够直接从通过 NFS 安装此分区的计算机上检索该系统的配额使用情况,因为该服务器不容易访问。
我怎样才能做到这一点?
我在 XFS 文件系统上设置了配额,用户可以在该服务器上运行它来获取配额报告:
xfs_quota -c 'quota -hu user' /xfs_partition
不过,我希望用户能够直接从通过 NFS 安装此分区的计算机上检索该系统的配额使用情况,因为该服务器不容易访问。
我怎样才能做到这一点?
我正在清理一个驱动器dd
。这是一个 USB 设备和 120GB,需要很长时间:
dd if=/dev/zero of=/dev/da0 bs=1M status=progress
我试过弄乱块大小(更小和更大的值bs=4M
,bs=8M
等等),但似乎没有什么区别。它的写作速度7000 kB/s
非常慢。
我不关心“安全地”擦除数据,我只想擦除数据,这样我就可以从头开始重新建立分区结构和文件系统。是否有替代方法(使用标准实用程序)可以针对此类场景执行快速(一两分钟内)擦除?我正在使用的设备是 FreeBSD,但我认为 dd 命令(和 gpart 等)在它和 Linux 之间的工作方式类似。
我有一个Windows Server 2019(标准版)操作系统,其分区在几天内耗尽空间(C:总共有 100GB)导致操作系统崩溃。它在小型组织中用作域控制器(DC)。您只安装了 WinRAR、防病毒程序和 Acronis True Image Services;不会下载操作系统的更新。我检查了临时文件,它们实际上是空的;防病毒程序几乎不生成文件,Acronis 日志很少。系统事件记录非常有限。页面文件最大限制为 500MB 。休眠当然是关闭的。
注意:几年前我将此 DC 从 Windows Server 2003 迁移到 Windows Server 2008,去年又迁移到了 Windows Server 2019。我认为域控制器对象不足以使数据库增长到填充 100GB。我只需要扩展 C: 分区并通过从另一个分区(单个安装的硬盘驱动器)获取来增加其可用空间。
会发生什么?
自从我处理医疗数据以来,出于安全原因,我有一个非常严格的系统,最低限度的应用程序。
有时,由于某种原因,我们使用的笔记本电脑出现故障,无法启动,无法登录,机器人进程损坏等。发生这种情况时,笔记本电脑会通过邮件发送给我进行维修。这是耗时且昂贵的。
如果有一个 Mint 的只读压缩图像和我创建的默认图像会更好。
不幸的是,我的用户在任何技术方面都不值得信任。我可以通过电话引导他们。而已。
有没有办法我可以从 squashfs 系统恢复操作系统,然后在原始系统上进行 DD,以便它可以像默认值一样启动?
我在 Debian 9 机器上使用 ZFS。这台机器已经工作了多年,直到今天都没有出现任何问题。
zfs 池安装在 RAID 系统的顶部,由硬件控制(因此只有一个驱动器作为 sda 暴露给 Linux)。您可以在下面看到“zpool status”的输出。
在继续之前,只需提一下我检查了 RAID 的一致性,一切都很好。
突然,对文件系统的所有访问都会引发冻结命令(甚至是 ls 命令),最终,我需要手动重新启动机器。
运行zpool status -v
时,输出为:
#/sbin/zpool status -v
pool: export
state: ONLINE
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: http://zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub repaired 0B in 53h4m with 0 errors on Tue Mar 15 05:28:38 2022
config:
NAME STATE READ WRITE CKSUM
export ONLINE 0 0 0
sda ONLINE 0 0 0
errors: Permanent errors have been detected in the following files:
export/home:<0x0>
export/home:<0x2b2ed23>
export/home:<0x2e1183b>
export/home:<0x2b2e849>
export/home:<0x1d0b5b1>
所以,主要问题是:这些文件的含义是什么?我该如何解决这个问题?
先感谢您!
我正在尝试处理一个非常罕见的极端情况,即我的系统在 ext4 文件系统中存在轻微损坏。这个触发器 systemd 的emergency.service
,我正在尝试改变它的行为以自动修复 fs。
无论如何,有没有办法稍微改变分区/文件系统以最小的数据丢失机会来诱导这种状态?我只需要fsck
返回有问题的地方。
FileNotFoundError: [Errno 2] No such file or directory
当我尝试使用循环数据批次的 csv 写入器将 csv 文件写入存储桶时,出现此错误。围绕该错误对 Cloud Function 日志的完整洞察:
File "/workspace/main.py", line 299, in write_to_csv_file with open(filepath, "w") as outcsv: FileNotFoundError: [Errno 2] No such file or directory: 'gs://MY_BUCKET/MY_CSV.csv' Function execution took 52655 ms, finished with status: 'crash' OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k ```
而且,虽然这个 bucket_filepath 肯定存在:我可以上传一个空的虚拟文件并获取它的“gsutils URI”(右键单击文件右侧的三个点),并且 bucket_filepath 看起来相同:'gs://MY_BUCKET/MY_CSV.csv'
.
我检查了保存一个虚拟的熊猫数据框,而不是使用pd.to_csv
它,它使用相同的 bucket_filepath (!)。
因此,必须有另一个原因,可能是作者不被接受,或者with statement
打开文件。
引发错误的代码如下。它与在本地服务器上的正常 cron 作业中在 Google Cloud Function 之外工作的代码相同。我在抛出错误的行周围添加了两个调试打印,print("Right after opening the file ...")
不再显示。还显示了为每个批次调用的子函数query_execute_batch()
,write_to_csv_file()
但这里可能不是问题,因为在写入打开 csv 文件时,错误已经在一开始就发生了。
requirements.txt
(然后作为模块导入):
SQLAlchemy>=1.4.2
google-cloud-storage>=1.16.1
mysqlclient==2.1.0
pandas==1.2.3
fsspec==2021.11.1
gcsfs==2021.11.1
unicodecsv==0.14.1
从main.py
:
def query_execute_batch(connection):
"""Function for reading data from the query result into batches
:yield: each result in a loop is a batch of the query result
"""
results = execute_select_batch(connection, SQL_QUERY)
print(f"len(results): {len(results)}")
for result in results:
yield result
def write_to_csv_file(connection, filepath):
"""Write the data in a loop over batches into a csv.
This is done in batches since the query from the database is huge.
:param connection: mysqldb connection to DB
:param filepath: path to csv file to write data
returns: metadata on rows and time
"""
countrows = 0
print("Right before opening the file ...")
with open(filepath, "w") as outcsv:
print("Right after opening the file ...")
writer = csv.DictWriter(
outcsv,
fieldnames=FIELDNAMES,
extrasaction="ignore",
delimiter="|",
lineterminator="\n",
)
# write header according to fieldnames
writer.writeheader()
for batch in query_execute_batch(connection):
writer.writerows(batch)
countrows += len(batch)
datetime_now_save = datetime.now()
return countrows, datetime_now_save
请注意,为了使上述脚本正常工作,我导入gcsfs
了这使得存储桶可读写。否则我可能需要一个谷歌云存储对象,例如:
storage_client = storage.Client()
bucket = storage_client.bucket(BUCKET_NAME)
然后使该存储桶中的文件具有更多功能,但这不是这里的目的。
在下面的pd.to_csv
代码中,它使用虚拟 SQL 查询的输出SELECT 1
作为数据帧的输入。这可以保存到同一个bucket_filepath,当然原因可能不仅仅是pd.to_csv()
这样,而且数据集是一个虚拟的,而不是来自一个巨大的SELECT query
. 或者还有其他原因,我只是猜测。
if records is not None:
df = pd.DataFrame(records.fetchall())
df.columns = records.keys()
df.to_csv(filepath,
index=False,
)
datetime_now_save = datetime.now()
countrows = df.shape[0]
我想使用 csv 编写器有机会使用 unicodecsv 模块编写 unicode 并有机会使用批处理。
我可能愿意更改为 pandas 中的批处理(loop + append
mode 或chunksize
),例如将大型 Pandas Dataframes to CSV file in chunks以摆脱此存储桶文件路径问题,但我宁愿使用现成的代码(切勿触摸正在运行的系统)。
如何使用 csv 编写器完成该 csv 的保存,以便它可以在write
模式 =的存储桶中打开一个新文件with open(filepath, "w") as outcsv:
?
给定的函数write_to_csv_file()
只是云函数的一小部分,它使用了广泛的函数和级联函数。我不能在这里展示整个可重现的案例,希望可以通过经验或更简单的例子来回答。
我正在尝试缩小 BTRFS 分区并使用该可用空间创建新的 EXT4 分区。
我做了btrfs filesystem resize -5g /
现在我有了这个(注意 Device slack 等于我缩小的):
orangepiplus2e:~:# btrfs device usage /
/dev/mmcblk2p2, ID: 1
Device size: 14.15GiB
Device slack: 5.00GiB
Data,single: 7.66GiB
Metadata,single: 768.00MiB
System,single: 32.00MiB
Unallocated: 725.00MiB
如何释放 5 GB 的 Device slack 以供使用?谷歌没有帮助我。