V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alan0liang
V2EX  ›  操作系统

[非引战] 请教一下 Windows Server 和 Linux 在技术上的优劣

  •  
  •   alan0liang · 2020-07-13 10:30:01 +08:00 · 2248 次点击
    这是一个创建于 1630 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请大家不要人身攻击!!! 比如「(v2|帖子)里面充满 xx 的偏见」等等

    观 /t/689336 有感,对于「操作系统微软一堆优势是 linux 没办法比的」、「如果不是 Linux 一些功能做得很垃圾」这些话经常看到但是实在是不了解什么情况(才疏学浅,真心求教,请勿嘲讽),想知道两个系统(以及 BSD,如果有人了解的话)下面的生态(包括各种驱动)到底是怎么样的?配置起来哪个简单?资源占用、效率和可扩展性方面怎么样?在生产中哪个更容易蓝屏 /kernel panic ?

    例如 MSSQL v. MySQL / Postgres / etc.; Hyper-V v. kvm etc.; IIS v. nginx / Apache; NTFS v. zfs / btrfs / ext4 / etc.; Active Directory v. ??? 等等;以及配置组策略、注册表等等和靠 /etc/whatever 、crontab 等等配置,在实际操作的时候对于一个有经验的系统管理员来说,哪个更好操作?

    不考虑往 Windows Server 上装某数字等迷惑行为,以及授权费等问题(认为买了 Windows Server 以及 RHEL )。

    请大家不要人身攻击!!!

    8 条回复    2020-07-13 13:50:21 +08:00
    Greenm
        1
    Greenm  
       2020-07-13 11:12:36 +08:00 via iPhone   ❤️ 1
    我不是开发和专业运维,说一个我更偏好 linux 的原因: 安全性。

    linux 的系统得益于设计的风格和理念,将各个服务组件与内核剥离开来,成为独立于操作系统的一部分,这样做带来的好处就是一旦某个服务出现漏洞后,可以直接更新重启该服务,而不影响其他服务。比如 ssh 有漏洞,直接更新 ssh 就好了,web 服务不受影响。
    反观 windows,将一大堆东西耦合在一起,rdp, smb 有漏洞了,必须打补丁重启系统,这对于个人来说没有多大问题,但对于稳定运行的服务器来说,问题很大。特别是 windows 作为宿主机,上面还有虚拟机运行的情况。所以你们经常能见到 win 的高危漏洞放出来之后不打补丁的服务器。

    来自一个经历过几千台 win 需要更新补丁重启被折磨得痛不欲生的过来人。
    namelosw
        2
    namelosw  
       2020-07-13 11:33:51 +08:00
    除非像我们这种很多代码还在用.net framework 的苦逼,否则不推荐 Windows server,就算你用.net core 也建议部在 Linux 上。

    Windows Server 学也不好学,刚学会某个地方明年就改了,所以招个厉害的人也难。Docker desktop 只给 Win 10,微软自己的 WSL Windows terminal 都不太好装。

    IIS 我感觉和 Tomcat 类似,和 Nginx Apache 还不太一样,现代程序都不应该依赖 IIS 和 Tomcat,比如像 node.js 之类的直接跑才对,.net core 现在也自带 Kestrel 。

    那些「操作系统微软一堆优势是 linux 没办法比的」、「如果不是 Linux 一些功能做得很垃圾」都是纠结在某一两点上随便说说的,感觉跟 yinwang 同学一样,去微软之前觉得微软很多设计还挺不错,就是比较理想化,实现差一些,去了微软之后狂喷 — 他前后说的没错,只是立场不同,让那些人去实际的公司维护 Windows server,因为 Windows server 的坑搞不定上面不由分说一顿骂,一样委屈。

    推荐的操作系统就是 Docker 里的各种白板镜像,把你的应用以最精简通用的 Dockerfile 表达出来,尽量不和系统强相关就是最好的。外面的系统就随意,能稳定跑 Docker Kubernetes 就好,有问题换也不麻烦(其实 Kuberntes 是个很不错的“操作系统”—因为操作系统的本质就是对硬件资源进行抽象,传统操作系统只抽象单机,Kubernetes 抽象的是集群)。都 0202 年了,争论操作系统感觉意义越来越小了。最好的操作系统就是可以随便换的操作系统。
    passerbytiny
        3
    passerbytiny  
       2020-07-13 12:22:55 +08:00 via Android
    windows server 要跟 RHCL 比,不要跟 centos 比。
    wysnylc
        4
    wysnylc  
       2020-07-13 12:28:48 +08:00
    windows server 使用 gui 更方便操作,但是众所周知 gui 性能必然是下降的,对于早起的互联网来讲这个点性能能压榨就压榨
    以后就不好说了,等 cpu 上百核内存几十 tb 的时候也不太在乎这点性能
    安全问题,微软做这么多年系统安全比 linux 要强得多,别以为 linux 没洞只是 linux 用的"正常用户"少都是企业用户所以黑客们懒得开发病毒而已
    更新问题,linux 打大补丁也得重启,windows 装个软件也不用重启,这是人的问题不是系统的问题
    reus
        5
    reus  
       2020-07-13 13:19:27 +08:00 via Android
    没什么好比的,windows 已经全面落后
    Osk
        6
    Osk  
       2020-07-13 13:36:03 +08:00 via Android
    [如果不是 Linux 一些功能做得很垃圾]

    是我回复的,既然被楼主提到了就回答吧:
    bitlocker + tpm
    mikeguan
        7
    mikeguan  
       2020-07-13 13:44:05 +08:00 via Android
    Linux 你可以试着做出修改,Windows 就很麻烦了。windows 难度远大于 Linux,没必要给自己找麻烦。
    Mithril
        8
    Mithril  
       2020-07-13 13:50:21 +08:00
    单纯从 Server 角度讲,你有足够经验的话两者其实差不多。多数区别不过是设计理念不同而已。
    就像楼内说的,RDP 和 SMB 更新需要重启。可你如果不是文件服务器为什么要开 SMB ? Linux 做了 FTP,FTP 安全更新难道不需要重启服务吗? RDP 也是,PowerShell 远程管理你连 RDP 都可以不开。
    用 Linux 都知道作为生产环境不该开的服务不要开,Windows 就是一把梭然后怪微软垃圾。很多时候都是偏见而已。
    如果你是单纯用来跑 Docker,还是建议 Linux 。最小系统更容易配置,只要你别上头去搞什么一键脚本大部分不会出问题。
    Windows 也有无 GUI 的 Server Core 和 Nano,但不一定你所有的应用都能跑得起来。而且跑 Docker 的话除非你自己做镜像,不然 Windows 的很少。
    如果用的不是 VPS,自己配置的硬件服务器还是建议 Windows,很多硬件和驱动都做过兼容性测试,稳定性会好一些。
    当然这都是不差钱的选择,差钱你就 Linux 去吧,免费的。反正人工不值钱不是么。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2528 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:11 · PVG 13:11 · LAX 21:11 · JFK 00:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.