群晖换硬盘成功

  • x
    xiaotianhu
    之前发了贴问了一下 说是每个盘都有系统。。。感觉很神奇两个盘都是Basic模式

    先把所有共享目录,移动到disk2上,此时disk1的已用空间还是几十G
    找到一个脚本https://gist.github.com/nobodypb/fc3e70b535bcd95b5de7659d6fbda434
    可以把全部appstore的套件移动到disk2具体用法:
    ssh进群辉,新建个文件到任意目录,把这段代码复制进去
    然后 chmod 777 文件名,然后执行
    一路按y 就会把/volume1/@appstore下面的文件备份到/volume2去,等换回来硬盘后软链回/volume1就行了

    然后把@docker目录手动mv到disk2上 就差不多了

    关机,换上新盘,果然能开机了 牛逼

    在管理员->raid group里添加一个新的raid group,搞了个ext4的Basic分区 美滋滋
    把之前移动到/volume2 的目录软链一下到volume1就行了


    cd /volume1
    sudo ln -s /volume2/@docker ./
    sudo ln -s /volume2/@appstore ./
    sudo ln -s /volume2/docker/ ./
    sudo ln -s /volume2/@download ./
    sudo rm -rf \@database/ && sudo ln -s /volume2/@database ./


    之前的app docker什么的就都回来了.
  • 故都的秋
    你说会不会楼主得意忘形的玩儿现了? iOS fly ~
  • m
    maxwellss
    天哪,换个盘这么复杂。。。。你咋不上网问问群晖的在线客服啊。买群晖软件的钱里面包含有咨询费。
  • x
    xiaotianhu
    还行吧,没多复杂啊。自己研究才有乐趣
  • m
    maxwellss
    回复4#xiaotianhu

    我是遇到问题就问在线的,或者邮件,感觉挺方便的。当然也有敷衍的客服。
  • l
    lifanxi
    任何硬盘在群晖中用任何模式处理,都会被至少分三个区,第一个系统分区,第二个交换分区,第三个数据分区。RAID、SHR这些都是在第三个分区上做文章。前两个分区都会在你机器上的N块硬盘上同时存在,各自组成RAID 1,这就是所谓“每块盘上都有系统”。

    你那个套件搬家脚本的本质是停服、移动、软链、启服。其实对你的场景意义不大,因为你换了硬盘以后软链也就没有了,所以你的系统启来以后还是什么套件都没有。当然要恢复也是简单的,把移动过的套件以及你自己移动过的文件夹都移回原来的地方就可以了。
  • G
    GleeU
    最大的麻烦是如果提示损毁了 就没办法移动了 特别蛋疼
  • 神州大地
    我先马克 iOS fly ~
  • e
    ehgui
    回复6#lifanxi

    学习了,
  • d
    deyu260
    换个硬盘这么复杂了 还需要第三方脚本 那还买啥群晖啊 不如自己搞unraid
  • w
    william24
    那么请教一下,我是双盘位黑裙,一个1T一个4T的硬盘,都是basic模式,系统套件都装在1T盘上,现在准备了一个4T的要换下1T,和楼主的情况基本一致,有没有更简单的做法呢?楼主那个脚本玩不太懂。
  • w
    william24
    回复1#xiaotianhu

    脚本网页没法打开,能否麻烦楼主转帖过来呢?
  • d
    deyu260
    没试过 我是做的raid1那种模式 我连freenas的u盘都插2个做了个raid1 来自官方的回答https://www.synology.com/zh-cn/knowledgebase/DSM/tutorial/Storage/Can_I_use_larger_hard_drive_s_to_expand_the_storage_capacity_on_Synology_Product_for_DSM_2_2_and_onward
    当然也可以用lz的那种方法
  • x
    xiaotianhu
    1. #!/bin/bash
    2. SOURCE=/volume1
    3. DEST=/volume2

    4. APPDIR=\@appstore

    5. ASK=true

    6. while getopts ":y" opt; do
    7. case $opt in
    8. y)
    9. ASK=false
    10. ;;
    11. \?)
    12. echo "Invalid option: -$OPTARG" >&2
    13. exit 1
    14. ;;
    15. esac
    16. done

    17. echo "This will move packages from $SOURCE to $DEST"
    18. echo ""

    19. if [ ! -d $DEST/$APPDIR ]; then
    20. mkdir $DEST/$APPDIR
    21. chmod 777 $DEST/$APPDIR
    22. echo "New app directory created"
    23. fi

    24. echo "Searching for packages on $SOURCE..."

    25. for d in /var/packages/*
    26. do
    27. [ -d "$d" ] || continue
    28. app=$(basename $d)
    29. symlink=$d/target

    30. if [ ! -e "$symlink" ]; then
    31. echo "$app has no symlink"
    32. continue
    33. fi

    34. if [ ! -e "$SOURCE/$APPDIR/$app" ]; then
    35. echo "$app is not in source directory"
    36. continue
    37. fi

    38. if [ ! "$(readlink $symlink)" -ef "$SOURCE/$APPDIR/$app" ]; then
    39. echo "$app: Symlink doesn't point to source directory"
    40. continue
    41. fi

    42. echo "Found $app"

    43. file_warnings=$(find $d -type f -exec grep -l "$SOURCE" {} \;)
    44. if [ ! -z $file_warnings ]; then
    45. echo "Be careful!"
    46. echo "The following files contain '$SOURCE':"
    47. echo "$file_warnings"
    48. fi

    49. if $ASK; then
    50. read -s -p "`echo
    51. \t'`Move $app? (y/n)`echo
    52. \n \b'`" -n 1 -r
    53. [[ $REPLY =~ ^[Yy]$ ]] || continue
    54. echo ""
    55. fi

    56. echo "`echo
    57. \t'`Moving $app..."
    58. synopkgctl stop $app
    59. cp -rp $SOURCE/$APPDIR/$app $DEST/$APPDIR/
    60. rm -f $symlink
    61. ln -s $DEST/$APPDIR/$app $symlink
    62. mv $SOURCE/$APPDIR/$app $SOURCE/$APPDIR/__$app
    63. synopkgctl start $app
    64. echo "`echo
    65. \t'`Done. Backup in: $SOURCE/$APPDIR/__$app"
    66. echo ""
    67. done

    68. echo "Done for all."
    69. echo ""

    70. echo "If you want to remove $SOURCE you should also move the following:"
    71. echo ""

    72. for f in /var/services/*
    73. do
    74. [ -L $f ] || continue
    75. target=$(readlink $f)
    76. if echo "$target" | grep -q $SOURCE; then
    77. echo "System service symlink $f to $target"
    78. fi
    79. done
    复制代码