前几天,我将一个硬盘(1 TB,ext3 文件系统)插入华硕 RT-N56U 路由器的 USB 端口。我设置了 Samba,添加了两个文件夹,创建了一个用户,并设置了用户权限。之后,我复制了超过一百万个文件,这些文件总计约 200 GB,分散在许多子目录中。虽然速度不是很快,但似乎运行良好。
现在,当设备启动时,我很长时间都无法访问该 Samba 共享。系统日志显示,大约需要半小时(!)才能让 Samba 准备就绪:
Jan 1 01:00:17 kernel: sd 0:0:0:0: [sda] Spinning up disk....ready
Jan 1 01:00:17 kernel: sd 0:0:0:0: Attached scsi generic sg0 type 0
Jan 1 01:00:26 FTP Server: daemon is stoped
Jan 1 01:00:26 Samba Server: smb daemon is stoped
Jan 1 01:01:16 ntp: start NTP update
Sep 19 18:22:52 rc_service: ntp 407:notify_rc restart_upnp
Sep 19 18:40:32 Samba Server: daemon is started
Sep 19 18:46:18 nmbd[502]: [2016/09/19 18:46:18, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(392)
Sep 19 18:46:18 nmbd[502]: Samba name server RT-N56U is now a local master browser for workgroup WORKGROUP on subnet xxx.xxx.xxx.xxx
此后,文件访问和传输速度均正常。
这里发生了什么?我该如何加快这一进程?
答案1
问题是由设备的 Linux 操作系统引起的。通常,Linux 的所有磁盘 IO 都是异步的(我不会排除一些发行版,因为它们不太方便用户使用),并且用户需要在关机前执行同步(或在关机期间,使用关机脚本执行同步命令)。
但路由器中没有可用的同步命令。每当我关闭它时,磁盘上都没有设置干净关机的标记,因此设备在启动时运行恢复脚本,这花费了太多时间。
更糟糕的是,由于缺少同步,一些数据丢失了。因此,我不再使用该设备运行 Samba,并且强烈建议不要这样做。