Bir donanım SATA RAID-10 dizisindeki tek bir disk, tüm diziyi çığlık atma noktasına nasıl getirebilir?


103

Prelude:

Ben küçük şirketim için SysAdmin görevlerinde giderek daha fazla kullanılan bir kod maymunu yaşıyorum. Benim kodum bizim ürünümüz ve giderek artan bir şekilde SaaS ile aynı uygulamayı sağlıyoruz.

Yaklaşık 18 ay önce, sunucularımızı birinci sınıf bir barındırma merkezindeki satıcıdan, IV. Seviye veri merkezindeki barebone raf iticisine taşıdım. (Kelimenin tam anlamıyla caddenin karşısında.) Bu söz kendimizi çok daha fazla yapıyor - ağ oluşturma, depolama ve izleme gibi şeyler.

Büyük hamlenin bir parçası olarak, kiralanan doğrudan bağlı depomuzu barındırma şirketimizden değiştirmek için, SuperMicro şasi, 3ware RAID kart, Ubuntu 10.04, iki düzine SATA disk, DRBD ve 950 tabanlı iki düğümlü bir NAS kurdum. Her şey sevgiyle üç blog yazısında belgelenmiştir: Yeni bir 9TB SATA RAID10 NFSv4 NAS oluşturma ve test etme: Bölüm I , Bölüm II ve Bölüm III .

Ayrıca bir Cacit izleme sistemi kurduk. Son zamanlarda, SMART değerleri gibi daha fazla veri noktası ekliyoruz.

Ben olmadan tüm bu yapamazdım müthiş Boffinler de ServerFault . Eğlenceli ve eğitici bir deneyim oldu. Patronum mutlu (kovalardan $$$ kurtardık) , müşterilerimiz mutlu (depolama maliyetleri düşük) , mutluyum (eğlence, eğlence, eğlence) .

Düne kadar.

Kesinti ve Kurtarma:

Öğle yemeğinden bir süre sonra, talep üzerine çalışan bir akış CMS olan uygulamamızdan durgun performans raporları almaya başladık. Aynı zamanda Cacti izleme sistemimiz bir e-posta fırtınası gönderdi. Daha söyleyen uyarılardan biri, iostat'ın beklediğinin grafiği idi.

görüntü tanımını buraya girin

Performans o kadar düşmüştür ki Pingdom "sunucu aşağı" bildirimleri göndermeye başladı. Genel yük ılımlı, trafik sıkışıklığı yoktu.

NAS'ın NFS istemcileri, uygulama sunucularına giriş yaptıktan sonra, hemen hemen her şeyin çok aralıklı ve delice uzun IO bekleme süreleri yaşadığını doğruladım. Ve birincil NAS düğümünün üzerine atladığımda, problem dizisinin dosya sisteminde gezinmeye çalışırken aynı gecikmeler de ortaya çıktı.

Başarısızlık zamanı, iyi geçti. 20 dakika içinde her şeyin mükemmel bir şekilde yedeklendiği ve çalıştığı doğrulandı.

Post-Mortem:

Herhangi bir ve tüm sistem arızalarından sonra, hatanın nedenini belirlemek için bir ölüm sonrası işlemi yapıyorum. Yaptığım ilk şey, kutuya geri ssh ve günlükleri incelemeye başlamak oldu. Tamamen çevrimdışıydı. Veri merkezine yolculuk için zaman. Donanım sıfırlama, yedekleme ve çalıştırma.

İçinde /var/syslogbu korkunç görünümlü giriş buldum:

Nov 15 06:49:44 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_00], 6 Currently unreadable (pending) sectors
Nov 15 06:49:44 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_07], SMART Prefailure Attribute: 1 Raw_Read_Error_Rate changed from 171 to 170
Nov 15 06:49:45 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_10], 16 Currently unreadable (pending) sectors
Nov 15 06:49:45 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_10], 4 Offline uncorrectable sectors
Nov 15 06:49:45 umbilo smartd[2827]: Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
Nov 15 06:49:45 umbilo smartd[2827]: # 1  Short offline       Completed: read failure       90%      6576         3421766910
Nov 15 06:49:45 umbilo smartd[2827]: # 2  Short offline       Completed: read failure       90%      6087         3421766910
Nov 15 06:49:45 umbilo smartd[2827]: # 3  Short offline       Completed: read failure       10%      5901         656821791
Nov 15 06:49:45 umbilo smartd[2827]: # 4  Short offline       Completed: read failure       90%      5818         651637856
Nov 15 06:49:45 umbilo smartd[2827]:

Bu yüzden dizideki disklerin Cacti grafiklerini kontrol etmeye gittim. Burada görüyoruz ki, evet, disk 7 tıpkı syslog'un söylediği gibi kayıyor. Ancak, disk 8’in SMART Read Erros’unun dalgalandığını da görüyoruz.

görüntü tanımını buraya girin

Syslog'da disk 8 ile ilgili mesaj yok. Daha ilginç olanı, disk 8 için değişken değerlerin doğrudan yüksek GÇ bekleme süreleri ile ilişkili olmasıdır! Benim yorumum şudur:

  • Disk 8, aralıklı uzun çalışma sürelerine neden olan garip bir donanım hatası yaşıyor.
  • Her nasılsa diskteki bu hata durumu tüm diziyi kilitliyor

Belki daha doğru ya da doğru bir açıklama olabilir, ancak net sonuç tek diskin tüm dizinin performansını etkilemiş olmasıdır.

Sorular)

  • Bir donanım SATA RAID-10 dizisindeki tek bir disk, tüm diziyi çığlık atma noktasına nasıl getirebilir?
  • RAID kartının bununla başa çıkması gerektiğini düşünmekten saf mı oluyorum?
  • Tek bir yaramaz diskin tüm diziyi etkilemesini nasıl önleyebilirim?
  • Bir şey mi eksik?

11
Sizden bir başka iyi yazılmış soru, +1. Her zaman okumak için bir zevk (ama maalesef tahtamın üstünde bile bir fikrim var).
tombull89

1
@daff: Bu kurulum için satın alma bütçesi satın alın, benzer bir HP'den% 66 tasarruf sağladık. Bu kutuya bir yıllık ömür koyduk, daha uzun sürmesi gerekmiyor. Unutma ki bu bir saklama kutusu, bir önceki yıla göre fiyatlandırılıyor.
Stu Thompson,

2
3Ware kendi başına fena değil. İyi bir sunucu donanımı olduğu düşünülen bir Dell sistemindeki bir PERC kartından ciddi davranışlar gördüm. 3Ware kartında batarya ve benzeri olması gerekir, bu yüzden karar konusunda kendimi kötü hissetmem. Tamam, SAS vs. SATA kararından dolayı mahkum olabilirsiniz, ancak veri kaybediyorsunuz ve sorunuzdan, yedekler ve izlemeler varmış gibi göründüğünüzden emin olabilirsiniz, bu yüzden oldukça iyi gidiyorsunuz :-)
Bart Silverstrim

1
@StuThompson: tabii ki bütçe kullanmak ve tüketici donanımını kullanmak daha ucuz ve çoğu zaman, özellikle sizin durumunuzda olduğu gibi, arkasında iyi bir HA kavramı olduğunda, iyi performans gösterecek. Ancak, gösterdiğiniz gibi, tüketici donanımının sadece kötü şeyler olduğunda onu kesemediği durumlar vardır. İyi bir PERC (Dell) veya SmartArray (HP) denetleyicisindeki tek bir hatalı SAS diskinin, yedek diski almak için bir destek çağrısı dışında herhangi bir soruna neden olmayacağını size garanti ederim. Yıllar boyunca ürettiğimiz birçok ölü SAS diski vardı, ancak hiçbir zaman bir sunucuyu indiremedik.
daff

5
Çoğu SATA diskleri, TLER'yi (Zaman Sınırlı Hata Kurtarma) desteklemez. Tipik bir SATA diski fiziksel bir sorunla karşılaştığında, disk alt sistemine (genellikle söylendiği gibi) "bu konuda çalışırken beklet" gönderir. Disk daha sonra “ben öldüm” eşiğine ulaşana kadar bulduğu her hata için 10-30 saniye (genellikle) harcar. TLER'yi destekleyen SAS diskleri ve SATA diskleri, HBA'ları tarafından disk alt sistemine "Bir sorunum var, ne yapmalıyım?" Diyecek şekilde yapılandırılmışlar. Böylece HBA uygun eylemi temelde hemen karar verebilir. (Kısalık için basitleştirilmiş)
Chris S

Yanıtlar:


48

Kritik üretim ortamlarında "SATA kullanma" demekten nefret ediyorum ama bu durumu oldukça sık gördüm. SATA sürücüleri, genel olarak tanımladığınız görev döngüsü için uygun değildir, ancak kurulumunuzda özellikle 7 gün 24 saat çalışacak şekilde derecelendirilmiş spesifik sürücüler yapmış olsanız da . Tecrübelerime göre, SATA sürücülerinin, yaptığınız gibi RAID 1 + 0 kullanırken bile çoğu zaman tüm depolama dizisini etkileyen, tahmin edilemeyecek şekilde başarısız olması. Bazen sürücüler tüm veriyolunu durduracak şekilde arıza yapar. Unutulmaması gereken bir şey, kurulumunuzda SAS genişleticileri kullanıp kullanmadığınız. Bu, kalan disklerin sürücü arızasından nasıl etkilendiği konusunda bir fark yaratabilir.

Ancak SATA'ya karşı orta hat / nearline (7200 RPM) SAS sürücülerle gitmek daha mantıklı olabilir . SATA'ya göre küçük bir fiyat primi var, ancak sürücüler daha öngörülebilir şekilde çalışacak / başarısız olacaktır. SAS arayüzündeki / protokolündeki hata düzeltme ve raporlama SATA setinden daha sağlamdır. Bu nedenle , mekaniği aynı olan sürücülerde bile , SAS protokol farkı, sürücü arızanız sırasında yaşadığınız acıyı önlemiş olabilir.


Soruyu yazarken SAS seçimimin ortaya çıkacağını biliyordum . : / IOPS ve çıkış, kurulumumun yetenekleri dahilinde. Ancak daha ince farklılıkların bazılarını tam olarak çözmedim. Bu kutuya 3 yıllık bir kullanım ömrü koyduk. SAS'ı bir dahaki sefere kullandığınızdan emin olun.
Stu Thompson,

1
Evet, bir dahaki sefere dikkate alınması gereken bir şey. Bahsettiğim nearline SAS sürücüleri mutlaka SATA'dan daha iyi performans göstermiyor, ancak hata kurtarma ve SAS'ın daha yönetilebilir olduğu sürücü arızaları gibi şeyler. 6 denetleyicili Sun Fire x4540 48 sürücülü SATA depolama sistemim var ve sunucuyu kilitleme eğiliminde bireysel sürücü hataları var. Zor ders.
beyaz

10
İyi bir arkadaşım işletme depolama dünyasında. Bunları okuyor ve şöyle diyor: "bu adam haklı. Gerçek şu ki, SATA tam bir hatayı belirtmek için tasarlandı ve aralıklı bir kişi yerine çalışma yerine geçen otobüsü talep edecek. "
Stu Thompson

@StuThompson Yakın zamanda SAS ile yeni bir kutu kurdunuz mu? Deneyimlerinizi okumayı çok isterim. Sorunuz bana çok yardımcı oldu, yakın bir gelecekte benzer bir kutu inşa edeceğim.
chrishiestand

1
@chrishiestand Hayır, yapmadım. 13 Ocak'ta şirketten ayrıldım; Kalmış olsaydık, yedek kutuyu yakın çizgiyle inşa ederdik. Ne yazık ki, NAS'ın varlığı kendime çok yakın bağlıydı ve veriler bir servis sağlayıcı SAN'a taşınmıştı.
Stu Thompson

17

Tek bir disk diziyi nasıl indirebilir? Cevap, olmaması gerektiğidir, ancak kesintiye neyin sebep olduğuna bağlı olarak değişir. Disk, davranacak şekilde ölecek olsaydı, sökmemeliydi. Ancak, kontrol ünitesinin idare edemediği bir “uç durumda” şekilde başarısız olması mümkündür.

Bunun olmaması gerektiğini düşünerek saf mısın? Hayır, sanmıyorum. Bunun gibi bir donanım RAID kartının çoğu sorunu çözmesi gerekirdi.

Nasıl önlenir? Böyle garip davaları önceden tahmin edemezsin. Bu bir sysadmin olmanın bir parçası ... ama işini etkilememesi için kurtarma prosedürleri üzerinde çalışabilirsin. Bunu şimdi düzeltmeyi denemenin tek yolu, başka bir donanım kartı denemek (muhtemelen ne yapmak istemiyorsunuz) veya SAS'ın daha sağlam olup olmadığını görmek için sürücülerinizi SATA yerine SAS sürücülerine dönüştürmektir. Ayrıca, satıcınıza RAID kartıyla da temasa geçebilir ve onlara ne olduğunu anlatabilir ve ne dediklerini görebilirsiniz; Sonuçta, riskli tahrik elektroniğinin içini ve dışını tanımada uzmanlaşması gereken bir şirket. Doğru insanlarla konuşabiliyorsanız, sürücülerin nasıl çalıştığı ve güvenilirliğin yanı sıra daha teknik önerilerde bulunabilirler.

Bir şey mi kaçırdın? Sürücünün kenarda bir arıza olduğunu doğrulamak istiyorsanız, diziden çekin. Dizi bozulmuş olacaktır, ancak daha fazla garip yavaşlama ve hataya sahip olmamanız gerekir (bozulmuş dizi durumundan başka). Şu anda iyi çalışıyor gibi gözüktüğünü söylüyorsunuz, ancak disk okuma hataları varsa, sürücüyü elinizle değiştirmelisiniz. Yüksek kapasiteli sürücülerin bazen başka bir sürücü arızalanıncaya kadar görünmeyen URE hataları (RAID 5'i çalıştırmamak için en iyi neden, yan not) olabilir. Ve bu bir sürücüden ileri düzeyde bir davranış yaşıyorsanız, bozuk verilerin dizideki diğer sürücülere taşınmasını istemezsiniz.


1
Evet ... biz zaten "okuma hataları dalgalanıyorsa, onu batırırsa" gibi yeni bir değiştirme politikası başlattık . Şimdi düşünüyorum da, bu sürücülerde oldukça yüksek bir başarısızlık oranımız oldu. 18 ayda 22 kişiden 4'ü. Hmmm ....
Stu Thompson

2
18 ayda 4 sürücü mü? Bu oldukça yüksek bir oran ... spesifik olmayan sürücüler olsa da, bakılması gereken bir soğutma / hava akımı sorunu da olabilir. Ya da kontrol cihazıyla garip bir şey olabilir. Sadece bazı düşünceler ... kütüklere göz kulak ol. 3Ware'deki herhangi bir kişiyle, sadece bir komut dosyası değil, kartlardaki gerçek işlerle bağlantı kurabiliyorsanız, onu çalıştırmak ve ne dediklerini görmek isteyebilirsiniz.
Bart Silverstrim

1
Hataları gördüğünüz sete bağlı olarak, kablolarda da riskli veya marjinal bir şey olmadığını kontrol edebilirsiniz. Hatalar aynı bağlantı noktasında yoğunlaşmış gibi görünüyorsa, rastlantısal bir başarısızlık kümesinden daha az olabilir.
Bart Silverstrim

4
Bu bum sürücüsünün SMART değerlerinin ~ 31 ° C veya diğer tüm sürücülerden 4 ° C daha yüksek bir sıcaklıkta çalıştığını gördüm. Sizi hmmmm yapan şeyler ....
Stu Thompson

2
@DanNeely: 14 sürücüden (11 veri, 3 sistem) daha yüksek bir sıcaklığa sahip olan tek sürücüydü. Hava akımının iyi olduğundan eminim, ama açıkça yarın kontrol edecek.
Stu Thompson,

10

Uzman değilim, ancak RAID denetleyicileri ve depolama dizileriyle ilgili deneyimim temelinde karanlıkta vahşi bir atış yapacağım.

Diskler birçok farklı şekilde başarısız oluyor. Ne yazık ki, diskler performanslarının ciddi şekilde etkilendiği şekillerde başarısız olabilir veya arızalanabilir, ancak RAID denetleyicisi bir hata olarak görmez.

Bir disk bariz bir şekilde başarısız olursa, herhangi bir RAID denetleyici yazılımı, diskten yanıt eksikliğini tespit etmek, onu havuzdan çıkarmak ve herhangi bir bildirim başlatmak için oldukça iyi olmalıdır. Ancak, burada olanlarla ilgili tahminim, bir nedenden ötürü, denetleyici tarafında bir arızayı tetiklemeyen, olağandışı bir arıza yaşadığıdır. Bu nedenle, kontrol cihazı etkilenen diskten bir yazma floş ya da bir okuma yaparken, geri dönmesi uzun zaman alıyor ve sırayla tüm IO işletimini ve dolayısıyla diziyi asıyor. Sebep ne olursa olsun, RAID denetleyicisinin "ah, başarısız disk" e gitmesi yeterli değildir, çünkü muhtemelen veri sonunda geri dönmektedir.

Tavsiyem başarısız diski hemen değiştirmek olacaktır. Bundan sonra, RAID kartınızın konfigürasyonuna bir göz atabilirim (3 yazılım, iyi olduklarını düşündüm) ve arızalı bir disk olarak ne gördüğünü öğrenirdim.

Kaktüslere SMART ithal PS güzel bir fikir.


Noktaları bağladıktan sonra, yaptığım ilk düşünce diski diziden çıkarmaktı; sıcak yedek dolduruldu. Dün geceydi. Bugün diski çektim ve RMA yaptım. Rahatsız
Stu Thompson

Nedenler arasında, kritik görev sistemlerinin her birinin, veri temizliği yapan bir karta sahip olması gerektiğini düşünüyorum. Bunu özellikle SATA dizilerinde saymak için çok fazla gördüm, ancak daha yüksek uçlu SAS disklerinin bile denetleyiciyi tetiklemeden başarısız olduğu biliniyor.
Jens Ehrich,

7

Kurumsal sınıf depolama aygıtlarının özelliklerine ihtiyacınız vardır. Spesifik olarak, WD RE 4 kurumsal disk sürücülerin RAID Dizilerinde bu davranışı önlemek için gereken iki özelliği vardır. Aşağıda listelenen ilk teknoloji, döner harmonik titreşimin, sabit sürücü mekanik bileşenlerinde gereksiz yere aşınmaya neden olmasını önler. İkinci teknoloji, probleminize neden olan şeydir, SATA protokolünün bu özelliği yoktur. Bu özellikleri almak için SAS’a ihtiyacınız vardır ve SATA sürücülerinde ısrar ediyorsanız, SAS’tan LSISS9252 gibi SATA Interposer kartlarını satın alabilirsiniz.

Gelişmiş RAFF teknolojisi Gelişmiş elektronik cihazlar sürücüyü izler ve gerçek zamanlı olarak hem doğrusal hem de döner titreşimi düzeltir. Sonuç, önceki nesil sürücülere göre yüksek titreşimli ortamlarda önemli bir performans artışıdır.

RAID'e özgü, zaman sınırlı hata kurtarma (TLER) Masaüstü sürücülerde yaygın olan genişletilmiş sabit sürücü hata kurtarma işlemlerinden kaynaklanan sürücü düşüşünü önler.

http://en.wikipedia.org/wiki/Error_recovery_control#Overview

Ayrıca lütfen aşağıdaki bağlantıya bakınız:

http://en.wikipedia.org/wiki/Error_recovery_control#Raid_Controllers

Ayrıca bakınız: Western Digital TLER Belgesi, hata kurtarma işlemini derinlemesine açıklayan. Seri ATA Sabit Disklerinde WD Caviar RAID Edition'da Hata Kurtarma Fallout Önleme:

http://www.3dfxzone.it/public/files/2579-001098.pdf


6

Sadece bir tahmin: Sabit diskler, bir hata bildirmek yerine okuma hatalarını yeniden denemek üzere yapılandırılmıştır. Masaüstü ayarlarında bu istenen bir davranış olsa da, RAID'de üretkendir (burada denetleyicinin diğer disklerden okumayı başaramayan herhangi bir sektörü yeniden yazması gerekir, böylece sürücü yeniden boyutlandırılabilir).


Çok mümkün. Öyleyse, bu "RAID edition" birimleri olarak belirtildiği için meydan okurcasına değil. : |
Stu Thompson,

Kesinlikle harika değil, çünkü bu ayar "RAID edition" un tanımıdır :)
Simon Richter

6

karanlıkta vururum:

  • sürücü 7 arızalı. mevcut olmadığı bazı arıza pencereleri vardır.

  • sürücü 8'in bazı 'daha hafif' hataları var; yeniden denenerek düzeltildi.

  • RAID10 genellikle "birkaç RAID1 çiftinden oluşan bir RAID0" dır, aynı çiftin 7 ve 8 numaralı sürücüleri mi?

öyleyse, o zaman aynı çift üzerinde iki disk arızası durumunda "olmamalı" isabet gibi görünüyor. RAID10'u öldürebilecek tek şey neredeyse. Maalesef, tüm sürücüleriniz aynı nakliye alanından geliyorsa gerçekleşebilir, bu nedenle aynı anda ölmeleri biraz daha muhtemeldir.

Bir sürücü 7 arızası sırasında, kontrol cihazının tüm sürücüleri 8 okuruna yönlendirdiğini tahmin ediyorum, bu nedenle herhangi bir hata yeniden denemesi, bir süre donmuş görevlerin çığlığına neden olan büyük gecikmelere neden oldu.

8 nolu sürücünün henüz ölmemiş gibi göründüğü için şanslısınız, bu yüzden dataloss olmadan düzeltebilmelisiniz.

İki sürücüyü de değiştirerek başlarım ve kablolamayı kontrol etmeyi unutmayın. Gevşek bir bağlantı buna neden olabilir ve sıkıca yönlendirilmezse, bitişik sürücülerde gerçekleşmesi daha olasıdır. ayrıca, bazı çoklu bağlantı kartlarında birkaç adet iki bağlantı noktalı konektör bulunur, eğer sürücü 7 ve sürücü 8 aynı ise, sorununuz kaynağı olabilir.


3
8 numaralı sürücü servis kesintisine neden oldu, ben çoktan çektim. Bir süredir bu durumda olduğu gibi bazı sektörleri kaybetmişken, 7 nolu sürüşten sonra hala iyi performans gösteriyor. Hayır, sürücüler farklı çiftlerde. (Bu benim Cacti / SNMP sorgularımın yanlış hizalanmasıyla birlikte düşündüğüm bir şeydi.) Kartın arka panelinde 16 port, 4 kablo, kablo başına 4 port var. Sorun kart, kablo veya arka panel ise, sürücünün 8'ini değiştirdiğimde yeterince yakında tanıyacağım.
Stu Thompson,

3

SATA Aracı Kartları başka bir çözümdür.

Geçenlerde tam olarak aynı kaderi yaşadım ve bu konuyu buldum. Genel olarak, SAS protokolünün RAID için SATA'dan daha uygun olması, çünkü SATA'nın özellikleri eksiktir. Bu nedenle aynı fiziksel sürücüler SAS denetleyicileriyle donatılmıştır ve daha sonra Nearline SAS olarak satılmaktadır.

Daha fazla araştırırken buldum:

http://www.lsi.com/products/storagecomponents/Pages/LSISS9252.aspx

Depolarımdan birini toplu halde yükseltmeyi araştırıyorum. Şu anda, 3 TB SATA - SAS arasındaki fiyat farkı% 400 (vanilya fiyatı, aynı marka, özellik ve mağaza, Almanya). Açıkçası bu stratejinin iyi sonuç verip vermediğini söyleyemem, ama denemeye değer.

Yorumlar çok hoş geldiniz :-)


1
Güzel teori. Bazı bilgileri topladıktan sonra, yalnızca depolama tepsisi üreticileri bu kartları birleştirebilir ve bunları eklemek, mutlaka daha iyi hata yönetimi anlamına gelmez.
korkman

2

Arızalı elektronik donanımın bir Areca 12 cihazının sabit diskine kilitlendiğini gösteren bir SATA diskinin sağlam bir şey olduğunu gördüm, rahatsız edici sabit disk bir disk içinde diskleri çekerek bulunana kadar makineyi herhangi bir ortamdan başlatmasına izin vermeden BIOS'a erişmenin bir yolu yoktu. moda aramak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.